Bump duo-cli version from 9.25.0 to 9.29.0 in StartWorkflowService
What does this MR do and why?
Bumps the Duo CLI version pinned in Ai::DuoWorkflows::StartWorkflowService from 9.27.0 to 9.29.0.
Why
Flows started from a mention or from Implement on an issue run in a CI job, with the Duo CLI as the flow executor. In this headless CI mode, the CLI refuses to read images with read_file (capability_absent). Its CI workflow token carries no server_capabilities, so the image_response capability check always fails. The model cannot see screenshots in the repository or attachments on issues and merge requests.
gitlab-org/editor-extensions/gitlab-lsp!4393 (merged) fixes this by reading the capabilities from aiFlowsMetadata. It was tested end to end on GDK with a Rails-launched CI job: the issue upload read went from refused to success, and the agent described the image (gitlab-org/editor-extensions/gitlab-lsp!4393 (comment 3983006228)).
Why 9.29.0
gitlab-lsp releases with semantic-release, and someone runs the release job by hand. main already has two feat: commits since v9.28.1, so the next release is 9.29.0. If a release runs before the fix merges, the fix lands in a later version.
Scope
- One constant. CI reads it to install and verify the binary. The preflight check fails until the
9.29.0binaries exist in the package registry, so this pipeline is red until the release. - The constant only applies to custom images. The default image
workflow-generic-image:v0.0.21ships Duo CLI9.27.0, and jobs skip the download whenduois already present.
Before merging
- Duo CLI
9.29.0is released and its release notes includefix(cli): source image_response capability from aiFlowsMetadata in headless CI mode. - The preflight package registry check passes.
How to verify
- Custom image: add
agent-config.ymlwithimage: python:3.12to a GDK project. Start a flow from a mention. The job log showsDownloading duo-cli 9.29.0, andduo --versionprints9.29.0.
In both cases, ask the flow to read an image from the repository and an image attached to the issue. read_file returns the image instead of refusing it with capability_absent.
References
- Duo CLI fix: gitlab-org/editor-extensions/gitlab-lsp!4393 (merged)
- Default image: https://gitlab.com/gitlab-org/duo-workflow/default-docker-image
- Tracking issue: gitlab-org/modelops/applied-ml/code-suggestions/ai-assist#3109 (closed)
- Docs issue: gitlab-org/modelops/applied-ml/code-suggestions/ai-assist#3061
Closes gitlab-org/modelops/applied-ml/code-suggestions/ai-assist#3109 (closed)
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist.