Critical: These guidelines MUST be followed at all times. Write every user-visible artifact in ASD-STE100 Simplified Technical English, and keep it short. This covers a comment, KDoc, a commit message,…
Rules for this directory and every directory below it. They override the root AGENTS.md. More intellij.java.* modules live outside this tree, under ../plugins/ and ../platform/. This file does not reach…
This document defines machine-readable instructions and technical guardrails for AI coding assistants, agents, and LLMs working on the Filament repository. All AI-generated code, refactorings, and cleanups must strictly adhere to the standardized skills located under the skills/ directory. AI agents must consult and strictly follow the corresponding skill files for each respective development and validation phase:
Agents are experimental. The agent/session/snapshot APIs are NOT covered by semantic-versioning stability and live behind opt-in imports: - Server (agents, sessions, snapshots): package:genkit/experimental.dart (alongside the stable package:genkit/genkit.dart). - Browser/HTTP client (remoteAgent, AgentChat, ...): package:genkit/experimentalclient.dart (alongside package:genkit/client.dart). - dart:io extras (FileSessionStore): package:genkit/experimentalio.dart. The entry points are marked @experimental, so importing them produces an experimentalmemberuse analyzer warning on the import line. Opt out once you accept the churn by adding to analysis_options.yaml: CancellationController / CancellationToken are stable and stay on package:genkit/genkit.dart /…
Experimental / preview API. Agents live in the genkit/exp and ai/exp packages and are gated behind an opt-in. Initialize Genkit with genkit.WithExperimental() or the constructors panic. Import paths and signatures may change in any minor release. An agent is a persistent, multi-turn conversation primitive built on top of prompts + tools. Compared to a bare genkit.Generate loop, an agent adds: Read the file for the level you need: Agents span a few packages. These aliases are used throughout the agent…
Beta / preview API. Agents are not yet stable. Server APIs come from genkit/beta; the browser client comes from genkit/beta/client. Import paths and signatures may change. Always use genkit/beta, not genkit, for agents. Requires genkit >= 1.39.0. An agent is a persistent, multi-turn conversation primitive built on top of prompts + tools. Compared to a bare ai.generate/ai.definePrompt loop, an agent adds: Progressive disclosure — read the file for the level you need: ai.defineAgent combines prompt + tool config + (optional)…
Preview API under genkit.agent. Turn a model + tools into a durable conversation — history, typed state, approvals, branches, and background work. Deeper topics: sessions · HITL · branching · background · state · artifacts · custom · HTTP Options worth knowing: use (middleware), stateschema, maxturns (tool loop depth per user message), transforms. Dotprompt agents: ai.definepromptagent. Full control: definecustomagent. Tool parameters should be a small Pydantic model — even for one field. Empty inputs need an empty subclass, not bare…
Instructions in this file are the source of truth, not existing code. This repo contains legacy patterns (especially in v8 packages) that predate current standards. Never copy patterns from existing…
The words "can you own this?", "are you on it?", and "can you take care of this?" all mean the same thing: you are 100% responsible. The person who handed…
This is a deepsec scanning workspace. Each registered project has its own setup prompt at data/<id>/SETUP.md — open the relevant one when asked to set a project up. - Set…
Welcome to the repository for Pydantic AI, an open source provider-agnostic GenAI agent framework (and LLM library) for Python, maintained by the team behind Pydantic Validation and Pydantic Logfire. Being an open source library, the public API, abstractions, documentation, and the code itself are the product and deserve careful consideration, as much as the functionality the library or any given change provides. This means that when implementing a feature or other change, the "how" is as important as the "what",…
Follow the general documentation guidance. These rules cover published Markdown under docs/. The docs index and repository README tell the same story on two surfaces. Keep their shared wording and code examples synchronized while preserving the markup each renderer needs:
All of docs/AGENTS.md applies. Realtime-specific rules, distilled from maintainer review; the source-tree counterpart is pydantic_ai/realtime/AGENTS.md. Each page owns its concept; a rule is stated once on its owning page and linked from everywhere else: overview.md (front door, provider matrix, limitations table — every limitation row links a tracking issue), audio.md (media I/O: audio, images, transcripts), events.md (event vocabulary and its overlap with standard run events; the turn-boundary rule lives here), turns.md, tools.md (tools only), capabilities.md (per-hook support story), history.md, deployment.md…
Check names are what humans and agents refer to when they talk about CI, so they are descriptive rather than generic. Two reviewers perform the same role — the maintainer-voice standards review, driven by the repo's AGENTS.md and agent_docs/*.md — on different engines and different cadences: They are independent. Neither reads the other's state, and the label suppresses nothing: douwebot is an on-demand deep pass on top of CI Review, requested when a PR warrants a second opinion. Do not…
Durable execution integrations are first-class compatibility targets. Build new integrations on the public pydanticai.durableexec surface. Subclass BaseDurabilityCapability for the agent-facing capability and provide a DurableOperationBackend from getdurableoperation_backend. Do not copy the model, toolset, event, or capability-operation collection machinery into the integration. Choose the backend tier from the engine SDK's execution model: - Subclass CallableOperationBackend when the SDK accepts an async callback at invocation time. Implement execute to run that callback in one named durable unit. The base owns parameter and…