Skip to content

Fix typespec project repo path for CustomizedCodeUpdateTool#15497

Open
samvaity wants to merge 6 commits into
mainfrom
fix-spc-path
Open

Fix typespec project repo path for CustomizedCodeUpdateTool#15497
samvaity wants to merge 6 commits into
mainfrom
fix-spc-path

Conversation

@samvaity
Copy link
Copy Markdown
Member

@samvaity samvaity commented May 5, 2026

Leverages the path resolution logic already used successfully in SdkGenerationTool to fix path resolution issues on CustomizeSDK Tooling

Closes: #15437

@github-actions github-actions Bot added the azsdk-cli Issues related to Azure/azure-sdk-tools::tools/azsdk-cli label May 5, 2026
@ronniegeraghty ronniegeraghty added the AzSDK Tools Agent Issue related to the AzSDK Tools Agent. label May 5, 2026
@samvaity samvaity self-assigned this May 5, 2026
@samvaity samvaity changed the title Fix typespec project repo path Fix typespec project repo path for CustomizedCodeUpdateTool May 5, 2026
@samvaity samvaity marked this pull request as ready for review May 5, 2026 20:39
@samvaity samvaity requested a review from a team as a code owner May 5, 2026 20:39
Copilot AI review requested due to automatic review settings May 5, 2026 20:39
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates CustomizedCodeUpdateTool to resolve the spec repository root before calling tsp-client update, instead of forwarding the TypeSpec project directory directly. In the azsdk-cli codebase, that aligns regeneration with how spec-backed TypeSpec projects are structured.

Changes:

  • Resolve specRepoPath via ITypeSpecHelper.GetSpecRepoRootPath(...) before regeneration.
  • Apply the same repo-root forwarding in the Java post-patch regeneration path.
  • Adjust the unit-test setup mock for GetSpecRepoRootPath.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
tools/azsdk-cli/Azure.Sdk.Tools.Cli/Tools/TypeSpec/CustomizedCodeUpdateTool.cs Switches regen calls to use resolved spec repo root in both main and Java post-patch flows.
tools/azsdk-cli/Azure.Sdk.Tools.Cli.Tests/Tools/TypeSpec/CustomizedCodeUpdateToolTests.cs Updates the default ITypeSpecHelper mock used by CustomizedCodeUpdateTool tests.

Comment thread tools/azsdk-cli/Azure.Sdk.Tools.Cli/Tools/TypeSpec/CustomizedCodeUpdateTool.cs Outdated
Comment thread tools/azsdk-cli/Azure.Sdk.Tools.Cli/Tools/TypeSpec/CustomizedCodeUpdateTool.cs Outdated
Copilot AI and others added 2 commits May 5, 2026 20:56
Copy link
Copy Markdown
Contributor

Copilot AI commented May 5, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 0t3vsblobprodcus362.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 11vvsblobprodcus336.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 1javsblobprodcus364.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 2kmvsblobprodcus39.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 37bvsblobprodcus311.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 37cvsblobprodcus359.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 4m6vsblobprodcus384.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 4myvsblobprodcus32.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 4vyvsblobprodcus361.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 7devsblobprodcus323.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 7k6vsblobprodcus337.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • 7tjvsblobprodcus341.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • ajhvsblobprodcus363.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • d0svsblobprodcus381.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • dlbvsblobprodcus316.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • fdpvsblobprodcus345.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • gervsblobprodcus329.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • ibzvsblobprodcus369.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • jd4vsblobprodcus366.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • k4kvsblobprodcus344.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • kh4vsblobprodcus325.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • kmuvsblobprodcus389.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • kxqvsblobprodcus376.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • l49vsblobprodcus358.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • l7avsblobprodcus319.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • m16vsblobprodcus374.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • m6xvsblobprodcus342.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • mfjvsblobprodcus373.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • n3kvsblobprodcus335.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • ofvvsblobprodcus315.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • pdfvsblobprodcus380.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • pe4vsblobprodcus351.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • s4uvsblobprodcus326.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • s8mvsblobprodcus38.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • sc4vsblobprodcus331.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • se1vsblobprodcus349.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • u3hvsblobprodcus371.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • ukkvsblobprodcus352.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • uy6vsblobprodcus34.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • vwvvsblobprodcus334.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • yluvsblobprodcus367.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool --no-build (dns block)
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)
  • yttvsblobprodcus357.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet test Azure.Sdk.Tools.Cli.Tests/Azure.Sdk.Tools.Cli.Tests.csproj --filter FullyQualifiedName~CustomizedCodeUpdateTool (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@samvaity
Copy link
Copy Markdown
Member Author

samvaity commented May 8, 2026

@m-redding This resolves the timeout issue as well, since previously the tsp-client was pointing to the root repository at /azure-rest-api-specs. I tested this and confirmed it works for Java.
image
Could you validate this change and we can close #15440 and #15437

@m-redding
Copy link
Copy Markdown
Member

I'm no longer seeing the timeout so that one is fixed by this, but I'm still seeing the same problem with the path:
image

it still gets confused about what the right input is. It did end up getting it right on the second try but have yet to see it get it right on the first try. I would say this improves the experience from "the LLM can't figure out the right inputs at all" to "the LLM can figure out the input eventually", but it's not at "the LLM can usually call the tool correctly on the first try". I'm not sure what the ultimate goal is tho.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AzSDK Tools Agent Issue related to the AzSDK Tools Agent. azsdk-cli Issues related to Azure/azure-sdk-tools::tools/azsdk-cli

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug Bash] LLM gets confused about TypeSpec project location when using generate-sdk-locally

6 participants