@knowledgine/core 0.3.0 → 0.4.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 (74) hide show
  1. package/dist/agents/index.d.ts +7 -0
  2. package/dist/agents/index.d.ts.map +1 -0
  3. package/dist/agents/index.js +4 -0
  4. package/dist/agents/index.js.map +1 -0
  5. package/dist/agents/observer-agent.d.ts +31 -0
  6. package/dist/agents/observer-agent.d.ts.map +1 -0
  7. package/dist/agents/observer-agent.js +164 -0
  8. package/dist/agents/observer-agent.js.map +1 -0
  9. package/dist/agents/reflector-agent.d.ts +66 -0
  10. package/dist/agents/reflector-agent.d.ts.map +1 -0
  11. package/dist/agents/reflector-agent.js +420 -0
  12. package/dist/agents/reflector-agent.js.map +1 -0
  13. package/dist/agents/types.d.ts +47 -0
  14. package/dist/agents/types.d.ts.map +1 -0
  15. package/dist/agents/types.js +2 -0
  16. package/dist/agents/types.js.map +1 -0
  17. package/dist/agents/vector-classification-rules.d.ts +14 -0
  18. package/dist/agents/vector-classification-rules.d.ts.map +1 -0
  19. package/dist/agents/vector-classification-rules.js +229 -0
  20. package/dist/agents/vector-classification-rules.js.map +1 -0
  21. package/dist/config/config-loader.d.ts.map +1 -1
  22. package/dist/config/config-loader.js +23 -8
  23. package/dist/config/config-loader.js.map +1 -1
  24. package/dist/feedback/feedback-learner.d.ts.map +1 -1
  25. package/dist/feedback/feedback-learner.js +3 -6
  26. package/dist/feedback/feedback-learner.js.map +1 -1
  27. package/dist/graph/entity-extractor.d.ts +6 -0
  28. package/dist/graph/entity-extractor.d.ts.map +1 -1
  29. package/dist/graph/entity-extractor.js +84 -8
  30. package/dist/graph/entity-extractor.js.map +1 -1
  31. package/dist/graph/graph-repository.d.ts +32 -0
  32. package/dist/graph/graph-repository.d.ts.map +1 -1
  33. package/dist/graph/graph-repository.js +56 -0
  34. package/dist/graph/graph-repository.js.map +1 -1
  35. package/dist/graph/temporal-query.d.ts +69 -0
  36. package/dist/graph/temporal-query.d.ts.map +1 -0
  37. package/dist/graph/temporal-query.js +172 -0
  38. package/dist/graph/temporal-query.js.map +1 -0
  39. package/dist/index.d.ts +13 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +9 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/processing/file-processor.d.ts.map +1 -1
  44. package/dist/processing/file-processor.js +14 -3
  45. package/dist/processing/file-processor.js.map +1 -1
  46. package/dist/search/knowledge-searcher.d.ts +3 -1
  47. package/dist/search/knowledge-searcher.d.ts.map +1 -1
  48. package/dist/search/knowledge-searcher.js +18 -3
  49. package/dist/search/knowledge-searcher.js.map +1 -1
  50. package/dist/search/query-classifier.d.ts +17 -0
  51. package/dist/search/query-classifier.d.ts.map +1 -0
  52. package/dist/search/query-classifier.js +63 -0
  53. package/dist/search/query-classifier.js.map +1 -0
  54. package/dist/search/query-orchestrator.d.ts +39 -0
  55. package/dist/search/query-orchestrator.d.ts.map +1 -0
  56. package/dist/search/query-orchestrator.js +239 -0
  57. package/dist/search/query-orchestrator.js.map +1 -0
  58. package/dist/services/knowledge-service.d.ts +2 -0
  59. package/dist/services/knowledge-service.d.ts.map +1 -1
  60. package/dist/services/knowledge-service.js +1 -1
  61. package/dist/services/knowledge-service.js.map +1 -1
  62. package/dist/storage/knowledge-repository.d.ts +17 -1
  63. package/dist/storage/knowledge-repository.d.ts.map +1 -1
  64. package/dist/storage/knowledge-repository.js +72 -4
  65. package/dist/storage/knowledge-repository.js.map +1 -1
  66. package/dist/storage/migrations/010_memory_protocol.d.ts +12 -0
  67. package/dist/storage/migrations/010_memory_protocol.d.ts.map +1 -0
  68. package/dist/storage/migrations/010_memory_protocol.js +26 -0
  69. package/dist/storage/migrations/010_memory_protocol.js.map +1 -0
  70. package/dist/utils/atomic-write.d.ts +2 -0
  71. package/dist/utils/atomic-write.d.ts.map +1 -0
  72. package/dist/utils/atomic-write.js +20 -0
  73. package/dist/utils/atomic-write.js.map +1 -0
  74. package/package.json +4 -4
@@ -0,0 +1,7 @@
1
+ export type { KnowledgeVectorCategory, KnowledgeVector, ObserverOutput, ContradictionDetection, DeprecationCandidate, ReflectorOutput, } from "./types.js";
2
+ export { ObserverAgent } from "./observer-agent.js";
3
+ export type { ObserverAgentConfig, ObserverAgentDeps } from "./observer-agent.js";
4
+ export { ReflectorAgent } from "./reflector-agent.js";
5
+ export type { ReflectorAgentConfig, ReflectorAgentDeps } from "./reflector-agent.js";
6
+ export { classifyByRules, parseLLMVectorResponse } from "./vector-classification-rules.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ObserverAgent } from "./observer-agent.js";
2
+ export { ReflectorAgent } from "./reflector-agent.js";
3
+ export { classifyByRules, parseLLMVectorResponse } from "./vector-classification-rules.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { KnowledgeNote } from "../storage/knowledge-repository.js";
2
+ import type { LLMProvider } from "../llm/types.js";
3
+ import type { KnowledgeRepository } from "../storage/knowledge-repository.js";
4
+ import { PatternExtractor } from "../extraction/pattern-extractor.js";
5
+ import { EntityExtractor } from "../graph/entity-extractor.js";
6
+ import type { ObserverOutput } from "./types.js";
7
+ export interface ObserverAgentConfig {
8
+ maxConcurrency?: number;
9
+ timeoutMs?: number;
10
+ }
11
+ export interface ObserverAgentDeps {
12
+ patternExtractor: PatternExtractor;
13
+ entityExtractor: EntityExtractor;
14
+ llmProvider?: LLMProvider;
15
+ repository: KnowledgeRepository;
16
+ }
17
+ export declare class ObserverAgent {
18
+ private readonly deps;
19
+ private readonly maxConcurrency;
20
+ constructor(deps: ObserverAgentDeps, config?: ObserverAgentConfig);
21
+ /**
22
+ * 単一ノートの6ベクトル分類を実行する
23
+ */
24
+ observe(note: KnowledgeNote): Promise<ObserverOutput>;
25
+ /**
26
+ * 複数ノートを並列処理して全結果を返す
27
+ * maxConcurrencyで並列数を制限し、部分失敗はerrorsに記録して返す
28
+ */
29
+ observeBatch(notes: KnowledgeNote[]): Promise<ObserverOutput[]>;
30
+ }
31
+ //# sourceMappingURL=observer-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer-agent.d.ts","sourceRoot":"","sources":["../../src/agents/observer-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAGlE,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;CACjC;AA+ED,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGrB,IAAI,EAAE,iBAAiB,EACxC,MAAM,CAAC,EAAE,mBAAmB;IAK9B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAyE3D;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAsBtE"}
@@ -0,0 +1,164 @@
1
+ import { PatternExtractor } from "../extraction/pattern-extractor.js";
2
+ import { EntityExtractor } from "../graph/entity-extractor.js";
3
+ import { classifyByRules, parseLLMVectorResponse } from "./vector-classification-rules.js";
4
+ const DEFAULT_MAX_CONCURRENCY = 4;
5
+ const LLM_CONTENT_PREVIEW_LENGTH = 500;
6
+ const LLM_SYSTEM_PROMPT = `あなたはナレッジ分類エージェントです。以下のテキストから6つのカテゴリに分類してください。
7
+ 各カテゴリについて、該当するコンテンツとconfidence(0-1)をJSON形式で返してください。
8
+
9
+ カテゴリ:
10
+ - personal_info: 開発者のスキル・経歴
11
+ - preferences: ツール嗜好・コーディングスタイル
12
+ - events: 障害報告・リリース・会議
13
+ - temporal_data: 期限・バージョン変遷
14
+ - updates: 既存知識の更新・修正
15
+ - assistant_info: プロジェクト設定・チーム構成
16
+
17
+ レスポンスはJSON配列で返してください:
18
+ [{"category": "...", "content": "...", "confidence": 0.0}]`;
19
+ /**
20
+ * frontmatterのJSONをパースする。失敗時は空オブジェクトを返す。
21
+ */
22
+ function parseFrontmatter(frontmatterJson) {
23
+ if (!frontmatterJson)
24
+ return {};
25
+ try {
26
+ const parsed = JSON.parse(frontmatterJson);
27
+ if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
28
+ return parsed;
29
+ }
30
+ return {};
31
+ }
32
+ catch {
33
+ return {};
34
+ }
35
+ }
36
+ /**
37
+ * LLMのベクトルをルールベースの結果にマージする。
38
+ * LLMのconfidenceが高い場合はLLM優先(同一contentの重複を排除)。
39
+ */
40
+ function mergeVectors(ruleVectors, llmVectors) {
41
+ if (llmVectors.length === 0)
42
+ return ruleVectors;
43
+ // LLMベクトルのcontentセットを構築
44
+ const llmContentSet = new Set(llmVectors.map((v) => `${v.category}:${v.content}`));
45
+ // ルールベースで、LLMと重複しないものを残す
46
+ const filteredRuleVectors = ruleVectors.filter((v) => !llmContentSet.has(`${v.category}:${v.content}`));
47
+ return [...filteredRuleVectors, ...llmVectors];
48
+ }
49
+ /**
50
+ * 並列処理をconcurrency数で制限してPromiseを実行する
51
+ */
52
+ async function runWithConcurrency(tasks, maxConcurrency) {
53
+ const results = new Array(tasks.length);
54
+ let nextIndex = 0;
55
+ async function worker() {
56
+ while (nextIndex < tasks.length) {
57
+ const index = nextIndex++;
58
+ results[index] = await tasks[index]();
59
+ }
60
+ }
61
+ const workers = Array.from({ length: Math.min(maxConcurrency, tasks.length) }, () => worker());
62
+ await Promise.all(workers);
63
+ return results;
64
+ }
65
+ export class ObserverAgent {
66
+ deps;
67
+ maxConcurrency;
68
+ constructor(deps, config) {
69
+ this.deps = deps;
70
+ this.maxConcurrency = config?.maxConcurrency ?? DEFAULT_MAX_CONCURRENCY;
71
+ }
72
+ /**
73
+ * 単一ノートの6ベクトル分類を実行する
74
+ */
75
+ async observe(note) {
76
+ const startTime = Date.now();
77
+ const errors = [];
78
+ const frontmatter = parseFrontmatter(note.frontmatter_json);
79
+ const content = note.content ?? "";
80
+ // Step 1: パターン抽出
81
+ const dailyPatterns = this.deps.patternExtractor.extractDailyPatterns(content);
82
+ const ticketPatterns = this.deps.patternExtractor.extractTicketPatterns(content);
83
+ const patterns = [...dailyPatterns, ...ticketPatterns];
84
+ // Step 2: エンティティ抽出
85
+ const entities = this.deps.entityExtractor.extract(content, frontmatter);
86
+ // Step 3: ルールベース分類
87
+ const ruleVectors = classifyByRules(patterns, entities, frontmatter, content);
88
+ // Step 4: LLM補完(LLMが利用可能な場合)
89
+ let llmVectors = [];
90
+ let usedLLM = false;
91
+ if (this.deps.llmProvider) {
92
+ try {
93
+ const isAvailable = await this.deps.llmProvider.isAvailable();
94
+ if (isAvailable) {
95
+ const preview = content.slice(0, LLM_CONTENT_PREVIEW_LENGTH);
96
+ const frontmatterStr = note.frontmatter_json
97
+ ? `\nfrontmatter: ${note.frontmatter_json}`
98
+ : "";
99
+ const result = await this.deps.llmProvider.complete({
100
+ messages: [
101
+ { role: "system", content: LLM_SYSTEM_PROMPT },
102
+ {
103
+ role: "user",
104
+ content: `テキスト:\n${preview}${frontmatterStr}`,
105
+ },
106
+ ],
107
+ responseFormat: "json",
108
+ temperature: 0.0,
109
+ });
110
+ const parsed = parseLLMVectorResponse(result.content);
111
+ if (parsed !== null) {
112
+ llmVectors = parsed;
113
+ usedLLM = true;
114
+ }
115
+ // パース失敗時はllmVectors=[]のままフォールバック
116
+ }
117
+ }
118
+ catch (err) {
119
+ const message = err instanceof Error ? err.message : String(err);
120
+ errors.push(`LLM error: ${message}`);
121
+ // フォールバック: ルールベースのみで返却
122
+ }
123
+ }
124
+ // Step 5: マージ
125
+ const mergedVectors = usedLLM ? mergeVectors(ruleVectors, llmVectors) : ruleVectors;
126
+ const processingTimeMs = Date.now() - startTime;
127
+ return {
128
+ noteId: note.id,
129
+ vectors: mergedVectors,
130
+ patterns,
131
+ entities,
132
+ processingMode: usedLLM ? "hybrid" : "rule",
133
+ processingTimeMs,
134
+ errors: errors.length > 0 ? errors : undefined,
135
+ };
136
+ }
137
+ /**
138
+ * 複数ノートを並列処理して全結果を返す
139
+ * maxConcurrencyで並列数を制限し、部分失敗はerrorsに記録して返す
140
+ */
141
+ async observeBatch(notes) {
142
+ if (notes.length === 0)
143
+ return [];
144
+ const tasks = notes.map((note) => async () => {
145
+ try {
146
+ return await this.observe(note);
147
+ }
148
+ catch (err) {
149
+ const message = err instanceof Error ? err.message : String(err);
150
+ return {
151
+ noteId: note.id,
152
+ vectors: [],
153
+ patterns: [],
154
+ entities: [],
155
+ processingMode: "rule",
156
+ processingTimeMs: 0,
157
+ errors: [`batch processing error: ${message}`],
158
+ };
159
+ }
160
+ });
161
+ return runWithConcurrency(tasks, this.maxConcurrency);
162
+ }
163
+ }
164
+ //# sourceMappingURL=observer-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer-agent.js","sourceRoot":"","sources":["../../src/agents/observer-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { KnowledgeRepository } from "../storage/knowledge-repository.js";
2
+ import type { GraphRepository } from "../graph/graph-repository.js";
3
+ import type { LLMProvider } from "../llm/types.js";
4
+ import type { ObserverOutput, ReflectorOutput, DeprecationCandidate } from "./types.js";
5
+ export interface ReflectorAgentConfig {
6
+ maxConcurrency?: number;
7
+ timeoutMs?: number;
8
+ similarityThreshold?: number;
9
+ }
10
+ export interface ReflectorAgentDeps {
11
+ repository: KnowledgeRepository;
12
+ graphRepository: GraphRepository;
13
+ llmProvider?: LLMProvider;
14
+ }
15
+ export declare class ReflectorAgent {
16
+ private readonly deps;
17
+ private readonly maxConcurrency;
18
+ private readonly similarityThreshold;
19
+ constructor(deps: ReflectorAgentDeps, config?: ReflectorAgentConfig);
20
+ /**
21
+ * 矛盾検出 + deprecation候補提示(実行はしない)
22
+ */
23
+ reflect(observerOutput: ObserverOutput): Promise<ReflectorOutput>;
24
+ /**
25
+ * バッチ処理: 複数のObserverOutputを並列で処理する
26
+ */
27
+ reflectBatch(outputs: ObserverOutput[]): Promise<ReflectorOutput[]>;
28
+ /**
29
+ * ユーザー承認後にdeprecationを実行する(best-effort方式)
30
+ */
31
+ applyApprovedDeprecations(candidates: DeprecationCandidate[]): void;
32
+ /**
33
+ * ルールベースの矛盾検出を実行する。
34
+ * 4種類の矛盾タイプを検出する。
35
+ */
36
+ private detectContradictions;
37
+ /**
38
+ * supersede検出: 類似ノートをJaccard類似度で判定する
39
+ */
40
+ private detectSupersede;
41
+ /**
42
+ * factual矛盾検出: updatesカテゴリのベクトルと既存ノートのentityを照合する
43
+ */
44
+ private detectFactual;
45
+ /**
46
+ * temporal矛盾検出: 新ノートのvalid_fromが既存ノートより前の場合
47
+ */
48
+ private detectTemporal;
49
+ /**
50
+ * preference変更検出: preferencesカテゴリの同ツール/技術に対する異なる評価
51
+ */
52
+ private detectPreferenceChange;
53
+ /**
54
+ * LLMでresolutionを補完する(矛盾配列を直接変更する)
55
+ */
56
+ private enrichWithLLM;
57
+ /**
58
+ * 矛盾からdeprecation候補を生成する
59
+ */
60
+ private buildDeprecationCandidates;
61
+ /**
62
+ * supersedeタイプの矛盾からversionUpdates情報を生成する
63
+ */
64
+ private buildVersionUpdates;
65
+ }
66
+ //# sourceMappingURL=reflector-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflector-agent.d.ts","sourceRoot":"","sources":["../../src/agents/reflector-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,oCAAoC,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAEf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AA0GD,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAG1B,IAAI,EAAE,kBAAkB,EACzC,MAAM,CAAC,EAAE,oBAAoB;IAM/B;;OAEG;IACG,OAAO,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAuDvE;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAuBzE;;OAEG;IACH,yBAAyB,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAWnE;;;OAGG;YACW,oBAAoB;IA0BlC;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;YACW,aAAa;IAmD3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiD9B;;OAEG;YACW,aAAa;IAqC3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA0BlC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAc5B"}