Framework adapter matrix¶
Every adapter was run against a real warm-server (Python) or the native Node addon (JS). Python 3.12, one isolated environment per framework (integrations/python/run-matrix.sh). Framework dependency trees conflict, so install exactly one framework extra per environment.
Python (pip install "writerslogic-warm-integrations[<extra>]")¶
| Extra | Adapter docs | Tested version | Verification |
|---|---|---|---|
langchain | langchain | langchain-core 1.6.12 | langchain-tests VectorStore (sync+async) and Retriever suites |
langgraph | langgraph | langgraph 1.2.16, langgraph-checkpoint 4.3.0 | langgraph-checkpoint-conformance 0.0.2, level FULL (81 passed); store checked against InMemoryStore |
llamaindex | llamaindex | llama-index-core 0.14.25 | 21 filter cases against SimpleVectorStore; index, retriever, storage-context, memory round trips |
haystack | haystack | haystack-ai 3.4.0 | haystack.testing.document_store mixins (81 passed, 2 upstream-only skips) |
dspy | dspy | dspy 3.4.1 | real ChainOfThought and ReAct programs on DummyLM |
openai-agents | openai-agents | openai-agents 0.24.0 | real Runner with a scripted model |
pydantic-ai | pydantic-ai | pydantic-ai-slim 2.58.0 | Agent.run with FunctionModel / TestModel |
smolagents | smolagents | smolagents 1.26.0 | CodeAgent and ToolCallingAgent with a scripted model |
litellm | litellm | litellm 1.106.0, mcp 2.3.0 | LiteLLM mock_response / mock_tool_calls loops |
crewai | crewai | crewai 1.15.28 | real Crew.kickoff() with a scripted LLM |
autogen | autogen | autogen-agentchat / core / ext 0.7.5 | real AssistantAgent with a replay client |
ag2 | autogen | ag2 1.1.2 | tool toolkit (AG2 1.x has no memory interface WARM can back) |
semantic-kernel | semantic-kernel | semantic-kernel 1.45.0 | real Kernel.invoke of a search function |
mem0 | mem0 | mem0ai 2.2.1 | one scenario through real mem0 and the shim; result shapes compared |
letta | letta | letta-client 1.12.1 | PassagesResource signatures; tool source executed against the real server |
Not verified anywhere: text_queries=True (the service embeds text itself) needs a server built with --features local-models and model directories; it is covered at the wire level with a mock transport only. A running Letta server was not used.
Limits common to all adapters¶
They come from warm-server (see docs/SERVER.md), and each adapter's page lists how it surfaces them:
- The framework core scans the service's metadata cursor in tenant/collection scope.
listreturns at mostmax_fetchmatching records and accurately reports more matches;forget_wherescans every page. Text retrieval still uses exact id-filtered queries. Framework-specific public enumeration limits remain documented on each adapter page. - Top-level equality filters run in the service. Other operators select document ids from paginated metadata before ranking. Vector-mode recall merges exact cosine results across bounded id groups. Fused text-mode residual queries require at most 1000 eligible records and raise
WarmError(code="filter_limit")beyond that bound; independently normalized fused scores cannot be merged safely.overfetchremains accepted for configuration compatibility. - Residual queries verify
QueryIn.document_idssupport once from OpenAPI and fail withunsupported_capabilityon older servers. Returned rows must belong to the selected ids and collection, or the adapter raisesinvalid_response. Direct equality-only queries retain their existing compatibility. kgreater thanmax_fetchraisesValueErrorinstead of silently truncating.- Scores are cosine similarity in vector mode and a fused rank score in text mode.
- Metadata keys beginning
_warm_are reserved.
JavaScript / TypeScript (integrations/js, npm workspace; Node 26.8, TypeScript 5.9)¶
All packages run against the real native addon (writerslogic-warm), no mocks of WARM.
| Package | Adapter docs | Tested version | Verification |
|---|---|---|---|
@writerslogic/warm-core | js-core | n/a | 19 tests |
@writerslogic/warm-vercel-ai | vercel-ai | ai 7.0.146, zod 4.1 | SDK mock models, real tool loop, streamText |
@writerslogic/warm-mastra | mastra | @mastra/core 1.78.0, @mastra/memory 1.38.0 | 15 contract tests plus a real Agent with semantic recall (Mastra publishes no vector-store test suite) |
@writerslogic/warm-langchain | langchainjs | @langchain/core 1.2.19 | 23 tests mirroring the standard VectorStore behaviors (@langchain/standard-tests is not published on npm) and a real RunnableWithMessageHistory run |
@writerslogic/warm-llamaindex | llamaindex-ts | llamaindex 0.12.1, @llamaindex/core 0.6.22 | 18 tests: VectorStoreIndex, all 13 FilterOperators, KV store vs SimpleKVStore |
@writerslogic/warm-openai-agents | openai-agents-js | @openai/agents 0.20.0, zod 4.6.7 | 11 tests: WarmSession vs MemorySession, real Runner; ordering at 99/100/101/200+ items |