Skip to main content

How this framework stays current

Vibes is deliberately modeled on Pydantic AI. As Pydantic AI evolves - adding new features, fixing bugs, refining its API - Vibes tracks those changes and ports the relevant ones to TypeScript. This process is automated.

The update pipeline

A GitHub Actions workflow runs every day at 9am UTC. It checks whether a new version of pydantic-ai has been published to PyPI. If one has, and no open issue already exists for that version, it:
  1. Fetches the release notes from the Pydantic AI GitHub release
  2. Diffs the changed files between the old and new tags to identify what actually changed
  3. Highlights the relevant files - agent logic, tool handling, result validators, streaming, MCP, graph - the parts that map to Vibes concepts
  4. Opens a GitHub Issue with the full porting checklist and assigns it to the GitHub Copilot coding agent via GraphQL
  5. Copilot opens exactly one PR referencing the issue, using .claude/vibes-pydantic-porting.md as its porting guide
  6. Merging the PR closes the issue automatically — no manual cleanup needed
You only ever manage one PR. The issue is just the trigger and disappears when the PR is merged. The Copilot agent’s output is always reviewed by a human before merging; complex architectural changes go through a full design review.
The workflow requires a fine-grained PAT stored as VIBES_GH_PAT with Actions, Contents, Issues, and Pull requests read/write permissions scoped to this repository. This is needed because GITHUB_TOKEN cannot assign the Copilot coding agent.

What gets ported

Not everything in a Pydantic AI release is relevant to Vibes. The porting guide categorises each change as:
CategoryAction
New agent framework featurePort to TypeScript - new file in packages/sdk/lib/, exported from mod.ts, documented
Breaking API changeUpdate Vibes equivalent, add migration note to changelog
Bug fixPort if the same bug could exist in Vibes
Python-only concernSkip - noted as “not applicable” in the PR
Dependency / toolingSkip
The Feature Parity table is updated with every porting cycle to reflect current status.

What gets skipped

Some Pydantic AI features have no direct TypeScript equivalent and are intentionally not ported:
  • Python-specific runtime concerns (asyncio internals, __init__.py organisation)
  • Features already covered by the Vercel AI SDK (provider integrations, tokenisation)
  • Pydantic-specific validation patterns (replaced by Zod in Vibes)
These are documented in the Feature Parity table as “Not implemented - skipped by design”.

The porting guide

The file .claude/vibes-pydantic-porting.md in this repository is the canonical reference for how Pydantic AI Python concepts map to Vibes TypeScript equivalents. It covers:
  • Framework structure and file locations
  • How RunContext[Deps] maps to RunContext<TDeps>
  • How Pydantic validators map to Zod schemas
  • Streaming patterns (asyncio generators → AI SDK streams)
  • Testing patterns (TestModel, FunctionModel)
  • MCP, graph workflows, and multi-agent patterns
The Copilot agent and human contributors both use this document when implementing a port.

Tracking a specific release

The currently tracked version of Pydantic AI is stored in .github/pydantic-ai-version.txt. To check what version Vibes is currently aligned with:
cat .github/pydantic-ai-version.txt
To see the full history of porting work, filter GitHub Issues by the pydantic-ai-update label.

Running the workflow manually

The workflow can be triggered manually from the Actions tab using the Run workflow button. This is useful after a manual version bump or to re-run a failed cycle.