Surabhi Suman activity https://gitlab.com/ssuman3 2026-03-17T12:52:42Z tag:gitlab.com,2026-03-17:5212726966 Surabhi Suman opened issue #2043: Follow-up from "Routing OneOffComponent when Agent fails to create tool_calls" at GitLab.org / ModelOps / AI Assisted (for... 2026-03-17T12:52:42Z ssuman3 Surabhi Suman tag:gitlab.com,2026-03-17:5212724048 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-17T12:52:04Z ssuman3 Surabhi Suman

Yes, thanks for reminding. Do you mind if we do it in a follow-up?

tag:gitlab.com,2026-03-17:5212371642 Surabhi Suman approved merge request !226743: Set up additional git env variables for workload at GitLab.org / GitLab 2026-03-17T11:31:36Z ssuman3 Surabhi Suman

What does this MR do and why?

Rather than relying on special handling of special "DUO_WORKFLOW_*" env variables in the Duo CLI's run_git_command this MR sets up the git environment in advance so that any git command which is run as a normal bash command works correctly.

Special considerations:

  1. A git credential-helper approach does not work since Runners overwrite any git remote urls and injects the CI_JOB_TOKEN into those.
  2. Instead we directly set up a URL with the oAuth token, which then does not get overwritten.
  3. The old "DUO_WORKFLOW_*" variables are still used, for flows that still use run_git_command specifically right now.

References

Related to #586973

Screenshots or screen recordings

Before After
Screenshot_2026-03-10_at_21.13.36 Screenshot_2026-03-10_at_21.12.09

How to set up and validate locally

  1. Set up small issue. The goal is that the agent gets to pushing changes quickly.
  2. Run "Generate MR with Duo" on it -> observe it still works and commands in the session look like in the "Before" screenshot.
  3. Verify that changes are shown in result MR
  4. In your local AI gateway change any occurence of run_git_command in duo_workflow_service/agent_platform/v1/flows/configs/developer.yml to run_command
  5. Run "Generate MR with Duo" on it -> observe it still works and commands in the session look like in the "Before" screenshot
  6. Verify that changes are shown in result MR

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-17:5212326952 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-17T11:21:22Z ssuman3 Surabhi Suman

@GitLabDuo _create_error_feedback method is called only from these two error code paths that I mentioned above

tag:gitlab.com,2026-03-17:5211930610 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-17T09:58:12Z ssuman3 Surabhi Suman

@romaneisner there are two bugs and I think both are unrelated to the changes in this MR

  1. For my langsmith trace from yesterday: As I see in the fix_pipeline flow's definition, the routing for fix_pipeline_decide_approach depends on the Agent's final answer i.e. derived from an AgentComponent. if you checkout the agent's response, it decided to go for add_comment based on the information it had. There are no changes in this MR that can potentially impact AgentComponent's routing. Attached screenshot explains agent reasoning

Screenshot 2026-03-17 at 3.29.01 PM.png

I believe if want the agent to steer in a different direction, we need to make changes to the fix_pipeline flow specifically to the routing part to give it an exit when the Agent concludes it can't raise an MR with the fix or add comment since its working on default branch. This seems to be a genuine bug with fix_pipeline and can be recreated without this MR changes.

  1. The one you ran yesterday for default branch pipeline failure: I re-generated the same scenario in my local and it was unusual to see agent going for tool_call even the prompt explicitly says to do nothing. I see the same behaviour in main branch too, i.e. without the changes in this MR. Here's the trace from main branch of gitlab-ai-gateway . I used Anthropic Sonnet 4.5 directly without vertex and the agent consistently created this incorrect tool_call. Attaching the SS from this run, you can see the same prompt as that in main branch.

    Screenshot 2026-03-17 at 4.44.54 PM.png

we need to keep v1 and experimental in sync (with experimental being a superset of v1)

I planned to raise another MR to keep it consistent so that a single MR doesn't become too big.

tag:gitlab.com,2026-03-17:5211591150 Surabhi Suman commented on merge request !227008 at GitLab.org / GitLab 2026-03-17T08:45:24Z ssuman3 Surabhi Suman

Hey @rodrigo.tomonari I wasn't able to reproduce it even with the steps you mentioned but I can validate it with the unit tests, when I commented the rescue ActiveRecord::RecordInvalid, I got the exception ActiveRecord::RecordInvalid: Error adding importer user to Project members. Validation failed: User already exists in source.

Could you please review the MR as an SME?

tag:gitlab.com,2026-03-17:5211561541 Surabhi Suman commented on merge request !227008 at GitLab.org / GitLab 2026-03-17T08:38:40Z ssuman3 Surabhi Suman

Closing this thread as no longer applicable.

tag:gitlab.com,2026-03-17:5211554290 Surabhi Suman pushed to project branch ss/fix-project-authorization-for-catalog-service-accounts at GitLab.org / GitLab 2026-03-17T08:36:47Z ssuman3 Surabhi Suman

Surabhi Suman (ecca3b38) at 17 Mar 08:36

Avoid project member cleanup in project import flow

... and 1370 more commits

tag:gitlab.com,2026-03-17:5211215025 Surabhi Suman approved merge request !226996: Add MCP GetSavedViewWorkItemsTool for filtered queries at GitLab.org / GitLab 2026-03-17T06:58:38Z ssuman3 Surabhi Suman

What does this MR do and why?

Introduces GetSavedViewWorkItemsTool, a new MCP GraphQL tool that queries namespace.workItems with filters extracted from a saved view. This tool maps saved view filter keys to GraphQL query variables and applies hierarchy scoping defaults.

This is the second of three MRs that break down !226663 (closed):

  1. GetSavedViewTool (fetch saved view metadata) - !226995
  2. This MR - GetSavedViewWorkItemsTool (fetch work items with filters)
  3. Orchestrator service + tool registration

Key changes

  • New Mcp::Tools::WorkItems::GetSavedViewWorkItemsTool class with a GetWorkItemsFull GraphQL query
  • Filter mapping from saved view keys to GraphQL variables (assignees, labels, milestones, state, types, confidential, negated/union filters)
  • Hierarchy scoping defaults (includeDescendants: true, excludeProjects: false, excludeGroupWorkItems: false)
  • Pagination support via first/after params
  • Work item response includes widgets (assignees, labels, milestone, dates, hierarchy)
  • Comprehensive unit and integration tests

Supported filter mapping

Saved View Filter GraphQL Variable
assigneeUsernames $assigneeUsernames
assigneeWildcardId $assigneeWildcardId
authorUsername $authorUsername
confidential $confidential
labelName $labelName
milestoneTitle $milestoneTitle
milestoneWildcardId $milestoneWildcardId
myReactionEmoji $myReactionEmoji
types $types
state $state
not $not
or $or

How to set up and validate locally

Unit tests have been added. UI tests will be shared in the third MR.

References

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-17:5211215004 Surabhi Suman commented on merge request !226996 at GitLab.org / GitLab 2026-03-17T06:58:38Z ssuman3 Surabhi Suman

thanks @ngala, LGTM 🚀

tag:gitlab.com,2026-03-17:5211208858 Surabhi Suman commented on merge request !226995 at GitLab.org / GitLab 2026-03-17T06:56:10Z ssuman3 Surabhi Suman

thanks @ngala, LGTM 🚀

tag:gitlab.com,2026-03-17:5211208738 Surabhi Suman approved merge request !226995: Add MCP GetSavedViewTool for fetching saved views at GitLab.org / GitLab 2026-03-17T06:56:08Z ssuman3 Surabhi Suman

What does this MR do and why?

Introduces GetSavedViewTool, a new MCP GraphQL tool that queries namespace.savedViews to retrieve a saved view's metadata (name, description, filters, and sort configuration).

This is the first of three MRs that break down !226663 (closed):

  1. This MR - GetSavedViewTool (fetch saved view metadata)
  2. GetSavedViewWorkItemsTool (fetch work items with filters)
  3. Orchestrator service + tool registration

Key changes

  • New Mcp::Tools::WorkItems::GetSavedViewTool class that builds and executes a GetNamespaceSavedView GraphQL query
  • Extracts the first saved view node from the response and returns it as structured content
  • Returns an error if the saved view is not found or the user lacks access
  • Comprehensive unit and integration tests

How to set up and validate locally

Unit tests have been added. UI tests will be shared in the third MR.

References

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-17:5211203862 Surabhi Suman commented on merge request !226995 at GitLab.org / GitLab 2026-03-17T06:54:27Z ssuman3 Surabhi Suman

Yeah I meant to put that comment on a different line to refer to process_result method. Sorry about that, thanks for addressing the comment!

tag:gitlab.com,2026-03-16:5208599456 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-16T14:20:03Z ssuman3 Surabhi Suman

@GitLabDuo the code path could either go for not tool_calls path or the errors path. In the next retry, the run method is called again and so the data gets refreshed. Can you think of a scenario when the context_dict could be stale?

tag:gitlab.com,2026-03-16:5208574373 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-16T14:14:56Z ssuman3 Surabhi Suman

@romaneisner @tmrrss could you please review this change? Original MR had to be reverted because of !4881 (comment 3159112842). I'm adding the changes again. I've tested this for developer (with git error), fix_pipeline (with pipeline failure in main branch) and DCR flows. Do lmk if there's any other scenario that I could be missing.

TIA

tag:gitlab.com,2026-03-16:5208558437 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-16T14:11:36Z ssuman3 Surabhi Suman

@GitLabDuo you didn't read the code correctly. this is the code

error_feedback = self._create_error_feedback(
                [feedback_message], [], attempts + 1, context
            )

            conversation_history_dict = self._conversation_history_key.to_nested_dict(
                [error_feedback]
            )
            result = merge_nested_dict(result, conversation_history_dict)
            result = merge_nested_dict(result, context_dict)

Error feedback is created where it updates the attempts and afterwards context_dict is updated so incremented value is preserved.

tag:gitlab.com,2026-03-16:5208542786 Surabhi Suman commented on merge request !4892 at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-16T14:08:31Z ssuman3 Surabhi Suman

@GitLabDuo context_dict is updated after attempts are updated using merge_nested_dict(result, context_dict)

tag:gitlab.com,2026-03-16:5208446524 Surabhi Suman pushed to project branch revert-73e8f90b at GitLab.org / ModelOps / AI Assisted (formerly Applied ML) / Code Suggestions / AI Gateway 2026-03-16T13:49:12Z ssuman3 Surabhi Suman

Surabhi Suman (41551b28) at 16 Mar 13:49

fix: Merge context data explicitly to the result