@knowledgine/core 0.0.1 → 0.2.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 (123) hide show
  1. package/dist/config/config-loader.d.ts +15 -0
  2. package/dist/config/config-loader.d.ts.map +1 -0
  3. package/dist/config/config-loader.js +46 -0
  4. package/dist/config/config-loader.js.map +1 -0
  5. package/dist/config.d.ts +16 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +17 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/embedding/embedding-provider.d.ts +9 -0
  10. package/dist/embedding/embedding-provider.d.ts.map +1 -0
  11. package/dist/embedding/embedding-provider.js +2 -0
  12. package/dist/embedding/embedding-provider.js.map +1 -0
  13. package/dist/embedding/model-downloader.d.ts +34 -0
  14. package/dist/embedding/model-downloader.d.ts.map +1 -0
  15. package/dist/embedding/model-downloader.js +149 -0
  16. package/dist/embedding/model-downloader.js.map +1 -0
  17. package/dist/embedding/model-manager.d.ts +10 -0
  18. package/dist/embedding/model-manager.d.ts.map +1 -0
  19. package/dist/embedding/model-manager.js +32 -0
  20. package/dist/embedding/model-manager.js.map +1 -0
  21. package/dist/embedding/onnx-embedding-provider.d.ts +18 -0
  22. package/dist/embedding/onnx-embedding-provider.d.ts.map +1 -0
  23. package/dist/embedding/onnx-embedding-provider.js +121 -0
  24. package/dist/embedding/onnx-embedding-provider.js.map +1 -0
  25. package/dist/embedding/tokenizer.d.ts +19 -0
  26. package/dist/embedding/tokenizer.d.ts.map +1 -0
  27. package/dist/embedding/tokenizer.js +80 -0
  28. package/dist/embedding/tokenizer.js.map +1 -0
  29. package/dist/errors.d.ts +12 -0
  30. package/dist/errors.d.ts.map +1 -1
  31. package/dist/errors.js +21 -0
  32. package/dist/errors.js.map +1 -1
  33. package/dist/feedback/feedback-learner.d.ts +29 -0
  34. package/dist/feedback/feedback-learner.d.ts.map +1 -0
  35. package/dist/feedback/feedback-learner.js +88 -0
  36. package/dist/feedback/feedback-learner.js.map +1 -0
  37. package/dist/feedback/feedback-repository.d.ts +41 -0
  38. package/dist/feedback/feedback-repository.d.ts.map +1 -0
  39. package/dist/feedback/feedback-repository.js +94 -0
  40. package/dist/feedback/feedback-repository.js.map +1 -0
  41. package/dist/feedback/index.d.ts +5 -0
  42. package/dist/feedback/index.d.ts.map +1 -0
  43. package/dist/feedback/index.js +3 -0
  44. package/dist/feedback/index.js.map +1 -0
  45. package/dist/graph/entity-extractor.d.ts +26 -0
  46. package/dist/graph/entity-extractor.d.ts.map +1 -0
  47. package/dist/graph/entity-extractor.js +237 -0
  48. package/dist/graph/entity-extractor.js.map +1 -0
  49. package/dist/graph/graph-repository.d.ts +72 -0
  50. package/dist/graph/graph-repository.d.ts.map +1 -0
  51. package/dist/graph/graph-repository.js +442 -0
  52. package/dist/graph/graph-repository.js.map +1 -0
  53. package/dist/graph/index.d.ts +4 -0
  54. package/dist/graph/index.d.ts.map +1 -0
  55. package/dist/graph/index.js +4 -0
  56. package/dist/graph/index.js.map +1 -0
  57. package/dist/graph/relation-inferrer.d.ts +23 -0
  58. package/dist/graph/relation-inferrer.d.ts.map +1 -0
  59. package/dist/graph/relation-inferrer.js +89 -0
  60. package/dist/graph/relation-inferrer.js.map +1 -0
  61. package/dist/index.d.ts +33 -5
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +37 -4
  64. package/dist/index.js.map +1 -1
  65. package/dist/provenance/provenance-repository.d.ts +47 -0
  66. package/dist/provenance/provenance-repository.d.ts.map +1 -0
  67. package/dist/provenance/provenance-repository.js +121 -0
  68. package/dist/provenance/provenance-repository.js.map +1 -0
  69. package/dist/search/hybrid-searcher.d.ts +14 -0
  70. package/dist/search/hybrid-searcher.d.ts.map +1 -0
  71. package/dist/search/hybrid-searcher.js +67 -0
  72. package/dist/search/hybrid-searcher.js.map +1 -0
  73. package/dist/search/knowledge-searcher.d.ts +8 -4
  74. package/dist/search/knowledge-searcher.d.ts.map +1 -1
  75. package/dist/search/knowledge-searcher.js +47 -16
  76. package/dist/search/knowledge-searcher.js.map +1 -1
  77. package/dist/search/link-generator.d.ts +7 -1
  78. package/dist/search/link-generator.d.ts.map +1 -1
  79. package/dist/search/link-generator.js +37 -1
  80. package/dist/search/link-generator.js.map +1 -1
  81. package/dist/search/semantic-searcher.d.ts +14 -0
  82. package/dist/search/semantic-searcher.d.ts.map +1 -0
  83. package/dist/search/semantic-searcher.js +30 -0
  84. package/dist/search/semantic-searcher.js.map +1 -0
  85. package/dist/services/knowledge-service.d.ts +128 -0
  86. package/dist/services/knowledge-service.d.ts.map +1 -0
  87. package/dist/services/knowledge-service.js +168 -0
  88. package/dist/services/knowledge-service.js.map +1 -0
  89. package/dist/storage/database.d.ts +9 -1
  90. package/dist/storage/database.d.ts.map +1 -1
  91. package/dist/storage/database.js +28 -1
  92. package/dist/storage/database.js.map +1 -1
  93. package/dist/storage/knowledge-repository.d.ts +27 -0
  94. package/dist/storage/knowledge-repository.d.ts.map +1 -1
  95. package/dist/storage/knowledge-repository.js +107 -3
  96. package/dist/storage/knowledge-repository.js.map +1 -1
  97. package/dist/storage/migrations/003_vector_embeddings.d.ts +3 -0
  98. package/dist/storage/migrations/003_vector_embeddings.d.ts.map +1 -0
  99. package/dist/storage/migrations/003_vector_embeddings.js +50 -0
  100. package/dist/storage/migrations/003_vector_embeddings.js.map +1 -0
  101. package/dist/storage/migrations/004_knowledge_graph.d.ts +3 -0
  102. package/dist/storage/migrations/004_knowledge_graph.d.ts.map +1 -0
  103. package/dist/storage/migrations/004_knowledge_graph.js +106 -0
  104. package/dist/storage/migrations/004_knowledge_graph.js.map +1 -0
  105. package/dist/storage/migrations/005a_events_layer.d.ts +3 -0
  106. package/dist/storage/migrations/005a_events_layer.d.ts.map +1 -0
  107. package/dist/storage/migrations/005a_events_layer.js +55 -0
  108. package/dist/storage/migrations/005a_events_layer.js.map +1 -0
  109. package/dist/storage/migrations/005b_bitemporal.d.ts +3 -0
  110. package/dist/storage/migrations/005b_bitemporal.d.ts.map +1 -0
  111. package/dist/storage/migrations/005b_bitemporal.js +53 -0
  112. package/dist/storage/migrations/005b_bitemporal.js.map +1 -0
  113. package/dist/storage/migrations/005c_provenance.d.ts +3 -0
  114. package/dist/storage/migrations/005c_provenance.d.ts.map +1 -0
  115. package/dist/storage/migrations/005c_provenance.js +56 -0
  116. package/dist/storage/migrations/005c_provenance.js.map +1 -0
  117. package/dist/storage/migrations/006_extraction_feedback.d.ts +3 -0
  118. package/dist/storage/migrations/006_extraction_feedback.d.ts.map +1 -0
  119. package/dist/storage/migrations/006_extraction_feedback.js +30 -0
  120. package/dist/storage/migrations/006_extraction_feedback.js.map +1 -0
  121. package/dist/types.d.ts +40 -0
  122. package/dist/types.d.ts.map +1 -1
  123. package/package.json +15 -4
@@ -1,4 +1,4 @@
1
- import { ValidationError, DatabaseError, KnowledgeNotFoundError, FTSIndexError, } from "../errors.js";
1
+ import { ValidationError, DatabaseError, KnowledgeNotFoundError, } from "../errors.js";
2
2
  import { createHash } from "crypto";
3
3
  export class KnowledgeRepository {
4
4
  db;
@@ -91,8 +91,10 @@ export class KnowledgeRepository {
91
91
  `);
92
92
  return stmt.all(query, limit);
93
93
  }
94
- catch (error) {
95
- throw new FTSIndexError("search", error, { query, limit });
94
+ catch {
95
+ // FTS5失敗時はLIKEフォールバック(不正なクエリ構文への耐性)
96
+ const stmt = this.db.prepare(`SELECT * FROM knowledge_notes WHERE title LIKE ? OR content LIKE ? LIMIT ?`);
97
+ return stmt.all(`%${query}%`, `%${query}%`, limit);
96
98
  }
97
99
  }
98
100
  deleteNoteById(id) {
@@ -237,6 +239,108 @@ export class KnowledgeRepository {
237
239
  }
238
240
  return { totalNotes, totalPatterns, totalLinks, totalPairs, patternsByType };
239
241
  }
242
+ /**
243
+ * ノートの埋め込みベクトルを保存する(upsert)
244
+ */
245
+ saveEmbedding(noteId, embedding, modelName) {
246
+ try {
247
+ const now = new Date().toISOString();
248
+ const embBuf = Buffer.from(embedding.buffer);
249
+ // note_embeddings テーブルに upsert
250
+ const upsertStmt = this.db.prepare(`
251
+ INSERT INTO note_embeddings (note_id, embedding, model_name, dimensions, created_at, updated_at)
252
+ VALUES (?, ?, ?, ?, ?, ?)
253
+ ON CONFLICT(note_id) DO UPDATE SET
254
+ embedding = excluded.embedding,
255
+ model_name = excluded.model_name,
256
+ dimensions = excluded.dimensions,
257
+ updated_at = excluded.updated_at
258
+ `);
259
+ upsertStmt.run(noteId, embBuf, modelName, embedding.length, now, now);
260
+ // note_embeddings_vec (vec0) が存在する場合は手動で同期
261
+ // vec0 は ON CONFLICT をサポートしないため DELETE + INSERT を使う
262
+ try {
263
+ this.db.prepare("DELETE FROM note_embeddings_vec WHERE note_id = ?").run(noteId);
264
+ this.db
265
+ .prepare("INSERT INTO note_embeddings_vec(note_id, embedding) VALUES (?, ?)")
266
+ .run(noteId, embBuf);
267
+ }
268
+ catch {
269
+ // note_embeddings_vec が存在しない場合は無視(graceful degradation)
270
+ }
271
+ }
272
+ catch (error) {
273
+ if (error instanceof DatabaseError)
274
+ throw error;
275
+ throw new DatabaseError("saveEmbedding", error, { noteId });
276
+ }
277
+ }
278
+ /**
279
+ * ベクトル類似度検索(note_embeddings_vec を使用)
280
+ * sqlite-vec が利用できない場合は空配列を返す
281
+ */
282
+ searchByVector(embedding, limit = 10) {
283
+ try {
284
+ const buf = Buffer.from(embedding.buffer);
285
+ const stmt = this.db.prepare(`
286
+ SELECT note_id, distance
287
+ FROM note_embeddings_vec
288
+ WHERE embedding MATCH ?
289
+ ORDER BY distance
290
+ LIMIT ?
291
+ `);
292
+ return stmt.all(buf, limit);
293
+ }
294
+ catch {
295
+ // vec0テーブルが存在しない場合(sqlite-vec未ロード)は空を返す
296
+ return [];
297
+ }
298
+ }
299
+ /**
300
+ * FTS5 rank付きでノートを検索する
301
+ */
302
+ searchNotesWithRank(query, limit = 50) {
303
+ try {
304
+ const stmt = this.db.prepare(`
305
+ SELECT n.*, fts.rank
306
+ FROM knowledge_notes n
307
+ JOIN knowledge_notes_fts fts ON n.id = fts.rowid
308
+ WHERE knowledge_notes_fts MATCH ?
309
+ ORDER BY rank
310
+ LIMIT ?
311
+ `);
312
+ const rows = stmt.all(query, limit);
313
+ return rows.map(({ rank, ...note }) => ({ note: note, rank }));
314
+ }
315
+ catch {
316
+ // FTS5失敗時はLIKEフォールバック(不正なクエリ構文への耐性)
317
+ const fallbackStmt = this.db.prepare(`SELECT n.* FROM knowledge_notes n WHERE n.title LIKE ? OR n.content LIKE ? LIMIT ?`);
318
+ const fallbackRows = fallbackStmt.all(`%${query}%`, `%${query}%`, limit);
319
+ return fallbackRows.map((row) => ({ note: row, rank: 0 }));
320
+ }
321
+ }
322
+ /**
323
+ * 埋め込みがまだ生成されていないノートを取得する
324
+ */
325
+ getNotesWithoutEmbeddings() {
326
+ const stmt = this.db.prepare(`
327
+ SELECT n.* FROM knowledge_notes n
328
+ WHERE NOT EXISTS (SELECT 1 FROM note_embeddings e WHERE e.note_id = n.id)
329
+ `);
330
+ return stmt.all();
331
+ }
332
+ /**
333
+ * content_hashが変更されて埋め込みが古くなったノートを取得する
334
+ */
335
+ getNotesWithStaleEmbeddings() {
336
+ // note_embeddingsのupdated_atとknowledge_notesのupdated_atを比較
337
+ const stmt = this.db.prepare(`
338
+ SELECT n.* FROM knowledge_notes n
339
+ JOIN note_embeddings e ON e.note_id = n.id
340
+ WHERE n.updated_at IS NOT NULL AND n.updated_at > e.created_at
341
+ `);
342
+ return stmt.all();
343
+ }
240
344
  close() {
241
345
  this.db.close();
242
346
  }
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-repository.js","sourceRoot":"","sources":["../../src/storage/knowledge-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge-repository.js","sourceRoot":"","sources":["../../src/storage/knowledge-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "../migrator.js";
2
+ export declare const migration003: Migration;
3
+ //# sourceMappingURL=003_vector_embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"003_vector_embeddings.d.ts","sourceRoot":"","sources":["../../../src/storage/migrations/003_vector_embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA6BhD,eAAO,MAAM,YAAY,EAAE,SAwB1B,CAAC"}
@@ -0,0 +1,50 @@
1
+ const VECTOR_EMBEDDINGS_SQL = `
2
+ CREATE TABLE note_embeddings (
3
+ note_id INTEGER PRIMARY KEY,
4
+ embedding BLOB NOT NULL,
5
+ model_name TEXT NOT NULL DEFAULT 'all-MiniLM-L6-v2',
6
+ dimensions INTEGER NOT NULL DEFAULT 384,
7
+ created_at TEXT NOT NULL,
8
+ updated_at TEXT,
9
+ FOREIGN KEY (note_id) REFERENCES knowledge_notes(id) ON DELETE CASCADE
10
+ );
11
+
12
+ CREATE INDEX idx_note_embeddings_model ON note_embeddings(model_name);
13
+ `;
14
+ const VECTOR_TABLE_SQL = `
15
+ CREATE VIRTUAL TABLE note_embeddings_vec USING vec0(
16
+ note_id INTEGER PRIMARY KEY,
17
+ embedding FLOAT[384]
18
+ );
19
+ `;
20
+ const SYNC_TRIGGERS_SQL = `
21
+ CREATE TRIGGER note_embeddings_ad AFTER DELETE ON note_embeddings BEGIN
22
+ DELETE FROM note_embeddings_vec WHERE note_id = old.note_id;
23
+ END;
24
+ `;
25
+ export const migration003 = {
26
+ version: 3,
27
+ name: "vector_embeddings",
28
+ up: (db) => {
29
+ // Always create the regular table
30
+ db.exec(VECTOR_EMBEDDINGS_SQL);
31
+ // Try to create vec0 virtual table (requires sqlite-vec extension)
32
+ try {
33
+ db.exec(VECTOR_TABLE_SQL);
34
+ db.exec(SYNC_TRIGGERS_SQL);
35
+ }
36
+ catch {
37
+ // sqlite-vec not available — graceful degradation, keyword-only search still works
38
+ }
39
+ },
40
+ down: (db) => {
41
+ db.exec(`
42
+ DROP TRIGGER IF EXISTS note_embeddings_ad;
43
+ DROP TRIGGER IF EXISTS note_embeddings_au;
44
+ DROP TRIGGER IF EXISTS note_embeddings_ai;
45
+ DROP TABLE IF EXISTS note_embeddings_vec;
46
+ DROP TABLE IF EXISTS note_embeddings;
47
+ `);
48
+ },
49
+ };
50
+ //# sourceMappingURL=003_vector_embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"003_vector_embeddings.js","sourceRoot":"","sources":["../../../src/storage/migrations/003_vector_embeddings.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG;;;;;;;;;;;;CAY7B,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;CAKxB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,mBAAmB;IACzB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,kCAAkC;QAClC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAE/B,mEAAmE;QACnE,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC1B,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;QACrF,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACX,EAAE,CAAC,IAAI,CAAC;;;;;;KAMP,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "../migrator.js";
2
+ export declare const migration004: Migration;
3
+ //# sourceMappingURL=004_knowledge_graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"004_knowledge_graph.d.ts","sourceRoot":"","sources":["../../../src/storage/migrations/004_knowledge_graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAyFhD,eAAO,MAAM,YAAY,EAAE,SAkB1B,CAAC"}
@@ -0,0 +1,106 @@
1
+ const KNOWLEDGE_GRAPH_SQL = `
2
+ CREATE TABLE entities (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ name TEXT NOT NULL,
5
+ entity_type TEXT NOT NULL CHECK(entity_type IN ('person','project','technology','concept','tool','organization','event')),
6
+ description TEXT,
7
+ created_at TEXT NOT NULL,
8
+ updated_at TEXT,
9
+ metadata_json TEXT,
10
+ UNIQUE(name, entity_type)
11
+ );
12
+
13
+ CREATE INDEX idx_entities_name ON entities(name);
14
+ CREATE INDEX idx_entities_type ON entities(entity_type);
15
+
16
+ CREATE VIRTUAL TABLE entities_fts USING fts5(
17
+ name, description,
18
+ content='entities', content_rowid='id',
19
+ tokenize='trigram'
20
+ );
21
+
22
+ CREATE TRIGGER entities_ai AFTER INSERT ON entities BEGIN
23
+ INSERT INTO entities_fts(rowid, name, description)
24
+ VALUES (new.id, new.name, COALESCE(new.description, ''));
25
+ END;
26
+
27
+ CREATE TRIGGER entities_ad AFTER DELETE ON entities BEGIN
28
+ INSERT INTO entities_fts(entities_fts, rowid, name, description)
29
+ VALUES ('delete', old.id, old.name, COALESCE(old.description, ''));
30
+ END;
31
+
32
+ CREATE TRIGGER entities_au AFTER UPDATE ON entities BEGIN
33
+ INSERT INTO entities_fts(entities_fts, rowid, name, description)
34
+ VALUES ('delete', old.id, old.name, COALESCE(old.description, ''));
35
+ INSERT INTO entities_fts(rowid, name, description)
36
+ VALUES (new.id, new.name, COALESCE(new.description, ''));
37
+ END;
38
+
39
+ CREATE TABLE relations (
40
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
41
+ from_entity_id INTEGER NOT NULL,
42
+ to_entity_id INTEGER NOT NULL,
43
+ relation_type TEXT NOT NULL CHECK(relation_type IN (
44
+ 'uses','implements','depends_on','related_to','created_by',
45
+ 'works_on','solves','references','part_of','similar_to'
46
+ )),
47
+ strength REAL NOT NULL DEFAULT 1.0,
48
+ description TEXT,
49
+ created_at TEXT NOT NULL,
50
+ FOREIGN KEY (from_entity_id) REFERENCES entities(id) ON DELETE CASCADE,
51
+ FOREIGN KEY (to_entity_id) REFERENCES entities(id) ON DELETE CASCADE,
52
+ UNIQUE(from_entity_id, to_entity_id, relation_type)
53
+ );
54
+
55
+ CREATE INDEX idx_relations_from ON relations(from_entity_id);
56
+ CREATE INDEX idx_relations_to ON relations(to_entity_id);
57
+ CREATE INDEX idx_relations_type ON relations(relation_type);
58
+
59
+ CREATE TABLE observations (
60
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
61
+ entity_id INTEGER NOT NULL,
62
+ content TEXT NOT NULL,
63
+ observation_type TEXT NOT NULL CHECK(observation_type IN ('fact','insight','learning','decision','performance')),
64
+ confidence REAL,
65
+ source_note_id INTEGER,
66
+ source_pattern_id INTEGER,
67
+ created_at TEXT NOT NULL,
68
+ metadata_json TEXT,
69
+ FOREIGN KEY (entity_id) REFERENCES entities(id) ON DELETE CASCADE,
70
+ FOREIGN KEY (source_note_id) REFERENCES knowledge_notes(id) ON DELETE SET NULL,
71
+ FOREIGN KEY (source_pattern_id) REFERENCES extracted_patterns(id) ON DELETE SET NULL
72
+ );
73
+
74
+ CREATE INDEX idx_observations_entity ON observations(entity_id);
75
+ CREATE INDEX idx_observations_type ON observations(observation_type);
76
+
77
+ CREATE TABLE entity_note_links (
78
+ entity_id INTEGER NOT NULL,
79
+ note_id INTEGER NOT NULL,
80
+ PRIMARY KEY (entity_id, note_id),
81
+ FOREIGN KEY (entity_id) REFERENCES entities(id) ON DELETE CASCADE,
82
+ FOREIGN KEY (note_id) REFERENCES knowledge_notes(id) ON DELETE CASCADE
83
+ );
84
+
85
+ CREATE INDEX idx_entity_note_links_note ON entity_note_links(note_id);
86
+ `;
87
+ export const migration004 = {
88
+ version: 4,
89
+ name: "knowledge_graph",
90
+ up: (db) => {
91
+ db.exec(KNOWLEDGE_GRAPH_SQL);
92
+ },
93
+ down: (db) => {
94
+ db.exec(`
95
+ DROP TABLE IF EXISTS entity_note_links;
96
+ DROP TABLE IF EXISTS observations;
97
+ DROP TABLE IF EXISTS relations;
98
+ DROP TRIGGER IF EXISTS entities_au;
99
+ DROP TRIGGER IF EXISTS entities_ad;
100
+ DROP TRIGGER IF EXISTS entities_ai;
101
+ DROP TABLE IF EXISTS entities_fts;
102
+ DROP TABLE IF EXISTS entities;
103
+ `);
104
+ },
105
+ };
106
+ //# sourceMappingURL=004_knowledge_graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"004_knowledge_graph.js","sourceRoot":"","sources":["../../../src/storage/migrations/004_knowledge_graph.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqF3B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACX,EAAE,CAAC,IAAI,CAAC;;;;;;;;;KASP,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "../migrator.js";
2
+ export declare const migration005a: Migration;
3
+ //# sourceMappingURL=005a_events_layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"005a_events_layer.d.ts","sourceRoot":"","sources":["../../../src/storage/migrations/005a_events_layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwChD,eAAO,MAAM,aAAa,EAAE,SAgB3B,CAAC"}
@@ -0,0 +1,55 @@
1
+ const EVENTS_LAYER_SQL = `
2
+ CREATE TABLE events (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ event_type TEXT NOT NULL,
5
+ source_type TEXT NOT NULL,
6
+ source_id TEXT,
7
+ source_uri TEXT,
8
+ actor TEXT,
9
+ content TEXT NOT NULL,
10
+ content_hash TEXT NOT NULL,
11
+ occurred_at TEXT NOT NULL,
12
+ ingested_at TEXT NOT NULL DEFAULT (datetime('now')),
13
+ metadata_json TEXT,
14
+ project_id TEXT,
15
+ session_id TEXT
16
+ );
17
+
18
+ CREATE INDEX idx_events_type ON events(event_type);
19
+ CREATE INDEX idx_events_source ON events(source_type);
20
+ CREATE INDEX idx_events_source_id ON events(source_id);
21
+ CREATE INDEX idx_events_occurred ON events(occurred_at);
22
+ CREATE INDEX idx_events_hash ON events(content_hash);
23
+ CREATE INDEX idx_events_project ON events(project_id);
24
+
25
+ CREATE TABLE ingest_cursors (
26
+ plugin_id TEXT NOT NULL,
27
+ source_path TEXT NOT NULL,
28
+ checkpoint TEXT NOT NULL,
29
+ last_ingest_at TEXT NOT NULL,
30
+ metadata_json TEXT,
31
+ PRIMARY KEY (plugin_id, source_path)
32
+ );
33
+
34
+ ALTER TABLE knowledge_notes ADD COLUMN source_type TEXT;
35
+ ALTER TABLE knowledge_notes ADD COLUMN source_uri TEXT;
36
+ ALTER TABLE knowledge_notes ADD COLUMN source_event_id INTEGER REFERENCES events(id);
37
+ `;
38
+ export const migration005a = {
39
+ version: 5,
40
+ name: "events_layer",
41
+ up: (db) => {
42
+ db.exec(EVENTS_LAYER_SQL);
43
+ },
44
+ down: (db) => {
45
+ // knowledge_notes のカラム削除はSQLiteでは不可のため、
46
+ // テーブル再作成が必要。ここでは新テーブルのみ削除。
47
+ db.exec(`
48
+ DROP TABLE IF EXISTS ingest_cursors;
49
+ DROP TABLE IF EXISTS events;
50
+ `);
51
+ // Note: SQLiteはALTER TABLE DROP COLUMNをサポートしない (3.35.0以降は可)
52
+ // knowledge_notes.source_type, source_uri, source_event_id は残る
53
+ },
54
+ };
55
+ //# sourceMappingURL=005a_events_layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"005a_events_layer.js","sourceRoot":"","sources":["../../../src/storage/migrations/005a_events_layer.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCxB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACX,wCAAwC;QACxC,4BAA4B;QAC5B,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,4DAA4D;QAC5D,+DAA+D;IACjE,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "../migrator.js";
2
+ export declare const migration005b: Migration;
3
+ //# sourceMappingURL=005b_bitemporal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"005b_bitemporal.d.ts","sourceRoot":"","sources":["../../../src/storage/migrations/005b_bitemporal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA8ChD,eAAO,MAAM,aAAa,EAAE,SAS3B,CAAC"}
@@ -0,0 +1,53 @@
1
+ const BITEMPORAL_SQL = `
2
+ -- relations テーブルに bi-temporal カラム追加
3
+ ALTER TABLE relations ADD COLUMN valid_from TEXT;
4
+ ALTER TABLE relations ADD COLUMN valid_to TEXT;
5
+ ALTER TABLE relations ADD COLUMN recorded_at TEXT;
6
+ ALTER TABLE relations ADD COLUMN superseded_at TEXT;
7
+
8
+ -- 既存行のデフォルト設定(created_at をコピー)
9
+ UPDATE relations SET valid_from = created_at, recorded_at = created_at WHERE valid_from IS NULL;
10
+
11
+ -- observations テーブルに bi-temporal カラム追加
12
+ ALTER TABLE observations ADD COLUMN valid_from TEXT;
13
+ ALTER TABLE observations ADD COLUMN valid_to TEXT;
14
+ ALTER TABLE observations ADD COLUMN recorded_at TEXT;
15
+ ALTER TABLE observations ADD COLUMN superseded_at TEXT;
16
+
17
+ -- 既存行のデフォルト設定
18
+ UPDATE observations SET valid_from = created_at, recorded_at = created_at WHERE valid_from IS NULL;
19
+
20
+ -- Active VIEW: 「現在有効」かつ「最新レコード」のみ
21
+ CREATE VIEW active_relations AS
22
+ SELECT * FROM relations
23
+ WHERE valid_to IS NULL AND superseded_at IS NULL;
24
+
25
+ CREATE VIEW active_observations AS
26
+ SELECT * FROM observations
27
+ WHERE valid_to IS NULL AND superseded_at IS NULL;
28
+
29
+ -- インデックス(VIEW フィルタ高速化用)
30
+ CREATE INDEX idx_relations_valid_to ON relations(valid_to);
31
+ CREATE INDEX idx_relations_superseded ON relations(superseded_at);
32
+ CREATE INDEX idx_observations_valid_to ON observations(valid_to);
33
+ CREATE INDEX idx_observations_superseded ON observations(superseded_at);
34
+ `;
35
+ const BITEMPORAL_DOWN_SQL = `
36
+ DROP VIEW IF EXISTS active_observations;
37
+ DROP VIEW IF EXISTS active_relations;
38
+ DROP INDEX IF EXISTS idx_observations_superseded;
39
+ DROP INDEX IF EXISTS idx_observations_valid_to;
40
+ DROP INDEX IF EXISTS idx_relations_superseded;
41
+ DROP INDEX IF EXISTS idx_relations_valid_to;
42
+ `;
43
+ export const migration005b = {
44
+ version: 7,
45
+ name: "bitemporal",
46
+ up: (db) => {
47
+ db.exec(BITEMPORAL_SQL);
48
+ },
49
+ down: (db) => {
50
+ db.exec(BITEMPORAL_DOWN_SQL);
51
+ },
52
+ };
53
+ //# sourceMappingURL=005b_bitemporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"005b_bitemporal.js","sourceRoot":"","sources":["../../../src/storage/migrations/005b_bitemporal.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtB,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;CAO3B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACX,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "../migrator.js";
2
+ export declare const migration005c: Migration;
3
+ //# sourceMappingURL=005c_provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"005c_provenance.d.ts","sourceRoot":"","sources":["../../../src/storage/migrations/005c_provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAiDhD,eAAO,MAAM,aAAa,EAAE,SAS3B,CAAC"}
@@ -0,0 +1,56 @@
1
+ const PROVENANCE_SQL = `
2
+ CREATE TABLE provenance (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ entity_uri TEXT NOT NULL,
5
+ activity_type TEXT NOT NULL CHECK(activity_type IN ('ingest', 'extract', 'link', 'embed')),
6
+ agent TEXT NOT NULL,
7
+ input_uris TEXT NOT NULL DEFAULT '[]',
8
+ output_uris TEXT NOT NULL DEFAULT '[]',
9
+ started_at TEXT NOT NULL,
10
+ ended_at TEXT,
11
+ metadata_json TEXT,
12
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
13
+ );
14
+
15
+ CREATE INDEX idx_provenance_entity ON provenance(entity_uri);
16
+ CREATE INDEX idx_provenance_activity ON provenance(activity_type);
17
+ CREATE INDEX idx_provenance_agent ON provenance(agent);
18
+
19
+ CREATE TABLE file_timeline (
20
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
21
+ file_path TEXT NOT NULL,
22
+ event_type TEXT NOT NULL CHECK(event_type IN ('created', 'modified', 'deleted', 'renamed')),
23
+ event_id INTEGER REFERENCES events(id),
24
+ occurred_at TEXT NOT NULL,
25
+ metadata_json TEXT
26
+ );
27
+
28
+ CREATE INDEX idx_file_timeline_path ON file_timeline(file_path);
29
+ CREATE INDEX idx_file_timeline_occurred ON file_timeline(occurred_at);
30
+
31
+ CREATE TABLE snapshots (
32
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
33
+ snapshot_at TEXT NOT NULL,
34
+ note_count INTEGER NOT NULL,
35
+ event_count INTEGER NOT NULL,
36
+ entity_count INTEGER NOT NULL,
37
+ metadata_json TEXT,
38
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
39
+ );
40
+ `;
41
+ const PROVENANCE_DOWN_SQL = `
42
+ DROP TABLE IF EXISTS snapshots;
43
+ DROP TABLE IF EXISTS file_timeline;
44
+ DROP TABLE IF EXISTS provenance;
45
+ `;
46
+ export const migration005c = {
47
+ version: 8,
48
+ name: "provenance",
49
+ up: (db) => {
50
+ db.exec(PROVENANCE_SQL);
51
+ },
52
+ down: (db) => {
53
+ db.exec(PROVENANCE_DOWN_SQL);
54
+ },
55
+ };
56
+ //# sourceMappingURL=005c_provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"005c_provenance.js","sourceRoot":"","sources":["../../../src/storage/migrations/005c_provenance.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCtB,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACX,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "../migrator.js";
2
+ export declare const migration006: Migration;
3
+ //# sourceMappingURL=006_extraction_feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"006_extraction_feedback.d.ts","sourceRoot":"","sources":["../../../src/storage/migrations/006_extraction_feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoBhD,eAAO,MAAM,YAAY,EAAE,SAW1B,CAAC"}
@@ -0,0 +1,30 @@
1
+ const EXTRACTION_FEEDBACK_SQL = `
2
+ CREATE TABLE IF NOT EXISTS extraction_feedback (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ entity_name TEXT NOT NULL,
5
+ entity_type TEXT,
6
+ error_type TEXT NOT NULL CHECK(error_type IN ('false_positive', 'wrong_type', 'missed_entity')),
7
+ correct_type TEXT,
8
+ note_id INTEGER,
9
+ details TEXT,
10
+ status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'applied', 'dismissed')),
11
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
12
+ applied_at TEXT,
13
+ FOREIGN KEY (note_id) REFERENCES knowledge_notes(id)
14
+ );
15
+ CREATE INDEX IF NOT EXISTS idx_feedback_status ON extraction_feedback(status);
16
+ CREATE INDEX IF NOT EXISTS idx_feedback_entity ON extraction_feedback(entity_name);
17
+ `;
18
+ export const migration006 = {
19
+ version: 6,
20
+ name: "extraction_feedback",
21
+ up: (db) => {
22
+ db.exec(EXTRACTION_FEEDBACK_SQL);
23
+ },
24
+ down: (db) => {
25
+ db.exec(`
26
+ DROP TABLE IF EXISTS extraction_feedback;
27
+ `);
28
+ },
29
+ };
30
+ //# sourceMappingURL=006_extraction_feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"006_extraction_feedback.js","sourceRoot":"","sources":["../../../src/storage/migrations/006_extraction_feedback.ts"],"names":[],"mappings":"AAEA,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;CAgB/B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,qBAAqB;IAC3B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACX,EAAE,CAAC,IAAI,CAAC;;KAEP,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
package/dist/types.d.ts CHANGED
@@ -51,6 +51,20 @@ export interface SearchResult {
51
51
  score: number;
52
52
  matchReason: string[];
53
53
  }
54
+ /** Semantic search options */
55
+ export interface SemanticSearchOptions {
56
+ query: string;
57
+ limit?: number;
58
+ mode?: "keyword" | "semantic" | "hybrid";
59
+ }
60
+ /** Semantic search result */
61
+ export interface SemanticSearchResult {
62
+ noteId: number;
63
+ filePath: string;
64
+ title: string;
65
+ score: number;
66
+ matchReason: string[];
67
+ }
54
68
  export type EntityType = "person" | "project" | "technology" | "concept" | "tool" | "organization" | "event";
55
69
  export type RelationType = "uses" | "implements" | "depends_on" | "related_to" | "created_by" | "works_on" | "solves" | "references" | "part_of" | "similar_to";
56
70
  export type ObservationType = "fact" | "insight" | "learning" | "decision" | "performance";
@@ -116,4 +130,30 @@ export interface MemoryContext {
116
130
  semantic: MemoryEntry[];
117
131
  procedural: MemoryEntry[];
118
132
  }
133
+ export type EventType = "git_commit" | "pr_opened" | "pr_merged" | "pr_comment" | "issue_created" | "issue_closed" | "ci_result" | "session_start" | "session_end" | "session_message" | "slack_message" | "document_change" | "task_update" | "manual_observation";
134
+ export type SourceType = "git" | "github" | "claude_code" | "cursor" | "slack" | "notion" | "markdown" | "manual";
135
+ export interface KnowledgeEvent {
136
+ id?: number;
137
+ eventType: EventType;
138
+ sourceType: SourceType;
139
+ sourceId?: string;
140
+ sourceUri?: string;
141
+ actor?: string;
142
+ content: string;
143
+ contentHash: string;
144
+ occurredAt: string;
145
+ ingestedAt?: string;
146
+ metadataJson?: Record<string, unknown>;
147
+ projectId?: string;
148
+ sessionId?: string;
149
+ }
150
+ export interface IngestCursor {
151
+ pluginId: string;
152
+ sourcePath: string;
153
+ checkpoint: string;
154
+ lastIngestAt: string;
155
+ metadataJson?: Record<string, unknown>;
156
+ }
157
+ export type FeedbackErrorType = "false_positive" | "wrong_type" | "missed_entity";
158
+ export type FeedbackStatus = "pending" | "applied" | "dismissed";
119
159
  //# sourceMappingURL=types.d.ts.map