@memvid/sdk 2.0.113

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 (46) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +244 -0
  3. package/dist/__tests__/basic.test.d.ts +1 -0
  4. package/dist/__tests__/basic.test.js +41 -0
  5. package/dist/adapters/autogen.d.ts +23 -0
  6. package/dist/adapters/autogen.js +163 -0
  7. package/dist/adapters/basic.d.ts +1 -0
  8. package/dist/adapters/basic.js +11 -0
  9. package/dist/adapters/crewai.d.ts +23 -0
  10. package/dist/adapters/crewai.js +160 -0
  11. package/dist/adapters/google_adk.d.ts +25 -0
  12. package/dist/adapters/google_adk.js +158 -0
  13. package/dist/adapters/haystack.d.ts +1 -0
  14. package/dist/adapters/haystack.js +11 -0
  15. package/dist/adapters/langchain.d.ts +28 -0
  16. package/dist/adapters/langchain.js +156 -0
  17. package/dist/adapters/langgraph.d.ts +1 -0
  18. package/dist/adapters/langgraph.js +11 -0
  19. package/dist/adapters/llamaindex.d.ts +33 -0
  20. package/dist/adapters/llamaindex.js +195 -0
  21. package/dist/adapters/mcp.d.ts +1 -0
  22. package/dist/adapters/mcp.js +11 -0
  23. package/dist/adapters/openai.d.ts +26 -0
  24. package/dist/adapters/openai.js +169 -0
  25. package/dist/adapters/semantic_kernel.d.ts +1 -0
  26. package/dist/adapters/semantic_kernel.js +11 -0
  27. package/dist/adapters/vercel_ai.d.ts +27 -0
  28. package/dist/adapters/vercel_ai.js +148 -0
  29. package/dist/clip.d.ts +182 -0
  30. package/dist/clip.js +371 -0
  31. package/dist/embeddings.d.ts +156 -0
  32. package/dist/embeddings.js +289 -0
  33. package/dist/entities.d.ts +251 -0
  34. package/dist/entities.js +489 -0
  35. package/dist/error.d.ts +91 -0
  36. package/dist/error.js +203 -0
  37. package/dist/index.d.ts +53 -0
  38. package/dist/index.js +458 -0
  39. package/dist/noop.d.ts +2 -0
  40. package/dist/noop.js +55 -0
  41. package/dist/registry.d.ts +5 -0
  42. package/dist/registry.js +53 -0
  43. package/dist/types.d.ts +275 -0
  44. package/dist/types.js +2 -0
  45. package/index.node +0 -0
  46. package/package.json +81 -0
package/dist/error.js ADDED
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CorruptFileError = exports.VecIndexDisabledError = exports.FrameNotFoundError = exports.MemoryAlreadyBoundError = exports.ApiKeyRequiredError = exports.LockedError = exports.VerificationFailedError = exports.TimeIndexMissingError = exports.LexIndexDisabledError = exports.TicketReplayError = exports.TicketInvalidError = exports.CapacityExceededError = exports.MemvidError = void 0;
4
+ exports.wrapNativeError = wrapNativeError;
5
+ /**
6
+ * Structured error class for Memvid SDK operations.
7
+ *
8
+ * All errors from the Memvid SDK are instances of this class,
9
+ * providing consistent error handling with:
10
+ * - `.code`: Machine-readable error code (e.g., "MV001")
11
+ * - `.message`: Human-readable error message
12
+ * - `.details`: Optional structured details object
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { use, MemvidError } from "@memvid/sdk";
17
+ *
18
+ * try {
19
+ * const mem = await use("basic", "file.mv2");
20
+ * await mem.put({ title: "Doc", label: "test", text: "..." });
21
+ * } catch (err) {
22
+ * if (err instanceof MemvidError) {
23
+ * switch (err.code) {
24
+ * case "MV001":
25
+ * console.error("Capacity exceeded:", err.message);
26
+ * break;
27
+ * case "MV007":
28
+ * console.error("File locked:", err.details?.owner);
29
+ * break;
30
+ * default:
31
+ * console.error(`Error ${err.code}: ${err.message}`);
32
+ * }
33
+ * }
34
+ * }
35
+ * ```
36
+ */
37
+ class MemvidError extends Error {
38
+ constructor(code, message, details) {
39
+ super(message);
40
+ this.name = "MemvidError";
41
+ this.code = code;
42
+ this.details = details;
43
+ // Maintains proper stack trace for where error was thrown (V8 only)
44
+ if (Error.captureStackTrace) {
45
+ Error.captureStackTrace(this, MemvidError);
46
+ }
47
+ }
48
+ /**
49
+ * Create a MemvidError from a native error string.
50
+ * Parses the "MV001: message" format from the Rust binding.
51
+ */
52
+ static fromNative(err) {
53
+ const match = err.message.match(/^(MV\d{3}):\s*(.+)$/);
54
+ if (match) {
55
+ const code = match[1];
56
+ const message = match[2];
57
+ return new MemvidError(code, message);
58
+ }
59
+ // Unknown error format, wrap as MV999
60
+ return new MemvidError("MV999", err.message);
61
+ }
62
+ /**
63
+ * Check if an error is a MemvidError.
64
+ */
65
+ static isMemvidError(err) {
66
+ return err instanceof MemvidError;
67
+ }
68
+ /**
69
+ * Convert to JSON for logging/serialization.
70
+ */
71
+ toJSON() {
72
+ return {
73
+ code: this.code,
74
+ message: this.message,
75
+ ...(this.details && { details: this.details }),
76
+ };
77
+ }
78
+ }
79
+ exports.MemvidError = MemvidError;
80
+ // Named error subclasses for specific error types
81
+ class CapacityExceededError extends MemvidError {
82
+ constructor(message, details) {
83
+ super("MV001", message, details);
84
+ this.name = "CapacityExceededError";
85
+ }
86
+ }
87
+ exports.CapacityExceededError = CapacityExceededError;
88
+ class TicketInvalidError extends MemvidError {
89
+ constructor(message, details) {
90
+ super("MV002", message, details);
91
+ this.name = "TicketInvalidError";
92
+ }
93
+ }
94
+ exports.TicketInvalidError = TicketInvalidError;
95
+ class TicketReplayError extends MemvidError {
96
+ constructor(message, details) {
97
+ super("MV003", message, details);
98
+ this.name = "TicketReplayError";
99
+ }
100
+ }
101
+ exports.TicketReplayError = TicketReplayError;
102
+ class LexIndexDisabledError extends MemvidError {
103
+ constructor(message, details) {
104
+ super("MV004", message, details);
105
+ this.name = "LexIndexDisabledError";
106
+ }
107
+ }
108
+ exports.LexIndexDisabledError = LexIndexDisabledError;
109
+ class TimeIndexMissingError extends MemvidError {
110
+ constructor(message, details) {
111
+ super("MV005", message, details);
112
+ this.name = "TimeIndexMissingError";
113
+ }
114
+ }
115
+ exports.TimeIndexMissingError = TimeIndexMissingError;
116
+ class VerificationFailedError extends MemvidError {
117
+ constructor(message, details) {
118
+ super("MV006", message, details);
119
+ this.name = "VerificationFailedError";
120
+ }
121
+ }
122
+ exports.VerificationFailedError = VerificationFailedError;
123
+ class LockedError extends MemvidError {
124
+ constructor(message, details) {
125
+ super("MV007", message, details);
126
+ this.name = "LockedError";
127
+ }
128
+ }
129
+ exports.LockedError = LockedError;
130
+ class ApiKeyRequiredError extends MemvidError {
131
+ constructor(message, details) {
132
+ super("MV008", message, details);
133
+ this.name = "ApiKeyRequiredError";
134
+ }
135
+ }
136
+ exports.ApiKeyRequiredError = ApiKeyRequiredError;
137
+ class MemoryAlreadyBoundError extends MemvidError {
138
+ constructor(message, details) {
139
+ super("MV009", message, details);
140
+ this.name = "MemoryAlreadyBoundError";
141
+ }
142
+ }
143
+ exports.MemoryAlreadyBoundError = MemoryAlreadyBoundError;
144
+ class FrameNotFoundError extends MemvidError {
145
+ constructor(message, details) {
146
+ super("MV010", message, details);
147
+ this.name = "FrameNotFoundError";
148
+ }
149
+ }
150
+ exports.FrameNotFoundError = FrameNotFoundError;
151
+ class VecIndexDisabledError extends MemvidError {
152
+ constructor(message, details) {
153
+ super("MV011", message, details);
154
+ this.name = "VecIndexDisabledError";
155
+ }
156
+ }
157
+ exports.VecIndexDisabledError = VecIndexDisabledError;
158
+ class CorruptFileError extends MemvidError {
159
+ constructor(message, details) {
160
+ super("MV012", message, details);
161
+ this.name = "CorruptFileError";
162
+ }
163
+ }
164
+ exports.CorruptFileError = CorruptFileError;
165
+ /**
166
+ * Wrap a native error into the appropriate MemvidError subclass.
167
+ */
168
+ function wrapNativeError(err) {
169
+ const match = err.message.match(/^(MV\d{3}):\s*(.+)$/);
170
+ if (!match) {
171
+ return new MemvidError("MV999", err.message);
172
+ }
173
+ const code = match[1];
174
+ const message = match[2];
175
+ switch (code) {
176
+ case "MV001":
177
+ return new CapacityExceededError(message);
178
+ case "MV002":
179
+ return new TicketInvalidError(message);
180
+ case "MV003":
181
+ return new TicketReplayError(message);
182
+ case "MV004":
183
+ return new LexIndexDisabledError(message);
184
+ case "MV005":
185
+ return new TimeIndexMissingError(message);
186
+ case "MV006":
187
+ return new VerificationFailedError(message);
188
+ case "MV007":
189
+ return new LockedError(message);
190
+ case "MV008":
191
+ return new ApiKeyRequiredError(message);
192
+ case "MV009":
193
+ return new MemoryAlreadyBoundError(message);
194
+ case "MV010":
195
+ return new FrameNotFoundError(message);
196
+ case "MV011":
197
+ return new VecIndexDisabledError(message);
198
+ case "MV012":
199
+ return new CorruptFileError(message);
200
+ default:
201
+ return new MemvidError("MV999", message);
202
+ }
203
+ }
@@ -0,0 +1,53 @@
1
+ import type { ApiKey, Kind, Memvid, UseDoctorOptions, UseOptions, UseVerifyOptions } from "./types";
2
+ import "./adapters/basic";
3
+ import "./adapters/langchain";
4
+ import "./adapters/llamaindex";
5
+ import "./adapters/crewai";
6
+ import "./adapters/vercel_ai";
7
+ import "./adapters/openai";
8
+ import "./adapters/autogen";
9
+ import "./adapters/haystack";
10
+ import "./adapters/langgraph";
11
+ import "./adapters/semantic_kernel";
12
+ import "./adapters/google_adk";
13
+ import "./adapters/mcp";
14
+ export * as clip from "./clip";
15
+ export * as entities from "./entities";
16
+ export { getClipProvider, LocalClip, OpenAIClip, GeminiClip } from "./clip";
17
+ export { getEntityExtractor, LocalNER, OpenAIEntities, ClaudeEntities, GeminiEntities } from "./entities";
18
+ type UseFunction = {
19
+ (kind: Kind, filename: string, apiKey?: ApiKey, options?: UseOptions): Promise<Memvid>;
20
+ verify(path: string, options?: UseVerifyOptions): Promise<unknown>;
21
+ doctor(path: string, options?: UseDoctorOptions): Promise<unknown>;
22
+ };
23
+ declare const useImpl: UseFunction;
24
+ export declare const use: UseFunction;
25
+ export default useImpl;
26
+ export declare function create(filename: string, kind?: Kind, apiKey?: ApiKey): Promise<Memvid>;
27
+ export type { Kind, ApiKey, Memvid, UseOptions, FindInput, AskInput, TimelineInput, PutInput, PutManyInput, PutManyOptions, MemvidErrorCode, MemvidErrorDetails, HeatmapEntry, HeatmapResponse, } from "./types";
28
+ export { MemvidError, CapacityExceededError, TicketInvalidError, TicketReplayError, LexIndexDisabledError, TimeIndexMissingError, VerificationFailedError, LockedError, ApiKeyRequiredError, MemoryAlreadyBoundError, FrameNotFoundError, VecIndexDisabledError, CorruptFileError, } from "./error";
29
+ export { EmbeddingProvider, OpenAIEmbeddings, OpenAIEmbeddingsConfig, CohereEmbeddings, CohereEmbeddingsConfig, VoyageEmbeddings, VoyageEmbeddingsConfig, getEmbedder, MODEL_DIMENSIONS, } from "./embeddings";
30
+ /**
31
+ * Mask PII (Personally Identifiable Information) in text.
32
+ *
33
+ * Detects and replaces common PII patterns with placeholder tokens:
34
+ * - Email addresses → [EMAIL]
35
+ * - US Social Security Numbers → [SSN]
36
+ * - Phone numbers → [PHONE]
37
+ * - Credit card numbers → [CREDIT_CARD]
38
+ * - IPv4 addresses → [IP_ADDRESS]
39
+ * - API keys/tokens → [API_KEY]
40
+ *
41
+ * @param text - The text to mask
42
+ * @returns Text with PII replaced by placeholder tokens
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * import { maskPii } from 'memvid-sdk';
47
+ *
48
+ * const text = "Contact john@example.com at 555-123-4567";
49
+ * const masked = maskPii(text);
50
+ * console.log(masked); // "Contact [EMAIL] at [PHONE]"
51
+ * ```
52
+ */
53
+ export declare function maskPii(text: string): string;