Skip to content
Open
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
27729b9
[ai-projects] Remove obsolete API version encoding workaround
glharper Aug 27, 2026
5d6b81d
Initial plan
Copilot Aug 27, 2026
e587d70
[ai-projects] regenerate from TypeSpec 082ad46
Copilot Aug 27, 2026
05229c9
[ai-projects] Fix public API spell check
glharper Aug 28, 2026
241e264
add new spec dirs
glharper Aug 31, 2026
5405e57
[ai-projects] Regenerate SDK from TypeSpec 9d2bce8 (#39797)
Copilot Aug 31, 2026
a29f193
[ai-projects] Add Microsoft 365 publishing sample (#39804)
glharper Aug 31, 2026
4523850
[ai-projects] Restore agent create request fields
glharper Aug 31, 2026
66de7e0
[ai-projects] Check customized member parity
glharper Aug 31, 2026
3787c7c
Merge remote-tracking branch 'origin/main' into feature/ai-projects/2…
glharper Aug 31, 2026
99ffb9e
Fix ai-projects review feedback
Copilot Aug 31, 2026
165f9ac
Merge remote-tracking branch 'origin/main' into feature/ai-projects/2…
Copilot Sep 1, 2026
3aa0658
[ai-projects] Address remaining review feedback
glharper Sep 1, 2026
ca5ec18
Merge remote-tracking branch 'origin/main' into feature/ai-projects/2…
Copilot Sep 1, 2026
ebb7fad
[ai-projects] Regenerate from azure-rest-api-specs@2041c47aa75ad834ee…
Copilot Sep 1, 2026
c099801
[ai-projects] Add Agent Insights run poller (#39817)
glharper Sep 1, 2026
e69599e
[ai-projects] Harden post-emitter merge checks (#39839)
glharper Sep 2, 2026
c9684b7
Merge remote-tracking branch 'origin/main' into feature/ai-projects/2…
glharper Sep 2, 2026
f42a020
Fix duplicate entry in CHANGELOG for client regeneration
glharper Sep 2, 2026
5aa8362
address review feedback
glharper Sep 3, 2026
ae4e521
Fix ai-projects review feedback
Copilot Sep 3, 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
110 changes: 103 additions & 7 deletions sdk/ai/ai-projects/.github/skills/apply-post-emitter-edits/SKILL.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -27,30 +27,41 @@ Merge guidelines for newly emitted code from the `./incoming` directory:

- **IMPORTANT**: If any change or deletion has occurred in the files listed above, the merge has failed and **all operations should be aborted**.

- In `src/models/models.ts`, only accept **added** models. Unless otherwise instructed, do not change or delete existing models in this file. **NOTE**: `dev-tool customization apply` does NOT automatically copy newly emitted models from `generated/models/models.ts` into `src/models/models.ts` — you must propagate any new model interfaces, unions, serializers, and deserializers manually.
- In `src/models/models.ts`, additions-only is the default. **NOTE**: `dev-tool customization apply` does NOT automatically copy newly emitted models from `generated/models/models.ts` into `src/models/models.ts`, so propagate additions manually. When upstream intent and the generated baseline diff establish that models were removed, start from the clean customized source and run `.github/skills/apply-post-emitter-edits/scripts/sync-generated-model-removals.mjs --write`; never replace the file with its generated counterpart.

- In `src/models/index.ts`, only accept **added** models. Unless otherwise instructed, do not change or delete existing models in this file. Same manual-propagation note as above applies.
- Apply the same additions-only default and generated-removal synchronizer to `src/models/index.ts` and its top-level re-exports.

- The model-removal synchronizer may cascade only to customized declarations that depend on a removed declaration. It must not delete an independent support declaration merely because a removed model references it. For a reviewed custom-only removal that never existed in `generated/`, pass its exact name to the parity guard with `--allow-source-removal`; stale or misspelled allowances fail validation.

- After resolving customization conflicts and synchronizing validated additions/removals, run `.github/skills/apply-post-emitter-edits/scripts/check-generated-member-parity.mjs`. It checks newly added members of existing interfaces and request-body objects in `*Send` functions, preserves baseline exports except generated-backed model removals, rejects `src/restorePollerHelpers.ts` references, and enforces the customized `@azure/core-paging` imports in `src/index.ts`. A wholesale generated-to-`src` copy can contain every newly emitted member while silently deleting maintained API and import customizations, so all checks are required.

- `foundryFeatures` must **not** be a positional parameter for any method, internal or external facing. Instead, instantiate it locally to a default value before sending it over the wire. **However**, `foundryFeatures` IS allowed as a property on `*Options` / `*OptionalParams` interfaces (i.e. as a member of the options bag, e.g. `foundryFeatures?: "Skills=V1Preview"`). Only positional parameters are forbidden. Any changes making `foundryFeatures` a method parameter must be reverted to the local-const pattern.

- **No changes to the `list` operation in `BetaEvaluatorsOperations` are permitted.** The emitter wants to create a `listLatestVersions` method instead of `list`, but that is not allowed. Revert the rename.

- **Known customization-layer renames** (custom name on the right; if the spec-side name appears in `src/` after a regen, it's a propagation false positive — add a private alias instead of copying):

| Spec name | Custom name |
| --- | --- |
| `_FileSearchToolFiltersValue` | `_ComparisonFilterValue` |
| `_FileSearchToolFiltersFilter` | `_CompoundFilterFilter` |
| `_updateAgentSend` / `_createAgentSend` | `_updateSend` / `_createSend` |
| Spec name | Custom name |
| --------------------------------------------------------------------- | ----------------------------------------------------------- |
| `_FileSearchToolFiltersValue` | `_ComparisonFilterValue` |
| `_FileSearchToolFiltersFilter` | `_CompoundFilterFilter` |
| `_updateAgentSend` / `_createAgentSend` | `_updateSend` / `_createSend` |
| `AgentsUpdateAgentOptionalParams` / `AgentsCreateAgentOptionalParams` | `AgentsUpdateOptionalParams` / `AgentsCreateOptionalParams` |
| `DeleteVersionOptionalParams` (et al. on toolboxes) | `BetaToolboxesDeleteVersionOptionalParams` (et al.) |
| `agentSessionId` (positional param on beta agents session ops) | `sessionId` |
| `name` (positional param on beta toolbox ops) | `toolboxName` |
| `listSessionFiles` (on `project.beta.agents`) | `getSessionFiles` |
| `DeleteVersionOptionalParams` (et al. on toolboxes) | `BetaToolboxesDeleteVersionOptionalParams` (et al.) |
| `agentSessionId` (positional param on beta agents session ops) | `sessionId` |
| `name` (positional param on beta toolbox ops) | `toolboxName` |
| `listSessionFiles` (on `project.beta.agents`) | `getSessionFiles` |

- **Known duplicate-export hot spots** in `src/models/models.ts` after a regen — always sweep these and keep only the earlier definition:

- `MCPToolFilter`, `mcpToolFilterSerializer`, `mcpToolFilterDeserializer`
- `MCPToolRequireApproval`, `mcpToolRequireApprovalSerializer`, `mcpToolRequireApprovalDeserializer`

- **Known duplicate-property hot spot**: the `AgentVersion` interface and its `agentVersionDeserializer` may end up with two `status` fields — keep `status?: AgentVersionStatus` and delete the bare-string-literal duplicate.

- **Identity-bearing LROs must preserve the created resource id.** The emitter resolves these operations to terminal result payloads that omit the id needed by paired get, cancel, and delete operations:

- Beta optimization, data-generation, and evaluator-generation operations return `JobPoller<T>` and expose `operationState.jobId` through `getJobPoller`.
- `src/api/beta/agentInsightMonitors/operations.ts#createRun` returns `RunPoller<AgentInsightRunResult>` and exposes `operationState.runId` through `getRunPoller`.

Mirror each customized return type in its corresponding `src/classic/` operations interface and re-export `JobOperationState` / `JobPoller` and `RunOperationState` / `RunPoller` from `src/index.ts`. The internal helpers share a delegating `PollerLike` wrapper so the id is present through `operationState`, `poll()`, `onProgress()`, serialization, and resume.
Loading
Loading