Implement Custom Agent validation service using DWS ValidateFlowConfig gRPC endpoint
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Label this issue](https://contributors.gitlab.com/manage-issue?action=label&projectId=278964&issueIid=601986)
</details>
<!--IssueSummary end-->
## Summary
Create a validation service for Custom Agents in the AI Catalog that calls the Duo Workflow Service (DWS) `ValidateFlowConfig` gRPC endpoint at **creation time**, preventing users from saving agents with prompts that DWS cannot run.
This is the Custom Agent counterpart to the Custom Flows validation implemented in https://gitlab.com/gitlab-org/gitlab/-/work_items/597224.
## Background
Custom Flows already validate their configuration against DWS before saving (shipped in 19.0 via https://gitlab.com/gitlab-org/gitlab/-/work_items/597224). However, Custom Agents bypass this validation entirely, allowing agents to be created with prompts that will fail at runtime.
Two failure modes have been observed (documented in https://gitlab.com/gitlab-org/gitlab/-/work_items/600355):
1. **Security validation failures** — Certain prompt strings trip DWS security rules. The resulting custom agent silently does nothing when chatted to (no error feedback to the user).
2. **Templating language compilation failures** — Prompts containing strings that resemble DWS templating syntax (e.g. `{{< details >}}`) cause DWS to return an error during chat.
Additionally, https://gitlab.com/gitlab-org/gitlab/-/work_items/601661 highlights the broader UX gap: there is no pre-execution validation for custom agents, and agents can silently fail while consuming credits.
## Proposal
Implement a validation service that:
1. **Intercepts Custom Agent create/update operations** in the AI Catalog backend (GitLab Rails).
2. **Calls the DWS `ValidateFlowConfig` gRPC method** with the agent's prompt/configuration payload.
3. **Surfaces validation errors** to the user in the AI Catalog UI before persisting the agent, preventing invalid agents from being saved.
4. **Allows valid agents** to be saved normally with no change to the current flow.
### Implementation Notes
- The DWS gRPC `ValidateFlowConfig` endpoint already exists and is proven to catch both security and templating errors (confirmed in the discussion on https://gitlab.com/gitlab-org/gitlab/-/work_items/600355#note_3361263531).
- The integration pattern from Custom Flows (https://gitlab.com/gitlab-org/gitlab/-/merge_requests/235560) can be reused/extended for Custom Agents.
- Consider whether a feature flag is needed for rollout (similar to `ai_catalog_dws_validate_flow_config` used for flows).
## Acceptance Criteria
- [ ] GitLab Rails calls the DWS `ValidateFlowConfig` gRPC endpoint when a Custom Agent is created or updated in the AI Catalog
- [ ] Validation errors from DWS are surfaced to the user in the AI Catalog UI before the agent is persisted
- [ ] Prompts that trip DWS security validation are blocked with a clear, actionable error message
- [ ] Prompts containing invalid templating syntax are blocked with a clear error message
- [ ] Valid Custom Agents are unaffected — they continue to save and function normally
- [ ] The integration is covered by appropriate unit and integration tests
- [ ] A feature flag is used for safe rollout (if applicable)
## Related
- https://gitlab.com/gitlab-org/gitlab/-/work_items/600355 — Parent issue identifying the need for Custom Agent validation
- https://gitlab.com/gitlab-org/gitlab/-/work_items/597224 — Custom Flows validation (completed, pattern to follow)
- https://gitlab.com/gitlab-org/gitlab/-/work_items/600741 — Security validation failure errors not handled properly
- https://gitlab.com/gitlab-org/gitlab/-/work_items/601661 — No live feedback / no pre-execution prompt validation for Custom Agents
issue