fawn-memory 0.0.3
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.
- package/README.md +118 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +183 -0
- package/dist/index.js.map +1 -0
- package/dist/knowpro/answerContextSchema.d.ts +20 -0
- package/dist/knowpro/answerContextSchema.d.ts.map +1 -0
- package/dist/knowpro/answerContextSchema.js +4 -0
- package/dist/knowpro/answerContextSchema.js.map +1 -0
- package/dist/knowpro/answerResponseSchema.d.ts +7 -0
- package/dist/knowpro/answerResponseSchema.d.ts.map +1 -0
- package/dist/knowpro/answerResponseSchema.js +4 -0
- package/dist/knowpro/answerResponseSchema.js.map +1 -0
- package/dist/knowpro/answerTranslator.d.ts +5 -0
- package/dist/knowpro/answerTranslator.d.ts.map +1 -0
- package/dist/knowpro/answerTranslator.js +10 -0
- package/dist/knowpro/answerTranslator.js.map +1 -0
- package/dist/knowpro/collections.d.ts +14 -0
- package/dist/knowpro/collections.d.ts.map +1 -0
- package/dist/knowpro/collections.js +52 -0
- package/dist/knowpro/collections.js.map +1 -0
- package/dist/knowpro/conversation.d.ts +63 -0
- package/dist/knowpro/conversation.d.ts.map +1 -0
- package/dist/knowpro/conversation.js +247 -0
- package/dist/knowpro/conversation.js.map +1 -0
- package/dist/knowpro/dateTimeSchema.d.ts +19 -0
- package/dist/knowpro/dateTimeSchema.d.ts.map +1 -0
- package/dist/knowpro/dateTimeSchema.js +4 -0
- package/dist/knowpro/dateTimeSchema.js.map +1 -0
- package/dist/knowpro/entities.d.ts +9 -0
- package/dist/knowpro/entities.d.ts.map +1 -0
- package/dist/knowpro/entities.js +63 -0
- package/dist/knowpro/entities.js.map +1 -0
- package/dist/knowpro/interfaces.d.ts +637 -0
- package/dist/knowpro/interfaces.d.ts.map +1 -0
- package/dist/knowpro/interfaces.js +4 -0
- package/dist/knowpro/interfaces.js.map +1 -0
- package/dist/knowpro/knowledge.d.ts +19 -0
- package/dist/knowpro/knowledge.d.ts.map +1 -0
- package/dist/knowpro/knowledge.js +97 -0
- package/dist/knowpro/knowledge.js.map +1 -0
- package/dist/knowpro/knowledgeSchema.d.ts +39 -0
- package/dist/knowpro/knowledgeSchema.d.ts.map +1 -0
- package/dist/knowpro/knowledgeSchema.js +2 -0
- package/dist/knowpro/knowledgeSchema.js.map +1 -0
- package/dist/knowpro/llmProvider.d.ts +17 -0
- package/dist/knowpro/llmProvider.d.ts.map +1 -0
- package/dist/knowpro/llmProvider.js +105 -0
- package/dist/knowpro/llmProvider.js.map +1 -0
- package/dist/knowpro/relatedTermsSchema.d.ts +24 -0
- package/dist/knowpro/relatedTermsSchema.d.ts.map +1 -0
- package/dist/knowpro/relatedTermsSchema.js +6 -0
- package/dist/knowpro/relatedTermsSchema.js.map +1 -0
- package/dist/knowpro/schema.d.ts +24 -0
- package/dist/knowpro/schema.d.ts.map +1 -0
- package/dist/knowpro/schema.js +55 -0
- package/dist/knowpro/schema.js.map +1 -0
- package/dist/knowpro/search.d.ts +8 -0
- package/dist/knowpro/search.d.ts.map +1 -0
- package/dist/knowpro/search.js +448 -0
- package/dist/knowpro/search.js.map +1 -0
- package/dist/knowpro/searchQuerySchema.d.ts +40 -0
- package/dist/knowpro/searchQuerySchema.d.ts.map +1 -0
- package/dist/knowpro/searchQuerySchema.js +4 -0
- package/dist/knowpro/searchQuerySchema.js.map +1 -0
- package/dist/knowpro/searchQueryTranslator.d.ts +33 -0
- package/dist/knowpro/searchQueryTranslator.d.ts.map +1 -0
- package/dist/knowpro/searchQueryTranslator.js +47 -0
- package/dist/knowpro/searchQueryTranslator.js.map +1 -0
- package/dist/knowpro/semanticRef.d.ts +4 -0
- package/dist/knowpro/semanticRef.d.ts.map +1 -0
- package/dist/knowpro/semanticRef.js +62 -0
- package/dist/knowpro/semanticRef.js.map +1 -0
- package/dist/knowpro/semanticRefIndex.d.ts +48 -0
- package/dist/knowpro/semanticRefIndex.d.ts.map +1 -0
- package/dist/knowpro/semanticRefIndex.js +388 -0
- package/dist/knowpro/semanticRefIndex.js.map +1 -0
- package/dist/knowpro/storageProvider.d.ts +7 -0
- package/dist/knowpro/storageProvider.d.ts.map +1 -0
- package/dist/knowpro/storageProvider.js +61 -0
- package/dist/knowpro/storageProvider.js.map +1 -0
- package/dist/knowpro/timestampIndex.d.ts +43 -0
- package/dist/knowpro/timestampIndex.d.ts.map +1 -0
- package/dist/knowpro/timestampIndex.js +324 -0
- package/dist/knowpro/timestampIndex.js.map +1 -0
- package/dist/rag/chunking.d.ts +6 -0
- package/dist/rag/chunking.d.ts.map +1 -0
- package/dist/rag/chunking.js +83 -0
- package/dist/rag/chunking.js.map +1 -0
- package/dist/rag/embeddingProvider.d.ts +34 -0
- package/dist/rag/embeddingProvider.d.ts.map +1 -0
- package/dist/rag/embeddingProvider.js +95 -0
- package/dist/rag/embeddingProvider.js.map +1 -0
- package/dist/rag/index.d.ts +8 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +7 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/rag/knowproAdapter.d.ts +44 -0
- package/dist/rag/knowproAdapter.d.ts.map +1 -0
- package/dist/rag/knowproAdapter.js +66 -0
- package/dist/rag/knowproAdapter.js.map +1 -0
- package/dist/rag/ragIndex.d.ts +101 -0
- package/dist/rag/ragIndex.d.ts.map +1 -0
- package/dist/rag/ragIndex.js +305 -0
- package/dist/rag/ragIndex.js.map +1 -0
- package/dist/rag/similarity.d.ts +15 -0
- package/dist/rag/similarity.d.ts.map +1 -0
- package/dist/rag/similarity.js +47 -0
- package/dist/rag/similarity.js.map +1 -0
- package/dist/rag/types.d.ts +61 -0
- package/dist/rag/types.d.ts.map +1 -0
- package/dist/rag/types.js +2 -0
- package/dist/rag/types.js.map +1 -0
- package/dist/rag/vectorIndex.d.ts +102 -0
- package/dist/rag/vectorIndex.d.ts.map +1 -0
- package/dist/rag/vectorIndex.js +236 -0
- package/dist/rag/vectorIndex.js.map +1 -0
- package/dist/utils/async.d.ts +25 -0
- package/dist/utils/async.d.ts.map +1 -0
- package/dist/utils/async.js +55 -0
- package/dist/utils/async.js.map +1 -0
- package/dist/utils/string.d.ts +3 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +15 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { createInMemorySemanticRefIndex } from "./semanticRefIndex.js";
|
|
2
|
+
import { createLLMProviderFromEnv } from './llmProvider.js';
|
|
3
|
+
import { createSearchQueryTranslator } from "./searchQueryTranslator.js";
|
|
4
|
+
import { createInMemoryStorageProvider } from "./storageProvider.js";
|
|
5
|
+
import { createAnswerTranslator } from "./answerTranslator.js";
|
|
6
|
+
import { compileContext, generateAnswer } from "./search.js";
|
|
7
|
+
import { createKnowledgeExtractor } from "./knowledge.js";
|
|
8
|
+
import { populateSemanticRef } from "./semanticRef.js";
|
|
9
|
+
import { readFileSync } from "node:fs";
|
|
10
|
+
import { createTimestampIndexExtended } from "./timestampIndex.js";
|
|
11
|
+
;
|
|
12
|
+
export function createMessage(content, tags, timestamp, deletionInfo, metadata) {
|
|
13
|
+
// create semantic ref here? doesn't make sense since need it to be seperate
|
|
14
|
+
// going back to thinking knowledge creation should happen outside of message and then
|
|
15
|
+
// be passed in but then why the getKnowledge()
|
|
16
|
+
let knowledge;
|
|
17
|
+
function getKnowledge() {
|
|
18
|
+
return knowledge;
|
|
19
|
+
}
|
|
20
|
+
function setKnowledge(knowledgeResponse) {
|
|
21
|
+
knowledge = knowledgeResponse;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
textChunks: [content],
|
|
25
|
+
timestamp,
|
|
26
|
+
tags,
|
|
27
|
+
deletionInfo,
|
|
28
|
+
metadata,
|
|
29
|
+
getKnowledge,
|
|
30
|
+
setKnowledge
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function createConversation(messages, name, storageProvider) {
|
|
34
|
+
const nameTag = name;
|
|
35
|
+
const tags = [];
|
|
36
|
+
const llmProvider = createLLMProviderFromEnv();
|
|
37
|
+
const languageModel = llmProvider.getLanguageModel();
|
|
38
|
+
const queryTranslator = createSearchQueryTranslator(languageModel);
|
|
39
|
+
const answerTranslator = createAnswerTranslator(languageModel);
|
|
40
|
+
const knowledgeExtractor = createKnowledgeExtractor(languageModel);
|
|
41
|
+
const semanticRefs = storageProvider.createSemanticRefCollection();
|
|
42
|
+
async function query(question) {
|
|
43
|
+
const translatedQuery = await queryTranslator.translate(question);
|
|
44
|
+
if (!translatedQuery.success) {
|
|
45
|
+
console.log(translatedQuery);
|
|
46
|
+
return "Error: Failed to translate query.";
|
|
47
|
+
}
|
|
48
|
+
const searchQuery = translatedQuery.data;
|
|
49
|
+
console.log(searchQuery);
|
|
50
|
+
const compiledContex = compileContext(searchQuery, semanticRefIndex, semanticRefs, messages, secondaryIndexes, question);
|
|
51
|
+
const answerResponse = await generateAnswer(question, compiledContex, answerTranslator);
|
|
52
|
+
if (!answerResponse.success) {
|
|
53
|
+
console.log(answerResponse);
|
|
54
|
+
return "ERROR: Failed to generate an answer.";
|
|
55
|
+
}
|
|
56
|
+
const rawResponse = answerResponse.data;
|
|
57
|
+
if (rawResponse.whyNoAnswer) {
|
|
58
|
+
console.log(answerResponse);
|
|
59
|
+
return rawResponse.whyNoAnswer;
|
|
60
|
+
}
|
|
61
|
+
if (!rawResponse.answer) {
|
|
62
|
+
console.log(rawResponse);
|
|
63
|
+
return "ERROR: Failed to generate an answer.";
|
|
64
|
+
}
|
|
65
|
+
return rawResponse.answer;
|
|
66
|
+
}
|
|
67
|
+
async function queryTerms(terms) {
|
|
68
|
+
const searchQuery = {
|
|
69
|
+
searchExpressions: [
|
|
70
|
+
{
|
|
71
|
+
rewrittenQuery: terms.join(" "),
|
|
72
|
+
filters: [
|
|
73
|
+
{
|
|
74
|
+
searchTerms: terms
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
};
|
|
80
|
+
const compiledContex = compileContext(searchQuery, semanticRefIndex, semanticRefs, messages, secondaryIndexes, terms.join(' '));
|
|
81
|
+
const answerResponse = await generateAnswer(terms.join(" "), compiledContex, answerTranslator);
|
|
82
|
+
if (!answerResponse.success) {
|
|
83
|
+
console.log(answerResponse);
|
|
84
|
+
return "ERROR: Failed to generate an answer.";
|
|
85
|
+
}
|
|
86
|
+
const rawResponse = answerResponse.data;
|
|
87
|
+
if (rawResponse.whyNoAnswer) {
|
|
88
|
+
console.log(answerResponse);
|
|
89
|
+
return rawResponse.whyNoAnswer;
|
|
90
|
+
}
|
|
91
|
+
if (!rawResponse.answer) {
|
|
92
|
+
console.log(rawResponse);
|
|
93
|
+
return "ERROR: Failed to generate an answer.";
|
|
94
|
+
}
|
|
95
|
+
return rawResponse.answer;
|
|
96
|
+
}
|
|
97
|
+
console.log("Building Index...");
|
|
98
|
+
const semanticRefIndex = createInMemorySemanticRefIndex();
|
|
99
|
+
semanticRefIndex.buildIndex(semanticRefs);
|
|
100
|
+
const terms = semanticRefIndex.getTerms();
|
|
101
|
+
console.log("Index Complete, Terms: ", terms.length);
|
|
102
|
+
// Create timestamp index (implements ITimestampToTextRangeIndex)
|
|
103
|
+
const timestampIndex = createTimestampIndexExtended();
|
|
104
|
+
function buildTimestampIndex() {
|
|
105
|
+
// Populate timestamp index from messages
|
|
106
|
+
for (let i = 0; i < messages.length; i++) {
|
|
107
|
+
const message = messages.get(i);
|
|
108
|
+
if (message?.timestamp) {
|
|
109
|
+
timestampIndex.addTimestamp(i, message.timestamp);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
console.log(`Timestamp index: ${timestampIndex.size()} entries`);
|
|
113
|
+
}
|
|
114
|
+
// Build timestamp index initially
|
|
115
|
+
buildTimestampIndex();
|
|
116
|
+
// Secondary indexes
|
|
117
|
+
const secondaryIndexes = {
|
|
118
|
+
timestampIndex
|
|
119
|
+
};
|
|
120
|
+
function getAllTopics() {
|
|
121
|
+
return semanticRefs.getAll().filter((ref) => ref.knowledgeType === "topic");
|
|
122
|
+
}
|
|
123
|
+
function loadFromFile(filePath, rebuild = true) {
|
|
124
|
+
storageProvider.loadFromFile(filePath, semanticRefs, messages);
|
|
125
|
+
if (rebuild) {
|
|
126
|
+
console.log("Rebuilding index...");
|
|
127
|
+
semanticRefIndex.buildIndex(semanticRefs);
|
|
128
|
+
buildTimestampIndex();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function extractAndSaveRefsFromMessage(message) {
|
|
132
|
+
const knowledgeResponse = await knowledgeExtractor.extract(message.textChunks[0]);
|
|
133
|
+
if (!knowledgeResponse) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
message.setKnowledge(knowledgeResponse);
|
|
137
|
+
// Update the semanticRefs collection with the new knowledgeResponse
|
|
138
|
+
populateSemanticRef(semanticRefs, knowledgeResponse, semanticRefs.length, messages.length - 1 // we have already added the new message
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
async function addMessageAsync(message, rebuild = true) {
|
|
142
|
+
messages.append(message);
|
|
143
|
+
if (rebuild) {
|
|
144
|
+
await extractAndSaveRefsFromMessage(message);
|
|
145
|
+
semanticRefIndex.buildIndex(semanticRefs);
|
|
146
|
+
buildTimestampIndex();
|
|
147
|
+
}
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
function lemmatize() {
|
|
151
|
+
return semanticRefIndex.lemmatizeIndex();
|
|
152
|
+
}
|
|
153
|
+
async function expandRelatedTerms(options) {
|
|
154
|
+
return semanticRefIndex.expandWithRelatedTerms(languageModel, options);
|
|
155
|
+
}
|
|
156
|
+
async function expandWithWordNet(options) {
|
|
157
|
+
return semanticRefIndex.expandWithWordNet(options);
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
nameTag,
|
|
161
|
+
tags,
|
|
162
|
+
messages,
|
|
163
|
+
semanticRefs,
|
|
164
|
+
semanticRefIndex,
|
|
165
|
+
secondaryIndexes,
|
|
166
|
+
query,
|
|
167
|
+
queryTerms,
|
|
168
|
+
getAllTopics,
|
|
169
|
+
addMessageAsync,
|
|
170
|
+
loadFromFile,
|
|
171
|
+
lemmatize,
|
|
172
|
+
expandRelatedTerms,
|
|
173
|
+
expandWithWordNet
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Returns the time range for a conversation: the timestamps of the first and last messages
|
|
178
|
+
* If messages have no timestamps (which are optional), returns undefined
|
|
179
|
+
* @param conversation
|
|
180
|
+
* @returns {DateRange}
|
|
181
|
+
*/
|
|
182
|
+
export function getTimeRangeForConversation(conversation) {
|
|
183
|
+
const messages = conversation.messages;
|
|
184
|
+
if (messages.length > 0) {
|
|
185
|
+
const start = messages.get(0).timestamp;
|
|
186
|
+
const end = messages.get(messages.length - 1).timestamp;
|
|
187
|
+
if (start !== undefined) {
|
|
188
|
+
return {
|
|
189
|
+
start: new Date(start),
|
|
190
|
+
end: end ? new Date(end) : undefined,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
export function getTimeRangePromptSectionForConversation(conversation) {
|
|
197
|
+
const timeRange = getTimeRangeForConversation(conversation);
|
|
198
|
+
if (timeRange) {
|
|
199
|
+
return [
|
|
200
|
+
{
|
|
201
|
+
role: "system",
|
|
202
|
+
content: `ONLY IF user request explicitly asks for time ranges, THEN use the CONVERSATION TIME RANGE: "${timeRange.start} to ${timeRange.end}"`,
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
}
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Load a conversation from an exported index JSON file.
|
|
210
|
+
* This allows querying a pre-built index without re-extracting knowledge.
|
|
211
|
+
*/
|
|
212
|
+
export function loadConversationFromExport(exportPath, name) {
|
|
213
|
+
const content = readFileSync(exportPath, 'utf-8');
|
|
214
|
+
const exported = JSON.parse(content);
|
|
215
|
+
return loadConversationFromExportData(exported, name || exportPath);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Load a conversation from exported index data.
|
|
219
|
+
*/
|
|
220
|
+
export function loadConversationFromExportData(exported, name = "imported") {
|
|
221
|
+
const storageProvider = createInMemoryStorageProvider();
|
|
222
|
+
const messages = storageProvider.createMessageCollection();
|
|
223
|
+
const semanticRefs = storageProvider.createSemanticRefCollection();
|
|
224
|
+
// Load messages
|
|
225
|
+
for (const msg of exported.messages) {
|
|
226
|
+
const message = createMessage(msg.content, [], msg.timestamp);
|
|
227
|
+
messages.append(message);
|
|
228
|
+
}
|
|
229
|
+
// Load semantic refs
|
|
230
|
+
for (const ref of exported.semanticRefs) {
|
|
231
|
+
semanticRefs.append(ref);
|
|
232
|
+
}
|
|
233
|
+
// Create conversation
|
|
234
|
+
const conversation = createConversation(messages, name, storageProvider);
|
|
235
|
+
// Load index from exported data (preserves related terms and weights)
|
|
236
|
+
if (conversation.semanticRefIndex) {
|
|
237
|
+
const index = conversation.semanticRefIndex;
|
|
238
|
+
index.loadFromExport(exported.indexData.items);
|
|
239
|
+
}
|
|
240
|
+
// Copy refs to conversation's semanticRefs collection
|
|
241
|
+
for (const ref of semanticRefs.getAll()) {
|
|
242
|
+
conversation.semanticRefs?.append(ref);
|
|
243
|
+
}
|
|
244
|
+
console.log(`Loaded: ${exported.messages.length} messages, ${exported.semanticRefs.length} refs, ${exported.indexData.items.length} terms`);
|
|
245
|
+
return conversation;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=conversation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/knowpro/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type DateVal = {
|
|
2
|
+
day: number;
|
|
3
|
+
month: number;
|
|
4
|
+
year: number;
|
|
5
|
+
};
|
|
6
|
+
export type TimeVal = {
|
|
7
|
+
hour: number;
|
|
8
|
+
minute: number;
|
|
9
|
+
seconds: number;
|
|
10
|
+
};
|
|
11
|
+
export type DateTime = {
|
|
12
|
+
date: DateVal;
|
|
13
|
+
time?: TimeVal | undefined;
|
|
14
|
+
};
|
|
15
|
+
export type DateTimeRange = {
|
|
16
|
+
startDate: DateTime;
|
|
17
|
+
stopDate?: DateTime | undefined;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=dateTimeSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateTimeSchema.d.ts","sourceRoot":"","sources":["../../src/knowpro/dateTimeSchema.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IAElB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateTimeSchema.js","sourceRoot":"","sources":["../../src/knowpro/dateTimeSchema.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SemanticRef, Topic } from "./interfaces.js";
|
|
2
|
+
import type { Action, ConcreteEntity, Facet } from "./knowledgeSchema.js";
|
|
3
|
+
export declare function facetMatch(x: Facet, y: Facet): boolean;
|
|
4
|
+
export declare function mergeEntityFacet(entity: ConcreteEntity, facet: Facet): void;
|
|
5
|
+
export declare function printEntity(entity: ConcreteEntity): void;
|
|
6
|
+
export declare function printAction(action: Action): void;
|
|
7
|
+
export declare function printTopic(topic: Topic): void;
|
|
8
|
+
export declare function printRef(ref: SemanticRef): void;
|
|
9
|
+
//# sourceMappingURL=entities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/knowpro/entities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE1E,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAgBtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,QASpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,QAQjD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,QAUzC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,QAEtC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,QAkBxC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { stringEquals } from "../utils/string.js";
|
|
2
|
+
export function facetMatch(x, y) {
|
|
3
|
+
if (!stringEquals(x.name, y.name, false)) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
if (typeof x.value === "object") {
|
|
7
|
+
if (typeof y.value === "object") {
|
|
8
|
+
return (x.value.amount === y.value.amount &&
|
|
9
|
+
x.value.units === y.value.units);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return x.value === y.value;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function mergeEntityFacet(entity, facet) {
|
|
20
|
+
entity.facets ??= [];
|
|
21
|
+
// Look for an equal facet
|
|
22
|
+
for (const f of entity.facets) {
|
|
23
|
+
if (facetMatch(f, facet)) {
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
entity.facets.push(facet);
|
|
28
|
+
}
|
|
29
|
+
export function printEntity(entity) {
|
|
30
|
+
console.log("ENTITY: ", entity.name, entity.type);
|
|
31
|
+
if (entity.facets) {
|
|
32
|
+
console.log("Facets: ");
|
|
33
|
+
entity.facets.forEach((facet) => {
|
|
34
|
+
console.log(" - ", facet.name, facet.value);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function printAction(action) {
|
|
39
|
+
console.log("ACTION: ", action.objectEntityName, action.verbs, action.subjectEntityName, action.indirectObjectEntityName, action.subjectEntityFacet, action.params);
|
|
40
|
+
}
|
|
41
|
+
export function printTopic(topic) {
|
|
42
|
+
console.log("TOPIC: ", topic.text);
|
|
43
|
+
}
|
|
44
|
+
export function printRef(ref) {
|
|
45
|
+
switch (ref.knowledgeType) {
|
|
46
|
+
case "action": {
|
|
47
|
+
printAction(ref.knowledge);
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case "entity": {
|
|
51
|
+
printEntity(ref.knowledge);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case "topic": {
|
|
55
|
+
printTopic(ref.knowledge);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
default: {
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/knowpro/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,UAAU,UAAU,CAAC,CAAQ,EAAE,CAAQ;IACzC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CACH,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM;gBACjC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAClC,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;IAC/B,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB,EAAE,KAAY;IACjE,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;IACrB,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM;QACV,CAAC;IACL,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAsB;IAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,IAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACtC,OAAO,CAAC,GAAG,CACP,UAAU,EACV,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,wBAAwB,EAC/B,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,MAAM,CAChB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAY;IACnC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAgB;IACrC,QAAO,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,WAAW,CAAC,GAAG,CAAC,SAAmB,CAAC,CAAC;YACrC,MAAM;QACV,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,WAAW,CAAC,GAAG,CAAC,SAA2B,CAAC,CAAC;YAC7C,MAAM;QACV,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,UAAU,CAAC,GAAG,CAAC,SAAkB,CAAC,CAAC;YACnC,MAAM;QACV,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,MAAM;QACV,CAAC;IACL,CAAC;AACL,CAAC"}
|