This PR: - adds a clean consumer harness that packs core, its internal JSON Schema dependency, and all ten TypeScript providers - verifies tarball contents, npm installation, named public exports, consumer typechecking, provider construction, and a credential-free `wrapTool` conversion - covers the current workspace core, one verified minimum-core lane per provider, and the packed workspace core presented as `1.0.0-beta.0` - preserves existing 0.x minimum peer ranges while recording the verified floors separately for the future breaking release - additively accepts core 1.0 prereleases without claiming stable 1.x support yet - widens the Anthropic and OpenAI Agents peer ranges to include the upstream versions already used by this repository - runs the gate in TypeScript CI and immediately before Changesets publishing The release guard fails before publication and its regression test verifies build -> compatibility -> publish ordering plus failure propagation. ## Non-breaking scope No public API is removed or renamed, and the existing 0.x core peer floors remain unchanged. All peer-range changes are additive. The gate reports the nine floor corrections that should be made with the planned breaking release. ## Validation - `pnpm run check:provider-compatibility` (12 packed consumer lanes) - `pnpm run test:provider-compatibility` - `pnpm run test:release-workflow` - `pnpm run build:packages` (19 packages) - focused TypeScript compile and Oxlint checks - Prettier, Changesets validation, and `git diff --check`
@composio/vercel
Composio provider for the Vercel AI SDK (ai). It converts Composio tools into the AI SDK's tool format with built-in execution: each wrapped tool carries its own execute function, so the AI SDK runs tool calls for you without a manual agentic loop.
Installation
npm install @composio/core @composio/vercel ai @ai-sdk/anthropic
@ai-sdk/anthropic powers the example below; swap in any AI SDK model package.
Set two environment variables:
COMPOSIO_API_KEYfrom the Composio dashboardANTHROPIC_API_KEYfrom Anthropic (or the key for your chosen model provider)
Quickstart
Create a session for your user, pass its tools to the AI SDK, and cap the run with stopWhen:
import { anthropic } from '@ai-sdk/anthropic';
import { Composio } from '@composio/core';
import { VercelProvider } from '@composio/vercel';
import { generateText, stepCountIs } from 'ai';
const composio = new Composio({ provider: new VercelProvider() });
// Each session is scoped to one of your users
const session = await composio.create('user_123');
const tools = await session.tools();
const { text } = await generateText({
model: anthropic('claude-sonnet-4-6'),
tools,
prompt: 'Summarize my emails from today',
stopWhen: stepCountIs(10),
});
console.log(text);
For multi-turn conversations, store session.sessionId and reuse it with composio.use(sessionId) instead of creating a new session each turn.
Strict mode
Some models reject tool schemas that contain optional parameters. Pass strict: true to normalize each tool's input schema for OpenAI structured outputs before it reaches the AI SDK: every object lists all of its properties in required and is closed, and optional properties stay available but accept null. A null is dropped before the tool runs unless the tool's own schema accepts null for that parameter, so nullable fields still receive an explicit null. Tools whose schema cannot be expressed in strict mode, such as objects that accept arbitrary keys, allOf, prefixItems, or unresolved $refs, keep their original schema and log a warning:
const composio = new Composio({ provider: new VercelProvider({ strict: true }) });