@mysten-incubation/memwal 0.1.1-dev.3 → 0.1.1-dev.4
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 +17 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mock.d.ts +60 -0
- package/dist/mock.d.ts.map +1 -0
- package/dist/mock.js +294 -0
- package/dist/mock.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,11 +59,27 @@ await memwal.restore("demo");
|
|
|
59
59
|
|
|
60
60
|
If you are self-hosting the relayer and do not have an account ID yet, see [Self-Hosting](../../docs/relayer/self-hosting.md) for the account creation and delegate key setup flow.
|
|
61
61
|
|
|
62
|
+
## Offline tests and CI
|
|
63
|
+
|
|
64
|
+
`MemWalMock` implements the core async memory API entirely in memory. It requires no key, account, relayer, chain, or paid storage and uses deterministic token-overlap ranking.
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
import { MemWalMock } from "@mysten-incubation/memwal";
|
|
68
|
+
|
|
69
|
+
const memwal = MemWalMock.create({ namespace: "test-user" });
|
|
70
|
+
await memwal.rememberAndWait("The user prefers dark mode");
|
|
71
|
+
|
|
72
|
+
const result = await memwal.recall({ query: "display preference" });
|
|
73
|
+
expect(result.results[0].text).toContain("dark mode");
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The mock supports remember/job polling, bulk remember, recall, analyze, embed, health, restore, `forget(blobId)`, and `clear(namespace?)`. For deterministic behavior, `analyze` stores its full input as one fact instead of invoking an LLM extractor. Its simple relevance score is for application tests, not production search-quality evaluation.
|
|
77
|
+
|
|
62
78
|
## Exports
|
|
63
79
|
|
|
64
80
|
| Entry | Description |
|
|
65
81
|
|---|---|
|
|
66
|
-
| `@mysten-incubation/memwal` | Default client (`MemWal`). The
|
|
82
|
+
| `@mysten-incubation/memwal` | Default client (`MemWal`) and offline test client (`MemWalMock`). The production client delegates embedding, encryption, storage, retrieval, and restore to the relayer. |
|
|
67
83
|
| `@mysten-incubation/memwal/manual` | Manual client flow (`MemWalManual`). You handle embedding calls and local SEAL operations. The relayer still handles upload relay, registration, search, and restore. |
|
|
68
84
|
| `@mysten-incubation/memwal/ai` | Vercel AI SDK integration - wraps `MemWal` as middleware for use with `streamText`, `generateText`, etc. |
|
|
69
85
|
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* For manual (client-side SEAL + Walrus), import from "@mysten-incubation/memwal/manual".
|
|
12
12
|
*/
|
|
13
13
|
export { MemWal } from "./memwal.js";
|
|
14
|
+
export { MemWalMock } from "./mock.js";
|
|
15
|
+
export type { MemWalMockConfig, MemWalMockSeed } from "./mock.js";
|
|
14
16
|
export { MEMWAL_TYPESCRIPT_COMPATIBILITY_VERSION, MemWalCompatibilityError, SUPPORTED_RELAYER_API_MAJOR, } from "./compatibility.js";
|
|
15
17
|
export { delegateKeyToSuiAddress, delegateKeyToPublicKey } from "./utils.js";
|
|
16
18
|
export { createSponsorAuthorization, sponsorAuthorizationMessage, } from "./sponsor-auth.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EACH,uCAAuC,EACvC,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,oBAAoB,EACpB,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACR,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
*/
|
|
13
13
|
// Core client (server-mode: server handles SEAL + Walrus + embedding)
|
|
14
14
|
export { MemWal } from "./memwal.js";
|
|
15
|
+
// Deterministic, dependency-free in-memory client for tests and CI.
|
|
16
|
+
export { MemWalMock } from "./mock.js";
|
|
15
17
|
export { MEMWAL_TYPESCRIPT_COMPATIBILITY_VERSION, MemWalCompatibilityError, SUPPORTED_RELAYER_API_MAJOR, } from "./compatibility.js";
|
|
16
18
|
// Delegate key utilities (no @mysten/sui dependency)
|
|
17
19
|
export { delegateKeyToSuiAddress, delegateKeyToPublicKey } from "./utils.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACH,uCAAuC,EACvC,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAE5B,qDAAqD;AACrD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,oEAAoE;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EACH,uCAAuC,EACvC,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAE5B,qDAAqD;AACrD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC"}
|
package/dist/mock.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { AnalyzeOptions, AnalyzeResult, AnalyzeWaitResult, EmbedResult, HealthResult, RecallOptions, RecallParams, RecallResult, RelayerVersionMetadata, RememberAcceptedResult, RememberBulkAcceptedResult, RememberBulkItem, RememberBulkOptions, RememberBulkResult, RememberBulkStatusResult, RememberJobStatus, RememberResult, RestoreResult } from "./types.js";
|
|
2
|
+
export interface MemWalMockSeed {
|
|
3
|
+
text: string;
|
|
4
|
+
namespace?: string;
|
|
5
|
+
blobId?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MemWalMockConfig {
|
|
8
|
+
/** Default namespace, matching MemWalConfig (default: "default"). */
|
|
9
|
+
namespace?: string;
|
|
10
|
+
/** Stable owner value returned by result objects (default: "mock-owner"). */
|
|
11
|
+
owner?: string;
|
|
12
|
+
/** Optional records loaded synchronously when the mock is created. */
|
|
13
|
+
initialMemories?: MemWalMockSeed[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Deterministic, dependency-free in-memory implementation of the core MemWal API.
|
|
17
|
+
* It never opens a socket, reads credentials, or contacts Sui/Walrus. Recall uses
|
|
18
|
+
* token-overlap distance so tests are stable across machines and runs.
|
|
19
|
+
*/
|
|
20
|
+
export declare class MemWalMock {
|
|
21
|
+
private readonly owner;
|
|
22
|
+
private readonly namespace;
|
|
23
|
+
private readonly memories;
|
|
24
|
+
private readonly jobs;
|
|
25
|
+
private sequence;
|
|
26
|
+
private constructor();
|
|
27
|
+
static create(config?: MemWalMockConfig): MemWalMock;
|
|
28
|
+
destroy(): void;
|
|
29
|
+
rememberAsync(text: string, namespace?: string): Promise<RememberAcceptedResult>;
|
|
30
|
+
remember(text: string, namespace?: string): Promise<RememberAcceptedResult>;
|
|
31
|
+
getRememberStatus(jobId: string): Promise<RememberJobStatus>;
|
|
32
|
+
waitForRememberJob(jobId: string, _opts?: {
|
|
33
|
+
pollIntervalMs?: number;
|
|
34
|
+
timeoutMs?: number;
|
|
35
|
+
}): Promise<RememberResult>;
|
|
36
|
+
rememberAndWait(text: string, namespace?: string, opts?: {
|
|
37
|
+
pollIntervalMs?: number;
|
|
38
|
+
timeoutMs?: number;
|
|
39
|
+
}): Promise<RememberResult>;
|
|
40
|
+
rememberBulkAsync(items: RememberBulkItem[]): Promise<RememberBulkAcceptedResult>;
|
|
41
|
+
rememberBulk(items: RememberBulkItem[]): Promise<RememberBulkAcceptedResult>;
|
|
42
|
+
getRememberBulkStatus(jobIds: string[]): Promise<RememberBulkStatusResult>;
|
|
43
|
+
waitForRememberJobs(jobIds: string[], namespaces?: string[], _opts?: RememberBulkOptions): Promise<RememberBulkResult>;
|
|
44
|
+
rememberBulkAndWait(items: RememberBulkItem[], opts?: RememberBulkOptions): Promise<RememberBulkResult>;
|
|
45
|
+
recall(params: RecallParams): Promise<RecallResult>;
|
|
46
|
+
recall(query: string, limitOrOptions?: number | RecallOptions, namespace?: string): Promise<RecallResult>;
|
|
47
|
+
analyze(text: string, namespaceOrOptions?: string | AnalyzeOptions): Promise<AnalyzeResult>;
|
|
48
|
+
analyzeAndWait(text: string, namespaceOrOptions?: string | AnalyzeOptions, opts?: RememberBulkOptions): Promise<AnalyzeWaitResult>;
|
|
49
|
+
embed(text: string): Promise<EmbedResult>;
|
|
50
|
+
restore(namespace: string, _limit?: number): Promise<RestoreResult>;
|
|
51
|
+
health(): Promise<HealthResult>;
|
|
52
|
+
compatibility(): Promise<RelayerVersionMetadata>;
|
|
53
|
+
/** Delete one mock record by blob id. Returns whether a record was removed. */
|
|
54
|
+
forget(blobId: string): boolean;
|
|
55
|
+
/** Clear one namespace, or every mock record when omitted. */
|
|
56
|
+
clear(namespace?: string): number;
|
|
57
|
+
private store;
|
|
58
|
+
private toRememberResult;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,gBAAgB,EAEhB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,aAAa,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACtC;AA6CD;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO;IASP,MAAM,CAAC,MAAM,CAAC,MAAM,GAAE,gBAAqB,GAAG,UAAU;IAIxD,OAAO,IAAI,IAAI;IAKT,aAAa,CACf,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,CAAC;IAK5B,QAAQ,CACV,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,CAAC;IAI5B,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAY5D,kBAAkB,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC5D,OAAO,CAAC,cAAc,CAAC;IAMpB,eAAe,CACjB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,OAAO,CAAC,cAAc,CAAC;IAKpB,iBAAiB,CACnB,KAAK,EAAE,gBAAgB,EAAE,GAC1B,OAAO,CAAC,0BAA0B,CAAC;IAOhC,YAAY,CACd,KAAK,EAAE,gBAAgB,EAAE,GAC1B,OAAO,CAAC,0BAA0B,CAAC;IAIhC,qBAAqB,CACvB,MAAM,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,wBAAwB,CAAC;IAW9B,mBAAmB,CACrB,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,GAAE,MAAM,EAAO,EACzB,KAAK,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA6BxB,mBAAmB,CACrB,KAAK,EAAE,gBAAgB,EAAE,EACzB,IAAI,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;IAQxB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IACnD,MAAM,CACR,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EACvC,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC;IAsDlB,OAAO,CACT,IAAI,EAAE,MAAM,EACZ,kBAAkB,CAAC,EAAE,MAAM,GAAG,cAAc,GAC7C,OAAO,CAAC,aAAa,CAAC;IAuBnB,cAAc,CAChB,IAAI,EAAE,MAAM,EACZ,kBAAkB,CAAC,EAAE,MAAM,GAAG,cAAc,EAC5C,IAAI,GAAE,mBAAwB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAcvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAezC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,OAAO,CAAC,aAAa,CAAC;IAW/D,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAI/B,aAAa,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAItD,+EAA+E;IAC/E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAU/B,8DAA8D;IAC9D,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBjC,OAAO,CAAC,KAAK;IAuBb,OAAO,CAAC,gBAAgB;CAS3B"}
|
package/dist/mock.js
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
const MOCK_VERSION = {
|
|
2
|
+
relayerVersion: "memwal-mock",
|
|
3
|
+
apiVersion: "1.0.0",
|
|
4
|
+
minSupportedSdk: { typescript: "0.0.0", python: "0.0.0", mcp: "0.0.0" },
|
|
5
|
+
featureFlags: { offlineMock: true },
|
|
6
|
+
deprecations: [],
|
|
7
|
+
build: {},
|
|
8
|
+
};
|
|
9
|
+
function tokenize(text) {
|
|
10
|
+
return new Set(text
|
|
11
|
+
.normalize("NFKC")
|
|
12
|
+
.toLowerCase()
|
|
13
|
+
.match(/[\p{L}\p{N}]+/gu) ?? []);
|
|
14
|
+
}
|
|
15
|
+
function distance(queryTokens, text) {
|
|
16
|
+
if (queryTokens.size === 0)
|
|
17
|
+
return 1;
|
|
18
|
+
const memoryTokens = tokenize(text);
|
|
19
|
+
let matches = 0;
|
|
20
|
+
for (const token of queryTokens) {
|
|
21
|
+
if (memoryTokens.has(token))
|
|
22
|
+
matches += 1;
|
|
23
|
+
}
|
|
24
|
+
return 1 - matches / queryTokens.size;
|
|
25
|
+
}
|
|
26
|
+
function validateText(text, field = "text") {
|
|
27
|
+
if (typeof text !== "string" || text.trim().length === 0) {
|
|
28
|
+
throw new Error(`${field} cannot be empty`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Deterministic, dependency-free in-memory implementation of the core MemWal API.
|
|
33
|
+
* It never opens a socket, reads credentials, or contacts Sui/Walrus. Recall uses
|
|
34
|
+
* token-overlap distance so tests are stable across machines and runs.
|
|
35
|
+
*/
|
|
36
|
+
export class MemWalMock {
|
|
37
|
+
owner;
|
|
38
|
+
namespace;
|
|
39
|
+
memories = [];
|
|
40
|
+
jobs = new Map();
|
|
41
|
+
sequence = 0;
|
|
42
|
+
constructor(config = {}) {
|
|
43
|
+
this.owner = config.owner ?? "mock-owner";
|
|
44
|
+
this.namespace = config.namespace ?? "default";
|
|
45
|
+
if (!this.namespace)
|
|
46
|
+
throw new Error("namespace cannot be empty");
|
|
47
|
+
for (const seed of config.initialMemories ?? []) {
|
|
48
|
+
this.store(seed.text, seed.namespace, seed.blobId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static create(config = {}) {
|
|
52
|
+
return new MemWalMock(config);
|
|
53
|
+
}
|
|
54
|
+
destroy() {
|
|
55
|
+
this.memories.length = 0;
|
|
56
|
+
this.jobs.clear();
|
|
57
|
+
}
|
|
58
|
+
async rememberAsync(text, namespace) {
|
|
59
|
+
const memory = this.store(text, namespace);
|
|
60
|
+
return { job_id: memory.jobId, status: "done" };
|
|
61
|
+
}
|
|
62
|
+
async remember(text, namespace) {
|
|
63
|
+
return this.rememberAsync(text, namespace);
|
|
64
|
+
}
|
|
65
|
+
async getRememberStatus(jobId) {
|
|
66
|
+
const memory = this.jobs.get(jobId);
|
|
67
|
+
if (!memory)
|
|
68
|
+
return { job_id: jobId, status: "not_found" };
|
|
69
|
+
return {
|
|
70
|
+
job_id: jobId,
|
|
71
|
+
status: "done",
|
|
72
|
+
owner: this.owner,
|
|
73
|
+
namespace: memory.namespace,
|
|
74
|
+
blob_id: memory.blobId,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async waitForRememberJob(jobId, _opts = {}) {
|
|
78
|
+
const memory = this.jobs.get(jobId);
|
|
79
|
+
if (!memory)
|
|
80
|
+
throw new Error(`Remember job not found: ${jobId}`);
|
|
81
|
+
return this.toRememberResult(memory);
|
|
82
|
+
}
|
|
83
|
+
async rememberAndWait(text, namespace, opts = {}) {
|
|
84
|
+
const accepted = await this.rememberAsync(text, namespace);
|
|
85
|
+
return this.waitForRememberJob(accepted.job_id, opts);
|
|
86
|
+
}
|
|
87
|
+
async rememberBulkAsync(items) {
|
|
88
|
+
const jobIds = items.map((item) => this.store(item.text, item.namespace).jobId);
|
|
89
|
+
return { job_ids: jobIds, total: jobIds.length, status: "done" };
|
|
90
|
+
}
|
|
91
|
+
async rememberBulk(items) {
|
|
92
|
+
return this.rememberBulkAsync(items);
|
|
93
|
+
}
|
|
94
|
+
async getRememberBulkStatus(jobIds) {
|
|
95
|
+
return {
|
|
96
|
+
results: jobIds.map((jobId) => {
|
|
97
|
+
const memory = this.jobs.get(jobId);
|
|
98
|
+
return memory
|
|
99
|
+
? { job_id: jobId, status: "done", blob_id: memory.blobId }
|
|
100
|
+
: { job_id: jobId, status: "not_found" };
|
|
101
|
+
}),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async waitForRememberJobs(jobIds, namespaces = [], _opts = {}) {
|
|
105
|
+
const results = jobIds.map((jobId, index) => {
|
|
106
|
+
const memory = this.jobs.get(jobId);
|
|
107
|
+
return memory
|
|
108
|
+
? {
|
|
109
|
+
id: jobId,
|
|
110
|
+
blob_id: memory.blobId,
|
|
111
|
+
status: "done",
|
|
112
|
+
namespace: memory.namespace,
|
|
113
|
+
}
|
|
114
|
+
: {
|
|
115
|
+
id: jobId,
|
|
116
|
+
blob_id: "",
|
|
117
|
+
status: "failed",
|
|
118
|
+
namespace: namespaces[index] ?? this.namespace,
|
|
119
|
+
error: "Remember job not found",
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
const succeeded = results.filter((result) => result.status === "done").length;
|
|
123
|
+
return {
|
|
124
|
+
results,
|
|
125
|
+
total: results.length,
|
|
126
|
+
succeeded,
|
|
127
|
+
failed: results.length - succeeded,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
async rememberBulkAndWait(items, opts = {}) {
|
|
131
|
+
const accepted = await this.rememberBulkAsync(items);
|
|
132
|
+
const namespaces = items.map((item) => item.namespace ?? this.namespace);
|
|
133
|
+
return this.waitForRememberJobs(accepted.job_ids, namespaces, opts);
|
|
134
|
+
}
|
|
135
|
+
async recall(queryOrParams, limitOrOptions = 10, namespace) {
|
|
136
|
+
let query;
|
|
137
|
+
let options;
|
|
138
|
+
if (typeof queryOrParams === "object") {
|
|
139
|
+
const { query: objectQuery, ...rest } = queryOrParams;
|
|
140
|
+
query = objectQuery;
|
|
141
|
+
options = rest;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
query = queryOrParams;
|
|
145
|
+
if (limitOrOptions == null) {
|
|
146
|
+
options = { limit: 10, namespace };
|
|
147
|
+
}
|
|
148
|
+
else if (typeof limitOrOptions === "number") {
|
|
149
|
+
options = { limit: limitOrOptions, namespace };
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
options = limitOrOptions;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
validateText(query, "query");
|
|
156
|
+
const resolvedNamespace = options.namespace ?? this.namespace;
|
|
157
|
+
const resolvedLimit = options.topK ?? options.limit ?? 10;
|
|
158
|
+
if (!Number.isInteger(resolvedLimit) || resolvedLimit < 0) {
|
|
159
|
+
throw new Error("limit must be a non-negative integer");
|
|
160
|
+
}
|
|
161
|
+
const queryTokens = tokenize(query);
|
|
162
|
+
const ranked = this.memories
|
|
163
|
+
.filter((memory) => memory.namespace === resolvedNamespace)
|
|
164
|
+
.map((memory) => ({
|
|
165
|
+
memory,
|
|
166
|
+
distance: distance(queryTokens, memory.text),
|
|
167
|
+
}))
|
|
168
|
+
.filter((entry) => options.maxDistance === undefined
|
|
169
|
+
? true
|
|
170
|
+
: entry.distance < options.maxDistance)
|
|
171
|
+
.sort((left, right) => left.distance - right.distance ||
|
|
172
|
+
left.memory.sequence - right.memory.sequence)
|
|
173
|
+
.slice(0, resolvedLimit)
|
|
174
|
+
.map(({ memory, distance: memoryDistance }) => ({
|
|
175
|
+
blob_id: memory.blobId,
|
|
176
|
+
text: memory.text,
|
|
177
|
+
distance: memoryDistance,
|
|
178
|
+
}));
|
|
179
|
+
return { results: ranked, total: ranked.length };
|
|
180
|
+
}
|
|
181
|
+
async analyze(text, namespaceOrOptions) {
|
|
182
|
+
validateText(text);
|
|
183
|
+
const namespace = typeof namespaceOrOptions === "string"
|
|
184
|
+
? namespaceOrOptions
|
|
185
|
+
: namespaceOrOptions?.namespace;
|
|
186
|
+
const memory = this.store(text, namespace);
|
|
187
|
+
return {
|
|
188
|
+
job_ids: [memory.jobId],
|
|
189
|
+
facts: [
|
|
190
|
+
{
|
|
191
|
+
text,
|
|
192
|
+
id: memory.id,
|
|
193
|
+
job_id: memory.jobId,
|
|
194
|
+
blob_id: memory.blobId,
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
fact_count: 1,
|
|
198
|
+
status: "done",
|
|
199
|
+
owner: this.owner,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
async analyzeAndWait(text, namespaceOrOptions, opts = {}) {
|
|
203
|
+
const analyzed = await this.analyze(text, namespaceOrOptions);
|
|
204
|
+
const namespace = typeof namespaceOrOptions === "string"
|
|
205
|
+
? namespaceOrOptions
|
|
206
|
+
: namespaceOrOptions?.namespace;
|
|
207
|
+
const settled = await this.waitForRememberJobs(analyzed.job_ids, analyzed.job_ids.map(() => namespace ?? this.namespace), opts);
|
|
208
|
+
return { ...settled, facts: analyzed.facts, owner: this.owner };
|
|
209
|
+
}
|
|
210
|
+
async embed(text) {
|
|
211
|
+
validateText(text);
|
|
212
|
+
const vector = new Array(16).fill(0);
|
|
213
|
+
for (const token of tokenize(text)) {
|
|
214
|
+
let hash = 2166136261;
|
|
215
|
+
for (const char of token) {
|
|
216
|
+
hash ^= char.codePointAt(0) ?? 0;
|
|
217
|
+
hash = Math.imul(hash, 16777619);
|
|
218
|
+
}
|
|
219
|
+
vector[(hash >>> 0) % vector.length] += 1;
|
|
220
|
+
}
|
|
221
|
+
const magnitude = Math.hypot(...vector) || 1;
|
|
222
|
+
return { vector: vector.map((value) => value / magnitude) };
|
|
223
|
+
}
|
|
224
|
+
async restore(namespace, _limit = 10) {
|
|
225
|
+
return {
|
|
226
|
+
restored: 0,
|
|
227
|
+
skipped: 0,
|
|
228
|
+
total: 0,
|
|
229
|
+
namespace,
|
|
230
|
+
owner: this.owner,
|
|
231
|
+
truncated: false,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
async health() {
|
|
235
|
+
return { status: "ok", version: "memwal-mock", ...MOCK_VERSION };
|
|
236
|
+
}
|
|
237
|
+
async compatibility() {
|
|
238
|
+
return structuredClone(MOCK_VERSION);
|
|
239
|
+
}
|
|
240
|
+
/** Delete one mock record by blob id. Returns whether a record was removed. */
|
|
241
|
+
forget(blobId) {
|
|
242
|
+
const index = this.memories.findIndex((memory) => memory.blobId === blobId);
|
|
243
|
+
if (index < 0)
|
|
244
|
+
return false;
|
|
245
|
+
const [memory] = this.memories.splice(index, 1);
|
|
246
|
+
this.jobs.delete(memory.jobId);
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
/** Clear one namespace, or every mock record when omitted. */
|
|
250
|
+
clear(namespace) {
|
|
251
|
+
const removed = this.memories.filter((memory) => namespace === undefined || memory.namespace === namespace);
|
|
252
|
+
if (namespace === undefined) {
|
|
253
|
+
this.memories.length = 0;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
for (let index = this.memories.length - 1; index >= 0; index -= 1) {
|
|
257
|
+
if (this.memories[index].namespace === namespace)
|
|
258
|
+
this.memories.splice(index, 1);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
for (const memory of removed)
|
|
262
|
+
this.jobs.delete(memory.jobId);
|
|
263
|
+
return removed.length;
|
|
264
|
+
}
|
|
265
|
+
store(text, namespace, blobId) {
|
|
266
|
+
validateText(text);
|
|
267
|
+
const resolvedNamespace = namespace ?? this.namespace;
|
|
268
|
+
if (!resolvedNamespace)
|
|
269
|
+
throw new Error("namespace cannot be empty");
|
|
270
|
+
this.sequence += 1;
|
|
271
|
+
const suffix = this.sequence.toString().padStart(6, "0");
|
|
272
|
+
const memory = {
|
|
273
|
+
id: `mock-job-${suffix}`,
|
|
274
|
+
jobId: `mock-job-${suffix}`,
|
|
275
|
+
blobId: blobId ?? `mock-blob-${suffix}`,
|
|
276
|
+
text,
|
|
277
|
+
namespace: resolvedNamespace,
|
|
278
|
+
sequence: this.sequence,
|
|
279
|
+
};
|
|
280
|
+
this.memories.push(memory);
|
|
281
|
+
this.jobs.set(memory.jobId, memory);
|
|
282
|
+
return memory;
|
|
283
|
+
}
|
|
284
|
+
toRememberResult(memory) {
|
|
285
|
+
return {
|
|
286
|
+
id: memory.id,
|
|
287
|
+
job_id: memory.jobId,
|
|
288
|
+
blob_id: memory.blobId,
|
|
289
|
+
owner: this.owner,
|
|
290
|
+
namespace: memory.namespace,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=mock.js.map
|
package/dist/mock.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED