Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
a72aeef
Update version
dargilco Jul 1, 2026
0c5bd80
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 6, 2026
ef83c08
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 7, 2026
166052b
Restore tsp-location.yaml
dargilco Jul 7, 2026
b15ba3d
Update emitter skill for Python to deal with prerequisites (#47878)
dargilco Jul 7, 2026
deb805e
Merge branch 'main' into feature/azure-ai-projects/vnext
howieleung Jul 7, 2026
cf8829f
change log (#47916)
howieleung Jul 7, 2026
64783d8
[azure-ai-projects] Emit SDK from TypeSpec (commit fca510e0) (#47914)
dargilco Jul 8, 2026
eae0318
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 8, 2026
f6a0197
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 9, 2026
939b4c3
Fix TypeSpec paths (#47959)
dargilco Jul 9, 2026
51dbaa7
Merge branch 'main' into feature/azure-ai-projects/vnext
howieleung Jul 16, 2026
747ce0b
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 20, 2026
f2e1cab
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 21, 2026
ae7422f
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 21, 2026
4cad88f
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 22, 2026
1de6714
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 22, 2026
73ca2c6
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 23, 2026
8932768
Remove sample_agent_toolbox_skill.py per bakcned folks and Linda requ…
howieleung Jul 23, 2026
02145d9
Re-emit from latest TypeSpec and do required updates (#48216)
dargilco Jul 24, 2026
a33bfb2
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 24, 2026
ca0aae3
Re-emit, to remove WebIQ tools (#48240)
dargilco Jul 24, 2026
0d65d14
update report
dargilco Jul 24, 2026
695e62b
Updates in prep for a release of 2.4.0 (#48248)
dargilco Jul 24, 2026
ae8d605
Update rename tsp-location.yaml, so it does not break release build
dargilco Jul 24, 2026
350e355
change log (#48246)
howieleung Jul 24, 2026
d68f0da
Add sample toolboxes for synchronous and asynchronous AIProjectClient…
howieleung Jul 24, 2026
2ffb388
Comment out additional sample tests in TestSamples class
howieleung Jul 24, 2026
9714db0
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Jul 25, 2026
f169f24
Update to version 2.5.0
dargilco Jul 28, 2026
9f0123f
Howie/sample 35 (#48310)
howieleung Jul 28, 2026
6cb3f2d
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Aug 4, 2026
e01f89b
Merge branch 'main' into feature/azure-ai-projects/vnext
howieleung Aug 4, 2026
b4d7c19
change log (#48427)
howieleung Aug 4, 2026
1fe6479
Custom LRO pollers to enable easy access to Job ID (#48468)
dargilco Aug 10, 2026
dffe468
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Aug 10, 2026
ce59ab0
Re-emit from latest TypeSpec commit (8-10-2026 17:16) (#48526)
dargilco Aug 11, 2026
347077e
update api.md files
dargilco Aug 11, 2026
779facb
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
dargilco Aug 11, 2026
c52a855
Update public methods report. Delete other old report
dargilco Aug 11, 2026
973b21f
Howie/reemit (#48608)
howieleung Aug 18, 2026
1b38b61
Merge remote-tracking branch 'origin/main' into feature/azure-ai-proj…
howieleung Aug 18, 2026
87f300c
Update CHANGELOG.md to include new A2A tools and breaking changes (#4…
howieleung Aug 18, 2026
f3d657b
Update openai package version constraint
howieleung Aug 19, 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
2 changes: 1 addition & 1 deletion eng/emitter-package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion eng/emitter-package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@
"@azure-tools/typespec-liftr-base": "0.13.0",
"@azure-tools/openai-typespec": "1.23.0"
}
}
}
43 changes: 43 additions & 0 deletions sdk/ai/azure-ai-projects/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,48 @@
# Release History

## 2.5.0 (Unreleased)

### Features Added

* Added stable Agent-to-Agent (A2A) tools `A2ATool` and `A2AToolboxTool`, with the new `A2AProtocolVersion` enum for selecting protocol version `1.0`.
* Method `.beta.agents.begin_create_optimization_job` now returns a custom LRO poller named `AgentOptimizationLROPoller`. Its `details` property exposes the created job ID as `job_id`.
* Method `.beta.datasets.begin_create_generation_job` now returns a custom LRO poller named `DatasetGenerationLROPoller`. Its `details` property exposes the created job ID as `job_id`.
* Method `.beta.evaluators.begin_create_generation_job` now returns a custom LRO poller named `EvaluatorGenerationLROPoller`. Its `details` property exposes the created job ID as `job_id`.
* Added the optional read-only `state_source` property to `AgentDetails` and the new `AgentStateSource` enum.

### Breaking Changes

All breaking changes are associated with beta features.

* Renamed class `TaskGenerationDataGenerationJobOptions` to `SimulationSeedDataGenerationJobOptions`. The corresponding `DataGenerationJobType.TASK_GENERATION` enum member was renamed to `DataGenerationJobType.SIMULATION_SEED`, and its wire value changed from `task_generation` to `simulation_seed`.
Comment on lines +15 to +17
* Renamed enum `OptimizationDatasetInputType` to `AgentOptimizationDatasetInputType`.
* Renamed class `OptimizationAgentIdentifier` to `OptimizedAgentIdentifier`.
* Renamed class `OptimizationCandidate` to `AgentOptimizationCandidate`.
* Renamed class `OptimizationDatasetCriterion` to `AgentOptimizationDatasetCriterion`.
* Renamed class `OptimizationDatasetInput` to `AgentOptimizationDatasetInput`.
* Renamed class `OptimizationDatasetItem` to `AgentOptimizationDatasetItem`.
* Renamed class `OptimizationEvaluatorRef` to `AgentOptimizationEvaluatorRef`.
* Renamed class `OptimizationInlineDatasetInput` to `AgentOptimizationInlineDatasetInput`.
* Renamed class `OptimizationJob` to `AgentOptimizationJob`.
* Renamed class `OptimizationJobInputs` to `AgentOptimizationJobInputs`.
* Renamed class `OptimizationJobListItem` to `AgentOptimizationJobListItem`.
* Renamed class `OptimizationJobProgress` to `AgentOptimizationJobProgress`.
* Renamed class `OptimizationJobResult` to `AgentOptimizationJobResult`.
* Renamed class `OptimizationOptions` to `AgentOptimizationOptions`.
* Renamed class `OptimizationReferenceDatasetInput` to `AgentOptimizationReferenceDatasetInput`.

### Sample updates

* Added `sample_dataset_generation_job_simpleqna_for_finetuning_async.py` under `samples/datasets/`, demonstrating asynchronous generation of a SimpleQnA dataset for fine-tuning.
* Added `sample_dataset_generation_job_simpleqna_for_finetuning_with_app_polling.py` under `samples/datasets/`, demonstrating application-managed polling for a SimpleQnA fine-tuning data generation job.
* Added logging samples under `samples/logs/`:
* `sample_log_all.py` demonstrating combined logging for Azure SDK and `.get_openai_client()` operations.
* `sample_log_from_openai_client.py` demonstrating logging for an OpenAI client created from `.get_openai_client()`.
* `sample_log_from_sdk.py` demonstrating logging for Azure AI Projects SDK client operations.
* `sample_log_to_console.py` demonstrating console logging configuration.
* `sample_log_with_logging_disabled.py` demonstrating redacted logging behavior when `logging_enable` is not enabled.
* Renamed optimization polling samples `sample_optimization_job_basic_polling.py` and `sample_optimization_job_basic_polling_async.py` to `sample_optimization_job_advanced_app_polling.py` and `sample_optimization_job_advanced_app_polling_async.py`.

## 2.4.0 (2026-07-24)

### Features Added
Expand Down
75 changes: 0 additions & 75 deletions sdk/ai/azure-ai-projects/PostEmitter.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -86,81 +86,6 @@ foreach ($f in $files) {
Set-Content $f $c -NoNewline
}

# A block of code in the implementation of "list_memories", in both sync
# and async _operations.py files, needs to be moved up. It's emitted in the wrong place,
# in the inline function named "prepare_request". Instead it should be moved up into the
# main body of the "list_memories" method, right after the line `error_map.update(kwargs.pop("error_map", {}) or {})`.
# If you don't do this, the PR pipeline will show failures in Pyright (`error: "body" is unbound (reportUnboundVariable)`)
# and some tests will fail. This is the block of code that needs to move up:
# if body is _Unset:
# if scope is _Unset:
# raise TypeError("missing required argument: scope")
# body = {"scope": scope}
# body = {k: v for k, v in body.items() if v is not None}
# The block inside prepare_request has 12-space indentation; after moving to the main function body it needs 8-space indentation.
# Strategy: Find the last list_memories method, then do a targeted string replacement that moves the block right after error_map.update.
$oldPattern = @"
error_map.update(kwargs.pop("error_map", {}) or {})
content_type = content_type or "application/json"
_content = None
if isinstance(body, (IOBase, bytes)):
_content = body
else:
_content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore

def prepare_request(_continuation_token=None):
if body is _Unset:
if scope is _Unset:
raise TypeError("missing required argument: scope")
body = {"scope": scope}
body = {k: v for k, v in body.items() if v is not None}

_request = build_beta_memory_stores_list_memories_request(
"@
$newPattern = @"
error_map.update(kwargs.pop("error_map", {}) or {})
if body is _Unset:
if scope is _Unset:
raise TypeError("missing required argument: scope")
body = {"scope": scope}
body = {k: v for k, v in body.items() if v is not None}
content_type = content_type or "application/json"
_content = None
if isinstance(body, (IOBase, bytes)):
_content = body
else:
_content = json.dumps(body, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore

def prepare_request(_continuation_token=None):
_request = build_beta_memory_stores_list_memories_request(
"@
$files = 'azure\ai\projects\operations\_operations.py', 'azure\ai\projects\aio\operations\_operations.py'
foreach ($f in $files) {
$c = Get-Content $f -Raw
# Find all occurrences of "def list_memories(" and get the index of the last one
$methodMatches = [regex]::Matches($c, 'def list_memories\(')
if ($methodMatches.Count -eq 0) { continue }
$lastMethodStart = $methodMatches[$methodMatches.Count - 1].Index

# Find the pattern to replace - first occurrence after the last list_memories method
$patternEscaped = [regex]::Escape($oldPattern)
$patternMatches = [regex]::Matches($c, $patternEscaped)
$matchToReplace = $null
foreach ($m in $patternMatches) {
if ($m.Index -gt $lastMethodStart) {
$matchToReplace = $m
break
}
}
if ($matchToReplace -eq $null) { continue }

# Replace only that specific occurrence
$c = $c.Substring(0, $matchToReplace.Index) + $newPattern + $c.Substring($matchToReplace.Index + $matchToReplace.Length)

Set-Content $f $c -NoNewline
}


# Finishing by running 'black' tool to format code.
pip install black
black --config ../../../eng/black-pyproject.toml .
Loading
Loading