@echoes-io/mcp-server 4.1.1 → 6.1.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 (112) hide show
  1. package/README.md +120 -185
  2. package/cli/index.d.ts +1 -0
  3. package/cli/index.d.ts.map +1 -0
  4. package/cli/index.js +3 -185
  5. package/cli/index.js.map +1 -0
  6. package/cli/program.d.ts +3 -0
  7. package/cli/program.d.ts.map +1 -0
  8. package/cli/program.js +151 -0
  9. package/cli/program.js.map +1 -0
  10. package/lib/constants.d.ts +8 -0
  11. package/lib/constants.d.ts.map +1 -0
  12. package/lib/constants.js +12 -0
  13. package/lib/constants.js.map +1 -0
  14. package/lib/database/index.d.ts +34 -0
  15. package/lib/database/index.d.ts.map +1 -0
  16. package/lib/database/index.js +266 -0
  17. package/lib/database/index.js.map +1 -0
  18. package/lib/database/schemas.d.ts +55 -0
  19. package/lib/database/schemas.d.ts.map +1 -0
  20. package/lib/database/schemas.js +70 -0
  21. package/lib/database/schemas.js.map +1 -0
  22. package/lib/indexer/embeddings.d.ts +6 -0
  23. package/lib/indexer/embeddings.d.ts.map +1 -0
  24. package/lib/indexer/embeddings.js +51 -0
  25. package/lib/indexer/embeddings.js.map +1 -0
  26. package/lib/indexer/extractor.d.ts +81 -0
  27. package/lib/indexer/extractor.d.ts.map +1 -0
  28. package/lib/indexer/extractor.js +68 -0
  29. package/lib/indexer/extractor.js.map +1 -0
  30. package/lib/indexer/scanner.d.ts +8 -0
  31. package/lib/indexer/scanner.d.ts.map +1 -0
  32. package/lib/indexer/scanner.js +73 -0
  33. package/lib/indexer/scanner.js.map +1 -0
  34. package/lib/indexer/tasks.d.ts +32 -0
  35. package/lib/indexer/tasks.d.ts.map +1 -0
  36. package/lib/indexer/tasks.js +228 -0
  37. package/lib/indexer/tasks.js.map +1 -0
  38. package/lib/prompts/index.d.ts +13 -0
  39. package/lib/prompts/index.d.ts.map +1 -0
  40. package/lib/prompts/index.js +153 -0
  41. package/lib/prompts/index.js.map +1 -0
  42. package/lib/server.d.ts +13 -0
  43. package/lib/server.d.ts.map +1 -0
  44. package/lib/server.js +90 -0
  45. package/lib/server.js.map +1 -0
  46. package/lib/tools/index.d.ts +14 -0
  47. package/lib/tools/index.d.ts.map +1 -0
  48. package/lib/tools/index.js +25 -0
  49. package/lib/tools/index.js.map +1 -0
  50. package/lib/tools/search.d.ts +86 -0
  51. package/lib/tools/search.d.ts.map +1 -0
  52. package/lib/tools/search.js +95 -0
  53. package/lib/tools/search.js.map +1 -0
  54. package/lib/tools/stats.d.ts +18 -0
  55. package/lib/tools/stats.d.ts.map +1 -0
  56. package/lib/tools/stats.js +62 -0
  57. package/lib/tools/stats.js.map +1 -0
  58. package/{src → lib}/tools/words-count.d.ts +6 -3
  59. package/lib/tools/words-count.d.ts.map +1 -0
  60. package/lib/tools/words-count.js +31 -0
  61. package/lib/tools/words-count.js.map +1 -0
  62. package/{src/types/frontmatter.d.ts → lib/types.d.ts} +11 -17
  63. package/lib/types.d.ts.map +1 -0
  64. package/lib/types.js +2 -0
  65. package/lib/types.js.map +1 -0
  66. package/lib/utils.d.ts +19 -0
  67. package/lib/utils.d.ts.map +1 -0
  68. package/lib/utils.js +40 -0
  69. package/lib/utils.js.map +1 -0
  70. package/package.json +60 -62
  71. package/src/database/index.d.ts +0 -6
  72. package/src/database/index.js +0 -26
  73. package/src/database/relations.d.ts +0 -744
  74. package/src/database/relations.js +0 -52
  75. package/src/database/schema.d.ts +0 -733
  76. package/src/database/schema.js +0 -69
  77. package/src/database/vector.d.ts +0 -25
  78. package/src/database/vector.js +0 -98
  79. package/src/index.d.ts +0 -5
  80. package/src/index.js +0 -5
  81. package/src/rag/character-ner.d.ts +0 -36
  82. package/src/rag/character-ner.js +0 -416
  83. package/src/rag/database-sync.d.ts +0 -38
  84. package/src/rag/database-sync.js +0 -158
  85. package/src/rag/embeddings.d.ts +0 -74
  86. package/src/rag/embeddings.js +0 -164
  87. package/src/rag/graph-rag.d.ts +0 -69
  88. package/src/rag/graph-rag.js +0 -311
  89. package/src/rag/hybrid-rag.d.ts +0 -109
  90. package/src/rag/hybrid-rag.js +0 -255
  91. package/src/rag/index.d.ts +0 -16
  92. package/src/rag/index.js +0 -33
  93. package/src/server.d.ts +0 -43
  94. package/src/server.js +0 -177
  95. package/src/tools/index-rag.d.ts +0 -19
  96. package/src/tools/index-rag.js +0 -85
  97. package/src/tools/index-tracker.d.ts +0 -17
  98. package/src/tools/index-tracker.js +0 -89
  99. package/src/tools/index.d.ts +0 -5
  100. package/src/tools/index.js +0 -5
  101. package/src/tools/rag-context.d.ts +0 -34
  102. package/src/tools/rag-context.js +0 -51
  103. package/src/tools/rag-search.d.ts +0 -35
  104. package/src/tools/rag-search.js +0 -60
  105. package/src/tools/words-count.js +0 -28
  106. package/src/types/frontmatter.js +0 -1
  107. package/src/utils/index.d.ts +0 -1
  108. package/src/utils/index.js +0 -1
  109. package/src/utils/markdown.d.ts +0 -6
  110. package/src/utils/markdown.js +0 -36
  111. package/src/utils/timeline-detection.d.ts +0 -13
  112. package/src/utils/timeline-detection.js +0 -76
package/cli/program.js ADDED
@@ -0,0 +1,151 @@
1
+ import { Command } from '@commander-js/extra-typings';
2
+ import { DEFAULT_DB_PATH } from '../lib/constants.js';
3
+ import { runIndexTasks } from '../lib/indexer/tasks.js';
4
+ import { startServer } from '../lib/server.js';
5
+ import { indexConfig } from '../lib/tools/index.js';
6
+ import { search, searchConfig } from '../lib/tools/search.js';
7
+ import { stats, statsConfig } from '../lib/tools/stats.js';
8
+ import { wordsCount, wordsCountConfig } from '../lib/tools/words-count.js';
9
+ import { getPackageConfig } from '../lib/utils.js';
10
+ const packageConfig = getPackageConfig();
11
+ export const program = new Command()
12
+ .name(packageConfig.name)
13
+ .description(packageConfig.description)
14
+ .version(packageConfig.version);
15
+ program
16
+ .command(wordsCountConfig.name)
17
+ .description(wordsCountConfig.description)
18
+ .argument('<filePath...>', wordsCountConfig.arguments.filePath)
19
+ .option('-d, --detailed', wordsCountConfig.arguments.detailed)
20
+ .action(async (filePaths, { detailed }) => {
21
+ try {
22
+ filePaths.forEach((filePath, index) => {
23
+ const result = wordsCount({ filePath, detailed });
24
+ if (index > 0) {
25
+ console.log('');
26
+ }
27
+ console.log(`📄 ${filePath}\n`);
28
+ console.log(` 📝 Words: ${result.words.toLocaleString()}`);
29
+ console.log(` 🔤 Characters: ${result.characters.toLocaleString()}`);
30
+ console.log(` 🔡 Characters (no sp): ${result.charactersNoSpaces.toLocaleString()}`);
31
+ console.log(` ⏱️ Reading time: ${result.readingTimeMinutes} min`);
32
+ if (detailed) {
33
+ console.log(` 💬 Sentences: ${result.sentences?.toLocaleString()}`);
34
+ console.log(` 📃 Paragraphs: ${result.paragraphs?.toLocaleString()}`);
35
+ }
36
+ });
37
+ }
38
+ catch (error) {
39
+ console.error(`❌ Error: ${error.message}`);
40
+ process.exit(1);
41
+ }
42
+ });
43
+ program
44
+ .command(statsConfig.name)
45
+ .description(statsConfig.description)
46
+ .option('--db <path>', 'Database path', DEFAULT_DB_PATH)
47
+ .option('--arc <name>', statsConfig.arguments.arc)
48
+ .option('--pov <name>', statsConfig.arguments.pov)
49
+ .action(async ({ db, arc, pov }) => {
50
+ try {
51
+ const result = await stats({ arc, pov, dbPath: db });
52
+ console.log('📊 Timeline Statistics\n');
53
+ console.log(` 📚 Chapters: ${result.totalChapters.toLocaleString()}`);
54
+ console.log(` 📝 Total words: ${result.totalWords.toLocaleString()}`);
55
+ console.log(` 📈 Avg words/chapter: ${result.averageWordsPerChapter.toLocaleString()}`);
56
+ console.log(` 📁 Arcs: ${result.arcs.join(', ')}`);
57
+ console.log(' 👤 POVs:');
58
+ for (const [name, count] of Object.entries(result.povs).sort((a, b) => b[1] - a[1])) {
59
+ console.log(` - ${name}: ${count}`);
60
+ }
61
+ }
62
+ catch (error) {
63
+ console.error(`❌ Error: ${error.message}`);
64
+ process.exit(1);
65
+ }
66
+ });
67
+ program
68
+ .command(indexConfig.name)
69
+ .description(indexConfig.description)
70
+ .argument('<contentPath>', indexConfig.arguments.contentPath)
71
+ .option('--db <path>', 'Database path', DEFAULT_DB_PATH)
72
+ .option('--arc <name>', indexConfig.arguments.arc)
73
+ .option('--force', indexConfig.arguments.force)
74
+ .action(async (contentPath, { db, arc, force }) => {
75
+ try {
76
+ // Use default renderer for CLI (shows progress bar)
77
+ const result = await runIndexTasks({ contentPath, arc, force, dbPath: db });
78
+ console.log('\n📊 Summary');
79
+ console.log(` 📖 Indexed: ${result.indexed} chapters`);
80
+ console.log(` ⏭️ Skipped: ${result.skipped} chapters`);
81
+ console.log(` 🗑️ Deleted: ${result.deleted} chapters`);
82
+ console.log(` 👤 Entities: ${result.entities}`);
83
+ console.log(` 🔗 Relations: ${result.relations}`);
84
+ }
85
+ catch (error) {
86
+ console.error(`\n❌ Error: ${error.message}`);
87
+ process.exit(1);
88
+ }
89
+ });
90
+ program
91
+ .command(searchConfig.name)
92
+ .description(searchConfig.description)
93
+ .argument('<query>', searchConfig.arguments.query)
94
+ .option('--db <path>', 'Database path', DEFAULT_DB_PATH)
95
+ .option('--type <type>', searchConfig.arguments.type, 'chapters')
96
+ .option('--arc <name>', searchConfig.arguments.arc)
97
+ .option('--entity-type <type>', searchConfig.arguments.entityType)
98
+ .option('--relation-type <type>', searchConfig.arguments.relationType)
99
+ .option('--limit <n>', searchConfig.arguments.limit, '10')
100
+ .action(async (query, { db, type, arc, entityType, relationType, limit }) => {
101
+ try {
102
+ const result = await search({
103
+ query,
104
+ type: type,
105
+ arc,
106
+ entityType,
107
+ relationType,
108
+ limit: Number.parseInt(limit, 10),
109
+ dbPath: db,
110
+ });
111
+ if (result.type === 'chapters') {
112
+ console.log(`🔍 Found ${result.results.length} chapters\n`);
113
+ for (const ch of result.results) {
114
+ console.log(`📖 ${ch.id} - ${ch.title} (${ch.pov})`);
115
+ console.log(` Score: ${ch.score.toFixed(3)} | Words: ${ch.word_count}`);
116
+ console.log(` ${ch.content.slice(0, 100)}...`);
117
+ console.log('');
118
+ }
119
+ }
120
+ else if (result.type === 'entities') {
121
+ console.log(`🔍 Found ${result.results.length} entities\n`);
122
+ for (const e of result.results) {
123
+ console.log(`👤 ${e.name} (${e.type})`);
124
+ console.log(` ${e.description}`);
125
+ console.log(` Chapters: ${e.chapter_count} | Score: ${e.score.toFixed(3)}`);
126
+ console.log('');
127
+ }
128
+ }
129
+ else {
130
+ console.log(`🔍 Found ${result.results.length} relations\n`);
131
+ for (const r of result.results) {
132
+ console.log(`🔗 ${r.source_entity} → ${r.type} → ${r.target_entity}`);
133
+ console.log(` ${r.description}`);
134
+ console.log('');
135
+ }
136
+ }
137
+ }
138
+ catch (error) {
139
+ console.error(`❌ Error: ${error.message}`);
140
+ process.exit(1);
141
+ }
142
+ });
143
+ /* c8 ignore start */
144
+ program
145
+ .command('serve')
146
+ .description('Start MCP server (for AI assistant integration)')
147
+ .action(async () => {
148
+ await startServer();
149
+ });
150
+ /* c8 ignore stop */
151
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Application constants
3
+ */
4
+ export declare const DEFAULT_EMBEDDING_MODEL = "Xenova/e5-small-v2";
5
+ export declare const TEST_EMBEDDING_MODEL = "Xenova/e5-small-v2";
6
+ export declare const DEFAULT_GEMINI_MODEL = "gemini-2.5-flash";
7
+ export declare const DEFAULT_DB_PATH = "db";
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAG5D,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAGvD,eAAO,MAAM,eAAe,OAAO,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Application constants
3
+ */
4
+ // Default embedding model for production
5
+ export const DEFAULT_EMBEDDING_MODEL = 'Xenova/e5-small-v2';
6
+ // Test embedding model (same as default for consistency)
7
+ export const TEST_EMBEDDING_MODEL = 'Xenova/e5-small-v2';
8
+ // Default Gemini model
9
+ export const DEFAULT_GEMINI_MODEL = 'gemini-2.5-flash';
10
+ // Default database path
11
+ export const DEFAULT_DB_PATH = 'db';
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE5D,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAEzD,uBAAuB;AACvB,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,wBAAwB;AACxB,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type Connection } from '@lancedb/lancedb';
2
+ import { type ChapterRecord, type EntityRecord, type RelationRecord } from './schemas.js';
3
+ export declare class Database {
4
+ readonly dbPath: string;
5
+ private db;
6
+ private tables;
7
+ private migrationChecked;
8
+ private metadata;
9
+ private tableConfigs;
10
+ private get metadataPath();
11
+ constructor(dbPath: string);
12
+ private getMetadata;
13
+ private getTableConfigs;
14
+ get embeddingModel(): string;
15
+ get embeddingDim(): number;
16
+ private getConnection;
17
+ private checkMigration;
18
+ private saveMetadata;
19
+ connect(): Promise<Connection>;
20
+ private getTable;
21
+ private upsert;
22
+ upsertChapters(records: ChapterRecord[]): Promise<number>;
23
+ upsertEntities(records: EntityRecord[]): Promise<number>;
24
+ upsertRelations(records: RelationRecord[]): Promise<number>;
25
+ getChapters(arc?: string): Promise<ChapterRecord[]>;
26
+ getChapterHashes(): Promise<Map<string, string>>;
27
+ deleteChaptersByPaths(paths: string[]): Promise<number>;
28
+ searchChapters(vector: number[], limit: number, arc?: string): Promise<ChapterRecord[]>;
29
+ searchEntities(vector: number[], limit: number, arc?: string, type?: string): Promise<EntityRecord[]>;
30
+ getEntities(arc?: string, type?: string): Promise<EntityRecord[]>;
31
+ getRelations(arc?: string, type?: string): Promise<RelationRecord[]>;
32
+ close(): void;
33
+ }
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AAKxE,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,YAAY,EACjB,KAAK,cAAc,EAEpB,MAAM,cAAc,CAAC;AActB,qBAAa,QAAQ;aAeS,MAAM,EAAE,MAAM;IAd1C,OAAO,CAAC,EAAE,CAA2B;IACrC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAIJ;IAEhB,OAAO,KAAK,YAAY,GAEvB;gBAE2B,MAAM,EAAE,MAAM;YAE5B,WAAW;YAeX,eAAe;IAc7B,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED,IAAI,YAAY,IAAI,MAAM,CAGzB;YAEa,aAAa;YAKb,cAAc;IAgD5B,OAAO,CAAC,YAAY;IAQd,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;YAKtB,QAAQ;YAeR,MAAM;IAWd,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzD,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxD,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAK3D,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgBnD,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAahD,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBvD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgBvF,cAAc,CAClB,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBpB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBjE,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmB1E,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,266 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { connect } from '@lancedb/lancedb';
4
+ import { getEmbeddingDimension, getEmbeddingModel } from '../indexer/embeddings.js';
5
+ import { getPackageConfig } from '../utils.js';
6
+ import { createChapterSchema, createEntitySchema, RelationSchema, } from './schemas.js';
7
+ export class Database {
8
+ dbPath;
9
+ db = null;
10
+ tables = new Map();
11
+ migrationChecked = false;
12
+ metadata = null;
13
+ tableConfigs = null;
14
+ get metadataPath() {
15
+ return join(this.dbPath, 'metadata.json');
16
+ }
17
+ constructor(dbPath) {
18
+ this.dbPath = dbPath;
19
+ }
20
+ async getMetadata() {
21
+ if (this.metadata)
22
+ return this.metadata;
23
+ const model = getEmbeddingModel();
24
+ const dim = await getEmbeddingDimension(model);
25
+ this.metadata = {
26
+ version: getPackageConfig().version,
27
+ embeddingModel: model,
28
+ embeddingDim: dim,
29
+ };
30
+ return this.metadata;
31
+ }
32
+ async getTableConfigs() {
33
+ if (this.tableConfigs)
34
+ return this.tableConfigs;
35
+ const metadata = await this.getMetadata();
36
+ this.tableConfigs = {
37
+ chapters: { name: 'chapters', schema: createChapterSchema(metadata.embeddingDim) },
38
+ entities: { name: 'entities', schema: createEntitySchema(metadata.embeddingDim) },
39
+ relations: { name: 'relations', schema: RelationSchema },
40
+ };
41
+ return this.tableConfigs;
42
+ }
43
+ get embeddingModel() {
44
+ if (!this.metadata)
45
+ throw new Error('Database not connected');
46
+ return this.metadata.embeddingModel;
47
+ }
48
+ get embeddingDim() {
49
+ if (!this.metadata)
50
+ throw new Error('Database not connected');
51
+ return this.metadata.embeddingDim;
52
+ }
53
+ async getConnection() {
54
+ this.db ??= await connect(this.dbPath);
55
+ return this.db;
56
+ }
57
+ async checkMigration() {
58
+ if (this.migrationChecked)
59
+ return;
60
+ this.migrationChecked = true;
61
+ const current = await this.getMetadata();
62
+ if (!existsSync(this.metadataPath)) {
63
+ this.saveMetadata();
64
+ return;
65
+ }
66
+ try {
67
+ const stored = JSON.parse(readFileSync(this.metadataPath, 'utf-8'));
68
+ const reasons = [];
69
+ if (stored.version !== current.version) {
70
+ reasons.push(`version ${stored.version} → ${current.version}`);
71
+ }
72
+ if (stored.embeddingModel !== current.embeddingModel) {
73
+ reasons.push(`model ${stored.embeddingModel} → ${current.embeddingModel}`);
74
+ }
75
+ if (stored.embeddingDim !== current.embeddingDim) {
76
+ reasons.push(`dimension ${stored.embeddingDim} → ${current.embeddingDim}`);
77
+ }
78
+ if (reasons.length > 0) {
79
+ console.log(`🔄 Database config changed: ${reasons.join(', ')}`);
80
+ console.log('🗑️ Removing old database for re-indexing...');
81
+ const db = await this.getConnection();
82
+ const existingTables = await db.tableNames();
83
+ const configs = await this.getTableConfigs();
84
+ for (const config of Object.values(configs)) {
85
+ if (existingTables.includes(config.name)) {
86
+ await db.dropTable(config.name);
87
+ }
88
+ }
89
+ this.tables.clear();
90
+ this.saveMetadata();
91
+ console.log('✅ Database ready for re-indexing');
92
+ }
93
+ }
94
+ catch {
95
+ this.saveMetadata();
96
+ }
97
+ }
98
+ saveMetadata() {
99
+ if (!existsSync(this.dbPath)) {
100
+ mkdirSync(this.dbPath, { recursive: true });
101
+ }
102
+ writeFileSync(this.metadataPath, JSON.stringify(this.metadata, null, 2));
103
+ }
104
+ async connect() {
105
+ await this.checkMigration();
106
+ return this.getConnection();
107
+ }
108
+ async getTable(config) {
109
+ const cached = this.tables.get(config.name);
110
+ if (cached)
111
+ return cached;
112
+ const db = await this.connect();
113
+ const existingTables = await db.tableNames();
114
+ const table = existingTables.includes(config.name)
115
+ ? await db.openTable(config.name)
116
+ : await db.createEmptyTable(config.name, config.schema);
117
+ this.tables.set(config.name, table);
118
+ return table;
119
+ }
120
+ async upsert(config, records) {
121
+ if (records.length === 0)
122
+ return 0;
123
+ const table = await this.getTable(config);
124
+ await table.mergeInsert('id').whenMatchedUpdateAll().whenNotMatchedInsertAll().execute(records);
125
+ return records.length;
126
+ }
127
+ async upsertChapters(records) {
128
+ const configs = await this.getTableConfigs();
129
+ return this.upsert(configs.chapters, records);
130
+ }
131
+ async upsertEntities(records) {
132
+ const configs = await this.getTableConfigs();
133
+ return this.upsert(configs.entities, records);
134
+ }
135
+ async upsertRelations(records) {
136
+ const configs = await this.getTableConfigs();
137
+ return this.upsert(configs.relations, records);
138
+ }
139
+ async getChapters(arc) {
140
+ try {
141
+ const configs = await this.getTableConfigs();
142
+ const table = await this.getTable(configs.chapters);
143
+ let query = table.query();
144
+ if (arc) {
145
+ query = query.where(`arc = '${arc}'`);
146
+ }
147
+ return (await query.toArray());
148
+ /* v8 ignore start */
149
+ }
150
+ catch {
151
+ return [];
152
+ }
153
+ /* v8 ignore stop */
154
+ }
155
+ async getChapterHashes() {
156
+ try {
157
+ const configs = await this.getTableConfigs();
158
+ const table = await this.getTable(configs.chapters);
159
+ const results = await table.query().select(['file_path', 'file_hash']).toArray();
160
+ return new Map(results.map((r) => [r.file_path, r.file_hash]));
161
+ /* v8 ignore start */
162
+ }
163
+ catch {
164
+ return new Map();
165
+ }
166
+ /* v8 ignore stop */
167
+ }
168
+ async deleteChaptersByPaths(paths) {
169
+ if (paths.length === 0)
170
+ return 0;
171
+ try {
172
+ const configs = await this.getTableConfigs();
173
+ const table = await this.getTable(configs.chapters);
174
+ const filter = paths.map((p) => `file_path = '${p}'`).join(' OR ');
175
+ await table.delete(filter);
176
+ return paths.length;
177
+ /* v8 ignore start */
178
+ }
179
+ catch {
180
+ return 0;
181
+ }
182
+ /* v8 ignore stop */
183
+ }
184
+ async searchChapters(vector, limit, arc) {
185
+ try {
186
+ const configs = await this.getTableConfigs();
187
+ const table = await this.getTable(configs.chapters);
188
+ let query = table.search(vector).limit(limit);
189
+ if (arc) {
190
+ query = query.where(`arc = '${arc}'`);
191
+ }
192
+ return (await query.toArray());
193
+ /* v8 ignore start */
194
+ }
195
+ catch {
196
+ return [];
197
+ }
198
+ /* v8 ignore stop */
199
+ }
200
+ async searchEntities(vector, limit, arc, type) {
201
+ try {
202
+ const configs = await this.getTableConfigs();
203
+ const table = await this.getTable(configs.entities);
204
+ let query = table.search(vector).limit(limit);
205
+ if (arc) {
206
+ query = query.where(`arc = '${arc}'`);
207
+ }
208
+ if (type) {
209
+ query = query.where(`type = '${type}'`);
210
+ }
211
+ return (await query.toArray());
212
+ /* v8 ignore start */
213
+ }
214
+ catch {
215
+ return [];
216
+ }
217
+ /* v8 ignore stop */
218
+ }
219
+ async getEntities(arc, type) {
220
+ try {
221
+ const configs = await this.getTableConfigs();
222
+ const table = await this.getTable(configs.entities);
223
+ let query = table.query();
224
+ const filters = [];
225
+ if (arc)
226
+ filters.push(`arc = '${arc}'`);
227
+ if (type)
228
+ filters.push(`type = '${type}'`);
229
+ if (filters.length > 0) {
230
+ query = query.where(filters.join(' AND '));
231
+ }
232
+ return (await query.toArray());
233
+ /* v8 ignore start */
234
+ }
235
+ catch {
236
+ return [];
237
+ }
238
+ /* v8 ignore stop */
239
+ }
240
+ async getRelations(arc, type) {
241
+ try {
242
+ const configs = await this.getTableConfigs();
243
+ const table = await this.getTable(configs.relations);
244
+ let query = table.query();
245
+ const filters = [];
246
+ if (arc)
247
+ filters.push(`arc = '${arc}'`);
248
+ if (type)
249
+ filters.push(`type = '${type}'`);
250
+ if (filters.length > 0) {
251
+ query = query.where(filters.join(' AND '));
252
+ }
253
+ return (await query.toArray());
254
+ /* v8 ignore start */
255
+ }
256
+ catch {
257
+ return [];
258
+ }
259
+ /* v8 ignore stop */
260
+ }
261
+ close() {
262
+ this.db = null;
263
+ this.tables.clear();
264
+ }
265
+ }
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Schema } from 'apache-arrow';
2
+ export declare const ENTITY_TYPES: readonly ["CHARACTER", "LOCATION", "EVENT", "OBJECT", "EMOTION"];
3
+ export type EntityType = (typeof ENTITY_TYPES)[number];
4
+ export declare const RELATION_TYPES: readonly ["LOVES", "HATES", "KNOWS", "RELATED_TO", "FRIENDS_WITH", "ENEMIES_WITH", "LOCATED_IN", "LIVES_IN", "TRAVELS_TO", "HAPPENS_BEFORE", "HAPPENS_AFTER", "CAUSES", "OWNS", "USES", "SEEKS"];
5
+ export type RelationType = (typeof RELATION_TYPES)[number];
6
+ export declare function createChapterSchema(embeddingDim: number): Schema;
7
+ export declare function createEntitySchema(embeddingDim: number): Schema;
8
+ export declare const RelationSchema: Schema<any>;
9
+ export interface ScannedChapter {
10
+ id: string;
11
+ file_path: string;
12
+ file_hash: string;
13
+ arc: string;
14
+ episode: number;
15
+ chapter: number;
16
+ pov: string;
17
+ title: string;
18
+ location: string;
19
+ date: string;
20
+ content: string;
21
+ summary: string;
22
+ word_count: number;
23
+ char_count: number;
24
+ paragraph_count: number;
25
+ }
26
+ export interface ChapterRecord extends ScannedChapter {
27
+ vector: number[];
28
+ entities: string[];
29
+ indexed_at: number;
30
+ }
31
+ export interface EntityRecord {
32
+ id: string;
33
+ arc: string;
34
+ name: string;
35
+ type: EntityType;
36
+ description: string;
37
+ aliases: string[];
38
+ vector: number[];
39
+ chapters: string[];
40
+ chapter_count: number;
41
+ first_appearance: string;
42
+ indexed_at: number;
43
+ }
44
+ export interface RelationRecord {
45
+ id: string;
46
+ arc: string;
47
+ source_entity: string;
48
+ target_entity: string;
49
+ type: RelationType;
50
+ description: string;
51
+ weight: number;
52
+ chapters: string[];
53
+ indexed_at: number;
54
+ }
55
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,MAAM,EAAQ,MAAM,cAAc,CAAC;AAGjG,eAAO,MAAM,YAAY,kEAAmE,CAAC;AAC7F,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,cAAc,kMAgBjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG3D,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAqBhE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAc/D;AAED,eAAO,MAAM,cAAc,aAUzB,CAAC;AAKH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,70 @@
1
+ import { Field, FixedSizeList, Float32, Float64, Int32, List, Schema, Utf8 } from 'apache-arrow';
2
+ // Entity and Relation type constants
3
+ export const ENTITY_TYPES = ['CHARACTER', 'LOCATION', 'EVENT', 'OBJECT', 'EMOTION'];
4
+ export const RELATION_TYPES = [
5
+ 'LOVES',
6
+ 'HATES',
7
+ 'KNOWS',
8
+ 'RELATED_TO',
9
+ 'FRIENDS_WITH',
10
+ 'ENEMIES_WITH',
11
+ 'LOCATED_IN',
12
+ 'LIVES_IN',
13
+ 'TRAVELS_TO',
14
+ 'HAPPENS_BEFORE',
15
+ 'HAPPENS_AFTER',
16
+ 'CAUSES',
17
+ 'OWNS',
18
+ 'USES',
19
+ 'SEEKS',
20
+ ];
21
+ // Dynamic Arrow Schema factories
22
+ export function createChapterSchema(embeddingDim) {
23
+ return new Schema([
24
+ new Field('id', new Utf8(), false),
25
+ new Field('file_path', new Utf8(), false),
26
+ new Field('file_hash', new Utf8(), false),
27
+ new Field('arc', new Utf8(), false),
28
+ new Field('episode', new Int32(), false),
29
+ new Field('chapter', new Int32(), false),
30
+ new Field('pov', new Utf8(), false),
31
+ new Field('title', new Utf8(), false),
32
+ new Field('location', new Utf8(), false),
33
+ new Field('date', new Utf8(), false),
34
+ new Field('content', new Utf8(), false),
35
+ new Field('summary', new Utf8(), false),
36
+ new Field('word_count', new Int32(), false),
37
+ new Field('char_count', new Int32(), false),
38
+ new Field('paragraph_count', new Int32(), false),
39
+ new Field('vector', new FixedSizeList(embeddingDim, new Field('item', new Float32())), false),
40
+ new Field('entities', new List(new Field('item', new Utf8())), false),
41
+ new Field('indexed_at', new Float64(), false),
42
+ ]);
43
+ }
44
+ export function createEntitySchema(embeddingDim) {
45
+ return new Schema([
46
+ new Field('id', new Utf8(), false),
47
+ new Field('arc', new Utf8(), false),
48
+ new Field('name', new Utf8(), false),
49
+ new Field('type', new Utf8(), false),
50
+ new Field('description', new Utf8(), false),
51
+ new Field('aliases', new List(new Field('item', new Utf8())), false),
52
+ new Field('vector', new FixedSizeList(embeddingDim, new Field('item', new Float32())), false),
53
+ new Field('chapters', new List(new Field('item', new Utf8())), false),
54
+ new Field('chapter_count', new Int32(), false),
55
+ new Field('first_appearance', new Utf8(), false),
56
+ new Field('indexed_at', new Float64(), false),
57
+ ]);
58
+ }
59
+ export const RelationSchema = new Schema([
60
+ new Field('id', new Utf8(), false),
61
+ new Field('arc', new Utf8(), false),
62
+ new Field('source_entity', new Utf8(), false),
63
+ new Field('target_entity', new Utf8(), false),
64
+ new Field('type', new Utf8(), false),
65
+ new Field('description', new Utf8(), false),
66
+ new Field('weight', new Float64(), false),
67
+ new Field('chapters', new List(new Field('item', new Utf8())), false),
68
+ new Field('indexed_at', new Float64(), false),
69
+ ]);
70
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["schemas.ts"],"names":[],"mappings":"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"}