@knowledgine/core 0.2.1 → 0.3.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 (94) hide show
  1. package/dist/config/config-loader.d.ts +13 -0
  2. package/dist/config/config-loader.d.ts.map +1 -1
  3. package/dist/config/config-loader.js +19 -11
  4. package/dist/config/config-loader.js.map +1 -1
  5. package/dist/extraction/causal-link-detector.d.ts +16 -0
  6. package/dist/extraction/causal-link-detector.d.ts.map +1 -0
  7. package/dist/extraction/causal-link-detector.js +142 -0
  8. package/dist/extraction/causal-link-detector.js.map +1 -0
  9. package/dist/extraction/incremental-extractor.d.ts +21 -0
  10. package/dist/extraction/incremental-extractor.d.ts.map +1 -0
  11. package/dist/extraction/incremental-extractor.js +113 -0
  12. package/dist/extraction/incremental-extractor.js.map +1 -0
  13. package/dist/extraction/psp-detector.d.ts +3 -3
  14. package/dist/extraction/psp-detector.d.ts.map +1 -1
  15. package/dist/extraction/psp-detector.js +51 -3
  16. package/dist/extraction/psp-detector.js.map +1 -1
  17. package/dist/graph/entity-extractor.d.ts +1 -0
  18. package/dist/graph/entity-extractor.d.ts.map +1 -1
  19. package/dist/graph/entity-extractor.js +24 -0
  20. package/dist/graph/entity-extractor.js.map +1 -1
  21. package/dist/graph/graph-repository.d.ts +5 -5
  22. package/dist/graph/graph-repository.d.ts.map +1 -1
  23. package/dist/graph/graph-repository.js +12 -12
  24. package/dist/graph/graph-repository.js.map +1 -1
  25. package/dist/index.d.ts +16 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +16 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/llm/errors.d.ts +8 -0
  30. package/dist/llm/errors.d.ts.map +1 -0
  31. package/dist/llm/errors.js +11 -0
  32. package/dist/llm/errors.js.map +1 -0
  33. package/dist/llm/index.d.ts +7 -0
  34. package/dist/llm/index.d.ts.map +1 -0
  35. package/dist/llm/index.js +5 -0
  36. package/dist/llm/index.js.map +1 -0
  37. package/dist/llm/ollama-provider.d.ts +13 -0
  38. package/dist/llm/ollama-provider.d.ts.map +1 -0
  39. package/dist/llm/ollama-provider.js +130 -0
  40. package/dist/llm/ollama-provider.js.map +1 -0
  41. package/dist/llm/openai-provider.d.ts +15 -0
  42. package/dist/llm/openai-provider.d.ts.map +1 -0
  43. package/dist/llm/openai-provider.js +143 -0
  44. package/dist/llm/openai-provider.js.map +1 -0
  45. package/dist/llm/provider-factory.d.ts +3 -0
  46. package/dist/llm/provider-factory.d.ts.map +1 -0
  47. package/dist/llm/provider-factory.js +25 -0
  48. package/dist/llm/provider-factory.js.map +1 -0
  49. package/dist/llm/types.d.ts +50 -0
  50. package/dist/llm/types.d.ts.map +1 -0
  51. package/dist/llm/types.js +2 -0
  52. package/dist/llm/types.js.map +1 -0
  53. package/dist/provenance/provenance-repository.d.ts +23 -22
  54. package/dist/provenance/provenance-repository.d.ts.map +1 -1
  55. package/dist/provenance/provenance-repository.js +82 -44
  56. package/dist/provenance/provenance-repository.js.map +1 -1
  57. package/dist/search/knowledge-searcher.d.ts +10 -1
  58. package/dist/search/knowledge-searcher.d.ts.map +1 -1
  59. package/dist/search/knowledge-searcher.js +78 -31
  60. package/dist/search/knowledge-searcher.js.map +1 -1
  61. package/dist/search/reasoning-reranker.d.ts +59 -0
  62. package/dist/search/reasoning-reranker.d.ts.map +1 -0
  63. package/dist/search/reasoning-reranker.js +334 -0
  64. package/dist/search/reasoning-reranker.js.map +1 -0
  65. package/dist/services/knowledge-service.d.ts +4 -0
  66. package/dist/services/knowledge-service.d.ts.map +1 -1
  67. package/dist/services/knowledge-service.js +6 -1
  68. package/dist/services/knowledge-service.js.map +1 -1
  69. package/dist/storage/database.d.ts.map +1 -1
  70. package/dist/storage/database.js +46 -6
  71. package/dist/storage/database.js.map +1 -1
  72. package/dist/storage/knowledge-repository.d.ts +49 -1
  73. package/dist/storage/knowledge-repository.d.ts.map +1 -1
  74. package/dist/storage/knowledge-repository.js +93 -7
  75. package/dist/storage/knowledge-repository.js.map +1 -1
  76. package/dist/storage/migrations/007_spec_alignment.d.ts +3 -0
  77. package/dist/storage/migrations/007_spec_alignment.d.ts.map +1 -0
  78. package/dist/storage/migrations/007_spec_alignment.js +116 -0
  79. package/dist/storage/migrations/007_spec_alignment.js.map +1 -0
  80. package/dist/storage/migrations/008_knowledge_versioning.d.ts +15 -0
  81. package/dist/storage/migrations/008_knowledge_versioning.d.ts.map +1 -0
  82. package/dist/storage/migrations/008_knowledge_versioning.js +69 -0
  83. package/dist/storage/migrations/008_knowledge_versioning.js.map +1 -0
  84. package/dist/storage/migrations/009_extraction_metadata.d.ts +12 -0
  85. package/dist/storage/migrations/009_extraction_metadata.d.ts.map +1 -0
  86. package/dist/storage/migrations/009_extraction_metadata.js +39 -0
  87. package/dist/storage/migrations/009_extraction_metadata.js.map +1 -0
  88. package/dist/storage/migrator.d.ts +3 -1
  89. package/dist/storage/migrator.d.ts.map +1 -1
  90. package/dist/storage/migrator.js +2 -1
  91. package/dist/storage/migrator.js.map +1 -1
  92. package/dist/types.d.ts +2 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/package.json +1 -1
@@ -0,0 +1,143 @@
1
+ import { LLMProviderError } from "./errors.js";
2
+ const DEFAULT_MAX_RETRIES = 3;
3
+ const DEFAULT_TIMEOUT_MS = 30000;
4
+ const DEFAULT_RETRY_DELAY_MS = 500;
5
+ export class OpenAICompatibleProvider {
6
+ baseUrl;
7
+ model;
8
+ apiKey;
9
+ maxRetries;
10
+ timeoutMs;
11
+ retryDelayMs;
12
+ constructor(config) {
13
+ this.baseUrl = config.baseUrl;
14
+ this.model = config.model;
15
+ this.apiKey = config.apiKey ?? process.env["KNOWLEDGINE_LLM_API_KEY"];
16
+ this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
17
+ this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
18
+ this.retryDelayMs = config.retryDelayMs ?? DEFAULT_RETRY_DELAY_MS;
19
+ }
20
+ getModelName() {
21
+ return this.model;
22
+ }
23
+ async isAvailable() {
24
+ try {
25
+ const controller = new AbortController();
26
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
27
+ try {
28
+ const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
29
+ method: "POST",
30
+ headers: this.buildHeaders(),
31
+ body: JSON.stringify({
32
+ model: this.model,
33
+ messages: [{ role: "user", content: "ping" }],
34
+ max_tokens: 1,
35
+ }),
36
+ signal: controller.signal,
37
+ });
38
+ return res.status === 200;
39
+ }
40
+ finally {
41
+ clearTimeout(timeoutId);
42
+ }
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ async complete(options) {
49
+ const timeoutMs = options.timeoutMs ?? this.timeoutMs;
50
+ const startTime = Date.now();
51
+ const body = {
52
+ model: this.model,
53
+ messages: options.messages,
54
+ temperature: options.temperature ?? 0.0,
55
+ max_tokens: options.maxTokens ?? 1024,
56
+ };
57
+ if (options.responseFormat === "json") {
58
+ body.response_format = { type: "json_object" };
59
+ }
60
+ let lastError = null;
61
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
62
+ if (attempt > 0) {
63
+ const delay = this.retryDelayMs * Math.pow(2, attempt - 1);
64
+ await sleep(delay);
65
+ }
66
+ const controller = new AbortController();
67
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
68
+ try {
69
+ const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
70
+ method: "POST",
71
+ headers: this.buildHeaders(),
72
+ body: JSON.stringify(body),
73
+ signal: controller.signal,
74
+ });
75
+ clearTimeout(timeoutId);
76
+ if (res.status === 404) {
77
+ throw new LLMProviderError(`Model not found: ${this.model}`, "model_not_found", {
78
+ status: 404,
79
+ });
80
+ }
81
+ if (res.status === 401) {
82
+ throw new LLMProviderError("Unauthorized: invalid API key", "auth", { status: 401 });
83
+ }
84
+ if (res.status === 429 || res.status >= 500) {
85
+ lastError = new LLMProviderError(`OpenAI request failed with status ${res.status}`, res.status === 429 ? "rate_limit" : "network", { status: res.status });
86
+ continue; // retry
87
+ }
88
+ if (!res.ok) {
89
+ throw new LLMProviderError(`OpenAI request failed with status ${res.status}`, "network", {
90
+ status: res.status,
91
+ });
92
+ }
93
+ const data = (await res.json());
94
+ const latencyMs = Date.now() - startTime;
95
+ return {
96
+ content: data.choices[0].message.content,
97
+ model: data.model,
98
+ usage: data.usage
99
+ ? {
100
+ promptTokens: data.usage.prompt_tokens,
101
+ completionTokens: data.usage.completion_tokens,
102
+ }
103
+ : undefined,
104
+ latencyMs,
105
+ };
106
+ }
107
+ catch (err) {
108
+ clearTimeout(timeoutId);
109
+ if (err instanceof LLMProviderError) {
110
+ if (err.errorCode === "model_not_found" || err.errorCode === "auth") {
111
+ throw err;
112
+ }
113
+ lastError = err;
114
+ continue;
115
+ }
116
+ if (isAbortError(err)) {
117
+ throw new LLMProviderError(`OpenAI request timed out after ${timeoutMs}ms`, "timeout", {
118
+ timeoutMs,
119
+ });
120
+ }
121
+ lastError = new LLMProviderError(`OpenAI network error: ${err instanceof Error ? err.message : String(err)}`, "network", { cause: err });
122
+ continue;
123
+ }
124
+ }
125
+ throw lastError ?? new LLMProviderError("OpenAI request failed after retries", "network");
126
+ }
127
+ buildHeaders() {
128
+ const headers = {
129
+ "Content-Type": "application/json",
130
+ };
131
+ if (this.apiKey) {
132
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
133
+ }
134
+ return headers;
135
+ }
136
+ }
137
+ function isAbortError(err) {
138
+ return err instanceof DOMException && err.name === "AbortError";
139
+ }
140
+ function sleep(ms) {
141
+ return new Promise((resolve) => setTimeout(resolve, ms));
142
+ }
143
+ //# sourceMappingURL=openai-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../src/llm/openai-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LLMConfig, LLMProvider } from "./types.js";
2
+ export declare function createLLMProvider(config: LLMConfig | undefined): LLMProvider | undefined;
3
+ //# sourceMappingURL=provider-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.d.ts","sourceRoot":"","sources":["../../src/llm/provider-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAqBxF"}
@@ -0,0 +1,25 @@
1
+ import { OllamaProvider } from "./ollama-provider.js";
2
+ import { OpenAICompatibleProvider } from "./openai-provider.js";
3
+ export function createLLMProvider(config) {
4
+ if (!config)
5
+ return undefined;
6
+ switch (config.provider) {
7
+ case "ollama": {
8
+ const ollamaConfig = config.ollama ?? {
9
+ model: config.model ?? "llama3",
10
+ baseUrl: config.baseUrl,
11
+ };
12
+ return new OllamaProvider(ollamaConfig);
13
+ }
14
+ case "openai": {
15
+ const openaiConfig = config.openai ?? {
16
+ model: config.model ?? "gpt-4o",
17
+ baseUrl: config.baseUrl ?? "https://api.openai.com",
18
+ };
19
+ return new OpenAICompatibleProvider(openaiConfig);
20
+ }
21
+ default:
22
+ return undefined;
23
+ }
24
+ }
25
+ //# sourceMappingURL=provider-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../src/llm/provider-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,UAAU,iBAAiB,CAAC,MAA6B;IAC7D,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI;gBACpC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI;gBACpC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,wBAAwB;aACpD,CAAC;YACF,OAAO,IAAI,wBAAwB,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ export interface LLMCompletionMessage {
2
+ role: "system" | "user" | "assistant";
3
+ content: string;
4
+ }
5
+ export interface LLMCompletionOptions {
6
+ messages: LLMCompletionMessage[];
7
+ temperature?: number;
8
+ maxTokens?: number;
9
+ responseFormat?: "text" | "json";
10
+ timeoutMs?: number;
11
+ }
12
+ export interface LLMCompletionResult {
13
+ content: string;
14
+ usage?: {
15
+ promptTokens: number;
16
+ completionTokens: number;
17
+ };
18
+ model: string;
19
+ latencyMs: number;
20
+ }
21
+ export interface LLMProvider {
22
+ complete(options: LLMCompletionOptions): Promise<LLMCompletionResult>;
23
+ isAvailable(): Promise<boolean>;
24
+ getModelName(): string;
25
+ }
26
+ export interface OllamaProviderConfig {
27
+ baseUrl?: string;
28
+ model: string;
29
+ maxRetries?: number;
30
+ timeoutMs?: number;
31
+ retryDelayMs?: number;
32
+ }
33
+ export interface OpenAIProviderConfig {
34
+ baseUrl: string;
35
+ model: string;
36
+ apiKey?: string;
37
+ maxRetries?: number;
38
+ timeoutMs?: number;
39
+ retryDelayMs?: number;
40
+ rateLimitRPM?: number;
41
+ }
42
+ export type LLMProviderType = "ollama" | "openai";
43
+ export interface LLMConfig {
44
+ provider: LLMProviderType;
45
+ model?: string;
46
+ baseUrl?: string;
47
+ ollama?: OllamaProviderConfig;
48
+ openai?: OpenAIProviderConfig;
49
+ }
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,IAAI,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":""}
@@ -1,47 +1,48 @@
1
1
  import type Database from "better-sqlite3";
2
2
  export interface ProvenanceRecord {
3
- id: number;
3
+ id: string;
4
4
  entityUri: string;
5
5
  activityType: "ingest" | "extract" | "link" | "embed";
6
- agent: string;
7
- inputUris: string[];
8
- outputUris: string[];
9
- startedAt: string;
10
- endedAt?: string;
6
+ agent?: string;
7
+ sourceUri?: string;
8
+ generatedAt: string;
11
9
  metadata?: Record<string, unknown>;
10
+ }
11
+ export interface ProvenanceLink {
12
+ id: string;
13
+ fromEntityUri: string;
14
+ toEntityUri: string;
15
+ relation: string;
12
16
  createdAt: string;
13
17
  }
14
18
  export interface FileTimelineEntry {
15
- id: number;
16
19
  filePath: string;
17
- eventType: "created" | "modified" | "deleted" | "renamed";
18
- eventId?: number;
19
- occurredAt: string;
20
- metadata?: Record<string, unknown>;
20
+ eventId: string;
21
+ changedAt: string;
22
+ changeType: "created" | "modified" | "deleted" | "renamed";
21
23
  }
22
24
  export interface Snapshot {
23
- id: number;
25
+ id: string;
24
26
  snapshotAt: string;
25
- noteCount: number;
26
- eventCount: number;
27
- entityCount: number;
27
+ entityCount?: number;
28
+ eventCount?: number;
28
29
  metadata?: Record<string, unknown>;
29
- createdAt: string;
30
30
  }
31
31
  export declare class ProvenanceRepository {
32
32
  private db;
33
33
  constructor(db: Database.Database);
34
- record(entry: Omit<ProvenanceRecord, "id" | "createdAt">): number;
34
+ record(entry: Omit<ProvenanceRecord, "id">): string;
35
35
  getByEntityUri(uri: string): ProvenanceRecord[];
36
36
  getByAgent(agent: string, limit?: number): ProvenanceRecord[];
37
37
  getByActivity(type: ProvenanceRecord["activityType"], limit?: number): ProvenanceRecord[];
38
- recordFileEvent(filePath: string, eventType: FileTimelineEntry["eventType"], eventId?: number, occurredAt?: string): number;
38
+ createLink(fromEntityUri: string, toEntityUri: string, relation: string, createdAt?: string): string;
39
+ findLinks(fromEntityUri?: string, toEntityUri?: string): ProvenanceLink[];
40
+ recordFileEvent(filePath: string, changeType: FileTimelineEntry["changeType"], eventId?: string, changedAt?: string): void;
39
41
  getFileTimeline(filePath: string): FileTimelineEntry[];
40
42
  createSnapshot(snapshotAt: string, stats: {
41
- noteCount: number;
42
- eventCount: number;
43
- entityCount: number;
44
- }): number;
43
+ entityCount?: number;
44
+ eventCount?: number;
45
+ }, metadata?: Record<string, unknown>): string;
45
46
  getSnapshots(limit?: number): Snapshot[];
46
47
  }
47
48
  //# sourceMappingURL=provenance-repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provenance-repository.d.ts","sourceRoot":"","sources":["../../src/provenance/provenance-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AA8ED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,MAAM;IAsBjE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAO/C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,gBAAgB,EAAE;IAO1D,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAE,KAAK,SAAM,GAAG,gBAAgB,EAAE;IAStF,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,EACzC,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM;IAaT,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAStD,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GACpE,MAAM;IAaT,YAAY,CAAC,KAAK,SAAM,GAAG,QAAQ,EAAE;CAMtC"}
1
+ {"version":3,"file":"provenance-repository.d.ts","sourceRoot":"","sources":["../../src/provenance/provenance-repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;CAC5D;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA4ED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,MAAM;IAsBnD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAO/C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,gBAAgB,EAAE;IAO1D,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAE,KAAK,SAAM,GAAG,gBAAgB,EAAE;IAWtF,UAAU,CACR,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM;IAgBT,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IA8BzE,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,EAC3C,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAcP,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAStD,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EACpD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,MAAM;IAqBT,YAAY,CAAC,KAAK,SAAM,GAAG,QAAQ,EAAE;CAMtC"}
@@ -1,43 +1,40 @@
1
+ import { randomUUID } from "node:crypto";
1
2
  import { DatabaseError } from "../errors.js";
2
3
  function rowToProvenance(row) {
3
4
  return {
4
5
  id: row.id,
5
6
  entityUri: row.entity_uri,
6
7
  activityType: row.activity_type,
7
- agent: row.agent,
8
- inputUris: JSON.parse(row.input_uris),
9
- outputUris: JSON.parse(row.output_uris),
10
- startedAt: row.started_at,
11
- endedAt: row.ended_at ?? undefined,
12
- metadata: row.metadata_json
13
- ? JSON.parse(row.metadata_json)
14
- : undefined,
8
+ agent: row.agent ?? undefined,
9
+ sourceUri: row.source_uri ?? undefined,
10
+ generatedAt: row.generated_at,
11
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
12
+ };
13
+ }
14
+ function rowToProvenanceLink(row) {
15
+ return {
16
+ id: row.id,
17
+ fromEntityUri: row.from_entity_uri,
18
+ toEntityUri: row.to_entity_uri,
19
+ relation: row.relation,
15
20
  createdAt: row.created_at,
16
21
  };
17
22
  }
18
23
  function rowToFileTimeline(row) {
19
24
  return {
20
- id: row.id,
21
25
  filePath: row.file_path,
22
- eventType: row.event_type,
23
- eventId: row.event_id ?? undefined,
24
- occurredAt: row.occurred_at,
25
- metadata: row.metadata_json
26
- ? JSON.parse(row.metadata_json)
27
- : undefined,
26
+ eventId: row.event_id,
27
+ changedAt: row.changed_at,
28
+ changeType: row.change_type,
28
29
  };
29
30
  }
30
31
  function rowToSnapshot(row) {
31
32
  return {
32
33
  id: row.id,
33
34
  snapshotAt: row.snapshot_at,
34
- noteCount: row.note_count,
35
- eventCount: row.event_count,
36
- entityCount: row.entity_count,
37
- metadata: row.metadata_json
38
- ? JSON.parse(row.metadata_json)
39
- : undefined,
40
- createdAt: row.created_at,
35
+ entityCount: row.entity_count ?? undefined,
36
+ eventCount: row.event_count ?? undefined,
37
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
41
38
  };
42
39
  }
43
40
  export class ProvenanceRepository {
@@ -48,12 +45,13 @@ export class ProvenanceRepository {
48
45
  // ── 来歴記録 ────────────────────────────────────────────────────
49
46
  record(entry) {
50
47
  try {
48
+ const id = randomUUID();
51
49
  const stmt = this.db.prepare(`
52
- INSERT INTO provenance (entity_uri, activity_type, agent, input_uris, output_uris, started_at, ended_at, metadata_json)
53
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
50
+ INSERT INTO provenance (id, entity_uri, activity_type, agent, source_uri, generated_at, metadata)
51
+ VALUES (?, ?, ?, ?, ?, ?, ?)
54
52
  `);
55
- const info = stmt.run(entry.entityUri, entry.activityType, entry.agent, JSON.stringify(entry.inputUris ?? []), JSON.stringify(entry.outputUris ?? []), entry.startedAt, entry.endedAt ?? null, entry.metadata ? JSON.stringify(entry.metadata) : null);
56
- return Number(info.lastInsertRowid);
53
+ stmt.run(id, entry.entityUri, entry.activityType, entry.agent ?? null, entry.sourceUri ?? null, entry.generatedAt, entry.metadata ? JSON.stringify(entry.metadata) : null);
54
+ return id;
57
55
  }
58
56
  catch (error) {
59
57
  throw new DatabaseError("provenance.record", error, { entityUri: entry.entityUri });
@@ -61,31 +59,71 @@ export class ProvenanceRepository {
61
59
  }
62
60
  getByEntityUri(uri) {
63
61
  const rows = this.db
64
- .prepare("SELECT * FROM provenance WHERE entity_uri = ? ORDER BY started_at DESC")
62
+ .prepare("SELECT * FROM provenance WHERE entity_uri = ? ORDER BY generated_at DESC")
65
63
  .all(uri);
66
64
  return rows.map(rowToProvenance);
67
65
  }
68
66
  getByAgent(agent, limit = 100) {
69
67
  const rows = this.db
70
- .prepare("SELECT * FROM provenance WHERE agent = ? ORDER BY started_at DESC LIMIT ?")
68
+ .prepare("SELECT * FROM provenance WHERE agent = ? ORDER BY generated_at DESC LIMIT ?")
71
69
  .all(agent, limit);
72
70
  return rows.map(rowToProvenance);
73
71
  }
74
72
  getByActivity(type, limit = 100) {
75
73
  const rows = this.db
76
- .prepare("SELECT * FROM provenance WHERE activity_type = ? ORDER BY started_at DESC LIMIT ?")
74
+ .prepare("SELECT * FROM provenance WHERE activity_type = ? ORDER BY generated_at DESC LIMIT ?")
77
75
  .all(type, limit);
78
76
  return rows.map(rowToProvenance);
79
77
  }
78
+ // ── プロベナンスリンク ─────────────────────────────────────────
79
+ createLink(fromEntityUri, toEntityUri, relation, createdAt) {
80
+ try {
81
+ const id = randomUUID();
82
+ const now = createdAt ?? new Date().toISOString();
83
+ this.db
84
+ .prepare(`INSERT INTO provenance_links (id, from_entity_uri, to_entity_uri, relation, created_at)
85
+ VALUES (?, ?, ?, ?, ?)`)
86
+ .run(id, fromEntityUri, toEntityUri, relation, now);
87
+ return id;
88
+ }
89
+ catch (error) {
90
+ throw new DatabaseError("provenance.createLink", error, { fromEntityUri, toEntityUri });
91
+ }
92
+ }
93
+ findLinks(fromEntityUri, toEntityUri) {
94
+ if (fromEntityUri && toEntityUri) {
95
+ const rows = this.db
96
+ .prepare("SELECT * FROM provenance_links WHERE from_entity_uri = ? AND to_entity_uri = ? ORDER BY created_at DESC")
97
+ .all(fromEntityUri, toEntityUri);
98
+ return rows.map(rowToProvenanceLink);
99
+ }
100
+ else if (fromEntityUri) {
101
+ const rows = this.db
102
+ .prepare("SELECT * FROM provenance_links WHERE from_entity_uri = ? ORDER BY created_at DESC")
103
+ .all(fromEntityUri);
104
+ return rows.map(rowToProvenanceLink);
105
+ }
106
+ else if (toEntityUri) {
107
+ const rows = this.db
108
+ .prepare("SELECT * FROM provenance_links WHERE to_entity_uri = ? ORDER BY created_at DESC")
109
+ .all(toEntityUri);
110
+ return rows.map(rowToProvenanceLink);
111
+ }
112
+ else {
113
+ const rows = this.db
114
+ .prepare("SELECT * FROM provenance_links ORDER BY created_at DESC")
115
+ .all();
116
+ return rows.map(rowToProvenanceLink);
117
+ }
118
+ }
80
119
  // ── ファイルタイムライン ──────────────────────────────────────────
81
- recordFileEvent(filePath, eventType, eventId, occurredAt) {
120
+ recordFileEvent(filePath, changeType, eventId, changedAt) {
82
121
  try {
83
- const stmt = this.db.prepare(`
84
- INSERT INTO file_timeline (file_path, event_type, event_id, occurred_at)
85
- VALUES (?, ?, ?, COALESCE(?, datetime('now')))
86
- `);
87
- const info = stmt.run(filePath, eventType, eventId ?? null, occurredAt ?? null);
88
- return Number(info.lastInsertRowid);
122
+ const now = changedAt ?? new Date().toISOString();
123
+ this.db
124
+ .prepare(`INSERT INTO file_timeline (file_path, event_id, changed_at, change_type)
125
+ VALUES (?, ?, ?, ?)`)
126
+ .run(filePath, eventId ?? "", now, changeType);
89
127
  }
90
128
  catch (error) {
91
129
  throw new DatabaseError("provenance.recordFileEvent", error, { filePath });
@@ -93,19 +131,19 @@ export class ProvenanceRepository {
93
131
  }
94
132
  getFileTimeline(filePath) {
95
133
  const rows = this.db
96
- .prepare("SELECT * FROM file_timeline WHERE file_path = ? ORDER BY occurred_at ASC")
134
+ .prepare("SELECT * FROM file_timeline WHERE file_path = ? ORDER BY changed_at ASC")
97
135
  .all(filePath);
98
136
  return rows.map(rowToFileTimeline);
99
137
  }
100
138
  // ── スナップショット ─────────────────────────────────────────────
101
- createSnapshot(snapshotAt, stats) {
139
+ createSnapshot(snapshotAt, stats, metadata) {
102
140
  try {
103
- const stmt = this.db.prepare(`
104
- INSERT INTO snapshots (snapshot_at, note_count, event_count, entity_count)
105
- VALUES (?, ?, ?, ?)
106
- `);
107
- const info = stmt.run(snapshotAt, stats.noteCount, stats.eventCount, stats.entityCount);
108
- return Number(info.lastInsertRowid);
141
+ const id = randomUUID();
142
+ this.db
143
+ .prepare(`INSERT INTO snapshots (id, snapshot_at, entity_count, event_count, metadata)
144
+ VALUES (?, ?, ?, ?, ?)`)
145
+ .run(id, snapshotAt, stats.entityCount ?? null, stats.eventCount ?? null, metadata ? JSON.stringify(metadata) : null);
146
+ return id;
109
147
  }
110
148
  catch (error) {
111
149
  throw new DatabaseError("provenance.createSnapshot", error, { snapshotAt });
@@ -1 +1 @@
1
- {"version":3,"file":"provenance-repository.js","sourceRoot":"","sources":["../../src/provenance/provenance-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provenance-repository.js","sourceRoot":"","sources":["../../src/provenance/provenance-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAoE7C,SAAS,eAAe,CAAC,GAAkB;IACzC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,YAAY,EAAE,GAAG,CAAC,aAAiD;QACnE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAA6B,CAAC,CAAC,CAAC,SAAS;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAsB;IACjD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAoB;IAC7C,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAA8C;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAgB;IACrC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAA6B,CAAC,CAAC,CAAC,SAAS;KAC3F,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C,+DAA+D;IAE/D,MAAM,CAAC,KAAmC;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG5B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CACN,EAAE,EACF,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CACvD,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,0EAA0E,CAAC;aACnF,GAAG,CAAC,GAAG,CAAoB,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,KAAK,GAAG,GAAG;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,6EAA6E,CAAC;aACtF,GAAG,CAAC,KAAK,EAAE,KAAK,CAAoB,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,IAAsC,EAAE,KAAK,GAAG,GAAG;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,qFAAqF,CACtF;aACA,GAAG,CAAC,IAAI,EAAE,KAAK,CAAoB,CAAC;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,yDAAyD;IAEzD,UAAU,CACR,aAAqB,EACrB,WAAmB,EACnB,QAAgB,EAChB,SAAkB;QAElB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;kCACwB,CACzB;iBACA,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,SAAS,CAAC,aAAsB,EAAE,WAAoB;QACpD,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN,yGAAyG,CAC1G;iBACA,GAAG,CAAC,aAAa,EAAE,WAAW,CAAwB,CAAC;YAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN,mFAAmF,CACpF;iBACA,GAAG,CAAC,aAAa,CAAwB,CAAC;YAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CAAC,iFAAiF,CAAC;iBAC1F,GAAG,CAAC,WAAW,CAAwB,CAAC;YAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CAAC,yDAAyD,CAAC;iBAClE,GAAG,EAAyB,CAAC;YAChC,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,2DAA2D;IAE3D,eAAe,CACb,QAAgB,EAChB,UAA2C,EAC3C,OAAgB,EAChB,SAAkB;QAElB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;+BACqB,CACtB;iBACA,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,eAAe,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,yEAAyE,CAAC;aAClF,GAAG,CAAC,QAAQ,CAAsB,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,4DAA4D;IAE5D,cAAc,CACZ,UAAkB,EAClB,KAAoD,EACpD,QAAkC;QAElC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;kCACwB,CACzB;iBACA,GAAG,CACF,EAAE,EACF,UAAU,EACV,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3C,CAAC;YACJ,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAK,GAAG,GAAG;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,2DAA2D,CAAC;aACpE,GAAG,CAAC,KAAK,CAAkB,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -1,5 +1,7 @@
1
1
  import type { KnowledgeRepository, KnowledgeNote } from "../storage/knowledge-repository.js";
2
2
  import type { EmbeddingProvider } from "../embedding/embedding-provider.js";
3
+ import type { LLMProvider } from "../llm/types.js";
4
+ import type { RerankerWeights } from "./reasoning-reranker.js";
3
5
  export interface SearchOptions {
4
6
  query?: string;
5
7
  tags?: string[];
@@ -7,17 +9,24 @@ export interface SearchOptions {
7
9
  dateTo?: string;
8
10
  limit?: number;
9
11
  mode?: "keyword" | "semantic" | "hybrid";
12
+ rerank?: boolean;
13
+ rerankWeights?: RerankerWeights;
14
+ includeDeprecated?: boolean;
15
+ agentic?: boolean;
10
16
  }
11
17
  export interface SearchResult {
12
18
  note: KnowledgeNote;
13
19
  score: number;
14
20
  matchReason: string[];
21
+ fellBack?: boolean;
15
22
  }
16
23
  export declare class KnowledgeSearcher {
17
24
  private repository;
18
25
  private semanticSearcher?;
19
26
  private hybridSearcher?;
20
- constructor(repository: KnowledgeRepository, embeddingProvider?: EmbeddingProvider, hybridAlpha?: number);
27
+ private reranker;
28
+ private agenticReranker;
29
+ constructor(repository: KnowledgeRepository, embeddingProvider?: EmbeddingProvider, hybridAlpha?: number, llmProvider?: LLMProvider);
21
30
  search(options: SearchOptions): Promise<SearchResult[]>;
22
31
  searchByTag(tag: string, limit?: number): Promise<SearchResult[]>;
23
32
  searchRecent(days?: number, limit?: number): Promise<SearchResult[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-searcher.d.ts","sourceRoot":"","sources":["../../src/search/knowledge-searcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAI5E,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,UAAU;IAJpB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAG9B,UAAU,EAAE,mBAAmB,EACvC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,WAAW,GAAE,MAAY;IAQrB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmDvD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI7D,YAAY,CAAC,IAAI,SAAI,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAYjE,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB;CAWF"}
1
+ {"version":3,"file":"knowledge-searcher.d.ts","sourceRoot":"","sources":["../../src/search/knowledge-searcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAO1B,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,eAAe,CAAoB;gBAGjC,UAAU,EAAE,mBAAmB,EACvC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,WAAW,GAAE,MAAY,EACzB,WAAW,CAAC,EAAE,WAAW;IAUrB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwGvD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI7D,YAAY,CAAC,IAAI,SAAI,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAYjE,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB;CAWF"}