@cogitator-ai/memory 0.2.0 → 0.3.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 (33) hide show
  1. package/README.md +572 -21
  2. package/dist/context-builder.d.ts.map +1 -1
  3. package/dist/context-builder.js +4 -0
  4. package/dist/context-builder.js.map +1 -1
  5. package/dist/index.d.ts +3 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/knowledge-graph/entity-extractor.d.ts +30 -0
  10. package/dist/knowledge-graph/entity-extractor.d.ts.map +1 -0
  11. package/dist/knowledge-graph/entity-extractor.js +158 -0
  12. package/dist/knowledge-graph/entity-extractor.js.map +1 -0
  13. package/dist/knowledge-graph/graph-adapter.d.ts +56 -0
  14. package/dist/knowledge-graph/graph-adapter.d.ts.map +1 -0
  15. package/dist/knowledge-graph/graph-adapter.js +656 -0
  16. package/dist/knowledge-graph/graph-adapter.js.map +1 -0
  17. package/dist/knowledge-graph/graph-context-builder.d.ts +23 -0
  18. package/dist/knowledge-graph/graph-context-builder.d.ts.map +1 -0
  19. package/dist/knowledge-graph/graph-context-builder.js +318 -0
  20. package/dist/knowledge-graph/graph-context-builder.js.map +1 -0
  21. package/dist/knowledge-graph/index.d.ts +9 -0
  22. package/dist/knowledge-graph/index.d.ts.map +1 -0
  23. package/dist/knowledge-graph/index.js +6 -0
  24. package/dist/knowledge-graph/index.js.map +1 -0
  25. package/dist/knowledge-graph/inference-engine.d.ts +17 -0
  26. package/dist/knowledge-graph/inference-engine.d.ts.map +1 -0
  27. package/dist/knowledge-graph/inference-engine.js +270 -0
  28. package/dist/knowledge-graph/inference-engine.js.map +1 -0
  29. package/dist/knowledge-graph/schema.d.ts +854 -0
  30. package/dist/knowledge-graph/schema.d.ts.map +1 -0
  31. package/dist/knowledge-graph/schema.js +166 -0
  32. package/dist/knowledge-graph/schema.js.map +1 -0
  33. package/package.json +3 -3
package/dist/index.d.ts CHANGED
@@ -10,5 +10,7 @@ export { ContextBuilder, type ContextBuilderDeps, type BuildContextOptions, } fr
10
10
  export { countTokens, countMessageTokens, countMessagesTokens, truncateToTokens, } from './token-counter';
11
11
  export { OpenAIEmbeddingService, OllamaEmbeddingService, createEmbeddingService, } from './embedding/index';
12
12
  export { MemoryProviderSchema, InMemoryConfigSchema, RedisConfigSchema, PostgresConfigSchema, MemoryAdapterConfigSchema, ContextStrategySchema, ContextBuilderConfigSchema, EmbeddingProviderSchema, OpenAIEmbeddingConfigSchema, OllamaEmbeddingConfigSchema, EmbeddingServiceConfigSchema, } from './schema';
13
- export type { MemoryType, Thread, MemoryEntry, Fact, Embedding, MemoryProvider, MemoryAdapterConfig, RedisAdapterConfig, PostgresAdapterConfig, InMemoryAdapterConfig, MemoryResult, MemoryQueryOptions, SemanticSearchOptions, MemoryAdapter, FactAdapter, EmbeddingAdapter, EmbeddingService, EmbeddingProvider, EmbeddingServiceConfig, OpenAIEmbeddingConfig, OllamaEmbeddingConfig, ContextBuilderConfig, ContextStrategy, BuiltContext, MemoryConfig, } from '@cogitator-ai/types';
13
+ export { PostgresGraphAdapter, LLMEntityExtractor, GraphInferenceEngine, GraphContextBuilder, EntityTypeSchema, RelationTypeSchema, NodeSourceSchema, GraphNodeSchema, GraphEdgeSchema, ExtractedEntitySchema, ExtractedRelationSchema, ExtractionResultSchema, NodeQuerySchema, EdgeQuerySchema, TraversalDirectionSchema, TraversalOptionsSchema, GraphSemanticSearchOptionsSchema, InferencePatternSchema, InferenceConclusionSchema, InferenceRuleSchema, KnowledgeGraphExtractionConfigSchema, KnowledgeGraphInferenceConfigSchema, KnowledgeGraphContextConfigSchema, KnowledgeGraphConfigSchema, } from './knowledge-graph/index';
14
+ export type { PostgresGraphAdapterConfig, LLMEntityExtractorConfig, LLMBackendMinimal, GraphContextBuilderConfig, } from './knowledge-graph/index';
15
+ export type { MemoryType, Thread, MemoryEntry, Fact, Embedding, MemoryProvider, MemoryAdapterConfig, RedisAdapterConfig, PostgresAdapterConfig, InMemoryAdapterConfig, MemoryResult, MemoryQueryOptions, SemanticSearchOptions, MemoryAdapter, FactAdapter, EmbeddingAdapter, EmbeddingService, EmbeddingProvider, EmbeddingServiceConfig, OpenAIEmbeddingConfig, OllamaEmbeddingConfig, ContextBuilderConfig, ContextStrategy, BuiltContext, MemoryConfig, GraphAdapter, GraphNode, GraphEdge, GraphPath, GraphStats, GraphContext, GraphContextOptions, NodeQuery, EdgeQuery, TraversalOptions, TraversalResult, TraversalDirection, GraphSemanticSearchOptions, EntityType, RelationType, NodeSource, ExtractedEntity, ExtractedRelation, ExtractionResult, ExtractionContext, EntityExtractor, InferenceEngine, InferenceRule, InferencePattern, InferenceConclusion, InferredEdge, InferenceOptions, KnowledgeGraphConfig, KnowledgeGraphExtractionConfig, KnowledgeGraphInferenceConfig, KnowledgeGraphContextConfig, } from '@cogitator-ai/types';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,UAAU,EACV,MAAM,EACN,WAAW,EACX,IAAI,EACJ,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,oCAAoC,EACpC,mCAAmC,EACnC,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,UAAU,EACV,MAAM,EACN,WAAW,EACX,IAAI,EACJ,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,UAAU,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -10,4 +10,5 @@ export { ContextBuilder, } from './context-builder';
10
10
  export { countTokens, countMessageTokens, countMessagesTokens, truncateToTokens, } from './token-counter';
11
11
  export { OpenAIEmbeddingService, OllamaEmbeddingService, createEmbeddingService, } from './embedding/index';
12
12
  export { MemoryProviderSchema, InMemoryConfigSchema, RedisConfigSchema, PostgresConfigSchema, MemoryAdapterConfigSchema, ContextStrategySchema, ContextBuilderConfigSchema, EmbeddingProviderSchema, OpenAIEmbeddingConfigSchema, OllamaEmbeddingConfigSchema, EmbeddingServiceConfigSchema, } from './schema';
13
+ export { PostgresGraphAdapter, LLMEntityExtractor, GraphInferenceEngine, GraphContextBuilder, EntityTypeSchema, RelationTypeSchema, NodeSourceSchema, GraphNodeSchema, GraphEdgeSchema, ExtractedEntitySchema, ExtractedRelationSchema, ExtractionResultSchema, NodeQuerySchema, EdgeQuerySchema, TraversalDirectionSchema, TraversalOptionsSchema, GraphSemanticSearchOptionsSchema, InferencePatternSchema, InferenceConclusionSchema, InferenceRuleSchema, KnowledgeGraphExtractionConfigSchema, KnowledgeGraphInferenceConfigSchema, KnowledgeGraphContextConfigSchema, KnowledgeGraphConfigSchema, } from './knowledge-graph/index';
13
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GAEpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,cAAc,GAGf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GAEpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,cAAc,GAGf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,oCAAoC,EACpC,mCAAmC,EACnC,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { EntityExtractor, ExtractionResult, ExtractionContext } from '@cogitator-ai/types';
2
+ export interface LLMBackendMinimal {
3
+ chat(options: {
4
+ messages: Array<{
5
+ role: 'system' | 'user' | 'assistant';
6
+ content: string;
7
+ }>;
8
+ responseFormat?: {
9
+ type: 'json_object';
10
+ };
11
+ }): Promise<{
12
+ content: string;
13
+ }>;
14
+ }
15
+ export interface LLMEntityExtractorConfig {
16
+ minConfidence?: number;
17
+ maxEntitiesPerText?: number;
18
+ maxRelationsPerText?: number;
19
+ }
20
+ export declare class LLMEntityExtractor implements EntityExtractor {
21
+ private backend;
22
+ private config;
23
+ constructor(backend: LLMBackendMinimal, config?: LLMEntityExtractorConfig);
24
+ extract(text: string, context?: ExtractionContext): Promise<ExtractionResult>;
25
+ extractBatch(texts: string[], context?: ExtractionContext): Promise<ExtractionResult[]>;
26
+ private buildSystemPrompt;
27
+ private buildUserPrompt;
28
+ private parseResponse;
29
+ }
30
+ //# sourceMappingURL=entity-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-extractor.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/entity-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAKlB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,OAAO,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5E,cAAc,CAAC,EAAE;YAAE,IAAI,EAAE,aAAa,CAAA;SAAE,CAAC;KAC1C,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA6BD,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAqC;gBAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAE,wBAA6B;IASvE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoC7E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAW7F,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,aAAa;CAyCtB"}
@@ -0,0 +1,158 @@
1
+ import { z } from 'zod';
2
+ import { ExtractedEntitySchema, ExtractedRelationSchema } from './schema';
3
+ const ExtractionOutputSchema = z.object({
4
+ entities: z.array(ExtractedEntitySchema),
5
+ relations: z.array(ExtractedRelationSchema),
6
+ });
7
+ const ENTITY_TYPES = [
8
+ 'person',
9
+ 'organization',
10
+ 'location',
11
+ 'concept',
12
+ 'event',
13
+ 'object',
14
+ ];
15
+ const RELATION_TYPES = [
16
+ 'knows',
17
+ 'works_at',
18
+ 'located_in',
19
+ 'part_of',
20
+ 'related_to',
21
+ 'created_by',
22
+ 'belongs_to',
23
+ 'associated_with',
24
+ 'causes',
25
+ 'precedes',
26
+ ];
27
+ export class LLMEntityExtractor {
28
+ backend;
29
+ config;
30
+ constructor(backend, config = {}) {
31
+ this.backend = backend;
32
+ this.config = {
33
+ minConfidence: config.minConfidence ?? 0.7,
34
+ maxEntitiesPerText: config.maxEntitiesPerText ?? 20,
35
+ maxRelationsPerText: config.maxRelationsPerText ?? 30,
36
+ };
37
+ }
38
+ async extract(text, context) {
39
+ const systemPrompt = this.buildSystemPrompt(context);
40
+ const userPrompt = this.buildUserPrompt(text, context);
41
+ const response = await this.backend.chat({
42
+ messages: [
43
+ { role: 'system', content: systemPrompt },
44
+ { role: 'user', content: userPrompt },
45
+ ],
46
+ responseFormat: { type: 'json_object' },
47
+ });
48
+ const parsed = this.parseResponse(response.content);
49
+ const filteredEntities = parsed.entities
50
+ .filter((e) => e.confidence >= this.config.minConfidence)
51
+ .slice(0, this.config.maxEntitiesPerText);
52
+ const entityNames = new Set(filteredEntities.map((e) => e.name.toLowerCase()));
53
+ const filteredRelations = parsed.relations
54
+ .filter((r) => r.confidence >= this.config.minConfidence &&
55
+ entityNames.has(r.sourceEntity.toLowerCase()) &&
56
+ entityNames.has(r.targetEntity.toLowerCase()))
57
+ .slice(0, this.config.maxRelationsPerText);
58
+ return {
59
+ entities: filteredEntities,
60
+ relations: filteredRelations,
61
+ text,
62
+ timestamp: new Date(),
63
+ };
64
+ }
65
+ async extractBatch(texts, context) {
66
+ const results = [];
67
+ for (const text of texts) {
68
+ const result = await this.extract(text, context);
69
+ results.push(result);
70
+ }
71
+ return results;
72
+ }
73
+ buildSystemPrompt(context) {
74
+ const entityTypesStr = (context?.entityTypeHints ?? ENTITY_TYPES).join(', ');
75
+ const relationTypesStr = (context?.relationTypeHints ?? RELATION_TYPES).join(', ');
76
+ return `You are an entity and relationship extraction system. Your task is to extract structured information from text.
77
+
78
+ ## Entity Types
79
+ Extract entities of these types: ${entityTypesStr}
80
+
81
+ ## Relationship Types
82
+ Extract relationships of these types: ${relationTypesStr}
83
+
84
+ ## Output Format
85
+ Return a JSON object with this structure:
86
+ {
87
+ "entities": [
88
+ {
89
+ "name": "entity name",
90
+ "type": "person|organization|location|concept|event|object",
91
+ "aliases": ["alternative names"],
92
+ "description": "brief description",
93
+ "confidence": 0.0-1.0
94
+ }
95
+ ],
96
+ "relations": [
97
+ {
98
+ "sourceEntity": "source entity name",
99
+ "targetEntity": "target entity name",
100
+ "type": "knows|works_at|located_in|part_of|related_to|created_by|belongs_to|associated_with|causes|precedes",
101
+ "label": "optional relationship label",
102
+ "confidence": 0.0-1.0
103
+ }
104
+ ]
105
+ }
106
+
107
+ ## Guidelines
108
+ - Extract only explicitly mentioned or strongly implied entities and relationships
109
+ - Use confidence scores to indicate certainty (1.0 = certain, 0.5 = probable, 0.0 = uncertain)
110
+ - Normalize entity names (capitalize proper nouns, use full names when known)
111
+ - Include aliases for entities that are referred to in multiple ways
112
+ - Avoid duplicate entities (merge references to the same entity)
113
+ - For relationships, ensure both source and target entities are in the entities list`;
114
+ }
115
+ buildUserPrompt(text, context) {
116
+ let prompt = '';
117
+ if (context?.existingEntities && context.existingEntities.length > 0) {
118
+ prompt += `## Known Entities (for disambiguation)\n${context.existingEntities.join(', ')}\n\n`;
119
+ }
120
+ prompt += `## Text to Extract From\n${text}\n\n`;
121
+ prompt += `Extract all entities and relationships from the text above. Return JSON only.`;
122
+ return prompt;
123
+ }
124
+ parseResponse(content) {
125
+ try {
126
+ const cleaned = content.replace(/```json\n?|\n?```/g, '').trim();
127
+ const parsed = JSON.parse(cleaned);
128
+ const result = ExtractionOutputSchema.safeParse(parsed);
129
+ if (result.success) {
130
+ return result.data;
131
+ }
132
+ if (parsed.entities && Array.isArray(parsed.entities)) {
133
+ const entities = [];
134
+ for (const e of parsed.entities) {
135
+ const entityResult = ExtractedEntitySchema.safeParse(e);
136
+ if (entityResult.success) {
137
+ entities.push(entityResult.data);
138
+ }
139
+ }
140
+ const relations = [];
141
+ if (parsed.relations && Array.isArray(parsed.relations)) {
142
+ for (const r of parsed.relations) {
143
+ const relationResult = ExtractedRelationSchema.safeParse(r);
144
+ if (relationResult.success) {
145
+ relations.push(relationResult.data);
146
+ }
147
+ }
148
+ }
149
+ return { entities, relations };
150
+ }
151
+ return { entities: [], relations: [] };
152
+ }
153
+ catch {
154
+ return { entities: [], relations: [] };
155
+ }
156
+ }
157
+ }
158
+ //# sourceMappingURL=entity-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-extractor.js","sourceRoot":"","sources":["../../src/knowledge-graph/entity-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { GraphAdapter, GraphNode, GraphEdge, NodeQuery, EdgeQuery, TraversalOptions, TraversalResult, GraphPath, GraphSemanticSearchOptions, GraphStats, MemoryResult, TraversalDirection } from '@cogitator-ai/types';
2
+ type Pool = {
3
+ query(text: string, values?: unknown[]): Promise<{
4
+ rows: Record<string, unknown>[];
5
+ }>;
6
+ connect(): Promise<{
7
+ release(): void;
8
+ }>;
9
+ end(): Promise<void>;
10
+ };
11
+ export interface PostgresGraphAdapterConfig {
12
+ pool: Pool;
13
+ schema?: string;
14
+ vectorDimensions?: number;
15
+ }
16
+ export declare class PostgresGraphAdapter implements GraphAdapter {
17
+ private pool;
18
+ private schema;
19
+ private vectorDimensions;
20
+ private initialized;
21
+ constructor(config: PostgresGraphAdapterConfig);
22
+ initialize(): Promise<void>;
23
+ private success;
24
+ private failure;
25
+ private generateId;
26
+ addNode(node: Omit<GraphNode, 'id' | 'createdAt' | 'updatedAt' | 'lastAccessedAt' | 'accessCount'>): Promise<MemoryResult<GraphNode>>;
27
+ getNode(nodeId: string): Promise<MemoryResult<GraphNode | null>>;
28
+ getNodeByName(agentId: string, name: string): Promise<MemoryResult<GraphNode | null>>;
29
+ updateNode(nodeId: string, updates: Partial<Pick<GraphNode, 'name' | 'aliases' | 'description' | 'properties' | 'confidence' | 'metadata' | 'embedding'>>): Promise<MemoryResult<GraphNode>>;
30
+ deleteNode(nodeId: string): Promise<MemoryResult<void>>;
31
+ queryNodes(query: NodeQuery): Promise<MemoryResult<GraphNode[]>>;
32
+ searchNodesSemantic(options: GraphSemanticSearchOptions): Promise<MemoryResult<(GraphNode & {
33
+ score: number;
34
+ })[]>>;
35
+ addEdge(edge: Omit<GraphEdge, 'id' | 'createdAt' | 'updatedAt'>): Promise<MemoryResult<GraphEdge>>;
36
+ getEdge(edgeId: string): Promise<MemoryResult<GraphEdge | null>>;
37
+ getEdgesBetween(sourceNodeId: string, targetNodeId: string): Promise<MemoryResult<GraphEdge[]>>;
38
+ updateEdge(edgeId: string, updates: Partial<Pick<GraphEdge, 'weight' | 'label' | 'properties' | 'confidence' | 'validFrom' | 'validUntil' | 'metadata'>>): Promise<MemoryResult<GraphEdge>>;
39
+ deleteEdge(edgeId: string): Promise<MemoryResult<void>>;
40
+ queryEdges(query: EdgeQuery): Promise<MemoryResult<GraphEdge[]>>;
41
+ traverse(options: TraversalOptions): Promise<MemoryResult<TraversalResult>>;
42
+ private traverseRecursive;
43
+ findShortestPath(agentId: string, startNodeId: string, endNodeId: string, maxDepth?: number): Promise<MemoryResult<GraphPath | null>>;
44
+ getNeighbors(nodeId: string, direction?: TraversalDirection): Promise<MemoryResult<{
45
+ node: GraphNode;
46
+ edge: GraphEdge;
47
+ }[]>>;
48
+ mergeNodes(targetNodeId: string, sourceNodeIds: string[]): Promise<MemoryResult<GraphNode>>;
49
+ clearGraph(agentId: string): Promise<MemoryResult<void>>;
50
+ getGraphStats(agentId: string): Promise<MemoryResult<GraphStats>>;
51
+ private rowToNode;
52
+ private rowToEdge;
53
+ private rowToEdgeFromJoin;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=graph-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-adapter.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/graph-adapter.ts"],"names":[],"mappings":"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"}