@echoes-io/mcp-server 7.1.0 → 8.0.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 (104) hide show
  1. package/README.md +2 -2
  2. package/cli/program.d.ts.map +1 -1
  3. package/cli/program.js +5 -5
  4. package/cli/program.js.map +1 -1
  5. package/lib/constants.d.ts +0 -3
  6. package/lib/constants.d.ts.map +1 -1
  7. package/lib/constants.js +1 -7
  8. package/lib/constants.js.map +1 -1
  9. package/lib/prompts/arc-resume.d.ts +2 -0
  10. package/lib/prompts/arc-resume.d.ts.map +1 -0
  11. package/lib/{tools → prompts}/arc-resume.js +51 -44
  12. package/lib/prompts/arc-resume.js.map +1 -0
  13. package/lib/prompts/index.d.ts +1 -0
  14. package/lib/prompts/index.d.ts.map +1 -1
  15. package/lib/prompts/index.js +28 -0
  16. package/lib/prompts/index.js.map +1 -1
  17. package/lib/rag/index.d.ts +13 -0
  18. package/lib/rag/index.d.ts.map +1 -0
  19. package/lib/rag/index.js +54 -0
  20. package/lib/rag/index.js.map +1 -0
  21. package/lib/rag/parser.d.ts +8 -0
  22. package/lib/rag/parser.d.ts.map +1 -0
  23. package/lib/rag/parser.js +39 -0
  24. package/lib/rag/parser.js.map +1 -0
  25. package/lib/rag/schema.d.ts +6 -0
  26. package/lib/rag/schema.d.ts.map +1 -0
  27. package/lib/rag/schema.js +49 -0
  28. package/lib/rag/schema.js.map +1 -0
  29. package/lib/server.d.ts.map +1 -1
  30. package/lib/server.js +0 -12
  31. package/lib/server.js.map +1 -1
  32. package/lib/tools/consistency/index.d.ts +1 -1
  33. package/lib/tools/consistency/rules/entity-duplicate.d.ts.map +1 -1
  34. package/lib/tools/consistency/rules/entity-duplicate.js +3 -5
  35. package/lib/tools/consistency/rules/entity-duplicate.js.map +1 -1
  36. package/lib/tools/consistency/rules/first-time-content.d.ts.map +1 -1
  37. package/lib/tools/consistency/rules/first-time-content.js +7 -2
  38. package/lib/tools/consistency/rules/first-time-content.js.map +1 -1
  39. package/lib/tools/consistency/rules/relation-jump.d.ts.map +1 -1
  40. package/lib/tools/consistency/rules/relation-jump.js +11 -8
  41. package/lib/tools/consistency/rules/relation-jump.js.map +1 -1
  42. package/lib/tools/consistency/types.d.ts.map +1 -1
  43. package/lib/tools/graph-export.d.ts +1 -2
  44. package/lib/tools/graph-export.d.ts.map +1 -1
  45. package/lib/tools/graph-export.js +49 -116
  46. package/lib/tools/graph-export.js.map +1 -1
  47. package/lib/tools/history.d.ts +1 -1
  48. package/lib/tools/history.d.ts.map +1 -1
  49. package/lib/tools/history.js +43 -55
  50. package/lib/tools/history.js.map +1 -1
  51. package/lib/tools/index.d.ts +7 -2
  52. package/lib/tools/index.d.ts.map +1 -1
  53. package/lib/tools/index.js +28 -4
  54. package/lib/tools/index.js.map +1 -1
  55. package/lib/tools/list.d.ts +1 -1
  56. package/lib/tools/list.d.ts.map +1 -1
  57. package/lib/tools/list.js +35 -30
  58. package/lib/tools/list.js.map +1 -1
  59. package/lib/tools/review-apply.d.ts.map +1 -1
  60. package/lib/tools/review-apply.js +49 -207
  61. package/lib/tools/review-apply.js.map +1 -1
  62. package/lib/tools/review-generate.d.ts.map +1 -1
  63. package/lib/tools/review-generate.js +44 -55
  64. package/lib/tools/review-generate.js.map +1 -1
  65. package/lib/tools/review-status.d.ts +12 -17
  66. package/lib/tools/review-status.d.ts.map +1 -1
  67. package/lib/tools/review-status.js +21 -33
  68. package/lib/tools/review-status.js.map +1 -1
  69. package/lib/tools/search.d.ts +1 -1
  70. package/lib/tools/search.d.ts.map +1 -1
  71. package/lib/tools/search.js +62 -44
  72. package/lib/tools/search.js.map +1 -1
  73. package/lib/tools/stats.d.ts.map +1 -1
  74. package/lib/tools/stats.js +43 -7
  75. package/lib/tools/stats.js.map +1 -1
  76. package/lib/types.d.ts.map +1 -1
  77. package/package.json +8 -6
  78. package/lib/database/index.d.ts +0 -36
  79. package/lib/database/index.d.ts.map +0 -1
  80. package/lib/database/index.js +0 -287
  81. package/lib/database/index.js.map +0 -1
  82. package/lib/database/schemas.d.ts +0 -55
  83. package/lib/database/schemas.d.ts.map +0 -1
  84. package/lib/database/schemas.js +0 -78
  85. package/lib/database/schemas.js.map +0 -1
  86. package/lib/indexer/embeddings.d.ts +0 -10
  87. package/lib/indexer/embeddings.d.ts.map +0 -1
  88. package/lib/indexer/embeddings.js +0 -64
  89. package/lib/indexer/embeddings.js.map +0 -1
  90. package/lib/indexer/extractor.d.ts +0 -81
  91. package/lib/indexer/extractor.d.ts.map +0 -1
  92. package/lib/indexer/extractor.js +0 -68
  93. package/lib/indexer/extractor.js.map +0 -1
  94. package/lib/indexer/scanner.d.ts +0 -8
  95. package/lib/indexer/scanner.d.ts.map +0 -1
  96. package/lib/indexer/scanner.js +0 -73
  97. package/lib/indexer/scanner.js.map +0 -1
  98. package/lib/indexer/tasks.d.ts +0 -32
  99. package/lib/indexer/tasks.d.ts.map +0 -1
  100. package/lib/indexer/tasks.js +0 -235
  101. package/lib/indexer/tasks.js.map +0 -1
  102. package/lib/tools/arc-resume.d.ts +0 -26
  103. package/lib/tools/arc-resume.d.ts.map +0 -1
  104. package/lib/tools/arc-resume.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import z from 'zod';
2
2
  import { DEFAULT_DB_PATH } from '../constants.js';
3
- import { Database } from '../database/index.js';
3
+ import { createEchoesRAG } from '../rag/index.js';
4
4
  export const historyConfig = {
5
5
  name: 'history',
6
6
  description: 'Query character/arc history (kinks, outfits, locations, relations).',
@@ -25,7 +25,6 @@ export const historySchema = z.object({
25
25
  function parseOutfitField(outfitField) {
26
26
  if (!outfitField)
27
27
  return [];
28
- // Parse "Nic: Business casual | Vi: Outfit professionale"
29
28
  return outfitField
30
29
  .split('|')
31
30
  .map((part) => {
@@ -35,21 +34,14 @@ function parseOutfitField(outfitField) {
35
34
  .filter((entry) => entry.character && entry.outfit);
36
35
  }
37
36
  function isFirstTimeKink(kink) {
38
- const firstPatterns = /\b(primo|prima|first)\b/i;
39
- return firstPatterns.test(kink);
37
+ return /\b(primo|prima|first)\b/i.test(kink);
40
38
  }
41
39
  function matchesSearch(text, search) {
42
40
  return text.toLowerCase().includes(search.toLowerCase());
43
41
  }
44
42
  export async function history(input) {
45
43
  const { arc, character, only, search, dbPath } = historySchema.parse(input);
46
- const db = new Database(dbPath);
47
- await db.connect();
48
- // Get all chapters for the arc
49
- const chapters = await db.getChapters(arc);
50
- // Get relations for the arc
51
- const relations = await db.getRelations(arc);
52
- db.close();
44
+ const { storage } = createEchoesRAG({ dbPath, arc });
53
45
  const result = {
54
46
  arc,
55
47
  character,
@@ -58,72 +50,68 @@ export async function history(input) {
58
50
  locations: [],
59
51
  relations: [],
60
52
  };
61
- // Process chapters for kinks, outfits, and locations
62
- for (const chapter of chapters) {
63
- // Filter by character if specified
64
- if (character && chapter.pov !== character)
53
+ // Get chapter data from KV
54
+ const docKeys = await storage.kv.list('doc:');
55
+ for (const key of docKeys) {
56
+ const doc = await storage.kv.get(key);
57
+ const f = doc?.metadata?.fields;
58
+ if (!f)
65
59
  continue;
66
- const chapterKey = `ep${chapter.episode.toString().padStart(2, '0')}:ch${chapter.chapter.toString().padStart(3, '0')}`;
67
- // Process kinks (from chapter.kink field if available, otherwise skip)
68
- if (chapter.kink && (!only || only === 'kinks')) {
69
- const kinks = chapter.kink
60
+ if (character && String(f.pov ?? '') !== character)
61
+ continue;
62
+ const chapterKey = `ep${String(f.episode ?? '0').padStart(2, '0')}:ch${String(f.chapter ?? '0').padStart(3, '0')}`;
63
+ if (f.kink && (!only || only === 'kinks')) {
64
+ const kinks = String(f.kink)
70
65
  .split(',')
71
66
  .map((k) => k.trim())
72
- .filter((k) => k);
67
+ .filter(Boolean);
73
68
  for (const kink of kinks) {
74
69
  if (!search || matchesSearch(kink, search)) {
75
- result.kinks.push({
76
- chapter: chapterKey,
77
- kink,
78
- isFirst: isFirstTimeKink(kink),
79
- });
70
+ result.kinks.push({ chapter: chapterKey, kink, isFirst: isFirstTimeKink(kink) });
80
71
  }
81
72
  }
82
73
  }
83
- // Process outfits (from chapter.outfit field if available, otherwise skip)
84
- if (chapter.outfit && (!only || only === 'outfits')) {
85
- const outfits = parseOutfitField(chapter.outfit);
86
- for (const { character: outfitChar, outfit } of outfits) {
87
- if (!search || matchesSearch(`${outfitChar}: ${outfit}`, search)) {
88
- result.outfits.push({
89
- chapter: chapterKey,
90
- character: outfitChar,
91
- outfit,
92
- });
74
+ if (f.outfit && (!only || only === 'outfits')) {
75
+ for (const { character: c, outfit } of parseOutfitField(String(f.outfit))) {
76
+ if (!search || matchesSearch(`${c}: ${outfit}`, search)) {
77
+ result.outfits.push({ chapter: chapterKey, character: c, outfit });
93
78
  }
94
79
  }
95
80
  }
96
- // Process locations
97
- if (chapter.location && (!only || only === 'locations')) {
98
- if (!search || matchesSearch(chapter.location, search)) {
99
- result.locations.push({
100
- chapter: chapterKey,
101
- location: chapter.location,
102
- });
81
+ if (f.location && (!only || only === 'locations')) {
82
+ const loc = String(f.location);
83
+ if (!search || matchesSearch(loc, search)) {
84
+ result.locations.push({ chapter: chapterKey, location: loc });
103
85
  }
104
86
  }
105
87
  }
106
- // Process relations
88
+ // Get relations from graph
107
89
  if (!only || only === 'relations') {
108
- for (const relation of relations) {
109
- const relationText = `${relation.source_entity} ${relation.type} ${relation.target_entity}`;
110
- if (!search || matchesSearch(relationText, search)) {
111
- // Find first chapter where this relation appears
112
- const firstChapter = relation.chapters[0];
113
- if (firstChapter) {
114
- const [, episode, chapter] = firstChapter.split(':');
115
- const chapterKey = `ep${episode}:ch${chapter}`;
90
+ const entities = await storage.graph.getEntities();
91
+ const seen = new Set();
92
+ for (const entity of entities) {
93
+ const rels = await storage.graph.getRelations(entity.id, 'out');
94
+ for (const rel of rels) {
95
+ if (seen.has(rel.id))
96
+ continue;
97
+ seen.add(rel.id);
98
+ const text = `${rel.sourceId} ${rel.type} ${rel.targetId}`;
99
+ if (search && !matchesSearch(text, search))
100
+ continue;
101
+ const firstChunk = rel.sourceChunkIds[0];
102
+ if (firstChunk) {
103
+ const parts = firstChunk.split(':');
104
+ const chapterKey = `ep${parts[1] ?? '0'}:ch${parts[2] ?? '0'}`;
116
105
  result.relations.push({
117
106
  chapter: chapterKey,
118
- source: relation.source_entity.split(':').pop() || '',
119
- target: relation.target_entity.split(':').pop() || '',
120
- type: relation.type,
107
+ source: rel.sourceId,
108
+ target: rel.targetId,
109
+ type: rel.type,
121
110
  });
122
111
  }
123
112
  }
124
113
  }
125
114
  }
126
- // Sort all entries by chapter
127
115
  const sortByChapter = (a, b) => a.chapter.localeCompare(b.chapter);
128
116
  result.kinks.sort(sortByChapter);
129
117
  result.outfits.sort(sortByChapter);
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["history.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import z from 'zod';
2
- import { type IndexTasksOutput } from '../indexer/tasks.js';
3
2
  import type { ToolConfig } from '../types.js';
4
3
  export declare const indexConfig: ToolConfig;
5
4
  export declare const indexSchema: z.ZodObject<{
@@ -9,6 +8,12 @@ export declare const indexSchema: z.ZodObject<{
9
8
  dbPath: z.ZodDefault<z.ZodString>;
10
9
  }, z.z.core.$strip>;
11
10
  export type IndexInput = z.infer<typeof indexSchema>;
12
- export type IndexOutput = IndexTasksOutput;
11
+ export interface IndexOutput {
12
+ indexed: number;
13
+ skipped: number;
14
+ deleted: number;
15
+ entities: number;
16
+ relations: number;
17
+ }
13
18
  export declare function index(input: IndexInput): Promise<IndexOutput>;
14
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,UASzB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;mBAKtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAE3C,wBAAsB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAKnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,KAAK,CAAC;AAIpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,UASzB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;mBAKtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA6BnE"}
@@ -1,6 +1,8 @@
1
+ import { readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
1
3
  import z from 'zod';
2
4
  import { DEFAULT_DB_PATH } from '../constants.js';
3
- import { runIndexTasks } from '../indexer/tasks.js';
5
+ import { createEchoesRAG } from '../rag/index.js';
4
6
  export const indexConfig = {
5
7
  name: 'index',
6
8
  description: 'Index timeline content into the database for semantic search.',
@@ -18,8 +20,30 @@ export const indexSchema = z.object({
18
20
  dbPath: z.string().default(DEFAULT_DB_PATH).describe(indexConfig.arguments.dbPath),
19
21
  });
20
22
  export async function index(input) {
21
- const parsed = indexSchema.parse(input);
22
- // Use silent renderer for MCP (no stdout output)
23
- return runIndexTasks(parsed, true);
23
+ const { contentPath, arc, force, dbPath } = indexSchema.parse(input);
24
+ const arcs = arc
25
+ ? [arc]
26
+ : readdirSync(contentPath, { withFileTypes: true })
27
+ .filter((d) => d.isDirectory())
28
+ .map((d) => d.name);
29
+ const totals = { indexed: 0, skipped: 0, deleted: 0, entities: 0, relations: 0 };
30
+ for (const arcName of arcs) {
31
+ const { rag } = createEchoesRAG({ dbPath, arc: arcName, contentPath });
32
+ await rag.index(join(contentPath, arcName), {
33
+ force,
34
+ onProgress: (event) => {
35
+ if (event.type === 'document:done')
36
+ totals.indexed++;
37
+ if (event.type === 'document:skip')
38
+ totals.skipped++;
39
+ if (event.type === 'document:delete')
40
+ totals.deleted++;
41
+ },
42
+ });
43
+ const stats = await rag.stats();
44
+ totals.entities += stats.entities;
45
+ totals.relations += stats.relations;
46
+ }
47
+ return totals;
24
48
  }
25
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAyB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG3E,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,+DAA+D;IAC5E,SAAS,EAAE;QACT,WAAW,EAAE,gCAAgC;QAC7C,GAAG,EAAE,gCAAgC;QACrC,KAAK,EAAE,oCAAoC;QAC3C,MAAM,EAAE,2BAA2B,eAAe,IAAI;KACvD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC;IACnE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;CACnF,CAAC,CAAC;AAKH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,KAAiB;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,iDAAiD;IACjD,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import type { ToolConfig } from '../types.js';
3
3
  export declare const listConfig: ToolConfig;
4
4
  export declare const listSchema: z.ZodObject<{
5
5
  type: z.ZodEnum<{
6
- entities: "entities";
7
6
  relations: "relations";
7
+ entities: "entities";
8
8
  }>;
9
9
  arc: z.ZodOptional<z.ZodString>;
10
10
  entityType: z.ZodOptional<z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["list.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,UAAU,EAAE,UAUxB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAMrB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAqChE"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["list.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,UAAU,EAAE,UAUxB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAMrB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CA2ChE"}
package/lib/tools/list.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import z from 'zod';
2
2
  import { DEFAULT_DB_PATH } from '../constants.js';
3
- import { Database } from '../database/index.js';
4
- import { ENTITY_TYPES, RELATION_TYPES } from '../database/schemas.js';
3
+ import { createEchoesRAG } from '../rag/index.js';
4
+ import { ENTITY_TYPES, RELATION_TYPES } from '../rag/schema.js';
5
5
  export const listConfig = {
6
6
  name: 'list',
7
7
  description: 'List all entities or relations from the database.',
@@ -22,38 +22,43 @@ export const listSchema = z.object({
22
22
  });
23
23
  export async function list(input) {
24
24
  const { type, arc, entityType, relationType, dbPath } = listSchema.parse(input);
25
- const db = new Database(dbPath);
26
- await db.connect();
27
- try {
28
- if (type === 'entities') {
29
- const entities = await db.getEntities(arc, entityType);
30
- return {
31
- type: 'entities',
32
- results: entities.map((e) => ({
33
- id: e.id,
34
- name: e.name,
35
- type: e.type,
36
- description: e.description,
37
- aliases: e.aliases,
38
- chapter_count: e.chapter_count,
39
- })),
40
- };
41
- }
42
- const relations = await db.getRelations(arc, relationType);
25
+ const { storage } = createEchoesRAG({ dbPath, arc });
26
+ if (type === 'entities') {
27
+ const entities = await storage.graph.getEntities(entityType ? { type: entityType } : undefined);
43
28
  return {
44
- type: 'relations',
45
- results: relations.map((r) => ({
46
- id: r.id,
47
- source_entity: r.source_entity,
48
- target_entity: r.target_entity,
49
- type: r.type,
50
- description: r.description,
51
- chapters: r.chapters,
29
+ type: 'entities',
30
+ results: entities.map((e) => ({
31
+ id: e.id,
32
+ name: e.name,
33
+ type: e.type,
34
+ description: e.description,
35
+ aliases: e.fields?.aliases ?? [],
36
+ chapter_count: e.sourceChunkIds.length,
52
37
  })),
53
38
  };
54
39
  }
55
- finally {
56
- db.close();
40
+ // type === 'relations'
41
+ const entities = await storage.graph.getEntities();
42
+ const seen = new Set();
43
+ const results = [];
44
+ for (const entity of entities) {
45
+ const rels = await storage.graph.getRelations(entity.id, 'out');
46
+ for (const r of rels) {
47
+ if (seen.has(r.id))
48
+ continue;
49
+ seen.add(r.id);
50
+ if (relationType && r.type !== relationType)
51
+ continue;
52
+ results.push({
53
+ id: r.id,
54
+ source_entity: r.sourceId,
55
+ target_entity: r.targetId,
56
+ type: r.type,
57
+ description: r.description,
58
+ chapters: r.sourceChunkIds ?? [],
59
+ });
60
+ }
57
61
  }
62
+ return { type: 'relations', results };
58
63
  }
59
64
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"review-apply.d.ts","sourceRoot":"","sources":["review-apply.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,iBAAiB,EAAE,UAQ/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;mBAI5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AA8DjE,UAAU,WAAW;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,SAAS,EAAE;YACT,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0P/E"}
1
+ {"version":3,"file":"review-apply.d.ts","sourceRoot":"","sources":["review-apply.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAC;AAIpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,iBAAiB,EAAE,UAQ/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;mBAI5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AA0DjE,UAAU,WAAW;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,QAAQ,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAClF,SAAS,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KACpF,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqF/E"}