@knowledgine/core 0.2.0 → 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 (107) hide show
  1. package/dist/config/config-loader.d.ts +22 -2
  2. package/dist/config/config-loader.d.ts.map +1 -1
  3. package/dist/config/config-loader.js +50 -15
  4. package/dist/config/config-loader.js.map +1 -1
  5. package/dist/embedding/model-downloader.d.ts.map +1 -1
  6. package/dist/embedding/model-downloader.js +31 -12
  7. package/dist/embedding/model-downloader.js.map +1 -1
  8. package/dist/extraction/causal-link-detector.d.ts +16 -0
  9. package/dist/extraction/causal-link-detector.d.ts.map +1 -0
  10. package/dist/extraction/causal-link-detector.js +142 -0
  11. package/dist/extraction/causal-link-detector.js.map +1 -0
  12. package/dist/extraction/incremental-extractor.d.ts +21 -0
  13. package/dist/extraction/incremental-extractor.d.ts.map +1 -0
  14. package/dist/extraction/incremental-extractor.js +113 -0
  15. package/dist/extraction/incremental-extractor.js.map +1 -0
  16. package/dist/extraction/psp-detector.d.ts +3 -3
  17. package/dist/extraction/psp-detector.d.ts.map +1 -1
  18. package/dist/extraction/psp-detector.js +51 -3
  19. package/dist/extraction/psp-detector.js.map +1 -1
  20. package/dist/feedback/feedback-learner.d.ts.map +1 -1
  21. package/dist/feedback/feedback-learner.js.map +1 -1
  22. package/dist/feedback/feedback-repository.d.ts.map +1 -1
  23. package/dist/feedback/feedback-repository.js +2 -6
  24. package/dist/feedback/feedback-repository.js.map +1 -1
  25. package/dist/graph/entity-extractor.d.ts +3 -0
  26. package/dist/graph/entity-extractor.d.ts.map +1 -1
  27. package/dist/graph/entity-extractor.js +82 -10
  28. package/dist/graph/entity-extractor.js.map +1 -1
  29. package/dist/graph/graph-repository.d.ts +5 -5
  30. package/dist/graph/graph-repository.d.ts.map +1 -1
  31. package/dist/graph/graph-repository.js +12 -12
  32. package/dist/graph/graph-repository.js.map +1 -1
  33. package/dist/index.d.ts +18 -3
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +28 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/llm/errors.d.ts +8 -0
  38. package/dist/llm/errors.d.ts.map +1 -0
  39. package/dist/llm/errors.js +11 -0
  40. package/dist/llm/errors.js.map +1 -0
  41. package/dist/llm/index.d.ts +7 -0
  42. package/dist/llm/index.d.ts.map +1 -0
  43. package/dist/llm/index.js +5 -0
  44. package/dist/llm/index.js.map +1 -0
  45. package/dist/llm/ollama-provider.d.ts +13 -0
  46. package/dist/llm/ollama-provider.d.ts.map +1 -0
  47. package/dist/llm/ollama-provider.js +130 -0
  48. package/dist/llm/ollama-provider.js.map +1 -0
  49. package/dist/llm/openai-provider.d.ts +15 -0
  50. package/dist/llm/openai-provider.d.ts.map +1 -0
  51. package/dist/llm/openai-provider.js +143 -0
  52. package/dist/llm/openai-provider.js.map +1 -0
  53. package/dist/llm/provider-factory.d.ts +3 -0
  54. package/dist/llm/provider-factory.d.ts.map +1 -0
  55. package/dist/llm/provider-factory.js +25 -0
  56. package/dist/llm/provider-factory.js.map +1 -0
  57. package/dist/llm/types.d.ts +50 -0
  58. package/dist/llm/types.d.ts.map +1 -0
  59. package/dist/llm/types.js +2 -0
  60. package/dist/llm/types.js.map +1 -0
  61. package/dist/provenance/provenance-repository.d.ts +23 -22
  62. package/dist/provenance/provenance-repository.d.ts.map +1 -1
  63. package/dist/provenance/provenance-repository.js +82 -44
  64. package/dist/provenance/provenance-repository.js.map +1 -1
  65. package/dist/search/hybrid-searcher.js +2 -2
  66. package/dist/search/hybrid-searcher.js.map +1 -1
  67. package/dist/search/knowledge-searcher.d.ts +10 -1
  68. package/dist/search/knowledge-searcher.d.ts.map +1 -1
  69. package/dist/search/knowledge-searcher.js +78 -30
  70. package/dist/search/knowledge-searcher.js.map +1 -1
  71. package/dist/search/reasoning-reranker.d.ts +59 -0
  72. package/dist/search/reasoning-reranker.d.ts.map +1 -0
  73. package/dist/search/reasoning-reranker.js +334 -0
  74. package/dist/search/reasoning-reranker.js.map +1 -0
  75. package/dist/search/semantic-searcher.d.ts.map +1 -1
  76. package/dist/search/semantic-searcher.js +3 -2
  77. package/dist/search/semantic-searcher.js.map +1 -1
  78. package/dist/services/knowledge-service.d.ts +4 -0
  79. package/dist/services/knowledge-service.d.ts.map +1 -1
  80. package/dist/services/knowledge-service.js +9 -2
  81. package/dist/services/knowledge-service.js.map +1 -1
  82. package/dist/storage/database.d.ts.map +1 -1
  83. package/dist/storage/database.js +60 -5
  84. package/dist/storage/database.js.map +1 -1
  85. package/dist/storage/knowledge-repository.d.ts +66 -1
  86. package/dist/storage/knowledge-repository.d.ts.map +1 -1
  87. package/dist/storage/knowledge-repository.js +131 -10
  88. package/dist/storage/knowledge-repository.js.map +1 -1
  89. package/dist/storage/migrations/007_spec_alignment.d.ts +3 -0
  90. package/dist/storage/migrations/007_spec_alignment.d.ts.map +1 -0
  91. package/dist/storage/migrations/007_spec_alignment.js +116 -0
  92. package/dist/storage/migrations/007_spec_alignment.js.map +1 -0
  93. package/dist/storage/migrations/008_knowledge_versioning.d.ts +15 -0
  94. package/dist/storage/migrations/008_knowledge_versioning.d.ts.map +1 -0
  95. package/dist/storage/migrations/008_knowledge_versioning.js +69 -0
  96. package/dist/storage/migrations/008_knowledge_versioning.js.map +1 -0
  97. package/dist/storage/migrations/009_extraction_metadata.d.ts +12 -0
  98. package/dist/storage/migrations/009_extraction_metadata.d.ts.map +1 -0
  99. package/dist/storage/migrations/009_extraction_metadata.js +39 -0
  100. package/dist/storage/migrations/009_extraction_metadata.js.map +1 -0
  101. package/dist/storage/migrator.d.ts +3 -1
  102. package/dist/storage/migrator.d.ts.map +1 -1
  103. package/dist/storage/migrator.js +2 -1
  104. package/dist/storage/migrator.js.map +1 -1
  105. package/dist/types.d.ts +2 -0
  106. package/dist/types.d.ts.map +1 -1
  107. package/package.json +1 -1
@@ -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,CACX,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,EACtC,KAAK,SAAM,GACV,gBAAgB,EAAE;IAWrB,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;IAWtD,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":"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"}
@@ -31,10 +31,10 @@ export class HybridSearcher {
31
31
  ftsMap.set(note.id, 1 - normalized);
32
32
  }
33
33
  }
34
- // ベクトルスコアマップ (1 - distance)
34
+ // ベクトルスコアマップ (distance → 0-1 score)
35
35
  const vecMap = new Map();
36
36
  for (const { note_id, distance } of vecResults) {
37
- vecMap.set(note_id, 1 - distance);
37
+ vecMap.set(note_id, 1 / (1 + distance));
38
38
  }
39
39
  // 全ノートIDを統合
40
40
  const allIds = new Set([...ftsMap.keys(), ...vecMap.keys()]);
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-searcher.js","sourceRoot":"","sources":["../../src/search/hybrid-searcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hybrid-searcher.js","sourceRoot":"","sources":["../../src/search/hybrid-searcher.ts"],"names":[],"mappings":"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"}
@@ -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;IAiDvD,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"}
@@ -1,53 +1,101 @@
1
1
  import { SemanticSearcher } from "./semantic-searcher.js";
2
2
  import { HybridSearcher } from "./hybrid-searcher.js";
3
+ import { ReasoningReranker } from "./reasoning-reranker.js";
3
4
  export class KnowledgeSearcher {
4
5
  repository;
5
6
  semanticSearcher;
6
7
  hybridSearcher;
7
- constructor(repository, embeddingProvider, hybridAlpha = 0.3) {
8
+ reranker;
9
+ agenticReranker;
10
+ constructor(repository, embeddingProvider, hybridAlpha = 0.3, llmProvider) {
8
11
  this.repository = repository;
9
12
  if (embeddingProvider) {
10
13
  this.semanticSearcher = new SemanticSearcher(repository, embeddingProvider);
11
14
  this.hybridSearcher = new HybridSearcher(repository, embeddingProvider, hybridAlpha);
12
15
  }
16
+ this.reranker = new ReasoningReranker(undefined, repository);
17
+ this.agenticReranker = new ReasoningReranker(llmProvider, repository);
13
18
  }
14
19
  async search(options) {
15
- const { query, limit = 50, mode = "keyword" } = options;
20
+ const { query, limit = 50, mode = "keyword", rerank = false, rerankWeights, includeDeprecated = false, agentic = false, } = options;
16
21
  if (!query) {
17
22
  return [];
18
23
  }
24
+ let results;
19
25
  if (mode === "semantic" && this.semanticSearcher) {
20
- return this.semanticSearcher.search(query, limit);
26
+ results = await this.semanticSearcher.search(query, limit);
21
27
  }
22
- if (mode === "hybrid" && this.hybridSearcher) {
23
- return this.hybridSearcher.search(query, limit);
28
+ else if (mode === "hybrid" && this.hybridSearcher) {
29
+ results = await this.hybridSearcher.search(query, limit);
24
30
  }
25
- // Fall back to keyword search when semantic/hybrid requested but provider unavailable
26
- const fellBack = mode !== "keyword" && ((mode === "semantic" && !this.semanticSearcher) ||
27
- (mode === "hybrid" && !this.hybridSearcher));
28
- // keyword mode (デフォルト) — FTS5
29
- const rows = this.repository.searchNotesWithRank(query, limit);
30
- if (rows.length === 0) {
31
- return [];
32
- }
33
- // FTSスコアをmin-max正規化
34
- const rawRanks = rows.map((r) => Math.abs(r.rank));
35
- const minRank = Math.min(...rawRanks);
36
- const maxRank = Math.max(...rawRanks);
37
- const range = maxRank - minRank;
38
- return rows.map(({ note, rank }) => {
39
- const normalized = range > 0 ? (Math.abs(rank) - minRank) / range : 1.0;
40
- const score = 1 - normalized;
41
- const reasons = [`キーワード一致: "${query}"`];
42
- if (fellBack) {
43
- reasons.push("Note: Fell back to keyword search (semantic search not configured)");
31
+ else {
32
+ // Fall back to keyword search when semantic/hybrid requested but provider unavailable
33
+ const fellBack = mode !== "keyword" &&
34
+ ((mode === "semantic" && !this.semanticSearcher) ||
35
+ (mode === "hybrid" && !this.hybridSearcher));
36
+ // keyword mode (デフォルト) — FTS5
37
+ const rows = this.repository.searchNotesWithRank(query, limit, includeDeprecated);
38
+ if (rows.length === 0) {
39
+ return [];
44
40
  }
45
- return {
46
- note,
47
- score,
48
- matchReason: reasons,
49
- };
50
- });
41
+ // FTSスコアをmin-max正規化
42
+ const rawRanks = rows.map((r) => Math.abs(r.rank));
43
+ const minRank = Math.min(...rawRanks);
44
+ const maxRank = Math.max(...rawRanks);
45
+ const range = maxRank - minRank;
46
+ const now = Date.now();
47
+ results = rows.map(({ note, rank }) => {
48
+ const normalized = range > 0 ? (Math.abs(rank) - minRank) / range : 1.0;
49
+ let score = 1 - normalized;
50
+ // valid_from スコアボーナス: 新しいほど高スコア (最大+0.5)
51
+ // yearsSinceNow が小さいほど (= より新しい) ボーナスが大きい
52
+ const validFrom = note.valid_from ?? note.created_at;
53
+ if (validFrom) {
54
+ const ageMs = now - new Date(validFrom).getTime();
55
+ const yearsSinceNow = ageMs / (1000 * 60 * 60 * 24 * 365);
56
+ // 新しさボーナス: 経過年数が少ないほど高い (上限0.5、最低0)
57
+ score += Math.max(0, 0.5 - yearsSinceNow * 0.1);
58
+ }
59
+ const reasons = [`キーワード一致: "${query}"`];
60
+ if (fellBack) {
61
+ reasons.push(`Warning: ${mode} search is not available. Showing keyword results instead. Run 'knowledgine upgrade --semantic' to enable.`);
62
+ }
63
+ return {
64
+ note,
65
+ score,
66
+ matchReason: reasons,
67
+ fellBack,
68
+ };
69
+ });
70
+ }
71
+ // agentic モード: LLMベース ReasoningReranker を使用
72
+ if (agentic && results.length > 0) {
73
+ const reranked = await this.agenticReranker.rerank(query, results);
74
+ return reranked.map((r) => ({
75
+ note: r.note,
76
+ score: r.score,
77
+ matchReason: [...r.matchReason, ...(r.reasoning ? [`LLM推論: ${r.reasoning}`] : [])],
78
+ fellBack: results.find((orig) => orig.note.id === r.note.id)?.fellBack,
79
+ }));
80
+ }
81
+ if (rerank && results.length > 0) {
82
+ const currentReranker = rerankWeights
83
+ ? new ReasoningReranker(undefined, this.repository, rerankWeights)
84
+ : this.reranker;
85
+ const rerankInputs = results.map((r) => ({
86
+ note: r.note,
87
+ baseScore: r.score,
88
+ matchReason: r.matchReason,
89
+ }));
90
+ const reranked = await currentReranker.rerankLegacy(rerankInputs, { query });
91
+ return reranked.map((r) => ({
92
+ note: r.note,
93
+ score: r.finalScore,
94
+ matchReason: r.matchReason,
95
+ fellBack: results.find((orig) => orig.note.id === r.note.id)?.fellBack,
96
+ }));
97
+ }
98
+ return results;
51
99
  }
52
100
  async searchByTag(tag, limit = 50) {
53
101
  return this.search({ tags: [tag], limit });
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-searcher.js","sourceRoot":"","sources":["../../src/search/knowledge-searcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge-searcher.js","sourceRoot":"","sources":["../../src/search/knowledge-searcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { LLMProvider } from "../llm/types.js";
2
+ import type { KnowledgeRepository, KnowledgeNote } from "../storage/knowledge-repository.js";
3
+ import type { SearchResult } from "./knowledge-searcher.js";
4
+ export interface RerankOptions {
5
+ maxCandidates?: number;
6
+ maxResults?: number;
7
+ }
8
+ export interface RerankedResult {
9
+ note: KnowledgeNote;
10
+ score: number;
11
+ originalScore: number;
12
+ matchReason: string[];
13
+ reasoning?: string;
14
+ axes: {
15
+ temporal: number;
16
+ contextRelevance: number;
17
+ pspQuality: number;
18
+ };
19
+ }
20
+ export interface RerankInput {
21
+ note: KnowledgeNote;
22
+ baseScore: number;
23
+ matchReason: string[];
24
+ }
25
+ export interface AxisScores {
26
+ temporal: number;
27
+ context: number;
28
+ psp: number;
29
+ }
30
+ export interface RerankResult {
31
+ note: KnowledgeNote;
32
+ baseScore: number;
33
+ scores: AxisScores;
34
+ finalScore: number;
35
+ matchReason: string[];
36
+ }
37
+ export interface RerankerWeights {
38
+ temporalWeight?: number;
39
+ contextWeight?: number;
40
+ pspWeight?: number;
41
+ }
42
+ export declare class ReasoningReranker {
43
+ private llmProvider;
44
+ private repository;
45
+ private _legacyWeights?;
46
+ constructor(llmProvider: LLMProvider | undefined, repository: KnowledgeRepository, _legacyWeights?: RerankerWeights | undefined);
47
+ /**
48
+ * 新API: LLMベースのリランキング
49
+ */
50
+ rerank(query: string, candidates: SearchResult[], options?: RerankOptions): Promise<RerankedResult[]>;
51
+ /**
52
+ * 旧API後方互換: RerankInput[] を受け取り RerankResult[] を返す
53
+ * KnowledgeSearcher が既存実装で呼んでいる形式
54
+ */
55
+ rerankLegacy(inputs: RerankInput[], options: {
56
+ query: string;
57
+ }): Promise<RerankResult[]>;
58
+ }
59
+ //# sourceMappingURL=reasoning-reranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-reranker.d.ts","sourceRoot":"","sources":["../../src/search/reasoning-reranker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8JD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,cAAc,CAAC;gBAHf,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,UAAU,EAAE,mBAAmB,EAE/B,cAAc,CAAC,EAAE,eAAe,YAAA;IAG1C;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,YAAY,EAAE,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,cAAc,EAAE,CAAC;IAwG5B;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CA0C/F"}