@mongodb-js/agent-engine-sdk-memory 0.11.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.
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Transport-free public Memory facade (TypeScript port).
3
+ *
4
+ * `Memory` is the surface platform users interact with. It delegates the
5
+ * high-level workflow operations to an injected `MemoryRuntime` and the CRUD
6
+ * conveniences to an injected `MemoryCrudClient`. Identity is resolved per call;
7
+ * tenancy never appears in any public signature. Methods are async: the
8
+ * underlying transport is HTTP.
9
+ */
10
+ import { SearchSource, type ContextResponse, type CreateEpisodicResult, type CreateProceduralResult, type CreateSemanticResult, type CreateTaxonomicResult, type CustomMemoryRetrieveResult, type CustomMemorySaveResult, type MemoryChunk, type WriteTurnResult } from "./models.js";
11
+ import { type TagMap } from "./tag_syntax.js";
12
+ import { type FetchLike, type MemoryCrudClient, type MemoryRequestContext, type MemoryRuntime } from "./transport.js";
13
+ export type MemoryOptions = {
14
+ /** Auth: a service-account access token minted at POST /api/v1/oauth/token. */
15
+ serviceAccountToken?: string | null;
16
+ /**
17
+ * @deprecated Use `serviceAccountToken` (or the
18
+ * AGENTIC_MEMORY_SERVICE_ACCOUNT_TOKEN env var). Still accepted as an
19
+ * alias; emits a DeprecationWarning.
20
+ */
21
+ apiKey?: string | null;
22
+ baseUrl?: string | null;
23
+ projectId?: string | null;
24
+ /** Injectable fetch, primarily for tests. */
25
+ fetchImpl?: FetchLike;
26
+ } | {
27
+ runtime: MemoryRuntime;
28
+ client?: MemoryCrudClient | null;
29
+ };
30
+ /** Public, transport-free memory facade. */
31
+ export declare class Memory {
32
+ private readonly runtime;
33
+ private readonly client;
34
+ private boundCtx;
35
+ private ownsRuntime;
36
+ private crudUnsupportedReason;
37
+ constructor(opts?: MemoryOptions);
38
+ private static resolveUrl;
39
+ /** Return a new Memory scoped to `ctx` without mutating this handle. */
40
+ bind(ctx: MemoryRequestContext): Memory;
41
+ /** Release the underlying transport(s) when this handle owns them. */
42
+ close(): Promise<void>;
43
+ private requireClient;
44
+ private runtimeCtx;
45
+ private resolve;
46
+ /** Record a single conversation turn (write-accepted semantics). */
47
+ recordTurn(args: {
48
+ role: string;
49
+ content?: string | null;
50
+ sessionId?: string | null;
51
+ toolCalls?: Array<Record<string, unknown>> | null;
52
+ toolCallId?: string | null;
53
+ toolName?: string | null;
54
+ isError?: boolean;
55
+ modelName?: string | null;
56
+ idempotencyKey?: string | null;
57
+ }): Promise<WriteTurnResult>;
58
+ saveSemantic(args: {
59
+ text: string;
60
+ label: string;
61
+ userId?: string | null;
62
+ source?: string;
63
+ visibility?: string;
64
+ metadata?: Record<string, unknown> | null;
65
+ upsert?: boolean;
66
+ agentId?: string | null;
67
+ }): Promise<CreateSemanticResult>;
68
+ searchSemantic(args: {
69
+ query: string;
70
+ userId?: string | null;
71
+ visibility?: string | null;
72
+ topK?: number;
73
+ }): Promise<MemoryChunk[]>;
74
+ getSemantic(args: {
75
+ label: string;
76
+ userId?: string | null;
77
+ visibility?: string | null;
78
+ }): Promise<unknown | null>;
79
+ saveEpisode(args: {
80
+ title: string;
81
+ content: string;
82
+ userId?: string | null;
83
+ summary?: string | null;
84
+ sessionId?: string | null;
85
+ participants?: string[] | null;
86
+ tags?: string[] | null;
87
+ visibility?: string;
88
+ metadata?: Record<string, unknown> | null;
89
+ agentId?: string | null;
90
+ }): Promise<CreateEpisodicResult>;
91
+ searchEpisodes(args: {
92
+ query: string;
93
+ userId?: string | null;
94
+ visibility?: string | null;
95
+ sessionId?: string | null;
96
+ topK?: number;
97
+ }): Promise<MemoryChunk[]>;
98
+ listEpisodes(args?: {
99
+ userId?: string | null;
100
+ visibility?: string | null;
101
+ sessionId?: string | null;
102
+ limit?: number;
103
+ }): Promise<unknown[]>;
104
+ saveTaxonomic(args: {
105
+ domain: string;
106
+ term: string;
107
+ definition: string;
108
+ relatedTerms?: string[] | null;
109
+ visibility?: string;
110
+ userId?: string | null;
111
+ }): Promise<CreateTaxonomicResult>;
112
+ searchTaxonomic(args: {
113
+ query: string;
114
+ userId?: string | null;
115
+ domain?: string | null;
116
+ visibility?: string | null;
117
+ topK?: number;
118
+ }): Promise<MemoryChunk[]>;
119
+ getTaxonomicTerm(args: {
120
+ domain: string;
121
+ term: string;
122
+ userId?: string | null;
123
+ visibility?: string | null;
124
+ }): Promise<unknown | null>;
125
+ listDomains(args?: {
126
+ visibility?: string | null;
127
+ }): Promise<string[]>;
128
+ discoverProcedures(args: {
129
+ query: string;
130
+ userId?: string | null;
131
+ visibility?: string | null;
132
+ tags?: string[] | null;
133
+ topK?: number;
134
+ similarityThreshold?: number;
135
+ metadataFilter?: Record<string, unknown> | null;
136
+ }): Promise<Array<Record<string, unknown>>>;
137
+ getProcedure(args: {
138
+ procedureName: string;
139
+ userId?: string | null;
140
+ visibility?: string | null;
141
+ includeDeleted?: boolean;
142
+ }): Promise<unknown | null>;
143
+ saveProcedure(args: {
144
+ procedure: string;
145
+ description: string;
146
+ content: string;
147
+ userId?: string | null;
148
+ steps?: Array<Record<string, unknown>> | null;
149
+ resources?: Array<Record<string, unknown>> | null;
150
+ allowedTools?: string[] | null;
151
+ compatibility?: string | null;
152
+ license?: string | null;
153
+ triggerConditions?: string[] | null;
154
+ tags?: string[] | null;
155
+ visibility?: string;
156
+ agentId?: string | null;
157
+ extractionSource?: string | null;
158
+ sourceFormat?: string | null;
159
+ sourcePath?: string | null;
160
+ updateExisting?: boolean;
161
+ }): Promise<CreateProceduralResult>;
162
+ /**
163
+ * Save a memory of a declared custom type.
164
+ *
165
+ * The platform stamps identity (org, project, user) and enforces the
166
+ * type's declared tag schema; this method validates only tag syntax
167
+ * client-side so mistakes fail fast with server-matching messages.
168
+ * Built-in types (semantic, episodic, taxonomic, procedural) are
169
+ * rejected — use their dedicated methods.
170
+ */
171
+ save(memoryType: string, content: string, options?: {
172
+ tags?: TagMap | null;
173
+ contextualMetadata?: Record<string, unknown> | null;
174
+ }): Promise<CustomMemorySaveResult>;
175
+ /**
176
+ * Retrieve memories of a declared custom type by semantic query.
177
+ *
178
+ * Filters are exact-match equality on declared tag keys; result ordering
179
+ * may improve between releases and is not contractual. One type per call.
180
+ */
181
+ retrieve(memoryType: string, query: string, options?: {
182
+ tags?: TagMap | null;
183
+ topK?: number;
184
+ }): Promise<CustomMemoryRetrieveResult>;
185
+ /** Build a unified memory context across memory types. */
186
+ buildContext(args: {
187
+ query: string;
188
+ userId?: string | null;
189
+ sessionId?: string | null;
190
+ visibility?: string | null;
191
+ metadataFilter?: Record<string, unknown> | null;
192
+ enabledSources?: Set<string> | null;
193
+ /** Deprecated alias for `sessionId`; a non-blank `sessionId` wins. */
194
+ threadId?: string | null;
195
+ /**
196
+ * Optional gross context-construction budget. Omitted preserves prior
197
+ * behavior. Non-positive, non-integer, and non-finite values raise
198
+ * before runtime delegation. After retrieval and ranking, the server
199
+ * subtracts a 500-token formatting reserve, then greedily selects whole
200
+ * memory chunks that fit in the remainder. Positive values at or below 500
201
+ * leave no budget for memories. Values above 500 can still
202
+ * yield empty context when no chunk fits. `metadata.token_count` reports
203
+ * formatted output only and excludes the reserve.
204
+ */
205
+ maxTokens?: number;
206
+ }): Promise<ContextResponse>;
207
+ /** Search one or more memory sources and return a single ranked list. */
208
+ search(args: {
209
+ query: string;
210
+ sources?: SearchSource | string | ReadonlyArray<SearchSource | string> | null;
211
+ topK?: number;
212
+ userId?: string | null;
213
+ visibility?: string | null;
214
+ sessionId?: string | null;
215
+ domain?: string | null;
216
+ tags?: string[] | null;
217
+ similarityThreshold?: number;
218
+ metadataFilter?: Record<string, unknown> | null;
219
+ }): Promise<MemoryChunk[]>;
220
+ }
221
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}