Merge feature/foundry-release into Main#42168
Open
dargilco wants to merge 257 commits into
Open
Conversation
…ng to feature/foundry-release (#42031)
* add toolbox and versioning support (#41627) * Rename toolset to toolbox - Rename folder toolsets -> toolboxes - Rename all models: ToolsetObject -> ToolboxObject, etc. - Update all routes, operations, and API paths - Update feature flag: toolset_v1_preview -> toolbox_v1_preview * Add separate routes for toolbox and toolbox version operations * Align toolbox versioning with agent API pattern - Add ToolboxVersionObject separate from ToolboxObject - Change version from int32 to string for consistency - Add toolbox.version and toolbox.version.deleted object types - ToolboxObject now contains versions.latest structure - Version-specific operations return ToolboxVersionObject * Add policies support (rai_config) to toolbox models * Address PR review: add default_version, updateToolbox, fix traffic routing - Add default_version property to ToolboxObject for controlling which version the MCP endpoint resolves to - Add description field to ToolboxObject (separate from version) - Add UpdateToolboxRequest model with default_version (nullable) - Add PATCH /toolboxes/{toolbox_name} updateToolbox route - Rewrite traffic routing section to use default_version instead of agent endpoint version selectors - Update MCP endpoints table to reflect default_version behavior * Delete specification/ai-foundry/data-plane/Foundry/toolbox-api-scenarios.md * Remove default_version and updateToolbox PATCH endpoint - /toolboxes/<name>/mcp always serves the latest version - Use /toolboxes/<name>/versions/<version>/mcp to pin a specific version - Simplifies the toolbox model by removing unnecessary mutability * Change createToolbox to PUT, add updateToolbox PATCH - createToolbox: PUT /toolboxes/{toolbox_name} (was POST /toolboxes) - updateToolbox: PATCH /toolboxes/{toolbox_name} (new, for description/metadata) - createToolboxVersion: POST /toolboxes/{toolbox_name}/versions (unchanged) * Remove toolbox-versioning-samples.py * Remove createToolbox PUT - use createToolboxVersion POST as sole creation path * Remove updateToolbox PATCH endpoint * Add updateToolbox PATCH to set default version * Change versions.default to string instead of ToolboxVersionObject * Remove description and versions.latest from ToolboxObject, flatten to default_version * Rename toolbox_v1_preview to toolboxes_v1_preview (plural convention) * Update routes.tsp * Remove object properties and return void for delete operations * Fix compilation: convert UpdateToolboxRequest to model and fix namespace ordering
* [Draft] Agent Invocations API Specification (#40709) * Initial commit that imports Lakshmi's invoke api spec * Updates * Fine tune the spec * remove open ai spec changes * Adding RAPI<>Invoke mapping examples * flush pending updates * agent-invocations * fix * Add get/cancel apis: * Finetune * fixes post merge * Explucde Invoactions from GA version (#40857) * Fix typo in name of newly added union `AgentDefintionOptInKeys` (#40870) * Apply suggestions from code review Co-authored-by: Johan Stenberg (MSFT) <johan.stenberg@microsoft.com> * PR feedback for #39565 (#41345) * making invocations body unknown. * regen openapi --------- Co-authored-by: Johan Stenberg (MSFT) <johan.stenberg@microsoft.com>
* feat: Add session file operations TypeSpec for hosted agents (#41586) Cherry-picked from feature/foundry-staging (57e7a9e). - New models: SessionFileWriteResponse, SessionDirectoryEntry, SessionDirectoryListResponse - New operations: uploadSessionFile, downloadSessionFile, listSessionFiles, deleteSessionFile - All preview-gated via hosted_agents_v1_preview, removed from v1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Regenerate OpenAPI JSON + YAML via npx tsp compile . Session file operations added to virtual-public-preview spec (both formats). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/agents-session-files/routes.tsp Co-authored-by: Johan Stenberg (MSFT) <johan.stenberg@microsoft.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Johan Stenberg (MSFT) <johan.stenberg@microsoft.com>
* Apply the latest changes for C#. * Revert tsp change
* Fshakerin/skills (#40767) * typespec changes for skills * addressing pr comments * fixing 1 suffix * Adding WorkIQ Preview Tool in typespec (#41051) * extend tool definitions to include name and description fields. * Nit edit to tool defintions. * Update specification/ai-foundry/data-plane/Foundry/src/skills/models.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/skills/models.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/skills/models.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/skills/models.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/skills/models.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/skills/routes.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Update specification/ai-foundry/data-plane/Foundry/src/skills/models.tsp Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com> * Remove object field from skill models per reviewer feedback * Update compiled OpenAPI files * Remove ToolNameAndDescriptionExtension spreads from tool definitions * Add name/description props to WorkIQPreviewTool * Return 201 Created for skill creation operations --------- Co-authored-by: FARHAD SHAKERIN <shakerin.farhad@gmail.com> Co-authored-by: djetchev <dimitar.jetchev@iohk.io> Co-authored-by: Anushree Kaipa Ramanath <ankaipar@microsoft.com> Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com>
* Evaluator Storage & Upload Support (#41140, #41160, #41168) Applied from feature/foundry-staging final state (commits b3972bc, b09cb5a, fd1ae0f). Models: - CodeBasedEvaluatorDefinition: code_text made optional, added entry_point, image_tag, blob_uri - New model: EvaluatorCredentialRequest (blobUri) Operations: - startPendingUpload: POST /evaluators/{name}/versions/{version}/startPendingUpload - getCredentials: POST /evaluators/{name}/versions/{version}/credentials Both operations are GA (not removed from v1). Regenerated all 4 OpenAPI files (JSON + YAML). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Proposal to use Foundry Operations. (#42072) * feedback * Tag with preview extension. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add code-based hosted agent API surface
Add HostedAgentType discriminator (image/code), ContainerConfiguration,
CodeConfiguration, and new dual fields (type, container_configuration,
protocol_versions, code_configuration) to HostedAgentDefinition.
Existing fields kept for backward compatibility. No new API version.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make container_protocol_versions optional for backward compatibility
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Use CodeAgents feature flag for ContainerConfiguration
Move ContainerConfiguration from HostedAgents=V1Preview to
CodeAgents=V1Preview so new structured fields (container_configuration
and code_configuration) share the same rollout/rollback lifecycle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Gate all new fields behind CodeAgents=V1Preview feature flag
Add x-ms-foundry-meta with required_previews to HostedAgentType,
type, container_configuration, protocol_versions, and
code_configuration for consistent rollout/rollback control.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add POST /code:upload endpoint for code-based hosted agents
- Add CodeUploadResponse model (id, size_bytes, created_at) gated behind code_agents_v1_preview
- Rename CodeConfiguration.code_uri to code_reference_id (string)
- Add POST /code:upload route accepting application/zip and application/octet-stream
- Add example JSON for the upload endpoint
- Generated OpenAPI3 output updated
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add CRUD operations for /code API with versioning
- Update upload route: /code:upload -> /code/{name}:upload (user-provided name)
- Add name and version fields to CodeUploadResponse (id = name:version)
- Add CodeArtifact model for list responses
- Add GET /code (list latest), GET /code/{name}/versions (list versions)
- Add DELETE /code/{name} (all versions), DELETE /code/{name}/versions/{version}
- Add example files for all new operations
- Update CodeConfiguration doc to note name:version format
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address API review feedback: route, type, delete behavior, filters
- Change upload route from POST /code/{name}:upload to POST /code/{name}/content
- Remove HostedAgentType union and type discriminator from HostedAgentDefinition
- Keep container_configuration and code_configuration as flat optional XOR fields
- Add :latest semantic for code_reference_id
- Add code_reference_id filter to listAgents and listAgentVersions
- Add GET /code/{name}/versions/{version} for individual version lookup
- Enhance delete operations with detailed integrity check behavior
- Regenerate OpenAPI output
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Replace /code/* endpoints with multipart POST /agents/{agent_name}/versions using @SharedRoute
- Remove all 6 /code/* endpoints (upload, list, listVersions, getVersion, delete, deleteVersion)
- Remove CodeUploadResponse, CodeArtifact models and code_reference_id from CodeConfiguration
- Add createAgentVersionFromCode operation on POST /agents/{agent_name}/versions with @SharedRoute
- Add @SharedRoute to existing createAgentVersion for content-type differentiation
- Add CreateAgentFromCodeContent (multipart: metadata JSON + code binary) and CreateAgentFromCodeRequest models
- Remove code_reference_id query filter from listAgentVersions
- Update examples: remove 6 old code artifact examples, add CreateAgentVersionFromCode example
- SDK generates two methods: create_agent_version() (JSON) and create_agent_version_from_code() (multipart)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add multipart code deploy on all 3 agent mutation endpoints
- Add content_hash to CodeConfiguration for change detection/dedup
- CreateAgentVersionFromCodeRequest (base): description, metadata, definition
- CreateAgentFromCodeRequest (extends base): adds required name field
- CreateAgentFromCodeContent / CreateAgentVersionFromCodeContent wrappers
- POST /agents: @SharedRoute createAgentFromCode (multipart, name in body)
- POST /agents/{name}: @SharedRoute updateAgentFromCode (multipart)
- POST /agents/{name}/versions: updated to use CreateAgentVersionFromCodeContent
- New examples for createAgentFromCode and updateAgentFromCode
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move agent name and content hash to HTTP headers
- Remove content_hash from CodeConfiguration body
- Add x-ms-code-zip-sha256 header to all 3 multipart endpoints
- Add x-ms-agent-name header to POST /agents (createAgentFromCode)
- Collapse to single metadata model (CreateAgentVersionFromCodeRequest)
- Keep CreateAgentFromCodeContent (spreads from CreateAgentVersionFromCodeContent)
- Update examples with headers, remove body content_hash/name
- Regenerate OpenAPI specs
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix
---------
Co-authored-by: Santhosh Kumar Gunasekaran <sagunase@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* AgentEndpoint and ManagedAgentIdentityBlueprint typespec (#41206) Cherry-picked from feature/foundry-staging (6c647a3). Resolved conflict in common/models.tsp — added agent_endpoint_v1_preview key only. OpenAPI JSON conflicts resolved by accepting current version (will regenerate). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update AgentEndpoint typespec (#41713) Cherry-picked from feature/foundry-staging (b351e5e). Resolved conflict in agents/models.tsp — took updated fields (instance_identity, blueprint, blueprint_reference, agent_card). OpenAPI JSON conflict resolved by accepting current (will regenerate). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix cherry-pick: complete agent endpoint models + regenerate OpenAPI - Restored AgentBlueprintReference, ManagedAgentIdentityBlueprintReference models - Updated CreateAgentRequest to use blueprint_reference instead of blueprint_id - Updated AgentVersionObject with instance_identity, blueprint, blueprint_reference fields - Updated AgentIdentity doc strings - Added invocations protocol to AgentEndpointProtocol - Excluded telemetry models (separate feature) - Regenerated OpenAPI JSON via npx tsp compile . Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add to surface * align snake casing for endpoint properties (#41981) * fix * fix --------- Co-authored-by: Ali Soylemezoglu <alisoy@microsoft.com> * Alisoy/small typespec changes (#41528) * fix * fix * fix * fix * fix --------- Co-authored-by: Ali Soylemezoglu <alisoy@microsoft.com> * align agent_endpoint field name, remove unused fields Co-authored-by: Ali Soylemezoglu <alisoy@microsoft.com> * add agentGuid to type spec (#42050) Co-authored-by: masable <masable@microsoft.com> * build fix + regen oai * removing leftover @removed --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Ali Soylemezoglu <acsoylemezoglu@gmail.com> Co-authored-by: Ali Soylemezoglu <alisoy@microsoft.com> Co-authored-by: Matt <1229006+MattSable@users.noreply.github.com> Co-authored-by: masable <masable@microsoft.com>
…t in feature/foundry-staging branch) (#42124)
* feat(agents): add session lifecycle CRUD API surface (#41691) * feat(agents): add session lifecycle CRUD API surface Add TypeSpec models and routes for session lifecycle management: - Create, Get, Delete (LRO), List, GetOperation endpoints - SessionResource, VersionIndicator (discriminated), SessionOperationObject - PascalCase enums aligned with C# contracts (PR 2011590) - Continuation-token pagination (SessionListResult) - x-session-isolation-key header on mutating operations - 5 example JSON files AB#5122803 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix * fix(foundry): align session CRUD with sync lifecycle review Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(foundry): normalize session status casing Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Ali Soylemezoglu <alisoy@microsoft.com> * missing doc update * fix(foundry): address session CRUD review feedback (#42120) - createSession: return 201 Created (ResourceCreatedResponse) instead of 200 OK - listSessions: replace custom SessionListResult with AgentsPagedResult archetype - listSessions: use CommonPageQueryParameters for consistent pagination - Update example files to match new response shapes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * exposed in surface + generated openapi --------- Co-authored-by: Aryaan Singh <arysingh@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Ali Soylemezoglu <alisoy@microsoft.com>
Next Steps to MergeNext steps that must be taken to merge this PR:
Comment generated by summarize-checks workflow run. |
* Add threshold field to EvaluatorMetric model Add optional float32 threshold property to EvaluatorMetric TypeSpec model. This enables evaluator authors to specify a default pass/fail threshold per metric, used instead of computing from min/max midpoint. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Simplify evaluator threshold description --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… deprecate isolation_key_source + remove platform-internal headers (#44055) * Add x-ms-user-identity delegation header + deprecate isolation_key_source Session Identity & RBAC (Steps 1-3) + A2A identity propagation (Step 6): - Add UserDelegationHeader (x-ms-user-identity) on all session, invoke, responses, conversations, and session-files routes - Deprecate UserIsolationKeyHeader (x-ms-user-isolation-key) — kept for backward compat - Add FoundryRunTokenHeader (x-foundry-run-token) on invoke/responses routes for A2A - Add FoundryFoundationTokenHeader (x-foundry-foundation-token) for A2A session binding - Deprecate isolation_key_source field and all IsolationKeySource models (precedence-based identity resolution replaces per-agent isolation key config) Design doc: https://dev.azure.com/msdata/Vienna/_git/vienna/pullrequest/2120517 Spec PRs: https://github.com/coreai-microsoft/foundrysdk_specs/pull/217 https://github.com/coreai-microsoft/foundrysdk_specs/pull/218 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove UserDelegationHeader from session-files routes (out of scope) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: add UserIsolationKeyHeader and UserDelegationHeader to stopSession stopSession was the only session-mutating operation missing the identity headers. All other session operations (create, get, delete, list) already had them for precedence-based identity resolution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: mark RT and FT headers as platform_injected for SDK suppression Add x-ms-foundry-meta { platform_injected: true } to both FoundryRunTokenHeader and FoundryFoundationTokenHeader. This gives SDK generators a machine-readable signal that these headers are set by the platform (egress proxy / invoke pipeline), not by SDK callers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * refactor: scope x-ms-user-identity to /responses and /invocations only; remove platform-internal headers from public spec - Remove UserDelegationHeader from session APIs and conversation APIs — delegation only applies at invoke time. - Remove all platform-internal headers (x-foundry-run-token, x-foundry-call-id, x-foundry-foundation-token) from public API spec. These are injected by the platform and not customer-facing (per review feedback from @glecaros). - Fix #deprecated directive on UserIsolationKeyHeader: move from alias level to field level where it has effect. - Remove UserDelegationHeader from invocations_ws (out of scope for now). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Removing deprecated headers. --------- Co-authored-by: Ankit Sultania <asultania@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com>
…44120) Update from agents/endpoint/delegateViaUserId to agents/endpoints/delegateViaUserId/action to match the actual registered dataAction name. Co-authored-by: Ankit Sultania <asultania@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…PIs + fix RBAC name (#44192) Add UserDelegationHeader to all 9 Conversation API operations (create, update, get, delete, list, createItems, getItem, deleteItem, listItems). Conversations are partitioned by user identity — delegating callers need this header to specify which user's partition to access. Also fix RBAC permission name: agents/endpoint/delegateViaUserId → agents/endpoints/delegateViaUserId/action (matches registered dataAction). Companion to Vienna PR #2166624 which activates the new partition scheme on the public API path. Co-authored-by: Ankit Sultania <asultania@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com>
…ard to A2APreviewTool (#43893) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…#44208) * feat: deprecate name, description, and tool_configs on GA tool classes Retain name, description, and tool_configs fields on General Availability tool definitions with #deprecated directive to prevent SDK breaking changes. These fields now live on ToolboxTool and should not be used on tool definitions. Affected GA tools: - OpenAI.MCPTool (tool_configs only) - OpenAI.WebSearchTool, CodeInterpreterTool, ImageGenTool, LocalShellToolParam, FunctionShellToolParam, FileSearchTool - BingGroundingTool, AzureAISearchTool, CaptureStructuredOutputsTool - AzureFunctionTool, OpenApiTool (tool_configs only) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: use generic deprecation message for tool fields Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: add deprecation notice to doc strings for SDK visibility Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Updating Java config and adding tspconfig entry for csharp to showcase * Removed csharp configuration * Updated config for java
Adds an optional `draft: boolean` (default false) to: - CreateAgentVersionRequest - CreateAgentRequest (via spread) - AgentVersionObject (response) Excluded from UpdateAgentRequest via OmitProperties — draft is immutable once set at version-creation time. Also adds `include_drafts` query parameter to listAgentVersions. Draft versions are excluded from listings by default. Fully additive — no required[] changes, no removals.
…-through (#44251) ToolFields<Source> omitted name/description/type but not tool_configs, causing the deprecated tool_configs from patched agent-side Tools to bleed through into ToolboxTool subtypes via ...ToolFields<OpenAI.MCPTool>. ToolboxTool base already defines a non-deprecated tool_configs, so the spread was incorrectly overriding it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#44254) * Mark agent draft version features as preview with AgentsDraft=V1Preview opt-in Add agents_draft_v1_preview key to AgentDefinitionOptInKeys and apply x-ms-foundry-meta extensions to the draft property on CreateAgentVersionRequest, AgentVersionObject, and the include_drafts query param on listAgentVersions. The listAgentVersions operation also gains an optional Foundry-Features header. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Rename opt-in key to draft_agents_v1_preview / DraftAgents=V1Preview Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* add preview decorators to preview models * add openapi files * add missing annotations * update openapi files * remove duplicate agentoptimization const * openapi files * changed required to conditional
* Apply renamings from the review * Name changes for Azure.AI.Projetcs.Agents * Applay renames in Azure.AI.Extensions.OpenAI * Applay renames in Azure.AI.Projects * Other fixes
* Add EndpointBasedEvaluatorDefinition to evaluator TypeSpec Add endpoint discriminator to EvaluatorDefinitionType union and EndpointBasedEvaluatorDefinition model with connection_name field. Enables customers to register HTTP endpoint-based evaluators that reference a Project Connection for credentials (API Key or Entra ID). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: regenerate OpenAPI specs after EndpointBasedEvaluatorDefinition Generated by: npx tsp compile . Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Ahmad Nader <ahmadnader@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Gerardo Lecaros <10088504+glecaros@users.noreply.github.com>
* update union type to string * unabbreviate * renames * rename toolbox tool classes * renames and suppressions * remove list --------- Co-authored-by: Jose Alvarez <josealvar@microsoft.com>
… (superseded by toolbox ReminderPreviewToolboxTool) (#44176)
* Simplified name for operation * Corrected rename
Change the EvaluatorGenerationJobs tag's parent from "Platform APIs" to "Evaluations" in tag-definitions.tsp and regenerate the OpenAPI outputs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.