Commit graph

1972 commits

Author SHA1 Message Date
Mahesh Sanikommu
92508cc6d0 fix(tools): treat inherited names as unknown tools in the OpenAI executor
Names like constructor, toString and __proto__ resolved Object.prototype members as schemas and threw on parameters.required, failing the whole tool batch. The schema lookup now uses Object.hasOwn, so they return the usual unknown-function error.
2026-10-12 16:01:33 -07:00
Mahesh Sanikommu
8fdb2d4779 fix(tools): close legacy-ID and blank-argument gaps in 3.1.2
- New claude-memory IDs use a cm_ prefix so they can never match a legacy ID, and a write refuses an ID held by another document.
- rename overwrites an existing destination (including a legacy ID) instead of leaving a stale copy.
- Non-404 lookup failures return an error instead of allowing a write; delete works while content is still processing.
- OpenAI executor rejects blank or missing required arguments, and documentDelete requires a documentId.
- MemoryCommand.path is required again for every command except rename.
2026-10-12 15:05:34 -07:00
Mahesh Sanikommu
8d12b4bee2 fix(tools): adapt community fixes to v5 and release 3.1.2
Ports the #1676 collision fix to v5 with a reversible path ID and a legacy-ID fallback, so files written by 3.1.1 still open and get overwritten in place (also while their content is still processing). Keeps new_str required for str_replace and moves the PR tests onto the v5 mocks.
2026-10-12 14:04:31 -07:00
Aditya kumar singh
85ddb64bfd fix(tools): handle trailing slashes and whitespace in normalizeBaseUrl and addConversation 2026-10-12 13:43:04 -07:00
Aditya kumar singh
a93d85adee fix(tools): escape delimiters in makeTurnKey to prevent cache collision 2026-10-12 13:43:04 -07:00
Agnik47
2604c45653 fix(tools): accept zero-argument OpenAI tool calls and reject non-object args
`getProfile`, `documentList` and `memoryForget` all declare `required: []`,
so a model may legitimately call them with no arguments at all. The OpenAI
API serialises that as `arguments: ""`, and `parseToolArguments` handed the
empty string straight to `JSON.parse`, so every no-argument call came back as

    {"success":false,"error":"Invalid JSON arguments for getProfile"}

Those three tools were unreachable in their documented no-argument form.

The same gate also lets non-object JSON through. `"null"` parses cleanly and
then rejects in the destructuring parameter of every tool function --
`TypeError: Cannot destructure property 'containerTag' of 'object null'` --
which escapes `executeToolCall`, since it has no catch, and fails the whole
request. That is precisely the throw #1488 added this gate to contain. `"5"`
and `"\"text\""` are quieter but worse: they destructure to `undefined` and
call the API with no container tag at all.

Treat blank arguments as `{}`, and require the parsed value to be a non-null,
non-array object. Malformed JSON still returns the tool error #1488 added.

Adds eight regression tests. Six of them fail against the current
implementation -- two on the blank-argument path and four on the non-object
path, one carrying the raw TypeError. The two guard tests, malformed JSON and
an ordinary well-formed call, pass both before and after, so the behaviour
2026-10-12 13:43:04 -07:00
Rikinshah787
0efc7b9d33 fix(tools): handle the memory tool commands Claude actually sends
Three places where ClaudeMemoryTool diverges from the documented
memory_20250818 wire format:

- rename sends old_path/new_path, not path. handleCommand validated
  command.path, so every rename coming from a real model died with
  "Cannot read properties of undefined (reading 'startsWith')".
  path is still accepted as the source for existing callers.
- insert_line means "insert after this line" (0 = top of file), but we
  spliced at insertLine - 1 and rejected 0, so every insert landed one
  line above where Claude asked and inserting at the top was impossible.
- str_replace with new_str omitted is a deletion per the spec; we
  rejected it.

The new tests mock the supermemory client so they run without an API
key. Also fixed the rename example in the docs, which showed the same
path shape the code expected.
2026-10-12 13:43:04 -07:00
Aditya kumar singh
fd837c7e43 fix(tools): prevent customId collisions in claude memory tool (#1547) 2026-10-12 13:43:04 -07:00
Aniruddha Adak
3237107e12 fix(tools): reject parent-directory segments in Claude memory paths 2026-10-12 13:43:04 -07:00
Rohit
432a761a48 fix(tools): align claude-memory insert with memory_20250818 line semantics
Anthropic's memory_20250818 spec defines insert as: insert_text is inserted
AFTER line insert_line, 0 inserts at the beginning of the file, and the valid
range is [0, n_lines]. The implementation treated insert_line as a 1-based
insert-BEFORE index with range [1, n_lines + 1].

Since the caller of this tool is Claude itself, which is trained on the spec
semantics, every model-driven insert landed one line earlier than intended,
insert_line: 0 (insert at top of file) was rejected as invalid, and
insert_line: n_lines (append) inserted before the last line instead of after
it.

Fix the validation range to [0, n_lines], splice at insert_line directly
(0-based insert-after), and update the error and success messages to match.
One existing tool-operations test encoded the old insert-before behavior; its
insert_line is adjusted so its expected output is unchanged under spec
semantics. Adds four regression tests covering top-of-file, middle,
append, and both out-of-range directions.
2026-10-12 13:43:04 -07:00
abhinav7x94
608c380c5a fix(tools): isolate OpenAI middleware clients 2026-10-12 13:43:04 -07:00
Mahesh Sanikommu
8c70ffdc8b
fix(tools): save AI SDK 7 images and keep provider peer optional (3.1.1) (#1796) 2026-10-12 13:39:50 -07:00
Mahesh Sanikommu
4036c7d447
feat(tools): support AI SDK 6 and 7 (3.1.0) (#1794) 2026-10-12 03:47:50 -07:00
Dhravya Shah
a5e84e0676
feat(memory-graph): add opt-in stacked nodes and emphasized connections (#1792)
Some checks failed
Publish Memory Graph / publish (push) Has been cancelled
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-11 14:24:42 -07:00
Dhravya Shah
709723dea6
fix(mcp): expose forget_memory as a separate tool (#1790)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-10 20:30:29 -07:00
Mahesh Sanikommu
552803c018
feat(mcp): move the MCP server to the v5 API and supermemory 5.0 (#1783)
Some checks failed
Publish Agent Framework Python / publish (push) Has been cancelled
2026-10-09 20:19:02 -07:00
Dhravya Shah
2c46964dfa
Migrate Agent Framework integration to Supermemory v5 (#1786)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-09 14:52:36 -07:00
Dhravya Shah
02474bb732
docs: expose feedback in both API reference versions (#1785) 2026-10-08 15:02:38 -07:00
MaheshtheDev
203fb6e482 fix(mcp): keep pre-snake_case tool names as deprecated aliases (#1782)
#1665 renamed getDocument, listSpaces, listDocuments, listMemories and whoAmI to snake_case with no aliases. Clients with a cached tool list (ChatGPT, Codex, Claude) still call the old names and fail 100% of the time (~2k errors from ~300 users in the last 10 days, per PostHog). The old names are now registered again with the same handler and a "Deprecated alias" description. They stay listed because ChatGPT rejects calls to tools missing from tools/list.
2026-10-07 18:51:36 +00:00
MaheshtheDev
3535ff700d docs: one-line migrate tip on every v5 entry point (#1779)
Some checks failed
Publish Agent Framework Python / publish (push) Has been cancelled
Publish AI SDK / publish (push) Has been cancelled
Publish Cartesia SDK Python / publish (push) Has been cancelled
Publish OpenAI SDK Python / publish (push) Has been cancelled
Publish Pipecat SDK Python / publish (push) Has been cancelled
Publish Tools / publish (push) Has been cancelled
New shared snippet with the npx supermemory@latest migrate command, placed on the tools 3.0 guide, the four integration pages, the API reference overview and namespaces page, the ten migration sub pages, and the agents page. The migration guide keeps the command first and folds the paste-in prompt into an accordion; the --prompt variant is gone from the examples.
2026-10-06 21:22:40 +00:00
MaheshtheDev
1e3444a061 docs: move the home page agent prompt and hero samples to v5 (#1776)
The Copy prompt button on the docs home still handed agents the v3/v4 prompt with containerTag and /v3/documents, and the hero code samples used the old call shape. Both now match the console's v5 onboarding prompt and the shipped SDKs, with install hints for the stable 5.x releases and a pointer to the migration guide. The agents page starter prompt drops the rc.5 { namespace, body } description.
2026-10-06 18:53:19 +00:00
sohamd22
58ef43ba5c docs(api): document paginated v5 namespace list (#1769)
Docs for supermemoryai/mono#3420: `GET /namespaces` returns `{namespaces, pagination}` (newest first, `limit` up to 100), and the SDK note now describes `namespaces.list()` and both delete outcomes (`status: "deleted"` / `"queued"`) correctly. Also rewrites the memory GET and batch-result descriptions so they no longer refer to other endpoints.
2026-10-06 17:23:47 +00:00
MaheshtheDev
672defc08b docs: move SDK snippets to the shipped v5 call shape and finish the namespace rename (#1772)
Rewrites 339 TypeScript calls across 50 pages from the rc.5 `method({ namespace, body })` form to the shipped `method(namespace, { ... })` form, and aligns field names with the live v5 spec: `attach` to `include`, `authUrl` to `authorization`, `lastSync` to `latestRun`, `deletedCount` to `count`, and the paginated `namespaces.list()`.

Renames container tags to namespaces across concepts, connectors, integrations and snippets. The namespace pages keep container tag in the description, search keywords and a rename note so old searches still land, and the v3 reference page points at v5.

The migration guide's SDK table now covers both 5.0.0 SDKs, and the SDK integration page uses the real client options (`baseUrl`, `timeoutInSeconds`, `maxRetries`) and error classes.
2026-10-06 17:06:38 +00:00
sohamd22
c03ec843c2 docs(api): document v5 GET memory (#1771)
Docs for supermemoryai/mono#3423: new `GET /ns/{namespace}/memories/{id}` with `include=related,documents` and `relatedLimit`.
2026-10-06 17:06:38 +00:00
sohamd22
ef5a085a76 docs(api): document v5 parameter placement (#1770)
Docs for supermemoryai/mono#3421: ingest `taskType`/`dreaming` move into the JSON body (form fields on file routes, alongside `fileType`/`mimeType`); namespace delete takes `moveTo` as a query param and rejects a body. Adds a "where parameters live" rule to the migration overview.
2026-10-06 17:06:37 +00:00
MaheshtheDev
5c24e67d60 feat(tools)!: @supermemory/tools 3.0 on the v5 API, retire @supermemory/ai-sdk (#1773)
Every integration (AI SDK, OpenAI, Mastra, VoltAgent, Claude memory) now calls v5 through `supermemory@5`. The config takes one `namespace` instead of `containerTags` or `projectId`, and `withSupermemory` takes `namespace` and `id` instead of `containerTag` and `customId`. No aliases. With no config the tools still use `sm_project_default`.

Conversations are stored as one document per conversation keyed by `id` instead of `/v4/conversations`. `memoryForget` drops `reason`; forgetting by text previews with `forgetMatching` and then forgets exact matches by id. Claude memory marks its files with `metadata.source` instead of a second tag. Search keeps the 2.x defaults so results do not shift.

`packages/ai-sdk` is removed: npm already deprecates it in favor of `@supermemory/tools/ai-sdk`, so its CI steps and playground wiring go too. `apps/sdk-playground` moves to the new tools API and v5 routes, including its Python server.

Tested against production: add, search, profile, list and delete. 112 unit tests pass; type errors drop from 148 to 141, none new. The `supermemory` dependency pins the rc until 5.0.0 is published.
2026-10-06 17:03:47 +00:00
sohamd22
10888a94bc docs(api): note related memory ids in v5 search (#1767)
Docs for supermemoryai/mono#3418: related memories in search carry `id`.
2026-10-06 16:48:37 +00:00
sohamd22
3688ffc996 docs(api): document v5 list pagination defaults (#1766)
Docs for supermemoryai/mono#3417: list pagination defaults (`page=1`, `limit=10`, max 100, `sort=createdAt`, `order=desc`) and `include.forgotten` for memory lists. Absorbs #1768.
2026-10-06 16:48:36 +00:00
sohamd22
f0d4b265e5 docs(api): document v5 delete count and search isInference (#1764)
Docs for supermemoryai/mono#3415: delete and batch return `count`; ingest `status` is `queued`/`done` (batch adds `error`, files say `queued`); document `system.status` values; search `isInference` and `included.document.system`; `metadata` never null.
2026-10-06 16:48:36 +00:00
sohamd22
2feccc99fa docs(api): rename v5 attach to include (#1763)
Renames v5 `attach` to `include`. GET routes take one comma-separated `include` query param (`?include=chunks,memories`); search takes every option in the JSON body, with `include` as an object of booleans. Also fixes the `forgotten` description: it does let forgotten memories come back as primary results. Pairs with supermemoryai/mono#3410.
2026-10-06 16:48:36 +00:00
sohamd22
3b84713097 docs(api): add V3/V4 to V5 migration guide (#1691)
Document every migrated workflow, request and response change, typed-filter conversion, verification strategy, and rollout step so agents can upgrade integrations deterministically.
2026-10-06 16:48:36 +00:00
sohamd22
9c1257039e docs(api): add versioned V5 API reference (#1690)
Add Legacy and Latest reference versions, organize the V5 operations by workflow, and introduce focused overview pages backed by the generated V5 OpenAPI document.
2026-10-06 16:48:36 +00:00
Mahesh Sanikommu
7eb40cd15b
fix(python): cap supermemory below 5 in the wrapper packages (#1774) 2026-10-06 09:44:59 -07:00
Dhravya Shah
b25d6e2fae
docs: add llms.txt summary and name SDK tab headings (#1757) 2026-10-06 09:44:12 -07:00
MaheshtheDev
ac21804982 fix(docs): render overview card images through MDX (#1760)
The overview page passed connector/plugin logo paths and card background paths through custom component props. Those dynamic `<img src={...}>` values bypass Mintlify's asset rewriting: the deployed `/docs` page requests `/images/...` from the main website and gets 404s, although the assets exist under `/docs/images/...`.

Declare all seven logos and the eight card background images directly in MDX, with `Tile` and `ArtTile` rendering children instead of dynamic image sources. Keep the existing layout, badges, background positioning, and mirrored artwork. Background images use `noZoom` to preserve the direct-child markup required by the existing blur styles.

Verified with `mintlify validate` and the local Mintlify preview: all seven logos load with HTTP 200 and the background artwork renders with its original blur. The production result still needs verification after Mintlify deploys the change.

![Fixed overview cards in the local Mintlify preview](https://api.capy.ai/pr-assets/P3dvrU9TtebKfP5XM4ccbG4pzAUtdu_HY-GJNbGMCwQ)

<!-- capy-badge:start -->
<a href="https://capy.ai/thread/jam_01M44PHNNK05Y3SVB3NCKNWAXS"><picture><source media="(prefers-color-scheme: dark)" srcset="https://capy.ai/badge/accent-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://capy.ai/badge/accent-light.svg"><img alt="Open in Capy" src="https://capy.ai/badge/accent-light.svg"></picture></a>
<!-- capy-badge:end -->
2026-10-05 00:27:04 +00:00
Dhravya Shah
7cc19fa346
docs: disclose current self-hosted security and telemetry behavior (#1711) 2026-10-03 21:10:09 -07:00
Dhravya Shah
62cc57eda6
fix(auth): upgrade Better Auth to patched 1.7.6 (#1719)
Some checks failed
Publish AI SDK / publish (push) Has been cancelled
Publish Memory Graph / publish (push) Has been cancelled
Publish Tools / publish (push) Has been cancelled
Co-authored-by: Mahesh Sanikommu <maheshthedev@gmail.com>
2026-10-02 17:05:13 -07:00
MaheshtheDev
1245d73b6b fix(mcp): clear out-of-credits error and keep it out of error rate (#1753)
- 402 now tells the agent the org is out of credits and links to console.supermemory.ai/billing (the old message said "memory limit" and pointed at the retired app).

- PostHog MCP analytics tags these calls `$mcp_error_type: out_of_credits` with `$mcp_is_error: false`, so an empty balance no longer inflates the MCP error rate.
2026-10-03 00:02:10 +00:00
Dhravya Shah
7187b538cc
docs: add team invitation guide with console screenshots (#1754) 2026-10-02 16:59:55 -07:00
Anirudh Parmar
b85a1bf9bf
fix(CI): add missing read permission and force color (#1750) 2026-10-02 12:08:14 -07:00
dependabot[bot]
bce2d0dc16
chore(deps): bump better-auth from 1.3.3 to 1.6.22 in /packages/lib (#1741)
Some checks failed
Publish LiveKit SDK Python / publish (push) Has been cancelled
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dhravya <dhravya@supermemory.com>
2026-10-01 17:06:40 -07:00
Dhravya Shah
b36b225375
feat(livekit): add persistent memory for LiveKit Agents (#1702)
Co-authored-by: Ishaan Gupta <ishaankone@gmail.com>
2026-10-01 15:26:35 -07:00
Prasanna
66ce7f8c78
fix docs icons in dark mode (#1735) 2026-09-30 22:00:27 +00:00
Dhravya Shah
79c74f9438
docs: shorten connector sidebar labels (#1734) 2026-09-30 14:45:36 -07:00
Dhravya Shah
ce4facf662
docs: branded OG thumbnails with photo background (#1729)
Some checks failed
Publish OpenAI SDK Python / publish (push) Has been cancelled
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 18:01:29 -07:00
Dhravya Shah
1b958f48c8
docs: explain advanced PDF extraction availability (#1728) 2026-09-29 17:40:50 -07:00
Parthiv
640eeaa8e8
docs: refresh the documentation design (#1715)
Co-authored-by: Dhravya Shah <dhravya@supermemory.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 17:26:13 -07:00
Dhravya Shah
0c74b55693
fix(docs): remove vulnerable ZIP extractor and patch tar via Mintlify (#1727) 2026-09-29 16:59:39 -07:00
Dhravya Shah
83f315fc17
fix(chatapp): patch high severity transitive dependencies (#1723) 2026-09-29 15:28:16 -07:00
Dhravya Shah
e7d7b78d90
fix(mcp): override vulnerable image and HTTP dependencies (#1722) 2026-09-29 15:28:02 -07:00