Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
5da12d4
create starlette package (#45754)
lusu-msft Mar 17, 2026
57c63a3
Lusu/response 0317 (#45757)
lusu-msft Mar 17, 2026
df45208
Lusu/response 0317 rename (#45764)
lusu-msft Mar 18, 2026
3d93cf2
response server apis (#45807)
lusu-msft Mar 19, 2026
682afbc
remove old path
lusu-msft Mar 19, 2026
11f7747
add samples
lusu-msft Mar 19, 2026
9d03cf8
update pyproject
lusu-msft Mar 19, 2026
e040678
refining host
lusu-msft Mar 20, 2026
89e351e
refined builders and hosting
lusu-msft Mar 20, 2026
f8c8cec
refined package structur
lusu-msft Mar 20, 2026
ee6ee6b
remove unused code
lusu-msft Mar 20, 2026
d787997
add keep alive
lusu-msft Mar 20, 2026
8559738
fix minors
lusu-msft Mar 20, 2026
6b0bf7c
fix pytests
lusu-msft Mar 20, 2026
490a8ef
add file headers
lusu-msft Mar 20, 2026
d4c2800
add docstring for hosting
lusu-msft Mar 20, 2026
b4b290c
add conftest
lusu-msft Mar 20, 2026
93128da
add docstring
lusu-msft Mar 20, 2026
84592d6
exclude scripts
lusu-msft Mar 20, 2026
2d56d1b
add dev_requirement
lusu-msft Mar 20, 2026
d6efaf7
fix build
lusu-msft Mar 20, 2026
bc7ee65
fix build
lusu-msft Mar 22, 2026
d4acc08
fix generate models
lusu-msft Mar 23, 2026
1174338
fix pylint build
lusu-msft Mar 23, 2026
a44525d
add ResponseIncompleteReason
lusu-msft Mar 23, 2026
a98b3ea
refined stream
lusu-msft Mar 23, 2026
594728b
fix mypy
lusu-msft Mar 23, 2026
5afc89f
add ci
lusu-msft Mar 23, 2026
1c72226
fix build
lusu-msft Mar 23, 2026
0c68c5a
fix keyword
lusu-msft Mar 23, 2026
90c1a9b
fix stream with background
lusu-msft Mar 23, 2026
55ddab6
ensure all contract cases covered
lusu-msft Mar 23, 2026
534a435
refined _rounting.py
lusu-msft Mar 24, 2026
9000a31
fix stream payload
lusu-msft Mar 24, 2026
9fc9e17
fix pylint
lusu-msft Mar 24, 2026
8f6525c
fix build
lusu-msft Mar 24, 2026
831f6cf
refining orchestrator
lusu-msft Mar 24, 2026
fb0407c
refining storing
lusu-msft Mar 24, 2026
7395b71
add foundry storage provider
lusu-msft Mar 25, 2026
48ac861
update response handler to decorator
lusu-msft Mar 25, 2026
5d5fabf
remove dataclass
lusu-msft Mar 25, 2026
36d234a
fix build
lusu-msft Mar 25, 2026
cb3098b
fix sphinx
lusu-msft Mar 25, 2026
d015835
try fix langchain-azure-ai version
lusu-msft Mar 25, 2026
c0db1d8
Merge branch 'main' into agentserver/invoke-reponses
lusu-msft Mar 25, 2026
5556989
Add agent server hosting and invocation packages (#45916)
zhiyong-gayang Mar 25, 2026
923e18d
Refactor responses package to leverage hosting for server hosting and…
zhiyong-gayang Mar 25, 2026
4bd38ab
[agentserver-responses] refining response orchestration (#45923)
lusu-msft Mar 26, 2026
f29f8bb
[agentserver][responses] fix replay stuck (#45930)
lusu-msft Mar 26, 2026
ec36581
Lusu/response refining (#45936)
lusu-msft Mar 26, 2026
69e3c20
Lusu/response refining (#45944)
lusu-msft Mar 26, 2026
342b0b9
rename -hosting to -core (#45946)
lusu-msft Mar 26, 2026
fcab75c
rename AgentHost (#45948)
lusu-msft Mar 26, 2026
637a5d0
Merge branch 'main' into agentserver/invoke-reponses
lusu-msft Mar 26, 2026
e5cc1a4
Remove redundant default_fetch_history_count_value from ResponsesServ…
Copilot Mar 26, 2026
63c15c2
remove old -af and -lg from ci
lusu-msft Mar 26, 2026
c36ec43
Merge branch 'agentserver/invoke-reponses' of https://github.com/Azur…
lusu-msft Mar 26, 2026
85351f9
fix multiprotocol sample
lusu-msft Mar 26, 2026
ed26075
address PR #45925 review comments for -core and -invocations
zhiyong-gayang Mar 27, 2026
77c2558
add streaming and multi-turn invocation samples aligned to .NET
zhiyong-gayang Mar 27, 2026
7445ddd
add FoundryEnrichmentSpanProcessor to enrich all spans with agent ide…
zhiyong-gayang Mar 28, 2026
0fe56bb
resolving comments
lusu-msft Mar 28, 2026
5042838
Merge branch 'agentserver/invoke-reponses' of https://github.com/Azur…
lusu-msft Mar 28, 2026
f4be95c
[agentserver] remove nested methods in samples (#45977)
lusu-msft Mar 28, 2026
22d12ed
fix apistub
lusu-msft Mar 28, 2026
e883b7e
update typespec and generated models
lusu-msft Mar 30, 2026
eba760c
fix helper
lusu-msft Mar 30, 2026
146d738
remove output_message
lusu-msft Mar 30, 2026
d5e6e3d
rename health endpoint from /healthy to /readiness
zhiyong-gayang Mar 30, 2026
f5f5006
update otel (#46003)
lusu-msft Mar 30, 2026
4a03dda
add _on_ending method to FoundryEnrichmentSpanProcessor
zhiyong-gayang Mar 31, 2026
9ca93b5
Implement S-047 (x-agent-response-id header) and S-048 (agent_session…
Copilot Mar 31, 2026
3565ea2
Add unit tests for S-047 (Response ID Resolution) and S-048 (Session …
Copilot Mar 31, 2026
89168b1
Add CHANGELOG.md, set __version__, remove wildcard import, fix README…
Copilot Mar 31, 2026
af21b19
Address code review feedback: clean up test, add comment for partitio…
Copilot Mar 31, 2026
236f125
[response] update validator and minor fix (#46029)
lusu-msft Mar 31, 2026
e56d46c
deleted MAF and langchain adapter
Apr 1, 2026
8c0da79
fixed broken tests
Apr 1, 2026
a34ff41
Replace static-method classes with module-level functions and add tra…
Apr 1, 2026
0993b68
Replace raw httpx with azure.core.AsyncPipelineClient in Foundry prov…
Apr 1, 2026
d1089da
Replace getattr(request, 'model', None) with request.model in README
Apr 1, 2026
42e88b0
Remove azure-ai-agentserver-responses from this PR
Apr 1, 2026
11251af
Revert "Remove azure-ai-agentserver-responses from this PR"
Apr 1, 2026
3478a29
Merge branch 'main' into agentserver/invoke-reponses
Apr 1, 2026
e9aee07
Restore azure-ai-agentserver-agentframework and azure-ai-agentserver-…
Apr 1, 2026
5950ed5
Fix invoke_agent span parenting so framework child spans nest correct…
singankit Apr 2, 2026
8c186a1
Fix/responses span parenting (#46068)
singankit Apr 2, 2026
3e850af
added dev status inactive classifier
Apr 2, 2026
2a430bf
Merge branch 'agentserver/invoke-reponses' into agentserver/responses
Apr 2, 2026
01e6eac
Merge branch 'agentserver/responses' of https://github.com/Azure/azur…
Apr 2, 2026
a8938f4
Address pvaneck review comments from PR #45925
Apr 4, 2026
4b41b22
Fix CHANGELOGs: add 1.0.0b1 history to core, keep invocations at 1.0.0b1
Apr 4, 2026
e08455a
Refactor TracingHelper class → module functions + host method
Apr 4, 2026
f98a107
Update core sample to use new tracing API (self.request_span)
Apr 4, 2026
79e08a1
Remove get_logger() — use logging.getLogger directly
Apr 4, 2026
93e2fc6
Make OTel a primary dependency, remove _HAS_OTEL guard
Apr 4, 2026
3d10d8d
Update sdk/agentserver/azure-ai-agentserver-invocations/tests/test_tr…
ankitbko Apr 4, 2026
c8672e4
Update sdk/agentserver/azure-ai-agentserver-invocations/tests/test_tr…
ankitbko Apr 4, 2026
dc373bc
Update sdk/agentserver/azure-ai-agentserver-core/azure/ai/agentserver…
ankitbko Apr 4, 2026
3dc7d03
removed redundant packages
Apr 4, 2026
3709bfc
Address PR review: expose tracing functions publicly, fix imports, up…
Apr 4, 2026
1c24a6a
Merge branch 'agentserver/invoke' of https://github.com/Azure/azure-s…
Apr 4, 2026
08add53
Spec compliance: platform header, tracer scope, error attrs, baggage,…
Apr 4, 2026
15a2f21
Spec compliance: baggage keys, SSE keep-alive, structured logging, SI…
Apr 4, 2026
680f6a0
Fix PR review: contextvars for logging, SIGTERM restore, deduplicate …
Apr 5, 2026
973a32b
Move azure-monitor-opentelemetry-exporter to optional dep
Apr 5, 2026
32f9463
Revert "Move azure-monitor-opentelemetry-exporter to optional dep"
Apr 5, 2026
15aa0c5
Add azure-monitor-opentelemetry-exporter to CI Artifacts
Apr 5, 2026
cc02fb9
Fix PR comments: log filter comment, tracing docstring, changelog bag…
Apr 5, 2026
6f6cc45
Revert "Add azure-monitor-opentelemetry-exporter to CI Artifacts"
Apr 5, 2026
7fb8b8e
Fix PR comments: keepalive shield, SIGTERM comment, docstring, thread…
Apr 5, 2026
4fa8ee7
Fix: duplicate imports, sanitize IDs in get/cancel endpoints, copilot…
Apr 5, 2026
c768837
Merge branch 'main' into agentserver/responses
Apr 5, 2026
34cfb5c
undo unintentional changes during merge
Apr 5, 2026
7febfb8
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 5, 2026
075b6ef
Migrate responses package to mixin inheritance pattern
Apr 5, 2026
b80e734
Spec compliance: baggage propagator, x-request-id baggage, baggage-to…
Apr 5, 2026
aa37672
Wave 1: Convert data containers to @dataclass
Apr 5, 2026
4229ec3
Wave 2: Remove _async suffix from all methods
Apr 5, 2026
0fd55cd
Wave 3: Collapse _http_errors.py into _validation.py
Apr 5, 2026
9527953
Wave 4: Fix tracing tags, add baggage and structured log scope
Apr 5, 2026
7241a93
Waves 3+5: Hosting simplification and spec behavioral fixes
Apr 5, 2026
1d912fc
Wave 5+6: Background immediate return + generator event helpers
Apr 5, 2026
1c4273a
Wave 7: Rewrite samples with generator API + add generator tests
Apr 5, 2026
5fea569
Fix import ordering: stdlib → third-party → local per ruff/isort
Apr 5, 2026
0fceb0f
Wave A: InMemoryProvider cleanup
Apr 5, 2026
c46ca64
Wave B: Convert state machine to incremental O(1) validator
Apr 5, 2026
ebe8f62
Wave C: Orchestrator simplification
Apr 5, 2026
8fa57a6
Fix _BaggageLogRecordProcessor: rename emit → on_emit per OTel SDK API
Apr 5, 2026
bdeb610
Simplify event normalization pipeline
Apr 6, 2026
8d3b4f1
Gap fixes Wave 1: 9 quick spec compliance fixes
Apr 6, 2026
1161b52
Gap fixes Wave 2: 8 medium spec compliance fixes
Apr 6, 2026
d4db77a
Gap fixes Wave 3: 4 larger spec compliance fixes
Apr 6, 2026
e0e153b
Add AgentConfig dataclass on app.config, replace Constants
Apr 6, 2026
fe2d67e
Set service.name to agent_name, add operation_name to get/cancel spans
Apr 6, 2026
2df3257
added responses sdk to ci
Apr 6, 2026
ab28e30
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 6, 2026
da86e74
Enforce strict event lifecycle validation on live handler streams
Apr 6, 2026
eaf54e0
Enforce strict event lifecycle validation on live handler streams
Apr 6, 2026
2c349e2
Suppress noisy Azure SDK and OTel exporter INFO logs
Apr 6, 2026
f182c38
Set cloud_RoleName to agent name via OTel Resource service.name
Apr 6, 2026
cbe4d09
Use _config._ENV_FOUNDRY_AGENT_NAME instead of hardcoded string
Apr 6, 2026
5c9f4da
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 6, 2026
f5a7056
Add async generator variants for ResponseEventStream
Apr 6, 2026
499c396
Fix 5 remaining spec gaps from verification report
Apr 6, 2026
350d3ba
agentserver/responses: convenience API overhaul, MCP status fix, isol…
RaviPidaparthi Apr 7, 2026
c3a3c50
Add scenario samples 1-6 + 12 E2E tests (parity with .NET)
Apr 7, 2026
1d47b61
Add scenario samples 7-11 + 9 E2E tests + missing constructs doc
Apr 7, 2026
c96b5fd
fix(core): add flush_spans() to drain BatchSpanProcessor before sandb…
nagkumar91 Apr 7, 2026
b124a3a
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 7, 2026
ff3169f
Rewrite samples 10-11 + add proxy E2E tests (matching .NET)
Apr 7, 2026
3cff549
Update sdk/agentserver/azure-ai-agentserver-core/azure/ai/agentserver…
ankitbko Apr 7, 2026
b8f3b00
Update sdk/agentserver/azure-ai-agentserver-core/azure/ai/agentserver…
ankitbko Apr 7, 2026
925b491
fix: flush pending spans before HTTP response to prevent loss in host…
nagkumar91 Apr 7, 2026
047e4b3
fix(agentserver-core): move agent identity attrs to _on_ending in Fou…
needuv Apr 7, 2026
dc7f2a5
fix: update type imports and add missing method return type annotation
Apr 7, 2026
1cbf3ba
Merge branch 'agentserver/invoke' of https://github.com/Azure/azure-s…
Apr 7, 2026
328969a
OpenAI wire compliance: fix discriminator, temperature/top_p, and uni…
RaviPidaparthi Apr 8, 2026
009bc3c
removed dataclass
Apr 8, 2026
1530a71
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 8, 2026
bc4f8b1
Fix cspell errors: coro→coroutine, reraises→re_raises, sess→session
Apr 8, 2026
141fe94
Fix mypy: add type ignore for _BaggageLogRecordProcessor arg-type
Apr 8, 2026
2334b1f
Fix pylint docstrings: add types, keyword args, rtype, unused arg prefix
Apr 8, 2026
82175c6
.NET protocol parity: contract tests, implementation gaps, and lint c…
RaviPidaparthi Apr 8, 2026
b80cb68
Bump minimum opentelemetry version to 1.33.0
Apr 8, 2026
dc6e645
Bump opentelemetry dependencies to version 1.40.0
Apr 8, 2026
1c20a92
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 8, 2026
ee5891f
responses: TextResponse, get_input_expanded returns Item, configurabl…
RaviPidaparthi Apr 8, 2026
ad1be26
Bump opentelemetry dependencies to version 1.40.0 in dev requirements
Apr 8, 2026
43579f6
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 8, 2026
b4e20a4
Update sdk/agentserver/azure-ai-agentserver-core/azure/ai/agentserver…
ankitbko Apr 8, 2026
1807056
responses: port .NET PR #57895 — rule numbers, cancel hardening, conv…
RaviPidaparthi Apr 8, 2026
b34d63e
responses: use AgentConfig instead of private env-var constants
RaviPidaparthi Apr 8, 2026
e61d38f
updated codeowner
Apr 8, 2026
f688216
Merge branch 'main' into agentserver/invoke
ankitbko Apr 8, 2026
85a09c7
Merge branch 'agentserver/invoke' into agentserver/responses
Apr 8, 2026
0d148ce
Merge branch 'main' into agentserver/responses
ankitbko Apr 8, 2026
9e05dc1
fixed keep alive interval
Apr 8, 2026
b9d7909
Merge branch 'main' into agentserver/responses
ankitbko Apr 8, 2026
94227f8
agentserver: use FOUNDRY_HOSTED for hosted environment detection (#46…
ammaaradammicrosoft Apr 8, 2026
c89e94f
Revert "agentserver: use FOUNDRY_HOSTED for hosted environment detect…
RaviPidaparthi Apr 8, 2026
4fe30a8
chore(responses): tighten type annotations across public contracts, s…
RaviPidaparthi Apr 9, 2026
70e9d72
Restructure responses samples: flat layout, accurate Usage:: curl blo…
RaviPidaparthi Apr 9, 2026
e77743b
Remove .NET/dotnet/C# references from comments, docstrings, and test …
RaviPidaparthi Apr 9, 2026
00e34b9
Add error logging to orchestrator error-to-response conversion paths
RaviPidaparthi Apr 9, 2026
c95e6bc
Add server version registration for x-platform-server header
RaviPidaparthi Apr 9, 2026
a0e2a3a
Refactor get_input_items to return Item types, add get_input_text to …
RaviPidaparthi Apr 9, 2026
a5a87a5
Remove stale samples/scenarios directory
RaviPidaparthi Apr 9, 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
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@
from ._base import AgentServerHost
from ._config import AgentConfig
from ._errors import create_error_response
from ._server_version import build_server_version
from ._tracing import end_span, flush_spans, record_error, trace_stream
from ._version import VERSION

__all__ = [
"AgentConfig",
"AgentServerHost",
"build_server_version",
"create_error_response",
"end_span",
"flush_spans",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,33 @@
from starlette.routing import Route

from . import _config, _tracing
from ._server_version import build_server_version
from ._version import VERSION as _CORE_VERSION

logger = logging.getLogger("azure.ai.agentserver")

# Pre-built health-check response to avoid per-request allocation.
_HEALTHY_BODY = b'{"status":"healthy"}'

# Server identity header per spec: {sdk}/{version} (python/{runtime})
_PLATFORM_SERVER_VALUE = (
f"azure-ai-agentserver-core/{_CORE_VERSION} "
f"(python/{sys.version_info.major}.{sys.version_info.minor})"
)

# Sentinel attribute name set on the console handler to prevent adding duplicates
# across multiple AgentServerHost instantiations.
_CONSOLE_HANDLER_ATTR = "_agentserver_console"


class _PlatformHeaderMiddleware(BaseHTTPMiddleware):
"""Middleware that adds x-platform-server identity header to all responses."""
"""Middleware that adds ``x-platform-server`` version header to all responses.

Takes a callable that returns the current header value so protocol
hosts can register additional segments after construction.
"""

def __init__(self, app: Any, *, get_server_version: Callable[[], str]) -> None: # type: ignore[override]
super().__init__(app)
self._get_server_version = get_server_version

async def dispatch(self, request: Request, call_next): # type: ignore[no-untyped-def, override]
response = await call_next(request)
response.headers["x-platform-server"] = _PLATFORM_SERVER_VALUE
response.headers["x-platform-server"] = self._get_server_version()
return response


Expand Down Expand Up @@ -103,6 +106,14 @@ def __init__(
# Shutdown handler slot (server-level lifecycle) -------------------
self._shutdown_fn: Optional[Callable[[], Awaitable[None]]] = None

# Server version segments for the x-platform-server header.
# Protocol packages call register_server_version() to add their
# own portion; the middleware joins them at response time.
self._server_version_segments: list[str] = []
self.register_server_version(
build_server_version("azure-ai-agentserver-core", _CORE_VERSION)
)

# Logging ----------------------------------------------------------
resolved_level = _config.resolve_log_level(log_level)
logger.setLevel(resolved_level)
Expand Down Expand Up @@ -171,10 +182,46 @@ async def _lifespan(_app: Starlette) -> AsyncGenerator[None, None]: # noqa: RUF
super().__init__(
routes=all_routes,
lifespan=_lifespan,
middleware=[Middleware(_PlatformHeaderMiddleware)],
middleware=[
Middleware(_PlatformHeaderMiddleware, get_server_version=self._build_server_version),
],
**kwargs,
)

# ------------------------------------------------------------------
# Server version (x-platform-server header)
# ------------------------------------------------------------------

def register_server_version(self, version_segment: str) -> None:
"""Register a version segment for the ``x-platform-server`` header.

Protocol packages (e.g. responses, invocations) call this in their
``__init__`` to add their own portion. Handler developers can also
call it to append a custom version string. Duplicates are ignored.

Use :func:`~azure.ai.agentserver.core.build_server_version` to
build a standard segment::

from azure.ai.agentserver.core import build_server_version

app.register_server_version(
build_server_version("my-library", "2.0.0")
)

:param version_segment: The version string to register.
:type version_segment: str
:raises ValueError: If *version_segment* is empty or whitespace-only.
"""
if not version_segment or not version_segment.strip():
raise ValueError("Version segment must not be empty.")
normalized = version_segment.strip()
if normalized not in self._server_version_segments:
self._server_version_segments.append(normalized)

def _build_server_version(self) -> str:
"""Join all registered segments into the header value."""
return " ".join(self._server_version_segments)

# ------------------------------------------------------------------
# Tracing (for protocol subclasses)
# ------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
_ENV_SSE_KEEPALIVE_INTERVAL = "SSE_KEEPALIVE_INTERVAL"

_DEFAULT_PORT = 8088
_DEFAULT_SSE_KEEPALIVE_INTERVAL = 15
_DEFAULT_SSE_KEEPALIVE_INTERVAL = 0


# ======================================================================
Expand Down Expand Up @@ -292,7 +292,7 @@ def resolve_sse_keepalive_interval(interval: Optional[int] = None) -> int:
"""Resolve the SSE keep-alive interval from argument, env var, or default.

Resolution order: explicit *interval* → ``SSE_KEEPALIVE_INTERVAL`` env var
→ ``15`` (seconds). A value of ``0`` disables keep-alive.
→ ``0`` (seconds). A value of ``0`` disables keep-alive.

:param interval: Explicitly requested interval in seconds, or None.
:type interval: Optional[int]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# ---------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# ---------------------------------------------------------
"""Utility for building ``x-platform-server`` version strings."""

from __future__ import annotations

import sys


def build_server_version(sdk_name: str, version: str) -> str:
"""Build a standard version segment for the ``x-platform-server`` header.

Format: ``{sdk_name}/{version} (python/{major}.{minor})``

Protocol packages call this during host initialisation and pass the
result to :meth:`AgentServerHost.register_server_version`.

:param sdk_name: The SDK identifier
(e.g., ``"azure-ai-agentserver-responses"``).
:type sdk_name: str
:param version: The package version string (e.g., ``"1.0.0b1"``).
:type version: str
:returns: A formatted version string.
:rtype: str
:raises ValueError: If *sdk_name* or *version* is empty.
"""
if not sdk_name or not sdk_name.strip():
raise ValueError("sdk_name must not be empty.")
if not version or not version.strip():
raise ValueError("version must not be empty.")
runtime = f"python/{sys.version_info.major}.{sys.version_info.minor}"
return f"{sdk_name}/{version} ({runtime})"
19 changes: 19 additions & 0 deletions sdk/agentserver/azure-ai-agentserver-responses/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Release History

## 1.0.0b1 (Unreleased)

### Features Added

- Initial release of `azure-ai-agentserver-responses`.
- `ResponsesAgentServerHost` — Starlette-based host with Responses protocol endpoints (`POST /responses`, `GET /responses/{id}`, `POST /responses/{id}/cancel`, `DELETE /responses/{id}`, `GET /responses/{id}/input_items`).
- `TextResponse` — high-level convenience for text-only responses with automatic SSE lifecycle (`create_text` and `create_text_stream` modes).
- `ResponseEventStream` — low-level builder API for emitting SSE events with full control over output items (message, function call, reasoning, file search, web search, code interpreter, image gen, MCP, custom tool).
- Convenience generators (`output_item_message()`, `output_item_function_call()`, `output_item_reasoning_item()`) and async streaming variants (`aoutput_item_message()`, etc.) for common patterns.
- `ResponseContext` providing `response_id`, conversation history loading, input item access via `get_input_items()` (returns `Item` subtypes), `get_input_text()` convenience for extracting text content, isolation context, and client headers.
- `ResponsesServerOptions` for configuring default model, SSE keep-alive, shutdown grace period, and other runtime options.
- Support for all execution modes: default (synchronous), streaming (SSE), background, and streaming + background.
- Automatic SSE event replay for previously streamed responses via `?stream=true`.
- Cooperative cancellation via `asyncio.Event` and graceful shutdown integration.
- `InMemoryResponseProvider` as the default in-process state store.
- `ResponseProviderProtocol` and `ResponseStreamProviderProtocol` for custom storage implementations.
- Built-in distributed tracing with OpenTelemetry integration.
21 changes: 21 additions & 0 deletions sdk/agentserver/azure-ai-agentserver-responses/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Copyright (c) Microsoft Corporation.

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
9 changes: 9 additions & 0 deletions sdk/agentserver/azure-ai-agentserver-responses/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
include *.md
include LICENSE
recursive-include tests *.py
recursive-include samples *.py *.md
recursive-include doc *.rst *.md
include azure/__init__.py
include azure/ai/__init__.py
include azure/ai/agentserver/__init__.py
include azure/ai/agentserver/responses/py.typed
Loading