Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
48f6871
sync from container_agent repo
lusu-msft Nov 11, 2025
aef1c47
sync error format
lusu-msft Nov 11, 2025
43a9c44
updated version and changelog
lusu-msft Nov 11, 2025
f33ec9f
refined changelog
lusu-msft Nov 11, 2025
18d38c4
fix build
lusu-msft Nov 11, 2025
963b06d
update id generator
lusu-msft Nov 11, 2025
b970326
fix agentframework trace init
lusu-msft Nov 11, 2025
6fb2f03
update version and changelog
lusu-msft Nov 11, 2025
5a01655
fix pylint
lusu-msft Nov 11, 2025
f30779b
pin azure-ai-agents and azure-ai-projects version
lusu-msft Nov 13, 2025
2ea401f
Merge branch 'main' into lusu/agentserver-1110
lusu-msft Nov 13, 2025
2891cab
Feature Agent Server support tools (#43961)
ganeshyb Nov 13, 2025
b7d7bea
update changelog and version
lusu-msft Nov 13, 2025
52a9256
fix cspell
lusu-msft Nov 13, 2025
ba4e1fc
fix pylint and mypy for -core
lusu-msft Nov 13, 2025
661ecb3
fix agents sdk version
lusu-msft Nov 13, 2025
8ba9f1b
pylint fixes (#44010)
ganeshyb Nov 13, 2025
5bbf605
Merge branch 'main' into lusu/agentserver-1110
lusu-msft Nov 13, 2025
07af6de
Merge branch 'lusu/agentserver-1110' of https://github.com/Azure/azur…
lusu-msft Nov 13, 2025
76f935b
Lint and mypy fixes
ganeshyb Nov 14, 2025
ba7ba50
fix mypy and pylint
lusu-msft Nov 14, 2025
cb15c94
fix mypy
lusu-msft Nov 14, 2025
1259358
[ai-agentserver] Fix AF streaming issue (#44068)
JC-386 Nov 17, 2025
a26603e
Refactor Azure AI Tool Client Configuration and Enhance OAuth Consen…
ganeshyb Nov 17, 2025
9cdf214
Fix function output parse
JC-386 Nov 17, 2025
82e5ce9
Merge branch 'jc/agentserver/af-streaming-fix' into lusu/agentserver-…
JC-386 Nov 17, 2025
9b46eb9
Refactor ToolClient to handle optional schema properties and required…
ganeshyb Nov 17, 2025
f50155a
fix mypy error on AF
JC-386 Nov 17, 2025
b0dcb07
do not index AgentRunContext
lusu-msft Nov 17, 2025
b72be77
Filter tools and update project dependenceis
ganeshyb Nov 17, 2025
c9c5307
Merge branch 'lusu/agentserver-1110' of https://github.com/Azure/azur…
ganeshyb Nov 17, 2025
bee67f7
fixing pylint
lusu-msft Nov 17, 2025
8898d8d
Merge branch 'lusu/agentserver-1110' of https://github.com/Azure/azur…
lusu-msft Nov 17, 2025
cba5fdc
fix build
lusu-msft Nov 17, 2025
b5b2086
fix mypy
lusu-msft Nov 17, 2025
7d42f0d
remove DONE when getting error
JC-386 Nov 17, 2025
dfd1bd1
fix pylint
lusu-msft Nov 17, 2025
c18d494
do not add user oid to tracing
lusu-msft Nov 17, 2025
30b78e9
[AgentServer][Agentframework] update agent framework version (#44102)
lusu-msft Nov 19, 2025
1137076
fix dependency
lusu-msft Nov 20, 2025
b7a2280
[AgentServer] fix build pipelines (#44145)
lusu-msft Nov 22, 2025
c7825d2
feat: Add created_by to responses (#44229)
Jasmin3q Dec 4, 2025
01fbe11
update version (#44285)
Jasmin3q Dec 5, 2025
f9b2cc0
Update changelog for agentserver 1.0.0b7 (#44286)
Jasmin3q Dec 5, 2025
5d8905e
[Agent Server] Fix deploy issue about changelog, mypy and version (#4…
Jasmin3q Dec 5, 2025
a365fe6
[AgentServer] Fix error response in streaming & non-streaming (#44299)
JC-386 Dec 6, 2025
738f1a3
add bugfix log in 1.0.0b7
JC-386 Dec 6, 2025
d30836b
Merge remote-tracking branch 'origin/lusu/agentserver-1110' into lusu…
JC-386 Dec 6, 2025
a2fed8d
disable mindependency
JC-386 Dec 6, 2025
d7a1a93
[AgentServer] Refine error handling (#44302)
JC-386 Dec 9, 2025
8be4d6d
[AgentServer] Add keep alive (#44404)
Jasmin3q Dec 16, 2025
99484aa
[agentserver][langgraph] support human in the loop (#44486)
lusu-msft Jan 7, 2026
4de4598
Merge branch 'main' into lusu/agentserver-1110
lusu-msft Jan 12, 2026
61eeff1
[agentserver][agentframework] support human in the loop (#44560)
lusu-msft Jan 14, 2026
e65bbcd
[agentserver][agentframework] update for AF observability breaking ch…
lusu-msft Jan 14, 2026
1e58922
[AgentServer][agent-frameowork] Add CheckpointRepository and refined …
lusu-msft Jan 19, 2026
d279c58
fixed get state without checkpointer (#44758)
lusu-msft Jan 19, 2026
6efa6a6
[agentserver] Refactor tool api (#44534)
JC-386 Jan 19, 2026
2c5e2c8
[agentserver] Fix linter errors in core & lg pkg (#44760)
JC-386 Jan 21, 2026
7d2f926
Fix context propagate issue in lg + python 3.10
JC-386 Jan 21, 2026
f5d15c2
[AgentServer] subclasses for agent-framework AIAgent and WorkflowAgen…
lusu-msft Jan 21, 2026
a284173
fix async issue in non stream converter
JC-386 Jan 22, 2026
f0deba7
Merge remote-tracking branch 'origin/lusu/agentserver-1110' into lusu…
JC-386 Jan 22, 2026
12bb68a
[AgentServer] fix build (#44796)
lusu-msft Jan 23, 2026
351b677
[AgentServer] update langgraph dependency and readme (#44819)
lusu-msft Jan 23, 2026
cc8ba6e
[agentserver] Add unit tests for tools in core and langgraph packages…
JC-386 Jan 23, 2026
9e96c9c
[agentserver] disable latestdependency for azure-ai-agentserver-core …
lusu-msft Jan 23, 2026
77098f1
fix docstring
lusu-msft Jan 23, 2026
417f598
fix ut in lg
JC-386 Jan 23, 2026
e5f52f0
move uts to uppper level
JC-386 Jan 23, 2026
72c8e32
fix lg uts for py>=3.11
JC-386 Jan 23, 2026
f4b2f8f
avoid breaking change in af
JC-386 Jan 23, 2026
54f97b6
fix samples
lusu-msft Jan 23, 2026
f356999
make agent param in from_langgraph and from_agent_framework position-…
JC-386 Jan 24, 2026
09cc6af
diable mypy for release
lusu-msft Jan 24, 2026
c2aec07
[agentserver] getting ready for release (#44837)
lusu-msft Jan 24, 2026
21174ed
fix af sphinx
lusu-msft Jan 24, 2026
3ac92d6
fix af sphinx
lusu-msft Jan 24, 2026
dee0b30
Mengla/add_af_tool_ut (#44829)
melionel Jan 24, 2026
e27ded6
fix pylint
lusu-msft Jan 24, 2026
9f98d43
Merge branch 'lusu/agentserver-1110' of https://github.com/Azure/azur…
lusu-msft Jan 24, 2026
6ce8fce
disable apistub for lg
lusu-msft Jan 24, 2026
13443f2
fix build
lusu-msft Jan 24, 2026
ff0e557
fix spell, mypy, pylint
JC-386 Jan 24, 2026
39a4b21
remove "from __future__ import annotations" as we support py>=3.10
JC-386 Jan 26, 2026
955031b
fix error introduced by removing "from __future__ import annotations"
JC-386 Jan 27, 2026
01195a5
support implicit item type: item without type field is considered as …
JC-386 Jan 27, 2026
b6c8769
[agentserver] make project endpoint optional (#44856)
JC-386 Jan 27, 2026
4707218
[agentserver] Bump version to 1.0.0b10 (#44858)
JC-386 Jan 27, 2026
c755880
[temp] set "azure-monitor-opentelemetry<1.8.5" in af & lg to re-enabl…
JC-386 Jan 28, 2026
20a9dac
add upper limit "opentelemetry-exporter-otlp-proto-grpc>=1.36.0,<=1.3…
JC-386 Jan 28, 2026
5431355
limit "azure-monitor-opentelemetry>=1.5.0,<1.8.5" in core
JC-386 Jan 28, 2026
52cf1f5
[agentserver] Change conversation id to optional (#44910)
JC-386 Jan 29, 2026
5a21f4d
[agentserver] Create `AGENTS.md`, `PLANNING.md`, `TASK.md` (#44913)
JC-386 Jan 29, 2026
b1c7a9c
[agentserver] Restore previous OTel context in streaming generator (#…
JC-386 Jan 30, 2026
227034b
[agentserver] Attach package metadata to OpenAIResponse.metadata + he…
JC-386 Jan 30, 2026
d799235
docs: add CLAUDE.md shim referencing AGENTS.md (#44984)
iuiaoin Feb 3, 2026
a76fbee
[Hosted Agents] Implement managed checkpoints feature for AgentFramew…
iuiaoin Feb 5, 2026
6ff3669
never leave output as null in response complete event (#45053)
melionel Feb 6, 2026
2b1ddab
Fix: Handle empty schema type in MCP tool manifests (#45051)
ganeshyb Feb 6, 2026
8a9d66c
[Hosted Agents] Implement managed checkpoints feature for Langgraph (…
iuiaoin Feb 6, 2026
cb74c2c
[Hosted Agents] Add foundry checkpoints samples for agentframework an…
iuiaoin Feb 6, 2026
3a5e045
minor improve logging (#45063)
melionel Feb 6, 2026
4cb2c98
Fix: Handle empty schema type in LangGraph tool resolver (#45068)
ganeshyb Feb 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 200 additions & 0 deletions sdk/agentserver/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
# AGENTS.md

This file provides comprehensive guidance to Coding Agents(Codex, Claude Code, GitHub Copilot, etc.) when working with Python code in this repository.


## 🎯 (Read-first) Project Awareness & Context

- **Always read `PLANNING.md`** at the start of a new conversation to understand the project's architecture, goals, style, and constraints.
- **Check `TASK.md`** before starting a new task. If the task isn't listed, add it with a brief description and today's date.

## 🏆 Core Development Philosophy

### KISS (Keep It Simple, Stupid)

Simplicity should be a key goal in design. Choose straightforward solutions over complex ones whenever possible. Simple solutions are easier to understand, maintain, and debug.

### YAGNI (You Aren't Gonna Need It)

Avoid building functionality on speculation. Implement features only when they are needed, not when you anticipate they might be useful in the future.

### Design Principles

- **Dependency Inversion**: High-level modules should not depend on low-level modules. Both should depend on abstractions.
- **Open/Closed Principle**: Software entities should be open for extension but closed for modification.
- **Single Responsibility**: Each function, class, and module should have one clear purpose.
- **Fail Fast**: Check for potential errors early and raise exceptions immediately when issues occur.
- **Encapsulation**: Hide internal state and require all interaction to be performed through an object's methods.

### Implementation Patterns

- **Type-Safe**: Prefer explicit, type‑safe structures (TypedDicts, dataclasses, enums, unions) over Dict, Any, or other untyped containers, unless there is no viable alternative.
- **Explicit validation at boundaries**: Validate inputs and identifiers early; reject malformed descriptors and missing required fields.
- **Separation of resolution and execution**: Keep discovery/selection separate from invocation to allow late binding and interchangeable implementations.
- **Context-aware execution**: Thread request/user context through calls via scoped providers; avoid global mutable state.
- **Cache with safety**: Use bounded TTL caching with concurrency-safe in-flight de-duplication; invalidate on errors.
- **Stable naming and deterministic mapping**: Derive stable, unique names deterministically to avoid collisions.
- **Graceful defaults, loud misconfiguration**: Provide sensible defaults when optional data is missing; raise clear errors when required configuration is absent.
- **Thin integration layers**: Use adapters/middleware to translate between layers without leaking internals.

## ✅ Work Process (required)

- **Before coding**: confirm the task in `TASK.md` → **Now**.
- **While working**: Add new sub-tasks or TODOs discovered during development to `TASK.md` under a "Discovered During Work" section.
- **After finishing**: mark the task done immediately, and note what changed (files/areas) in `TASK.md`.
- **Update CHANGELOG.md only when required** by release policy.

### TASK.md template
```markdown
## Now (active)
- [ ] YYYY-MM-DD — <short task title>
- Scope: <what you will touch / not touch>
- Exit criteria: <tests passing / sample runs / files updated>

## Next (queued)
- [ ] YYYY-MM-DD — <task>

## Discovered During Work
- [ ] YYYY-MM-DD — <follow-up discovered while implementing something else>

## Done
- [x] YYYY-MM-DD — <task completed>
```

## 📎 Style & Conventions & Standards

### File and Function Limits

- **Never create a file longer than 500 lines of code**. If approaching this limit, refactor by splitting into modules.
- **Functions should be under 50 lines** with a single, clear responsibility.
- **Classes should be under 100 lines** and represent a single concept or entity.
- **Organize code into clearly separated modules**, grouped by feature or responsibility.
- **Line length should be max 120 characters**, as enforced by Ruff in `pyproject.toml`.
- **Use the standard repo workflow**: from the package root, run tests and linters via `tox` (for example, `tox -e pytest` or `tox -e pylint`) rather than relying on a custom virtual environment name.
- **Keep modules focused and cohesive**; split by feature responsibility when a file grows large or mixes concerns.
- **Avoid drive-by refactors** unless required by the task.
- **Preserve public API stability** and match existing patterns in the package you touch.

### Naming Conventions

- **Variables and functions**: `snake_case`
- **Classes**: `PascalCase`
- **Constants**: `UPPER_SNAKE_CASE`
- **Private attributes/methods**: `_leading_underscore`
- **Type aliases**: `PascalCase`
- **Enum values**: `UPPER_SNAKE_CASE`

### Project File Conventions

- **Follow per-package `pyproject.toml`** and `[tool.azure-sdk-build]` settings.
- **Do not edit generated code**.
- **Do not edit files with the header** `Code generated by Microsoft (R) Python Code Generator.`
- `sdk/agentserver/azure-ai-agentserver-core/azure/ai/agentserver/core/models/projects/`
- `sdk/agentserver/azure-ai-agentserver-core/azure/ai/agentserver/core/_version.py`
- `sdk/agentserver/azure-ai-agentserver-agentframework/azure/ai/agentserver/agentframework/_version.py`
- `sdk/agentserver/azure-ai-agentserver-langgraph/azure/ai/agentserver/langgraph/_version.py`
- **Do not introduce secrets or credentials.**
- **Do not disable TLS/SSL verification** without explicit approval.
- **Keep logs free of sensitive data.**

### Python Code Standards

- **Follow existing package patterns** and Azure SDK for Python guidelines.
- **Type hints and async patterns** should match existing code.
- **Respect Ruff settings** (line length 120, isort rules) in each package `pyproject.toml`.
- **Avoid new dependencies** unless necessary and approved.

### Docstring Standards
Use reStructuredText (reST) / Sphinx Style docstrings for all public functions, classes, and modules:

```python
def calculate_discount(
price: Decimal,
discount_percent: float,
min_amount: Decimal = Decimal("0.01")
) -> Decimal:
"""Calculate the discounted price for a product.

:param price: The original price of the product.
:type price: Decimal
:param discount_percent: The discount percentage to apply (0-100).
:type discount_percent: float
:param min_amount: The minimum amount after discount (default is 0.01).
:type min_amount: Decimal
:return: The price after applying the discount, not less than min_amount.
:rtype: Decimal
:raises ValueError: If discount_percent is not between 0 and 100.

Example:
Calculate a 15% discount on a $100 product:

.. code-block:: python

calculate_discount(Decimal("100.00"), 15.0)
"""
```

### Error Handling Standards

- Prefer explicit validation at API boundaries and raise errors **as early as possible**.
- Use standard Python exceptions (`ValueError`, `TypeError`, `KeyError`, etc.) when they accurately describe the problem.
- When a domain-specific error is needed, define a clear, documented exception type and reuse it consistently.
- Do **not** silently swallow exceptions. Either handle them meaningfully (with clear recovery behavior) or let them propagate.
- Preserve the original traceback when re-raising (`raise` without arguments) so issues remain diagnosable.
- Fail fast on programmer errors (e.g., inconsistent state, impossible branches) using assertions or explicit exceptions.
- For public APIs, validate user input and return helpful, actionable messages without leaking secrets or internal implementation details.

#### Exception Best Practices

- Avoid `except Exception:` and **never** use bare `except:`; always catch the most specific exception type possible.
- Keep `try` blocks **small** and focused so that it is clear which statements may raise the handled exception.
- When adding context to an error, use either `raise NewError("message") from exc` or log the context and re-raise with `raise`.
- Do not use exceptions for normal control flow; reserve them for truly exceptional or error conditions.
- When a function can raise non-obvious exceptions, document them in the docstring under a `:raises:` section.
- In asynchronous code, make sure exceptions are not lost in background tasks; gather and handle them explicitly where needed.

### Logging Standards

- Use the standard library `logging` module for all diagnostic output; **do not** use `print` in library or service code.
- Create a module-level logger via `logger = logging.getLogger(__name__)` and use it consistently within that module.
- Choose log levels appropriately:
- `logger.debug(...)` for detailed diagnostics and tracing.
- `logger.info(...)` for high-level lifecycle events (startup, shutdown, major state changes).
- `logger.warning(...)` for recoverable issues or unexpected-but-tolerated conditions.
- `logger.error(...)` for failures where the current operation cannot succeed.
- `logger.critical(...)` for unrecoverable conditions affecting process health.
- Never log secrets, credentials, access tokens, full connection strings, or sensitive customer data.
- When logging exceptions, prefer `logger.exception("message")` inside an `except` block so the traceback is included.
- Keep log messages clear and structured (include identifiers like request IDs, resource names, or correlation IDs when available).
## ⚠️ Important Notes

- **NEVER ASSUME OR GUESS** - When in doubt, ask for clarification
- **Always verify file paths and module names** before use
- **Keep this file (`AGENTS.md`) updated** when adding new patterns or dependencies
- **Test your code** - No feature is complete without tests
- **Document your decisions** - Future developers (including yourself) will thank you

## 📚 Documentation & Explainability

- **Keep samples runnable** and focused on SDK usage.
- **Follow third-party dependency guidance** in `CONTRIBUTING.md`.

## 🛠️ Development Environment

### ✅ Testing & Quality Gates (tox)

Run from a package root (e.g., `sdk/agentserver/azure-ai-agentserver-core`).

- `tox run -e sphinx -c ../../../eng/tox/tox.ini --root .`
- Docs output: `.tox/sphinx/tmp/dist/site/index.html`
- `tox run -e pylint -c ../../../eng/tox/tox.ini --root .`
- Uses repo `pylintrc`; `next-pylint` uses `eng/pylintrc`
- `tox run -e mypy -c ../../../eng/tox/tox.ini --root .`
- `tox run -e pyright -c ../../../eng/tox/tox.ini --root .`
- `tox run -e verifytypes -c ../../../eng/tox/tox.ini --root .`
- `tox run -e whl -c ../../../eng/tox/tox.ini --root .`
- `tox run -e sdist -c ../../../eng/tox/tox.ini --root .`
- `tox run -e samples -c ../../../eng/tox/tox.ini --root .` (runs all samples)
- `tox run -e apistub -c ../../../eng/tox/tox.ini --root .`

Check each package `pyproject.toml` under `[tool.azure-sdk-build]` to see which checks are enabled/disabled.
1 change: 1 addition & 0 deletions sdk/agentserver/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
100 changes: 100 additions & 0 deletions sdk/agentserver/PLANNING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# 🧭 PLANNING.md

## 🎯 What this project is
AgentServer is a set of Python packages under `sdk/agentserver` that host agents for
Azure AI Foundry. The core package provides the runtime/server, tooling runtime, and
Responses API models, while the adapter packages wrap popular frameworks. The primary
users are SDK consumers who want to run agents locally and deploy them as Foundry-hosted
containers. Work is “done” when adapters faithfully translate framework execution into
Responses API-compatible outputs and the packages pass their expected tests and samples.

**Behavioral/policy rules live in `AGENTS.md`.** This document is architecture + repo map + doc index.

## 🎯 Goals / Non-goals
Goals:
- Keep a stable architecture snapshot and repo map for fast onboarding.
- Document key request/response flows, including streaming.
- Clarify the development workflow and testing expectations for AgentServer packages.

Non-goals:
- Detailed API documentation (belongs in package docs and docstrings).
- Per-initiative plans (belong in `TASK.md` or a dedicated plan file).
- Speculative refactors (align with KISS/YAGNI in `AGENTS.md`).

## 🧩 Architecture (snapshot)
### 🏗️ Project Structure
- **azure-ai-agentserver-core**: Core library
- Runtime/context
- HTTP gateway
- Foundry integrations
- Responses API protocol (current)
- **azure-ai-agentserver-agentframework**: adapters for Agent Framework agents/workflows,
thread and checkpoint persistence.
- **azure-ai-agentserver-langgraph**: adapter and converters for LangGraph agents and
Response API events.

### Current vs target
- Current: OpenAI Responses API protocol lives in `azure-ai-agentserver-core` alongside
core runtime and HTTP gateway code; framework adapters layer on top.
- Target (planned, not fully implemented):
- Core layer: app/runtime/context, foundry integrations (tools, checkpointing), HTTP gateway
- Protocol layer: Responses API in its own package
- Framework layer: adapters (agentframework, langgraph, other frameworks)

### Key flows
- Request path: `/runs` or `/responses` → `AgentRunContext` → agent execution → Responses
API payload.
- Streaming path: generator/async generator → SSE event stream.
- Framework adapter path: framework input → converter → Response API output (streaming
or non-streaming).
- Tools path: Foundry tool runtime invoked via core `tools/runtime` APIs.

## 🗺️ Repo map
- `azure-ai-agentserver-core`: Core library (runtime/context, HTTP gateway, Foundry integrations,
Responses API protocol today).
- `azure-ai-agentserver-agentframework`: Agent Framework adapter.
- `azure-ai-agentserver-langgraph`: LangGraph adapter.
- Core runtime and models: `azure-ai-agentserver-core/azure/ai/agentserver/core/`
- Agent Framework adapter: `azure-ai-agentserver-agentframework/azure/ai/agentserver/agentframework/`
- LangGraph adapter: `azure-ai-agentserver-langgraph/azure/ai/agentserver/langgraph/`
- Samples: `azure-ai-agentserver-*/samples/`
- Tests: `azure-ai-agentserver-*/tests/`
- Package docs (Sphinx inputs): `azure-ai-agentserver-*/doc/`
- Repo-wide guidance: `CONTRIBUTING.md`, `doc/dev/tests.md`, `doc/eng_sys_checks.md`

## 📚 Doc index
### **Read repo-wide guidance**:
- `CONTRIBUTING.md`
- `doc/dev/tests.md`
- `doc/eng_sys_checks.md`

### **Read the package READMEs**:
- `sdk/agentserver/azure-ai-agentserver-core/README.md`
- `sdk/agentserver/azure-ai-agentserver-agentframework/README.md`
- `sdk/agentserver/azure-ai-agentserver-langgraph/README.md`

### “If you need X, look at Y”
- Enable/disable checks for a package → that package `pyproject.toml` → `[tool.azure-sdk-build]`
- How to run tests / live-recorded tests → `doc/dev/tests.md`
- Engineering system checks / gates → `doc/eng_sys_checks.md`
- Adapter conversion behavior → the relevant adapter package + its tests + samples

## ✅ Testing strategy
- Unit/integration tests live in each package’s `tests/` directory.
- Samples are part of validation via the `samples` tox environment.
- For live/recorded testing patterns, follow `doc/dev/tests.md`.

## 🚀 Rollout / migrations
- Preserve public API stability and follow Azure SDK release policy.
- Do not modify generated code (see paths in `AGENTS.md`).
- CI checks are controlled per package in `pyproject.toml` under
`[tool.azure-sdk-build]`.

## ⚠️ Risks / edge cases
- Streaming event ordering and keep-alive behavior.
- Credential handling (async credentials and adapters).
- Response API schema compatibility across adapters.
- Tool invocation failures and error surfacing.

## 📌 Progress
See `TASK.md` for active work items; no checklists here.
27 changes: 27 additions & 0 deletions sdk/agentserver/TASK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# TASK.md

## Now (active)

## Done

- [x] 2026-02-06 — Add README files for Foundry checkpoint samples
- Files: `azure-ai-agentserver-agentframework/samples/workflow_with_foundry_checkpoints/README.md`,
`azure-ai-agentserver-langgraph/samples/simple_agent_with_foundry_checkpointer/README.md`
- Updated setup/run/request docs, added missing LangGraph sample README, and corrected `.env` setup guidance.

- [x] 2026-02-04 — Implement managed checkpoints feature
- Files: core/checkpoints/ (new), agentframework/persistence/_foundry_checkpoint_*.py (new),
agentframework/__init__.py (modified)
- Added: FoundryCheckpointClient, FoundryCheckpointStorage, FoundryCheckpointRepository
- Modified: from_agent_framework() with managed_checkpoints, foundry_endpoint, project_id params

- [x] 2026-01-30 — Attach agent server metadata to OpenAIResponse.metadata + header
- Files: azure-ai-agentserver-core/azure/ai/agentserver/core/application/_metadata.py,
azure-ai-agentserver-core/azure/ai/agentserver/core/application/__init__.py,
azure-ai-agentserver-core/azure/ai/agentserver/core/server/_response_metadata.py,
azure-ai-agentserver-core/azure/ai/agentserver/core/tools/client/_configuration.py,
azure-ai-agentserver-core/tests/unit_tests/server/test_response_metadata.py
- [x] 2026-01-30 — Restore previous OTel context in streaming generator
- Files: azure-ai-agentserver-core/azure/ai/agentserver/core/server/base.py,
azure-ai-agentserver-core/tests/unit_tests/server/test_otel_context.py
- [x] 2026-01-29 — Create `AGENTS.md`, `PLANNING.md`, `TASK.md`.
Loading
Loading