From e46b37476dcd70e0da84b238e7e99ba6c4e7cf77 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 12:31:42 +0000 Subject: [PATCH] Version Packages --- .changeset/eve-extension-0490-rebuild.md | 15 ------ .changeset/eve-redis-memory-slots.md | 45 ---------------- .changeset/sdk-memory-metadata.md | 38 -------------- examples/ai-sdk-demo/CHANGELOG.md | 8 +++ examples/ai-sdk-demo/package.json | 2 +- examples/eve-demo/CHANGELOG.md | 7 +++ examples/eve-demo/package.json | 2 +- examples/eve-extension-demo/CHANGELOG.md | 7 +++ examples/eve-extension-demo/package.json | 2 +- packages/ai-sdk/CHANGELOG.md | 7 +++ packages/ai-sdk/package.json | 2 +- packages/ai-sdk/src/version.ts | 2 +- packages/eve-extension/CHANGELOG.md | 21 ++++++++ .../eve-extension/extension/lib/version.ts | 2 +- packages/eve-extension/package.json | 2 +- packages/eve/CHANGELOG.md | 52 +++++++++++++++++++ packages/eve/package.json | 2 +- packages/eve/src/version.ts | 2 +- packages/sdk/CHANGELOG.md | 39 ++++++++++++++ packages/sdk/package.json | 2 +- packages/sdk/src/version.ts | 2 +- 21 files changed, 152 insertions(+), 109 deletions(-) delete mode 100644 .changeset/eve-extension-0490-rebuild.md delete mode 100644 .changeset/eve-redis-memory-slots.md delete mode 100644 .changeset/sdk-memory-metadata.md diff --git a/.changeset/eve-extension-0490-rebuild.md b/.changeset/eve-extension-0490-rebuild.md deleted file mode 100644 index 9e8d5ef..0000000 --- a/.changeset/eve-extension-0490-rebuild.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@upstash/agentkit-eve-extension": minor ---- - -fix!: rebuild against eve 0.49.0 and raise the `eve` peer floor to `>=0.48.0` - -No source changed. The extension's `dist` is rebuilt with eve 0.49.0, which re-stamps the manifest's -tool contract 21 → 24 (every other contribution contract is unchanged). eve 0.48.0 is the first -release accepting tool 24, so the `eve` peer moves `">=0.47.0"` → `">=0.48.0"`. - -No 0.47.x works, including 0.47.7 — the tool contract moved twice in three releases (22 → 23 in -0.47.7, 23 → 24 in 0.48.0). On an unsupported eve the mount contributes nothing and `eve build` -fails with `Selected module binding "extensions/agentkit.ts" has no compile or runtime usage.` - -This supersedes the unreleased 0.47.6 rebuild (tool 22, floor `>=0.47.5`), which never shipped. diff --git a/.changeset/eve-redis-memory-slots.md b/.changeset/eve-redis-memory-slots.md deleted file mode 100644 index 70a9bb8..0000000 --- a/.changeset/eve-redis-memory-slots.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -"@upstash/agentkit-eve": minor ---- - -feat(eve): add `@upstash/agentkit-eve/memory` — Upstash Redis behind eve's memory slots - -A new subpath with two integrations for eve's [memory](https://eve.dev/docs/memory) feature -(`agent/memory/.ts`), because eve exposes two different seams: - -- **`redisDocuments()`** — a `MemoryDocumentBackend` for eve's built-in `fileMemory()`, replacing its - Vercel Blob storage: `fileMemory({ backend: redisDocuments() })`. Without a `backend`, - `fileMemory()` only resolves storage under `eve dev` and on Vercel with a Blob store attached. -- **`redisMemory()`** — a full `MemoryProvider` over the SDK's `AgentMemory`: ranked BM25 recall at - `turn.started` / `compaction.completed`, capture at `turn.completed`, and the tools - `__save_memory`, `__search_memory`, `__read_session` and `__forget_memory`, - bound to the slot's locked scope. Where `fileMemory()` replays one curated document, this recalls - the top-K memories relevant to the current turn and needs no tool call to remember anything. - -Both are additive: `defineMemoryRecallTool` / `defineMemorySaveTool` are unchanged and remain the -right choice for model-driven memory with no slot. - -**Requirements.** The subpath imports `eve/memory` and `eve/memory/file` (added in eve 0.45.1 and -0.45.2), so it needs **eve ≥ 0.45.2** — the package's `eve` peer stays `>=0.32.0` because the root -and `./sandbox` entry points still work further back. The `@upstash/redis` peer floor moves to -**`>=1.38.4`**, whose read-your-writes fix `redisDocuments()` relies on. - -**`redisMemory()` options:** `rememberMessages` (default `true`, meaning `"fromUser"`; also `"all"`, -`"fromModel"`, `false`), `maxRecallCharacters` (4000), `maxMemoryCharacters` (2048), plus `topK`, -`minScore`, `prefix`, `indexName`. - -Three behaviours worth knowing before you configure it: - -- **Automatic recall injects saved facts only.** Captured messages share the store but not the - ranking, and are reached on demand through `search_memory` / `read_session`. Otherwise a stored - *"What do you remember?"* outranks real facts on the next identical question. -- **`forget_memory` redacts rather than deletes.** The text is erased and the entry marked deleted, - so it can never be recalled or searched again, but `read_session` renders it as `[redacted]` — a - silent gap invites re-deriving the very thing that was removed. -- **`"all"` and `"fromModel"` do not get `forget_memory`.** Those modes store the assistant's - replies, and a reply confirming a deletion quotes the text it deleted — so erasing something would - write a fresh copy of it. They contribute `save_memory`, `search_memory` and `read_session` only. - -Everything the slot keeps lives in one keyspace of its own (`agentkit:memorySlot`) with `sessionId`, -`source` and `deleted` indexed, so there is no separate transcript store to fall out of sync. -Recalled memories are tagged `session=`, and `read_session` replays that session in order. diff --git a/.changeset/sdk-memory-metadata.md b/.changeset/sdk-memory-metadata.md deleted file mode 100644 index 433de64..0000000 --- a/.changeset/sdk-memory-metadata.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -"@upstash/agentkit-sdk": minor ---- - -feat(sdk): typed indexed metadata on `AgentMemory`, plus `get`/`list`/`count` - -`AgentMemory` accepts a `metadataSchema` of Upstash Search field builders, whose values are supplied -per record as `metadata` and can then be filtered on: - -```ts -const memory = new AgentMemory({ - redis, - prefix: "myapp:memory", // ← its own prefix; see below - metadataSchema: { source: s.string().noTokenize(), deleted: s.boolean() }, -}); - -await memory.add({ text: "…", userId: "u1", metadata: { source: "agent", deleted: false } }); -await memory.recall({ userId: "u1", query: "…", filter: { source: { $eq: "agent" } } }); -``` - -The schema types everything: `metadata` and each `filter` are derived from it, so a wrong operand -type or an undeclared field is a compile error rather than a query that quietly matches nothing. To -narrow a derived type, pass it as a second argument, constrained to the schema: -`new AgentMemory(…)`. - -Also new: `list({ userId, filter, limit })` (filter-first, unranked), `count({ userId, filter })`, -and `get({ userId, id })` — a direct-key read, for when you have an id and a bounded search page -could hide it. - -**Give an extended store its own `prefix`.** A stricter schema pointed at a keyspace that already -holds records written without those fields makes them permanently unreachable: Upstash Search does -not match a missing field against `{$eq: …}` and has no `$ne`. Omitting `metadataSchema` leaves the -store exactly as it was. - -**Behaviour change:** `recall()` no longer falls back to "everything for the user" when a `query` -matches nothing; it returns nothing, since the fallback made a miss indistinguishable from a hit. -Omitting the query is still how you ask for the whole set. This reaches every caller of `recall`, -including the memory tools in `@upstash/agentkit-ai-sdk`, `@upstash/agentkit-eve` and the extension. diff --git a/examples/ai-sdk-demo/CHANGELOG.md b/examples/ai-sdk-demo/CHANGELOG.md index a84d3cd..0ee037c 100644 --- a/examples/ai-sdk-demo/CHANGELOG.md +++ b/examples/ai-sdk-demo/CHANGELOG.md @@ -1,5 +1,13 @@ # ai-sdk-demo +## 0.1.4 + +### Patch Changes + +- Updated dependencies [0117c2e] + - @upstash/agentkit-sdk@0.9.0 + - @upstash/agentkit-ai-sdk@0.9.0 + ## 0.1.3 ### Patch Changes diff --git a/examples/ai-sdk-demo/package.json b/examples/ai-sdk-demo/package.json index 0f762f6..08ef894 100644 --- a/examples/ai-sdk-demo/package.json +++ b/examples/ai-sdk-demo/package.json @@ -1,6 +1,6 @@ { "name": "ai-sdk-demo", - "version": "0.1.3", + "version": "0.1.4", "private": true, "scripts": { "dev": "next dev", diff --git a/examples/eve-demo/CHANGELOG.md b/examples/eve-demo/CHANGELOG.md index 2faff17..ef1188a 100644 --- a/examples/eve-demo/CHANGELOG.md +++ b/examples/eve-demo/CHANGELOG.md @@ -1,5 +1,12 @@ # eve-demo +## 0.0.10 + +### Patch Changes + +- Updated dependencies [0117c2e] + - @upstash/agentkit-eve@0.9.0 + ## 0.0.9 ### Patch Changes diff --git a/examples/eve-demo/package.json b/examples/eve-demo/package.json index 6f379c0..4e894a1 100644 --- a/examples/eve-demo/package.json +++ b/examples/eve-demo/package.json @@ -1,6 +1,6 @@ { "name": "eve-demo", - "version": "0.0.9", + "version": "0.0.10", "private": true, "type": "module", "imports": { diff --git a/examples/eve-extension-demo/CHANGELOG.md b/examples/eve-extension-demo/CHANGELOG.md index 38967ee..ca19b06 100644 --- a/examples/eve-extension-demo/CHANGELOG.md +++ b/examples/eve-extension-demo/CHANGELOG.md @@ -1,5 +1,12 @@ # eve-extension-demo +## 0.0.8 + +### Patch Changes + +- Updated dependencies [35e3d69] + - @upstash/agentkit-eve-extension@0.9.0 + ## 0.0.7 ### Patch Changes diff --git a/examples/eve-extension-demo/package.json b/examples/eve-extension-demo/package.json index bb13fac..9d947e3 100644 --- a/examples/eve-extension-demo/package.json +++ b/examples/eve-extension-demo/package.json @@ -1,6 +1,6 @@ { "name": "eve-extension-demo", - "version": "0.0.7", + "version": "0.0.8", "private": true, "type": "module", "imports": { diff --git a/packages/ai-sdk/CHANGELOG.md b/packages/ai-sdk/CHANGELOG.md index e220f1e..70088f6 100644 --- a/packages/ai-sdk/CHANGELOG.md +++ b/packages/ai-sdk/CHANGELOG.md @@ -1,5 +1,12 @@ # @upstash/agentkit-ai-sdk +## 0.9.0 + +### Patch Changes + +- Updated dependencies [0117c2e] + - @upstash/agentkit-sdk@0.9.0 + ## 0.6.0 ### Minor Changes diff --git a/packages/ai-sdk/package.json b/packages/ai-sdk/package.json index 6a0428f..fb49085 100644 --- a/packages/ai-sdk/package.json +++ b/packages/ai-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@upstash/agentkit-ai-sdk", - "version": "0.6.0", + "version": "0.9.0", "description": "Upstash AgentKit adapter for the Vercel AI SDK: chat history, memory tools, Redis-Search tools, rate limiting, and cached tools.", "license": "MIT", "repository": { diff --git a/packages/ai-sdk/src/version.ts b/packages/ai-sdk/src/version.ts index 3446eaa..a484584 100644 --- a/packages/ai-sdk/src/version.ts +++ b/packages/ai-sdk/src/version.ts @@ -1,2 +1,2 @@ // Generated by scripts/sync-version.mjs (run by `pnpm ci:version`) — do not edit by hand. -export const VERSION = "0.6.0"; +export const VERSION = "0.9.0"; diff --git a/packages/eve-extension/CHANGELOG.md b/packages/eve-extension/CHANGELOG.md index deed87a..3bb60fc 100644 --- a/packages/eve-extension/CHANGELOG.md +++ b/packages/eve-extension/CHANGELOG.md @@ -1,5 +1,26 @@ # @upstash/agentkit-eve-extension +## 0.9.0 + +### Minor Changes + +- 35e3d69: fix!: rebuild against eve 0.49.0 and raise the `eve` peer floor to `>=0.48.0` + + No source changed. The extension's `dist` is rebuilt with eve 0.49.0, which re-stamps the manifest's + tool contract 21 → 24 (every other contribution contract is unchanged). eve 0.48.0 is the first + release accepting tool 24, so the `eve` peer moves `">=0.47.0"` → `">=0.48.0"`. + + No 0.47.x works, including 0.47.7 — the tool contract moved twice in three releases (22 → 23 in + 0.47.7, 23 → 24 in 0.48.0). On an unsupported eve the mount contributes nothing and `eve build` + fails with `Selected module binding "extensions/agentkit.ts" has no compile or runtime usage.` + + This supersedes the unreleased 0.47.6 rebuild (tool 22, floor `>=0.47.5`), which never shipped. + +### Patch Changes + +- Updated dependencies [0117c2e] + - @upstash/agentkit-sdk@0.9.0 + ## 0.8.0 ### Minor Changes diff --git a/packages/eve-extension/extension/lib/version.ts b/packages/eve-extension/extension/lib/version.ts index 5329d94..a484584 100644 --- a/packages/eve-extension/extension/lib/version.ts +++ b/packages/eve-extension/extension/lib/version.ts @@ -1,2 +1,2 @@ // Generated by scripts/sync-version.mjs (run by `pnpm ci:version`) — do not edit by hand. -export const VERSION = "0.8.0"; +export const VERSION = "0.9.0"; diff --git a/packages/eve-extension/package.json b/packages/eve-extension/package.json index 4344b66..0982296 100644 --- a/packages/eve-extension/package.json +++ b/packages/eve-extension/package.json @@ -1,6 +1,6 @@ { "name": "@upstash/agentkit-eve-extension", - "version": "0.8.0", + "version": "0.9.0", "description": "Upstash AgentKit as an eve extension: long-term memory tools, Redis Search tools, and searchable durable chat history on Upstash Redis — mounted with one file.", "license": "MIT", "repository": { diff --git a/packages/eve/CHANGELOG.md b/packages/eve/CHANGELOG.md index bfeaf9b..81889ab 100644 --- a/packages/eve/CHANGELOG.md +++ b/packages/eve/CHANGELOG.md @@ -1,5 +1,57 @@ # @upstash/agentkit-eve +## 0.9.0 + +### Minor Changes + +- 0117c2e: feat(eve): add `@upstash/agentkit-eve/memory` — Upstash Redis behind eve's memory slots + + A new subpath with two integrations for eve's [memory](https://eve.dev/docs/memory) feature + (`agent/memory/.ts`), because eve exposes two different seams: + + - **`redisDocuments()`** — a `MemoryDocumentBackend` for eve's built-in `fileMemory()`, replacing its + Vercel Blob storage: `fileMemory({ backend: redisDocuments() })`. Without a `backend`, + `fileMemory()` only resolves storage under `eve dev` and on Vercel with a Blob store attached. + - **`redisMemory()`** — a full `MemoryProvider` over the SDK's `AgentMemory`: ranked BM25 recall at + `turn.started` / `compaction.completed`, capture at `turn.completed`, and the tools + `__save_memory`, `__search_memory`, `__read_session` and `__forget_memory`, + bound to the slot's locked scope. Where `fileMemory()` replays one curated document, this recalls + the top-K memories relevant to the current turn and needs no tool call to remember anything. + + Both are additive: `defineMemoryRecallTool` / `defineMemorySaveTool` are unchanged and remain the + right choice for model-driven memory with no slot. + + **Requirements.** The subpath imports `eve/memory` and `eve/memory/file` (added in eve 0.45.1 and + 0.45.2), so it needs **eve ≥ 0.45.2** — the package's `eve` peer stays `>=0.32.0` because the root + and `./sandbox` entry points still work further back. The `@upstash/redis` peer floor moves to + **`>=1.38.4`**, whose read-your-writes fix `redisDocuments()` relies on. + + **`redisMemory()` options:** `rememberMessages` (default `true`, meaning `"fromUser"`; also `"all"`, + `"fromModel"`, `false`), `maxRecallCharacters` (4000), `maxMemoryCharacters` (2048), plus `topK`, + `minScore`, `prefix`, `indexName`. + + Three behaviours worth knowing before you configure it: + + - **Automatic recall injects saved facts only.** Captured messages share the store but not the + ranking, and are reached on demand through `search_memory` / `read_session`. Otherwise a stored + _"What do you remember?"_ outranks real facts on the next identical question. + - **`forget_memory` redacts rather than deletes.** The text is erased and the entry marked deleted, + so it can never be recalled or searched again, but `read_session` renders it as `[redacted]` — a + silent gap invites re-deriving the very thing that was removed. + - **`"all"` and `"fromModel"` do not get `forget_memory`.** Those modes store the assistant's + replies, and a reply confirming a deletion quotes the text it deleted — so erasing something would + write a fresh copy of it. They contribute `save_memory`, `search_memory` and `read_session` only. + + Everything the slot keeps lives in one keyspace of its own (`agentkit:memorySlot`) with `sessionId`, + `source` and `deleted` indexed, so there is no separate transcript store to fall out of sync. + Recalled memories are tagged `session=`, and `read_session` replays that session in order. + +### Patch Changes + +- Updated dependencies [0117c2e] + - @upstash/agentkit-sdk@0.9.0 + - @upstash/agentkit-ai-sdk@0.9.0 + ## 0.8.0 ### Minor Changes diff --git a/packages/eve/package.json b/packages/eve/package.json index 3896cd0..9565e42 100644 --- a/packages/eve/package.json +++ b/packages/eve/package.json @@ -1,6 +1,6 @@ { "name": "@upstash/agentkit-eve", - "version": "0.8.0", + "version": "0.9.0", "description": "Upstash AgentKit adapter for the Vercel Eve agent framework: memory tools, an Upstash Redis memory backend and provider for eve memory slots, Redis-Search tools, a rate-limit gate, an Upstash Box sandbox backend, and cached tools.", "license": "MIT", "repository": { diff --git a/packages/eve/src/version.ts b/packages/eve/src/version.ts index 5329d94..a484584 100644 --- a/packages/eve/src/version.ts +++ b/packages/eve/src/version.ts @@ -1,2 +1,2 @@ // Generated by scripts/sync-version.mjs (run by `pnpm ci:version`) — do not edit by hand. -export const VERSION = "0.8.0"; +export const VERSION = "0.9.0"; diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 9c1c164..7b81d8a 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,5 +1,44 @@ # @upstash/agentkit-sdk +## 0.9.0 + +### Minor Changes + +- 0117c2e: feat(sdk): typed indexed metadata on `AgentMemory`, plus `get`/`list`/`count` + + `AgentMemory` accepts a `metadataSchema` of Upstash Search field builders, whose values are supplied + per record as `metadata` and can then be filtered on: + + ```ts + const memory = new AgentMemory({ + redis, + prefix: "myapp:memory", // ← its own prefix; see below + metadataSchema: { source: s.string().noTokenize(), deleted: s.boolean() }, + }); + + await memory.add({ text: "…", userId: "u1", metadata: { source: "agent", deleted: false } }); + await memory.recall({ userId: "u1", query: "…", filter: { source: { $eq: "agent" } } }); + ``` + + The schema types everything: `metadata` and each `filter` are derived from it, so a wrong operand + type or an undeclared field is a compile error rather than a query that quietly matches nothing. To + narrow a derived type, pass it as a second argument, constrained to the schema: + `new AgentMemory(…)`. + + Also new: `list({ userId, filter, limit })` (filter-first, unranked), `count({ userId, filter })`, + and `get({ userId, id })` — a direct-key read, for when you have an id and a bounded search page + could hide it. + + **Give an extended store its own `prefix`.** A stricter schema pointed at a keyspace that already + holds records written without those fields makes them permanently unreachable: Upstash Search does + not match a missing field against `{$eq: …}` and has no `$ne`. Omitting `metadataSchema` leaves the + store exactly as it was. + + **Behaviour change:** `recall()` no longer falls back to "everything for the user" when a `query` + matches nothing; it returns nothing, since the fallback made a miss indistinguishable from a hit. + Omitting the query is still how you ask for the whole set. This reaches every caller of `recall`, + including the memory tools in `@upstash/agentkit-ai-sdk`, `@upstash/agentkit-eve` and the extension. + ## 0.6.0 ### Minor Changes diff --git a/packages/sdk/package.json b/packages/sdk/package.json index a551013..7b2e285 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@upstash/agentkit-sdk", - "version": "0.6.0", + "version": "0.9.0", "description": "Core, framework-agnostic primitives for AI agents on Upstash Redis: chat history, long-term memory, schema-driven search tools (RAG), tool caching, and rate limiting.", "license": "MIT", "repository": { diff --git a/packages/sdk/src/version.ts b/packages/sdk/src/version.ts index 3446eaa..a484584 100644 --- a/packages/sdk/src/version.ts +++ b/packages/sdk/src/version.ts @@ -1,2 +1,2 @@ // Generated by scripts/sync-version.mjs (run by `pnpm ci:version`) — do not edit by hand. -export const VERSION = "0.6.0"; +export const VERSION = "0.9.0";