Skip to content

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

Open
lambrianmsft wants to merge 49 commits into
Azure:ccastrotrejo/csharpLSPServerfrom
lambrianmsft:ccastrotrejo/csharpLSPServer
Open

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

Conversation

@lambrianmsft
Copy link
Copy Markdown
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
Copy Markdown
Contributor

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: Title is acceptable but could be clearer and follow conventional commit casing/style. "csharp" should be "C#" for clarity and the scope could better reflect the broad changes (LSP, codeful workflows, runtime/startup, and many UI/UX and tests).
  • Recommendation: Use conventional commit style and be specific about the major surface area(s) changed. Example: feat(vscode): Add C# LSP server support and codeful-workflow tooling (overview, debugging, packaging)

Commit Type

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

Risk Level

  • PR body: Medium selected in Risk Level section.
  • Issue: The repository PR labels do not include a risk label (no risk:low|medium|high label present). The code diff is large and touches the language server, runtime start logic, design-time APIs, packaging (binaries and nupkg), many UI flows, and introduces/changes many tests and assets (including binary nupkgs). These are cross-cutting and affect runtime, debug flows, and extension behavior.
  • Recommendation: Update the PR to add the matching risk label on the GitHub PR (e.g., risk:high) and update the Risk Level section of the PR body to High if you agree. If you intentionally assessed Medium, add an explicit justification in the PR body explaining why the changes are Medium despite the size (e.g., limited surface area, read-only additions, backward-compatible runtime changes, step-by-step rollout plan, mitigations and coverage).

Advised risk (based on code diff): High — please add risk:high label to the PR and update the Risk Level section accordingly.

⚠️ 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 short and doesn't capture the breadth of the changes. The diff includes: language server (LSP) additions/changes for C#; new and removed assets (LSP zip, new SDK nupkg); codeful workflow creation logic and Program.cs manipulation; telemetry and diagnostic improvements; parallelization/cache changes for Azure connector details; many new/updated unit and integration tests; changes to debug/startup/process handling and PowerShell scripts; UI changes (Overview, Designer, Connection view), and batching/atomic changes for connections.
  • Recommendation: Expand this to a concise but thorough summary. Example content to paste/update:
    • What: "Adds C# LSP server support and first-class codeful workflow tooling: create/add codeful workflows, update Program.cs, update tasks/launch/settings for codeful projects, integrate LSP SDK, and add end-to-end flow to detect and run codeful workflows. Improves connection view reliability, pre-warms tokens, adds caching, and adds many tests and templates."
    • Why: "Enable better C#/codeful developer experience: debugging, Overview for codeful projects, generation of Program/CSProj and NuGet config, and more reliable connections and LSP completions."

Impact of Change

  • Issue: This section is underfilled. "Developers" and "System" are blank in the current PR body. Given the size and types of changes, we need clear impact information.
  • Recommendation: Fill out the impact section with concrete details tied to the code changes. Example recommendations to include:
    • Users: "C# / codeful Logic Apps users: new capability to create codeful workflows, open Overview for C# projects, better local debugging experience for codeful projects, and UI changes to connection and overview flows. Some UI controls and behaviors could change (Run/Trigger buttons for codeful)."
    • Developers: "LSP changes: language server binaries and SDK are included; new LSP middleware for filtered completions; new exported LSP request custom/getWorkflowMetadata. New helper functions for Program.cs manipulation. Tests added/modified. Developers working on the extension should be aware of new public functions, event hooks, and assets."
    • System: "Adds LSP assets (zip and nupkg), modifies design/time runtime startup and process validation behavior (caching and child PID resolution), changes PowerShell script to gather descendants, and caches Azure connector details. This can impact startup time, debugging flows, and requires packaging updates. Consider compatibility and extension size."

⚠️ Test Plan

  • Assessment: The PR body marks: E2E tests added/updated and Manual testing completed. Unit tests were not checked in the PR body, but the code diff contains many new unit test files and updates — an inconsistency.
  • Issue: Please update the Test Plan checklist to reflect the tests actually added (there are many unit tests and component-level tests added). Also clarify how E2E tests were run and what environments were used. If some tests are only added in source but not run in CI, state that and describe how to run them locally.
  • Recommendation:
    • Tick "Unit tests added/updated" in the PR body and describe which suites were added/changed (list key test files or areas: createWorkspace, connectionView, codeful utilities, LSP completion filter, startDesignTimeApi validation, etc.).
    • Describe how to run E2E (commands, environment, any emulators). If E2E was run manually, explain steps and results.
    • If any tests are flaky or platform-specific (Windows vs Linux for PowerShell child process checks), document that and note mitigation.

⚠️ Contributors

  • Assessment: Blank in PR body.
  • Recommendation: Add contributors (authors, reviewers, PMs, designers) to credit collaborators. If intentionally left blank, add a short note in the PR body: "No additional contributors".

⚠️ Screenshots/Videos

  • Assessment: Blank in PR body. There are UI/UX changes to the Designer, Overview, and Connection view.
  • Recommendation: For UI changes (Overview and Connection view especially), include screenshots or short screen recordings showing before/after where practical. At minimum, add one or two mockups/screenshots for major UX changes or note why not applicable.

Summary Table

Section Status Recommendation
Title ⚠️ Use conventional commit style; capitalize "C#" and make scope explicit.
Commit Type Keep feature — only one selected which is correct.
Risk Level Add risk:high label on PR and update PR body Risk Level to High (advised).
What & Why ⚠️ Expand to describe LSP, runtime, UI, packaging, and test surface.
Impact of Change Fill Users/Developers/System with concrete impacts from diff.
Test Plan ⚠️ Check Unit tests box, describe test runs, and environment.
Contributors ⚠️ Add contributor list or note none.
Screenshots/Videos ⚠️ Add screenshots for UI/UX changes or explain omission.

Summary and next steps

  • Advised risk level based on the code diff: High. This is higher than the PR body’s selected "Medium" — please update the PR body and add a GitHub label (e.g., risk:high) to match. The changes touch the LSP, runtime startup/validation, packaging (binary assets and nupkg), connection persistence logic, and many UI flows — these affect both developer and user-facing paths and thus justify the higher risk.
  • Please update the PR with the following (minimum):
    1. Update the PR title to be clearer and follow conventional commit casing (example provided above).
    2. Add a risk label on the GitHub PR (risk:high) and update the Risk Level section to "High" or provide a detailed justification if you want to keep "Medium".
    3. Expand "What & Why" to include the major areas changed (LSP, codeful logic, runtime/start, connection view, packaging, tests).
    4. Fill Impact of Change: provide bullet points for Users, Developers, and System with specifics (see recommendations above). Mention any migration or configuration impacts, e.g., new extension bundle version, new nupkg asset, or new behaviors requiring environment changes.
    5. Update Test Plan: mark Unit tests added/updated (they exist in the diff) and detail how E2E/manual testing was performed and on which OS/environments. Mention any platform-specific notes (PowerShell scripts / Windows child process differences).
    6. Add Contributors or a short note if intentionally blank.
    7. Add screenshots/videos for UI changes (Overview, Connection view) if possible.
    8. Add the risk:high label to the PR and, optionally, call out any mitigations (feature flags, canary rollout, steps to revert, testing checklist) to help reviewers and release managers.

If you update the PR body/title and add the risk label, re-request review and I will re-check the updated PR metadata and validate the requested fields. Thank you for the thorough implementation and tests — once the PR metadata is aligned with the actual changes the submission will be much easier to approve.


Last updated: Wed, 06 May 2026 08:17:28 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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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

lambrianmsft and others added 2 commits May 5, 2026 20:18
Route codeful projects through the existing Overview page from Program.cs, with a workflow dropdown that switches run history, run trigger, callback info, and agent URL state for the selected workflow.

Remove the separate codeful run history command, route, webview app, and shared route constants. Hide the per-designer Run history view for codeful workflows while preserving codeless workflow.json Overview behavior.

Add reducer coverage for centralized codeful workflow metadata and targeted callback info updates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the default stateful codeful template to avoid the unsupported trigger-body expression that crashes the worker during startup while keeping the MSN Weather sample action and response body.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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