@supermemory/eve 0.1.3 → 0.2.0-rc.1

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 CHANGED
@@ -9,23 +9,32 @@ gives Eve tools to search, remember, extract, and forget.
9
9
 
10
10
  ## Add memory to Eve
11
11
 
12
- From an Eve project, add the provider from Eve's integration registry:
12
+ For Eve 1.0 RC5, install the matching provider candidate once it is published:
13
13
 
14
14
  ```bash
15
- eve add memory/supermemory
15
+ npm install @supermemory/eve@next eve@1.0.0-rc.5
16
16
  ```
17
17
 
18
- Or install it yourself:
18
+ The candidate `@supermemory/eve@0.2.0-rc.1` targets only the `next` tag. Until that
19
+ release is approved and published, use a local build of this branch; `next` is not
20
+ available yet. The default npm `latest` remains `0.1.3` for Eve 0.x consumers.
21
+
22
+ For an existing Eve 0.x application, keep the current provider:
19
23
 
20
24
  ```bash
21
- npm install @supermemory/eve
25
+ npm install @supermemory/eve@0.1.3
22
26
  ```
23
27
 
24
- The provider supports Eve 0.47.3 and newer 0.x releases. Set `SUPERMEMORY_API_KEY` from the
28
+ `eve add memory/supermemory` installs from Eve's integration registry. For the 1.0
29
+ candidate, use the explicit `@next` installation above until the registry selects a
30
+ compatible release; don't assume the registry command upgrades the provider channel.
31
+
32
+ This source targets Eve 1.0, starting with `eve@1.0.0-rc.5`. Development pins that release
33
+ exactly. Set `SUPERMEMORY_API_KEY` from the
25
34
  [Supermemory console](https://console.supermemory.ai).
26
35
 
27
- Use Eve 0.71.3 or newer for development. Eve 0.66.1 has an upstream completed-turn capture
28
- regression; Eve restored automatic capture in 0.69.0.
36
+ For Eve 0.x, keep using `@supermemory/eve@0.1.3`. The 1.0-compatible provider no longer
37
+ registers the post-compaction recall hook that Eve 1.0 rejects.
29
38
 
30
39
  Create a memory slot in the consuming Eve agent. `supermemory(...)` configures the provider;
31
40
  `defineMemory(...)` binds it to an Eve-managed scope.
@@ -96,8 +105,9 @@ When a turn uses a Supermemory tool, retrieved material is marked as existing co
96
105
  learned again from the assistant's response.
97
106
 
98
107
  Before each turn, the provider loads the user's current Supermemory profile and automatically
99
- searches for context relevant to the request. Eve runs recall again after context compaction. The
100
- agent can still use the search and read tools when it needs broader or source-level context.
108
+ searches for context relevant to the request. Eve 1.0 keeps recalled context outside conversation
109
+ history, so compaction preserves it without calling a post-compaction recall hook. The agent can
110
+ still use the search and read tools when it needs broader or source-level context.
101
111
 
102
112
  ## Agent-directed memory
103
113
 
@@ -180,9 +190,39 @@ Install the same provider. SuperRAG handles PDFs, URLs, images, audio, video, an
180
190
  can index a source, search it later, and return to the original document when it needs more detail.
181
191
  There is no separate RAG setup.
182
192
 
183
- Eve 0.71.3 has an upstream serialization issue that prevents memory-provider tools from loading
184
- on attached-file turns. Until Eve fixes it, use `extract` with text or URL sources. File extraction
185
- accepts only Eve-staged paths under `/workspace/.eve/attachments/`.
193
+ File extraction accepts only Eve-staged paths under `/workspace/.eve/attachments/`. The
194
+ provider passes the tool cancellation signal to Eve's binary-file read and to the Supermemory
195
+ upload. Hosted attachment turns still need an end-to-end check before release.
196
+
197
+ ## Upgrading an existing integration to Eve 1.0
198
+
199
+ Follow [Eve's upgrade guide](https://eve.dev/docs/guides/upgrade) for your agent and deployment.
200
+ This package is a memory provider, not an Eve extension, so it has no extension distribution
201
+ manifest to rebuild.
202
+
203
+ Keep your memory slot name, explicit namespace, trusted scope resolver, and `containerTagPrefix`
204
+ unchanged. The provider's container derivation, session document IDs, source metadata, and
205
+ Supermemory SDK dependency are unchanged; it does not rewrite or migrate stored documents.
206
+ Eve's default namespace includes deployment identity, so changing the application root or
207
+ Preview identity can still select a different partition. Preserve your existing identity rather
208
+ than inventing a new namespace during the upgrade.
209
+
210
+ The provider still uses Eve's memory lifecycle keys `turn.started` and `turn.completed`.
211
+ These are provider callbacks, not raw v26 session-stream consumers: do not rename capture to
212
+ `turn.settled`. Eve calls completed-turn capture only for a successfully completed turn.
213
+ It preserves recalled messages outside history during compaction, replacing the old
214
+ `compaction.completed` recall callback.
215
+
216
+ This package stores conversation text and source documents, not raw Eve session events.
217
+ It needs no v26-to-v27 event conversion. Applications that archive Eve events themselves must
218
+ follow Eve's saved-history migration separately, retain their originals, and keep old deployments
219
+ running for existing sessions as the upgrade guide requires.
220
+
221
+ The release candidate is `0.2.0-rc.1`; merging this branch runs the existing release workflow
222
+ and publishes it to `next`, not `latest`. Eve 0.x consumers stay on `0.1.3`. The `0.2.0-rc.1`
223
+ prerelease is outside existing `^0.1.3` and `~0.1.3` ranges. Upgrading an agent to Eve 1.0 before
224
+ installing the matching provider is unsupported. This separates the breaking runtime upgrade
225
+ without changing stored memory or the existing stable release.
186
226
 
187
227
  ## Development
188
228
 
@@ -198,9 +238,15 @@ npm pack --dry-run
198
238
 
199
239
  ### Publishing
200
240
 
201
- Pushes to `main` run the release workflow. After checks and a packaged-import smoke test pass,
241
+ Pushes to `main` run the release workflow. **Merging a version bump can publish automatically.**
242
+ After checks and a packaged-import smoke test pass,
202
243
  the workflow publishes the version in `package.json` if it is not already on npm. Bump the
203
244
  package version and update `package-lock.json` to ship a new release; no Git tag is required.
245
+ The workflow reads the npm tag from `publishConfig.tag`, permits only `next` and `latest`,
246
+ and refuses to publish a prerelease to `latest`. The candidate sets `tag: "next"`. Keep that
247
+ tag through RC validation; GA promotion and changing `latest` require a separate release decision.
248
+ A local `npm publish --dry-run --tag next` checks the candidate without publishing it.
249
+
204
250
  Publishing uses npm trusted publishing with GitHub Actions OIDC; no `NPM_TOKEN` secret is needed.
205
251
  In the npm package's trusted publisher settings, select GitHub Actions, set the organization to
206
252
  `supermemoryai`, the repository to `eve-supermemory`, and the workflow filename to `release.yml`.
@@ -20,7 +20,7 @@ async function sandboxAttachment(inputPath, ctx) {
20
20
  }
21
21
  const bytes = await sandbox.readBinaryFile({
22
22
  path: resolvedPath,
23
- abortSignal: ctx.abortSignal,
23
+ signal: ctx.abortSignal,
24
24
  });
25
25
  if (!bytes) {
26
26
  throw new Error(`Attachment not found: ${inputPath}`);
package/dist/provider.js CHANGED
@@ -58,7 +58,6 @@ export function supermemory(options) {
58
58
  return defineMemoryProvider({
59
59
  recall: {
60
60
  "turn.started": recall,
61
- "compaction.completed": recall,
62
61
  },
63
62
  ...(config.capture.enabled
64
63
  ? {
@@ -1,302 +1,3 @@
1
+ import type { MemoryToolSet } from "eve/memory";
1
2
  import type { SupermemoryDependencies } from "../lib/dependencies.js";
2
- export declare function createSupermemoryTools(dependencies: SupermemoryDependencies): {
3
- search: import("eve/tools").ToolDefinition<{
4
- query: string;
5
- scope: "all" | "conversations" | "documents" | "memories";
6
- customId?: string | undefined;
7
- }, import("supermemory/resources/search.mjs").SearchMemoriesResponse> & {
8
- execute(input: {
9
- query: string;
10
- scope: "all" | "conversations" | "documents" | "memories";
11
- customId?: string | undefined;
12
- }, ctx: import("eve/tools").ToolContext): Promise<import("supermemory/resources/search.mjs").SearchMemoriesResponse>;
13
- };
14
- read_session: import("eve/tools").ToolDefinition<{
15
- documentId: string;
16
- offset: number;
17
- }, {
18
- id: string;
19
- customId: string | null;
20
- connectionId: string | null;
21
- title: string | null;
22
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
23
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
24
- taskType: "memory" | "superrag";
25
- metadata: string | number | boolean | unknown[] | {
26
- [key: string]: unknown;
27
- } | null;
28
- summary: string | null;
29
- source: string | null;
30
- url: string | null | undefined;
31
- filepath: string | null;
32
- createdAt: string;
33
- updatedAt: string;
34
- content: null;
35
- offset: number;
36
- nextOffset: null;
37
- totalCharacters: number | null;
38
- } | {
39
- content: string;
40
- offset: number;
41
- nextOffset: number | null;
42
- totalCharacters: number;
43
- id: string;
44
- customId: string | null;
45
- connectionId: string | null;
46
- title: string | null;
47
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
48
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
49
- taskType: "memory" | "superrag";
50
- metadata: string | number | boolean | unknown[] | {
51
- [key: string]: unknown;
52
- } | null;
53
- summary: string | null;
54
- source: string | null;
55
- url: string | null | undefined;
56
- filepath: string | null;
57
- createdAt: string;
58
- updatedAt: string;
59
- }> & {
60
- execute(input: {
61
- documentId: string;
62
- offset: number;
63
- }, ctx: import("eve/tools").ToolContext): Promise<{
64
- id: string;
65
- customId: string | null;
66
- connectionId: string | null;
67
- title: string | null;
68
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
69
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
70
- taskType: "memory" | "superrag";
71
- metadata: string | number | boolean | unknown[] | {
72
- [key: string]: unknown;
73
- } | null;
74
- summary: string | null;
75
- source: string | null;
76
- url: string | null | undefined;
77
- filepath: string | null;
78
- createdAt: string;
79
- updatedAt: string;
80
- content: null;
81
- offset: number;
82
- nextOffset: null;
83
- totalCharacters: number | null;
84
- } | {
85
- content: string;
86
- offset: number;
87
- nextOffset: number | null;
88
- totalCharacters: number;
89
- id: string;
90
- customId: string | null;
91
- connectionId: string | null;
92
- title: string | null;
93
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
94
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
95
- taskType: "memory" | "superrag";
96
- metadata: string | number | boolean | unknown[] | {
97
- [key: string]: unknown;
98
- } | null;
99
- summary: string | null;
100
- source: string | null;
101
- url: string | null | undefined;
102
- filepath: string | null;
103
- createdAt: string;
104
- updatedAt: string;
105
- }>;
106
- };
107
- read_document: import("eve/tools").ToolDefinition<{
108
- container: "agent_context" | "agent_extraction";
109
- documentId: string;
110
- offset: number;
111
- }, {
112
- id: string;
113
- customId: string | null;
114
- connectionId: string | null;
115
- title: string | null;
116
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
117
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
118
- taskType: "memory" | "superrag";
119
- metadata: string | number | boolean | unknown[] | {
120
- [key: string]: unknown;
121
- } | null;
122
- summary: string | null;
123
- source: string | null;
124
- url: string | null | undefined;
125
- filepath: string | null;
126
- createdAt: string;
127
- updatedAt: string;
128
- content: null;
129
- offset: number;
130
- nextOffset: null;
131
- totalCharacters: number | null;
132
- } | {
133
- content: string;
134
- offset: number;
135
- nextOffset: number | null;
136
- totalCharacters: number;
137
- id: string;
138
- customId: string | null;
139
- connectionId: string | null;
140
- title: string | null;
141
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
142
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
143
- taskType: "memory" | "superrag";
144
- metadata: string | number | boolean | unknown[] | {
145
- [key: string]: unknown;
146
- } | null;
147
- summary: string | null;
148
- source: string | null;
149
- url: string | null | undefined;
150
- filepath: string | null;
151
- createdAt: string;
152
- updatedAt: string;
153
- }> & {
154
- execute(input: {
155
- container: "agent_context" | "agent_extraction";
156
- documentId: string;
157
- offset: number;
158
- }, ctx: import("eve/tools").ToolContext): Promise<{
159
- id: string;
160
- customId: string | null;
161
- connectionId: string | null;
162
- title: string | null;
163
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
164
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
165
- taskType: "memory" | "superrag";
166
- metadata: string | number | boolean | unknown[] | {
167
- [key: string]: unknown;
168
- } | null;
169
- summary: string | null;
170
- source: string | null;
171
- url: string | null | undefined;
172
- filepath: string | null;
173
- createdAt: string;
174
- updatedAt: string;
175
- content: null;
176
- offset: number;
177
- nextOffset: null;
178
- totalCharacters: number | null;
179
- } | {
180
- content: string;
181
- offset: number;
182
- nextOffset: number | null;
183
- totalCharacters: number;
184
- id: string;
185
- customId: string | null;
186
- connectionId: string | null;
187
- title: string | null;
188
- type: "audio" | "github_markdown" | "google_doc" | "google_sheet" | "google_slide" | "image" | "notion_doc" | "onedrive" | "pdf" | "text" | "tweet" | "video" | "webpage";
189
- status: "chunking" | "done" | "embedding" | "extracting" | "failed" | "indexing" | "queued" | "unknown";
190
- taskType: "memory" | "superrag";
191
- metadata: string | number | boolean | unknown[] | {
192
- [key: string]: unknown;
193
- } | null;
194
- summary: string | null;
195
- source: string | null;
196
- url: string | null | undefined;
197
- filepath: string | null;
198
- createdAt: string;
199
- updatedAt: string;
200
- }>;
201
- };
202
- remember: import("eve/tools").ToolDefinition<{
203
- memory: string;
204
- sourceDocumentId?: string | undefined;
205
- }, {
206
- documentId: string;
207
- status: string;
208
- sourceDocumentId: string | null;
209
- }> & {
210
- execute(input: {
211
- memory: string;
212
- sourceDocumentId?: string | undefined;
213
- }, ctx: import("eve/tools").ToolContext): Promise<{
214
- documentId: string;
215
- status: string;
216
- sourceDocumentId: string | null;
217
- }>;
218
- };
219
- extract: import("eve/tools").ToolDefinition<{
220
- kind: "file" | "text" | "url";
221
- value: string;
222
- title?: string | undefined;
223
- }, {
224
- documentId: string;
225
- status: string;
226
- }> & {
227
- execute(input: {
228
- kind: "file" | "text" | "url";
229
- value: string;
230
- title?: string | undefined;
231
- }, ctx: import("eve/tools").ToolContext): Promise<{
232
- documentId: string;
233
- status: string;
234
- }>;
235
- };
236
- forget: import("eve/tools").ToolDefinition<{
237
- memoryId: string;
238
- reason?: string | undefined;
239
- }, import("supermemory/resources/memories.mjs").MemoryForgetResponse> & {
240
- execute(input: {
241
- memoryId: string;
242
- reason?: string | undefined;
243
- }, ctx: import("eve/tools").ToolContext): Promise<import("supermemory/resources/memories.mjs").MemoryForgetResponse>;
244
- };
245
- forget_matching: import("eve/tools").ToolDefinition<{
246
- query?: string | undefined;
247
- dryRun: boolean;
248
- ids?: string[] | undefined;
249
- threshold?: number | undefined;
250
- maxForget?: number | undefined;
251
- reason?: string | undefined;
252
- }, {
253
- dryRun: true;
254
- count: number;
255
- forgetBatchId: null;
256
- summary: string;
257
- candidates: {
258
- id: string;
259
- memory: string;
260
- score: number;
261
- }[];
262
- } | {
263
- dryRun: false;
264
- count: number;
265
- forgetBatchId: string | null;
266
- summary: string;
267
- forgotten: {
268
- id: string;
269
- memory: string;
270
- score: number;
271
- }[];
272
- }> & {
273
- execute(input: {
274
- query?: string | undefined;
275
- dryRun: boolean;
276
- ids?: string[] | undefined;
277
- threshold?: number | undefined;
278
- maxForget?: number | undefined;
279
- reason?: string | undefined;
280
- }, ctx: import("eve/tools").ToolContext): Promise<{
281
- dryRun: true;
282
- count: number;
283
- forgetBatchId: null;
284
- summary: string;
285
- candidates: {
286
- id: string;
287
- memory: string;
288
- score: number;
289
- }[];
290
- } | {
291
- dryRun: false;
292
- count: number;
293
- forgetBatchId: string | null;
294
- summary: string;
295
- forgotten: {
296
- id: string;
297
- memory: string;
298
- score: number;
299
- }[];
300
- }>;
301
- };
302
- };
3
+ export declare function createSupermemoryTools(dependencies: SupermemoryDependencies): MemoryToolSet;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supermemory/eve",
3
- "version": "0.1.3",
3
+ "version": "0.2.0-rc.1",
4
4
  "description": "Durable user context, retrieval, extraction, remembering, and forgetting for Eve agents.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,14 +39,15 @@
39
39
  "devDependencies": {
40
40
  "@biomejs/biome": "2.5.7",
41
41
  "@types/node": "24.x",
42
- "eve": "0.71.3",
42
+ "eve": "1.0.0-rc.5",
43
43
  "typescript": "7.0.2"
44
44
  },
45
45
  "peerDependencies": {
46
- "eve": ">=0.47.3 <1"
46
+ "eve": "^1.0.0-rc.5"
47
47
  },
48
48
  "publishConfig": {
49
- "access": "public"
49
+ "access": "public",
50
+ "tag": "next"
50
51
  },
51
52
  "engines": {
52
53
  "node": ">=24"