Skip to content

feat(vscode) - Adding additional csharp lsp server functionality#8828

Open
lambrianmsft wants to merge 45 commits intoAzure:ccastrotrejo/csharpLSPServerfrom
lambrianmsft:ccastrotrejo/csharpLSPServer
Open

feat(vscode) - Adding additional csharp lsp server functionality#8828
lambrianmsft wants to merge 45 commits intoAzure:ccastrotrejo/csharpLSPServerfrom
lambrianmsft:ccastrotrejo/csharpLSPServer

Conversation

@lambrianmsft
Copy link
Contributor

Commit Type

  • feature - New functionality
  • fix - Bug fix
  • refactor - Code restructuring without behavior change
  • perf - Performance improvement
  • docs - Documentation update
  • test - Test-related changes
  • chore - Maintenance/tooling

Risk Level

  • Low - Minor changes, limited scope
  • Medium - Moderate changes, some user impact
  • High - Major changes, significant user/system impact

What & Why

Adding ability to open overview page for a workflow, adding a new workflow, reducing the connection pane load time, and updating the package.

Impact of Change

  • Users:
    Workflows runs can now be opened and new workflows can be added
  • Developers:
  • System:

Test Plan

  • Unit tests added/updated
  • E2E tests added/updated
  • Manual testing completed
  • Tested in:

Contributors

Screenshots/Videos

… call times for checking child process, added options to add new codeful workflows to the project, optimzed the get-child-process.ps1 script, and finally added the overview page for codeful workflows and ability to view runs
…d to be passed as a path and added additional telemetry to capture this whenever it happens
…ger name isn't defined, we pull the default from the lsp server sdk. Disabled the create unit test from run for codeful workflows
…perience, prevent callback url from getting continuously pinged, updated sdk version
@github-actions
Copy link

github-actions bot commented Feb 19, 2026

🤖 AI PR Validation Report

PR Review Results

Thank you for your submission! Here's detailed feedback on your PR title and body compliance:

PR Title

  • Current: feat(vscode) - Adding additional csharp lsp server functionality
  • Issue: The title is somewhat vague for the breadth of changes in this PR. The diff modifies runtime/startup logic, design-time API, language server behavior, new assets (LSP nupkg/zip), many code paths for codeful workflows, tests, build scripts, telemetry, and connection handling. The title should reflect the main user-facing feature(s) and the area(s) changed.
  • Recommendation: Use a more specific scope and summary. Example: feat(vscode-designer): add C# (codeful) LSP support, codeful project/workflow creation & connection/monitoring improvements

Commit Type

  • Properly selected (feature)
  • Note: Only one commit type is selected which is correct.

Risk Level

  • The PR body marks Medium, but the repository labels on the PR do not include a risk label (e.g., risk:low|medium|high). Every PR must have a risk label that matches the Risk Level chosen in the body.
  • Based on the code diff, this change touches process management (start/stop design/runtime APIs), PowerShell scripts, authentication caching, build/publish flows for codeful projects, language server middleware and new binary assets — this is broad and invasive. I advise raising the Risk Level to High.
  • Recommendation: add the corresponding GitHub label risk:high (and remove/replace any existing risk label if present) and update the Risk Level checkboxes in the PR body to match.

⚠️ What & Why

  • Current: "Adding ability to open overview page for a workflow, adding a new workflow, reducing the connection pane load time, and updating the package."
  • Issue: This is terse and doesn't capture the breadth nor the potential impact (LSP assets, process checks, runtime orchestration, build/publish flows, telemetry and caching changes). Reviewers and release owners need a bit more context about the main design/behavioral changes and why they were needed.
  • Recommendation: Expand to 2–4 short points covering:
    • Primary user-facing changes (e.g., open overview from C# codeful workflows, create codeful workflows, enable codeful debugging flows).
    • Developer/infra changes (e.g., LSP server packaging and upgrade, new LSP middleware filtering, changes to PowerShell-based child-process discovery, build/publish of codeful projects).
    • Why it was required (performance, new codeful scenario support, reliability of process detection, improved IntelliSense for C# workflows).

Example:

  • Adds first-class support for C# "codeful" workflows: LSP SDK update, new templates, and logic to create/publish codeful projects and add workflows to Program.cs.
  • Improves connection view and connection insertion (atomic write of connections.json and source update) and caches Azure auth/details for faster load.
  • Improves process detection logic and caches expensive validations to reduce startup latency on Windows.
  • Adds filtering middleware for completions and many unit tests.

Impact of Change

  • Issue: The PR body left Developers and System sections blank. Given the extensive edits, you must explicitly call out who/what is impacted and any required upgrade or runtime steps.
  • Recommendation: Fill these fields with concrete points based on the diff:
    • Users:
      • Codeful/C# projects: users can create codeful workflows, add workflows programmatically, and open an overview UI for codeful workflows.
      • Faster connection pane load times and more reliable connection insertion into C# sources.
      • Debug experience: support for launching/attaching to codeful function host and logic app debug flow changes.
    • Developers:
      • New/changed APIs: language server middleware, completion filtering; utilities to detect codeful workflows; changes to create-workspace and project templates.
      • Build/publish flows updated: new pack/publish steps in package.json and new packaging assets (LSP zip & nupkg). Unit/E2E tests added — list them.
      • Changes to process-handling utilities and PowerShell scripts (child-process discovery) — review on Windows.
    • System:
      • New assets (LSP zip, nupkg) added to extension; extension bundle version changed to [1.160.24] and private bundle URI updated.
      • Caching added for bundle version and Azure connector details; telemetry and outputChannel logging increased.
      • Potential CI/binary size and installation impacts due to new assets; ensure packaging pipeline accommodates these.

Test Plan

  • Assessment: The PR body checked "E2E tests added/updated" and "Manual testing completed" but left Unit tests unchecked. The diff actually contains many new/updated unit tests (vitest files and other test files) across multiple modules. Please update the Test Plan checkboxes to reflect the actual tests added.
  • Recommendation:
    • Mark: [x] Unit tests added/updated (and list top-level test files/areas). Example: CreateLogicAppWorkspace tests, connection view tests, codeful utils tests, completionFilter tests, startDesignTimeApi tests, etc.
    • Confirm E2E tests (if present): list which E2E test(s) were added and how to run them. If E2E isn't actually included, uncheck that box.
    • For Manual testing: briefly summarize the manual scenarios covered (e.g., created codeful project, added workflow, launched debugger locally, validated connection insertion into Program.cs, verified runtime start/stop).
    • If any tests are long-running or require environment setup (e.g., Windows PowerShell, design-time runtime), explain and include commands to run them locally and on CI.

⚠️ Contributors

  • Assessment: Empty in PR body.
  • Recommendation: Add a contributors section to credit PMs/designers/reviewers/authors. This is optional but useful for releases.

⚠️ Screenshots/Videos

  • Assessment: Blank — acceptable if not UI-only, but this PR includes UI surface changes (connection view loading, overview UI). If any visible UI/UX changed, include 1–2 screenshots or a short GIF showing the new overview + connection pane behavior. If you don't include them now, be prepared to supply on request.

Summary Table

Section Status Recommendation
Title Make title more specific to LSP + codeful changes (see example above)
Commit Type No change needed
Risk Level Add a GitHub label risk:high and update PR body to match (advised: High)
What & Why ⚠️ Expand to list key user/developer/system changes and rationale
Impact of Change Fill Users / Developers / System with specific impacts (see recommendations)
Test Plan Update checkboxes: Unit tests added (yes). List tests & run instructions.
Contributors ⚠️ Add optional credits (PMs/Designers/Reviewers)
Screenshots/Videos ⚠️ Add screenshots or short GIFs for UI changes (recommended)

Final notes

  • Why I increased the advised risk to HIGH: this PR changes process-handling and lifecycle (design-time/runtime start/stop), updates PowerShell scripts that query OS processes, adds caching around auth and bundle versions, changes the way codeful workflows are created/inserted (including writing Program.cs and csproj), changes package and binary assets included in the extension, and adds behavior that affects builds/publishing. These touches cross critical runtime and installation boundaries and warrant high risk classification, extra review, and likely a staged rollout.

What I need from you to move this to passing:

  1. Add an explicit GitHub label risk:high (or change the PR Risk Level to match an existing risk label) and update the PR body tickboxes accordingly.
  2. Update the PR Title to be more descriptive and scoped (see suggested example).
  3. Update the PR body:
    • Expand "What & Why" with 2–4 concrete bullets describing the main changes and rationale.
    • Complete the "Impact of Change" sections for Users, Developers, and System using the details above (or the exact changes you expect). Make sure to mention the new LSP assets and extension bundle changes.
    • Update the Test Plan: mark Unit tests added/updated and list the primary test files / commands to run them. Confirm whether there are E2E tests and how to run them; if none, uncheck the E2E box.
  4. Add a short summary of manual testing steps you performed (environments, basic commands), especially for platform-specific changes (Windows PowerShell child-process detection) and codeful workflows.
  5. Optionally attach screenshots for UI changes (connection view loading spinner, overview page) and list any release notes or migration steps for users (e.g., extension bundle update or LSP SDK changes).

Please update the PR body and labels per the recommendations and re-request review. Given the scope, I also recommend requesting an additional reviewer who is familiar with runtime/process management and packaging.


Last updated: Fri, 13 Mar 2026 01:09:08 GMT

} else {
// For codeless projects, build custom code functions if they exist
const customFolderExists = await fse.pathExists(path.join(logicAppNode.fsPath, libDirectory, customDirectory));
if (customFolderExists) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't this be if !customFolderExists? Since we would build in the case where lib/custom/* doesn't already exist for codeless, i.e. not already built

// For codeless projects, build custom code functions if they exist
const customFolderExists = await fse.pathExists(path.join(logicAppNode.fsPath, libDirectory, customDirectory));
if (customFolderExists) {
await buildCustomCodeFunctionsProject(actionContext, logicAppNode);
Copy link
Contributor

Choose a reason for hiding this comment

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

buildCustomCodeFunctionsProject is supposed to check whether the .net project is specifically a custom code functions project before building, part of that is to check for Microsoft.Azure.Workflows.Webjobs.Sdk in the .csproj, which I don't think will exist for codeful projects. Should there be a separate function for handling building codeful?


// Find the location to insert the new workflow builder
// Look for the "Build all workflows" comment or insert before host.Run()
const buildCallRegex = /(\s*)(\/\/ Build all workflows\s*\n(?:\s*\/\/.*\n)*\s*)(.*?)(\s*host\.Run\(\);)/s;
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it possible to avoid using a regex here to update Program.cs with a new workflow, and instead just overwrite Program.cs with one containing all workflows? We would need to track the workflows in a codeful project elsewhere, but we should probably avoid using regex as much as possible since it's bound to break in some cases

…ppsUX into ccastrotrejo/containerExtension"

This reverts commit 375a8ba, reversing
changes made to ac433d8.
andrew-eldridge and others added 7 commits March 11, 2026 14:54
… to azure, updated lsp server with correct codelens location, fixed connection insertion locations
…that displays manage or create connection depending on connection.json
…d for the first time, debug session now attaches properly, and run history webview refreshes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants