@memorilabs/memori 0.0.5 → 0.0.6
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 +7 -1
- package/dist/engines/recall.d.ts.map +1 -1
- package/dist/engines/recall.js +7 -4
- package/dist/engines/recall.js.map +1 -1
- package/dist/types/api.d.ts +31 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/utils/utils.d.ts +2 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +61 -3
- package/dist/utils/utils.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -166,7 +166,13 @@ export MEMORI_API_KEY=[api_key]
|
|
|
166
166
|
|
|
167
167
|
## Managing Your Quota
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
Any any time, you can check your quota using the Memori CLI:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
memori quota
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Or by checking your account by logging in at [https://memorilabs.ai/](https://memorilabs.ai/). If you have reached your IP address quota, sign up and get an API key for increased limits.
|
|
170
176
|
|
|
171
177
|
If your API key exceeds its quota limits we will email you and let you know.
|
|
172
178
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/engines/recall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/engines/recall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,OAAO,EAAuB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElE,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc;IAG7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAmB5C,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CA0EnF"}
|
package/dist/engines/recall.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { extractFacts, extractHistory, stringifyContent } from '../utils/utils.js';
|
|
2
|
-
import { extractLastUserMessage } from '../utils/utils.js';
|
|
1
|
+
import { extractFacts, extractHistory, extractLastUserMessage, formatSummariesFromFacts, stringifyContent, } from '../utils/utils.js';
|
|
3
2
|
export class RecallEngine {
|
|
4
3
|
api;
|
|
5
4
|
config;
|
|
@@ -65,13 +64,17 @@ export class RecallEngine {
|
|
|
65
64
|
const dateSuffix = f.dateCreated ? `. Stated at ${f.dateCreated}` : '';
|
|
66
65
|
return `- ${f.content}${dateSuffix}`;
|
|
67
66
|
});
|
|
67
|
+
const relevantSummaries = formatSummariesFromFacts(facts.filter((f) => f.score >= this.config.recallRelevanceThreshold));
|
|
68
68
|
let messages = [...req.messages];
|
|
69
69
|
if (historyMessages.length > 0) {
|
|
70
70
|
messages = [...historyMessages, ...messages];
|
|
71
71
|
}
|
|
72
72
|
if (relevantFacts.length > 0) {
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
let contextBody = `Relevant context about the user:\n${relevantFacts.join('\n')}`;
|
|
74
|
+
if (relevantSummaries.length > 0) {
|
|
75
|
+
contextBody += `\n\n## Summaries\n\n${relevantSummaries.join('\n\n')}`;
|
|
76
|
+
}
|
|
77
|
+
const recallContext = `\n\n<memori_context>\nOnly use the relevant context if it is relevant to the user's query. ${contextBody}\n</memori_context>`;
|
|
75
78
|
const systemIdx = messages.findIndex((m) => m.role === 'system');
|
|
76
79
|
if (systemIdx >= 0) {
|
|
77
80
|
messages[systemIdx] = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/engines/recall.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/engines/recall.ts"],"names":[],"mappings":"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"}
|
package/dist/types/api.d.ts
CHANGED
|
@@ -4,15 +4,27 @@
|
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
6
6
|
export interface RecallObject {
|
|
7
|
+
id: number;
|
|
7
8
|
content: string;
|
|
8
9
|
rank_score?: number;
|
|
9
10
|
similarity?: number;
|
|
10
11
|
date_created?: string;
|
|
12
|
+
summaries?: RecallSummary[];
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* @internal
|
|
14
16
|
*/
|
|
15
17
|
export type RecallItem = string | RecallObject;
|
|
18
|
+
/**
|
|
19
|
+
* Represents a summary associated with a recalled fact.
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export interface RecallSummary {
|
|
23
|
+
content: string;
|
|
24
|
+
date_created: string;
|
|
25
|
+
entity_fact_id: number;
|
|
26
|
+
fact_id: number;
|
|
27
|
+
}
|
|
16
28
|
/**
|
|
17
29
|
* Raw response shape from the Memori Cloud API.
|
|
18
30
|
* @internal
|
|
@@ -22,6 +34,7 @@ export interface CloudRecallResponse {
|
|
|
22
34
|
results?: RecallItem[];
|
|
23
35
|
memories?: RecallItem[];
|
|
24
36
|
data?: RecallItem[];
|
|
37
|
+
summaries?: RecallSummary[];
|
|
25
38
|
messages?: unknown[];
|
|
26
39
|
conversation_messages?: unknown[];
|
|
27
40
|
history?: unknown[];
|
|
@@ -47,5 +60,23 @@ export interface ParsedFact {
|
|
|
47
60
|
* Undefined if the backend did not return temporal data.
|
|
48
61
|
*/
|
|
49
62
|
dateCreated?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Summaries associated with this fact, if provided by the backend.
|
|
65
|
+
*/
|
|
66
|
+
summaries?: ParsedSummary[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A normalized summary returned alongside a fact.
|
|
70
|
+
*/
|
|
71
|
+
export interface ParsedSummary {
|
|
72
|
+
/**
|
|
73
|
+
* The actual summary text.
|
|
74
|
+
*/
|
|
75
|
+
content: string;
|
|
76
|
+
/**
|
|
77
|
+
* The ISO timestamp (YYYY-MM-DD HH:mm) when this summary was created.
|
|
78
|
+
* Undefined if the backend did not return temporal data.
|
|
79
|
+
*/
|
|
80
|
+
dateCreated: string;
|
|
50
81
|
}
|
|
51
82
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAElC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAG5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { Message } from '@memorilabs/axon';
|
|
|
2
2
|
import { CloudRecallResponse, ParsedFact } from '../types/api.js';
|
|
3
3
|
/** @internal */
|
|
4
4
|
export declare function formatDate(dateStr?: string): string | undefined;
|
|
5
|
+
/** @internal */
|
|
6
|
+
export declare function formatSummariesFromFacts(facts: ParsedFact[]): string[];
|
|
5
7
|
/**
|
|
6
8
|
* Safely converts message content (string, array, or object) into a simple string.
|
|
7
9
|
* Handles multi-modal arrays (e.g. OpenAI/Anthropic content blocks) by extracting text.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAEzB,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS/D;AAqBD,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAItE;AAuCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAyBzD;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,QAAQ,EAAE,mBAAmB,GAAG,UAAU,EAAE,CA+BxE;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,EAAE,CASvE;AAED,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAE9E"}
|
package/dist/utils/utils.js
CHANGED
|
@@ -12,6 +12,58 @@ export function formatDate(dateStr) {
|
|
|
12
12
|
return undefined;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
+
function collectSummariesFromFacts(facts) {
|
|
16
|
+
const summaries = [];
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
for (const fact of facts) {
|
|
19
|
+
if (!fact.summaries)
|
|
20
|
+
continue;
|
|
21
|
+
for (const summary of fact.summaries) {
|
|
22
|
+
const key = `${summary.content}::${summary.dateCreated}`;
|
|
23
|
+
if (seen.has(key))
|
|
24
|
+
continue;
|
|
25
|
+
seen.add(key);
|
|
26
|
+
summaries.push(summary);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return summaries;
|
|
30
|
+
}
|
|
31
|
+
/** @internal */
|
|
32
|
+
export function formatSummariesFromFacts(facts) {
|
|
33
|
+
return collectSummariesFromFacts(facts).map((summary) => `- [${summary.dateCreated}]\n ${summary.content}`);
|
|
34
|
+
}
|
|
35
|
+
function attachRawSummariesToFacts(facts, summaries) {
|
|
36
|
+
if (summaries.length === 0)
|
|
37
|
+
return facts;
|
|
38
|
+
const summariesByFactId = new Map();
|
|
39
|
+
for (const summary of summaries) {
|
|
40
|
+
const summaryFactId = summary.entity_fact_id;
|
|
41
|
+
const existing = summariesByFactId.get(summaryFactId) ?? [];
|
|
42
|
+
existing.push(summary);
|
|
43
|
+
summariesByFactId.set(summaryFactId, existing);
|
|
44
|
+
}
|
|
45
|
+
return facts.map((fact) => {
|
|
46
|
+
if (typeof fact === 'string')
|
|
47
|
+
return fact;
|
|
48
|
+
const matchedSummaries = summariesByFactId.get(fact.id) ?? [];
|
|
49
|
+
const existingSummaries = fact.summaries ?? [];
|
|
50
|
+
if (existingSummaries.length === 0 && matchedSummaries.length === 0)
|
|
51
|
+
return fact;
|
|
52
|
+
return {
|
|
53
|
+
...fact,
|
|
54
|
+
summaries: [...existingSummaries, ...matchedSummaries],
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function normalizeSummary(summary) {
|
|
59
|
+
const dateCreated = formatDate(summary.date_created);
|
|
60
|
+
if (!dateCreated)
|
|
61
|
+
return undefined;
|
|
62
|
+
return {
|
|
63
|
+
content: summary.content,
|
|
64
|
+
dateCreated,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
15
67
|
/**
|
|
16
68
|
* Safely converts message content (string, array, or object) into a simple string.
|
|
17
69
|
* Handles multi-modal arrays (e.g. OpenAI/Anthropic content blocks) by extracting text.
|
|
@@ -45,11 +97,13 @@ export function stringifyContent(content) {
|
|
|
45
97
|
}
|
|
46
98
|
/** @internal */
|
|
47
99
|
export function extractFacts(response) {
|
|
48
|
-
const
|
|
49
|
-
|
|
100
|
+
const rawFacts = response.facts || response.results || response.memories || response.data || [];
|
|
101
|
+
const rawSummaries = response.summaries ?? [];
|
|
102
|
+
if (!Array.isArray(rawFacts))
|
|
50
103
|
return [];
|
|
104
|
+
const factsWithSummaries = attachRawSummariesToFacts(rawFacts, rawSummaries);
|
|
51
105
|
const facts = [];
|
|
52
|
-
for (const item of
|
|
106
|
+
for (const item of factsWithSummaries) {
|
|
53
107
|
if (typeof item === 'string') {
|
|
54
108
|
facts.push({ content: item, score: 1.0 });
|
|
55
109
|
}
|
|
@@ -59,10 +113,14 @@ export function extractFacts(response) {
|
|
|
59
113
|
score = item.rank_score;
|
|
60
114
|
else if (typeof item.similarity === 'number')
|
|
61
115
|
score = item.similarity;
|
|
116
|
+
const summaries = item.summaries
|
|
117
|
+
?.map(normalizeSummary)
|
|
118
|
+
.filter((summary) => summary !== undefined);
|
|
62
119
|
facts.push({
|
|
63
120
|
content: item.content,
|
|
64
121
|
score,
|
|
65
122
|
dateCreated: formatDate(item.date_created),
|
|
123
|
+
summaries: summaries && summaries.length > 0 ? summaries : undefined,
|
|
66
124
|
});
|
|
67
125
|
}
|
|
68
126
|
}
|
package/dist/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.0.
|
|
1
|
+
export declare const SDK_VERSION = "0.0.6";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SDK_VERSION = '0.0.
|
|
1
|
+
export const SDK_VERSION = '0.0.6';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memorilabs/memori",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "The official TypeScript SDK for Memori",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"check": "npm run format:check && npm run lint && npm run typecheck",
|
|
38
38
|
"test": "vitest run",
|
|
39
39
|
"test:coverage": "vitest run --coverage",
|
|
40
|
+
"test:integration": "TEST_ENV=integration vitest run",
|
|
40
41
|
"example": "npm run build:dev && node dist/examples/cloud/simple.js",
|
|
41
42
|
"prepublishOnly": "npm run build"
|
|
42
43
|
},
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
"homepage": "https://github.com/MemoriLabs/Memori",
|
|
65
66
|
"peerDependencies": {
|
|
66
67
|
"@anthropic-ai/sdk": "*",
|
|
68
|
+
"@google/genai": "*",
|
|
67
69
|
"openai": "*"
|
|
68
70
|
},
|
|
69
71
|
"peerDependenciesMeta": {
|
|
@@ -72,11 +74,15 @@
|
|
|
72
74
|
},
|
|
73
75
|
"@anthropic-ai/sdk": {
|
|
74
76
|
"optional": true
|
|
77
|
+
},
|
|
78
|
+
"@google/genai": {
|
|
79
|
+
"optional": true
|
|
75
80
|
}
|
|
76
81
|
},
|
|
77
82
|
"devDependencies": {
|
|
78
83
|
"@anthropic-ai/sdk": "*",
|
|
79
84
|
"@eslint/js": "^9.0.0",
|
|
85
|
+
"@google/genai": "*",
|
|
80
86
|
"@types/node": "^20.0.0",
|
|
81
87
|
"@vitest/coverage-v8": "^2.1.9",
|
|
82
88
|
"@vitest/ui": "^2.1.9",
|
|
@@ -95,6 +101,6 @@
|
|
|
95
101
|
"node": ">=18.0.0"
|
|
96
102
|
},
|
|
97
103
|
"dependencies": {
|
|
98
|
-
"@memorilabs/axon": "^0.1.
|
|
104
|
+
"@memorilabs/axon": "^0.1.3"
|
|
99
105
|
}
|
|
100
106
|
}
|