Enrique Alcántara activity https://gitlab.com/ealcantara 2026-03-19T15:53:31Z tag:gitlab.com,2026-03-19:5222896432 Enrique Alcántara commented on merge request !228112 at GitLab.org / GitLab 2026-03-19T15:53:31Z ealcantara Enrique Alcántara [email protected]

@lindsey-shelton Could you review this MR 🙏 ?

tag:gitlab.com,2026-03-19:5222849944 Enrique Alcántara opened merge request !228112: Move agent_status_icon to the shared/widgets directory at GitLab.org / GitLab 2026-03-19T15:44:05Z ealcantara Enrique Alcántara [email protected]

What does this MR do and why?

Move agent_status_icon.vue from duo_agents_platform/components/common/ to ai/shared/widgets/ so it can be reused across multiple AI features. Also consolidates the scattered utils.js files under ai/shared/ into a single ai/shared/utils/ directory with descriptive names (model_selection_utils.js, trusted_urls_utils.js), and adds a README.md documenting the purpose and structure of the ai/shared/ directory.

References

Screenshots or screen recordings

No UI changes — this is a pure refactor.

Before After
N/A N/A

How to set up and validate locally

  1. Run the affected frontend specs:
    yarn jest ee/spec/frontend/ai/shared/widgets/agent_status_icon_spec.js
    yarn jest ee/spec/frontend/ai/duo_agents_platform/components/common/agent_flow_list_item_spec.js
    yarn jest ee/spec/frontend/ai/shared/utils/
  2. Confirm all tests pass.

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-19:5222845400 Enrique Alcántara closed merge request !228111: Move agent_status_icon and consolidate shared AI utils at GitLab.org / GitLab 2026-03-19T15:43:06Z ealcantara Enrique Alcántara [email protected]

What does this MR do and why?

Resolves #594081.

Move agent_status_icon.vue from duo_agents_platform/components/common/ to the shared widgets directory (ai/shared/widgets/) so it can be reused across multiple agentic Duo Chat features. Also consolidates the two scattered utils.js files under ai/shared/ into a single ai/shared/utils/ directory with descriptive names (model_selection_utils.js, trusted_urls_utils.js), and adds a README.md documenting the purpose and structure of the ai/shared/ directory.

References

Screenshots or screen recordings

No UI changes — this is a pure refactor.

Before After
N/A N/A

How to set up and validate locally

  1. Run the affected frontend specs:
    yarn jest ee/spec/frontend/ai/shared/widgets/agent_status_icon_spec.js
    yarn jest ee/spec/frontend/ai/duo_agents_platform/components/common/agent_flow_list_item_spec.js
    yarn jest ee/spec/frontend/ai/shared/utils/
  2. Confirm all tests pass.

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-19:5222844519 Enrique Alcántara opened merge request !228111: Move agent_status_icon and consolidate shared AI utils at GitLab.org / GitLab 2026-03-19T15:42:56Z ealcantara Enrique Alcántara [email protected]

What does this MR do and why?

Resolves #594081.

Move agent_status_icon.vue from duo_agents_platform/components/common/ to the shared widgets directory (ai/shared/widgets/) so it can be reused across multiple agentic Duo Chat features. Also consolidates the two scattered utils.js files under ai/shared/ into a single ai/shared/utils/ directory with descriptive names (model_selection_utils.js, trusted_urls_utils.js), and adds a README.md documenting the purpose and structure of the ai/shared/ directory.

References

Screenshots or screen recordings

No UI changes — this is a pure refactor.

Before After
N/A N/A

How to set up and validate locally

  1. Run the affected frontend specs:
    yarn jest ee/spec/frontend/ai/shared/widgets/agent_status_icon_spec.js
    yarn jest ee/spec/frontend/ai/duo_agents_platform/components/common/agent_flow_list_item_spec.js
    yarn jest ee/spec/frontend/ai/shared/utils/
  2. Confirm all tests pass.

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-19:5222834448 Enrique Alcántara closed merge request !228109: Move agent_status_icon and consolidate shared AI utils at GitLab.org / GitLab 2026-03-19T15:40:52Z ealcantara Enrique Alcántara [email protected]

What does this MR do and why?

Resolves #594081.

Move agent_status_icon.vue from duo_agents_platform/components/common/ to the shared widgets directory (ai/shared/widgets/) so it can be reused across multiple agentic Duo Chat features. Also consolidates the two scattered utils.js files under ai/shared/ into a single ai/shared/utils/ directory with descriptive names (model_selection_utils.js, trusted_urls_utils.js), and adds a README.md documenting the purpose and structure of the ai/shared/ directory.

References

Screenshots or screen recordings

No UI changes — this is a pure refactor.

Before After
N/A N/A

How to set up and validate locally

  1. Run the affected frontend specs:
    yarn jest ee/spec/frontend/ai/shared/widgets/agent_status_icon_spec.js
    yarn jest ee/spec/frontend/ai/duo_agents_platform/components/common/agent_flow_list_item_spec.js
    yarn jest ee/spec/frontend/ai/shared/utils/
  2. Confirm all tests pass.

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-19:5222828880 Enrique Alcántara opened merge request !228109: Move agent_status_icon and consolidate shared AI utils at GitLab.org / GitLab 2026-03-19T15:39:36Z ealcantara Enrique Alcántara [email protected]

What does this MR do and why?

Resolves #594081.

Move agent_status_icon.vue from duo_agents_platform/components/common/ to the shared widgets directory (ai/shared/widgets/) so it can be reused across multiple agentic Duo Chat features. Also consolidates the two scattered utils.js files under ai/shared/ into a single ai/shared/utils/ directory with descriptive names (model_selection_utils.js, trusted_urls_utils.js), and adds a README.md documenting the purpose and structure of the ai/shared/ directory.

References

Screenshots or screen recordings

No UI changes — this is a pure refactor.

Before After
N/A N/A

How to set up and validate locally

  1. Run the affected frontend specs:
    yarn jest ee/spec/frontend/ai/shared/widgets/agent_status_icon_spec.js
    yarn jest ee/spec/frontend/ai/duo_agents_platform/components/common/agent_flow_list_item_spec.js
    yarn jest ee/spec/frontend/ai/shared/utils/
  2. Confirm all tests pass.

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-19:5222826996 Enrique Alcántara pushed new project branch 594081-ai-shared-components-reorganization at GitLab.org / GitLab 2026-03-19T15:39:11Z ealcantara Enrique Alcántara [email protected]

Enrique Alcántara (ea0290ee) at 19 Mar 15:39

Add README.md to ai/shared directory

... and 2 more commits

tag:gitlab.com,2026-03-19:5222679876 Enrique Alcántara commented on merge request !227856 at GitLab.org / GitLab 2026-03-19T15:09:53Z ealcantara Enrique Alcántara [email protected]

This is a good suggestion. WDYT @mrincon ?

tag:gitlab.com,2026-03-19:5221886495 Enrique Alcántara commented on merge request !476 at GitLab.org / Duo UI 2026-03-19T12:18:41Z ealcantara Enrique Alcántara [email protected]

Thanks for the review, @iamphill. This is ready for another round 🏓 .

tag:gitlab.com,2026-03-19:5221882785 Enrique Alcántara commented on issue #591505 at GitLab.org / GitLab 2026-03-19T12:17:52Z ealcantara Enrique Alcántara [email protected]

Async issue update 2026-03-19

  • Current status: I've been doing some groundwork to deliver this feature:
    • I submitted an MR in Duo UI that will enable us to implement custom agentic chat widgets in the GitLab application: duo-ui!476. This is necessary to implement a session widget that can monitor and display a session's status.
    • I reached out to Emily and to workflow FE engineers to coordinate creating a shared component to display a session status consistently across features. I confirmed that this is the right direction.
    • I found a GraphQL subscription that will power the widget status monitor functionality.
    • I left feedback in the backend Merge Request that implements the start_flow tool: gitlab-org/modelops/applied-ml/code-suggestions/ai-assist!4777 (comment 3169710597)
  • Next steps
  • Shipping this milestone: Yes
  • Scope reduction opportunities: No

/cc @juan-silva @dashaadu @emilybauman @tbulva @dillonwheeler

tag:gitlab.com,2026-03-19:5221850803 Enrique Alcántara commented on merge request !476 at GitLab.org / Duo UI 2026-03-19T12:10:04Z ealcantara Enrique Alcántara [email protected]

Good idea. I'll log a warning to make it more evident the error's root cause.

tag:gitlab.com,2026-03-19:5221846888 Enrique Alcántara commented on merge request !476 at GitLab.org / Duo UI 2026-03-19T12:09:11Z ealcantara Enrique Alcántara [email protected]

👍 Thanks for catching this.

tag:gitlab.com,2026-03-19:5221844045 Enrique Alcántara pushed to project branch allow-injecting-custom-tool-rendering-widgets-in-agentic-chat at GitLab.org / Duo UI 2026-03-19T12:08:32Z ealcantara Enrique Alcántara [email protected]

Enrique Alcántara (7bfce810) at 19 Mar 12:08

chore: Code review feedback

tag:gitlab.com,2026-03-19:5221765615 Enrique Alcántara commented on issue #588861 at GitLab.org / GitLab 2026-03-19T11:48:46Z ealcantara Enrique Alcántara [email protected]

Async issue update 2026-03-19

  • Current status: I submitted an MR that replaces the hardcoded websocket API URL with a URL generated by the API URL builder !228061. When I tested this change locally, Agentic Chat successfully connects to the websocket API but the websocket doesn't stream content. I found that there is another component (ai-gateway, duo-workflow-service, etc.) that doesn't respect the external_url either.
  • Next steps I investigated as much as I could but I couldn't identify the faulty component. I wrote down my investigation results and requested help from backend developers !228061 (comment 3173846966)
  • Shipping this milestone: Yes
  • Scope reduction opportunities: No

/cc @juan-silva @dashaadu @lkorbasiewicz

tag:gitlab.com,2026-03-19:5221747154 Enrique Alcántara commented on merge request !228061 at GitLab.org / GitLab 2026-03-19T11:44:01Z ealcantara Enrique Alcántara [email protected]

@dillonwheeler @evakadlecova @lulalala I need your help. This Merge Request fixes a bug where agentic chat frontend doesn't build the websocket API URL using some instance-level configuration. After fixing the bug in the frontend, I noticed that the websocket didn't stream a response.

I checked the workhorse logs and I noticed that the duo workflow client in Workhorse is receiving this error response that indicates the /api/graphql endpoint is not found:

2026-03-19_11:33:02.78119 gitlab-workhorse : {"correlation_id":"01KM2XXMXDHJK5WPHJG1XCT72F","duration_ms":3,"error":"handleAgentMessages: failed to read a gRPC message: rpc error: code = Internal desc = workflow execution failure: Exception: Invalid JSON response from GraphQL: Not found "/api/graphql"\n","level":"error","method":"GET","msg":"error executing workflow","time":"2026-03-19T12:33:02+01:00","uri":"/gdk-instance/api/v4/ai/duo_workflows/ws?root_namespace_id=&namespace_id=&user_selected_model_identifier=claude_haiku_4_5_20251001&workflow_definition=chat&client_type=browser"}

My interpretation of this error is that there is another component (ai-gateway, duo-workflow-service, etc.) that doesn't respect the external_url GitLab instance configuration.

I added the external_url to the AIGW_GITLAB_URL and AIGW_GITLAB_API_URL env variables in <gdk-dir>/gitlab-ai-gateway/.env but it didn't solve the problem.

Do you know where does this HTTP request originate? I'm out of my depth here so any help is greatly appreciated.

tag:gitlab.com,2026-03-19:5221670149 Enrique Alcántara pushed to project branch 588861-fix-agentic-chat-does-not-work-with-external-url at GitLab.org / GitLab 2026-03-19T11:24:40Z ealcantara Enrique Alcántara [email protected]

Enrique Alcántara (b1c73593) at 19 Mar 11:24

Use external URL in duo agentic chat workflow URL

tag:gitlab.com,2026-03-19:5221664511 Enrique Alcántara opened merge request !228061: Fix: Duo Chat (Agentic) WebSocket connection fails when external_url contains a context path at GitLab.org / ... 2026-03-19T11:23:10Z ealcantara Enrique Alcántara [email protected]

What does this MR do and why?

This change refactors how the application builds WebSocket URLs for AI agentic chat. Instead of using a hardcoded URL path, the code now uses a centralized API utility that dynamically constructs the URL based on the current API version and configuration. . The functionality remains the same - it still connects to the same AI workflow WebSocket endpoint - but the implementation is now more robust and follows better coding practices.

References

#588861

Screenshots or screen recordings

This MR doesn't introduce user-facing changes.

How to set up and validate locally

  1. Follow https://gitlab-org.gitlab.io/gitlab-development-kit/howto/ai/ to set up Gitlab Duo in your GDK.

  2. Set the relative_url_root property in the gdk.yml file, for example:

    Screenshot 2026-03-19 at 12.27.40.png

  3. Run gdk reconfigure && gdk restart.

  4. Open your GDK GitLab instance at <gdk-url>/gdk-instance, for example: https://gdk.test:3443/gdk-instance/.

  5. Send a prompt using agentic chat. You should get a successful response.

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-19:5221597491 Enrique Alcántara pushed new project branch 588861-fix-agentic-chat-does-not-work-with-external-url at GitLab.org / GitLab 2026-03-19T11:05:34Z ealcantara Enrique Alcántara [email protected]

Enrique Alcántara (cf71cc1a) at 19 Mar 11:05

Fix external url

tag:gitlab.com,2026-03-19:5221439905 Enrique Alcántara deleted project branch 2086-smart-routing-snowplow-events at GitLab.org / editor-extensions / GitLab Language Server 2026-03-19T10:29:01Z ealcantara Enrique Alcántara [email protected]

Enrique Alcántara (67aa945a) at 19 Mar 10:29

tag:gitlab.com,2026-03-19:5221438402 Enrique Alcántara closed issue #2086: Change GitLab Language Server to send events to Rails backend at GitLab.org / editor-extensions / GitLab Language Server 2026-03-19T10:28:39Z ealcantara Enrique Alcántara [email protected]

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem

Snowplow events are currently sent directly from the editor extensions. We want to route these events through the GitLab instance for a number of reasons:

  1. Unifying how data is collected - this makes it easier to guarantee that events always have a specific shape etc.
  2. Allowing administrator control - since it's all going through the instance it's easier to make sure data is only forwarded if appropriate.
  3. Improving customer trust - no event data is sent individually to a strange snowplow address.

We need to support any versions of GitLab and both self-managed and gitlab.com.

GitLab instance snowplowprd.trx.gitlab.net Event forwarding
Gitlab.com - any version X
SM - version < 18.0 X
SM - version >= 18.0 X

Desired Outcome

The extensions should still respect the do-not-track configuration.

The language server should look at the version of GitLab that it's connected to and only forward events to the instance if the instance support event forwarding. Otherwise it should keep sending events to the event collector (snowplowprd.trx.gitlab.net).

It should still be easy to verify that telemetry is sent correctly when working on IDE extensions. This might require running a local GDK + snowplow-micro.

Potential Solution

Documentation Update Needed

  • Yes
  • No

How to verify

Further actions needed