Skip to content

chore(openapi): add the AI analysis and task endpoints to the clients - #2054

Open
irvingouj@Devolutions (irvingoujAtDevolution) wants to merge 2 commits into
feat/recording-ai-analysisfrom
feat/ai-analysis-openapi
Open

irvingouj@Devolutions (irvingoujAtDevolution) wants to merge 2 commits into
feat/recording-ai-analysisfrom
feat/ai-analysis-openapi

Conversation

@irvingoujAtDevolution

@irvingoujAtDevolution irvingouj@Devolutions (irvingoujAtDevolution) commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

The OpenAPI side of the AI analysis endpoints (#2044): the regenerated gateway-api.yaml, .NET client and TS Angular client, plus the two new scopes in Devolutions.Gateway.Utils.

  • AccessScope gains gateway.tasks.recording-ai-analysis.start and gateway.tasks.recording-ai-analysis.read, with serialization tests.
  • gateway-api.yaml and both clients gain POST /jet/jrec/{session_id}/ai-analysis, GET /jet/jrec/{session_id}/ai-analysis/{task_id} (both in JrecApi / JrecService) and their models (AiAnalysisRequest, TaskInfo, the running/succeeded/failed payloads, AiAnalysisConflict).

Everything under openapi/ is generated from the Rust annotations in #2044 (devolutions-gateway/src/openapi.rs); only the AI analysis and task parts were kept, since the generator on this machine also rewrites unrelated files.

Where to look: utils/dotnet/Devolutions.Gateway.Utils/src/AccessScope.cs and gateway-api.yaml; the client code is generated.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

Let maintainers know that an action is required on their side

  • Add the label release-required Please cut a new release (Devolutions Gateway, Devolutions Agent, Jetsocat, PowerShell module) when you request a maintainer to cut a new release (Devolutions Gateway, Devolutions Agent, Jetsocat, PowerShell module)

  • Add the label release-blocker Follow-up is required before cutting a new release if a follow-up is required before cutting a new release

  • Add the label publish-required Please publish libraries (`Devolutions.Gateway.Utils`, OpenAPI clients, etc) when you request a maintainer to publish libraries (Devolutions.Gateway.Utils, OpenAPI clients, etc.)

  • Add the label publish-blocker Follow-up is required before publishing libraries if a follow-up is required before publishing libraries

@irvingoujAtDevolution irvingouj@Devolutions (irvingoujAtDevolution) changed the title feat/ai analysis openapi chore(openapi): add the AI analysis and task endpoints to the clients Oct 8, 2026
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) force-pushed the feat/ai-analysis-openapi branch 2 times, most recently from d01b043 to 581df74 Compare October 8, 2026 19:15
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) removed this pull request from stack #2052 October 8, 2026 19:35
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) force-pushed the feat/ai-analysis-openapi branch 2 times, most recently from 12613a4 to 6f3941d Compare October 8, 2026 20:16
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) force-pushed the feat/ai-analysis-openapi branch 6 times, most recently from 8a01978 to 038abb6 Compare October 8, 2026 22:57
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) marked this pull request as ready for review October 8, 2026 23:35
Copilot AI balanced review requested due to automatic review settings October 8, 2026 23:35

Copilot AI left a comment

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.

🟡 Changes recommended

The .NET request model exposes API keys through ToString(), and numeric schema constraints diverge from the runtime contract.

3 open findings
What changed in this PR

Adds OpenAPI contracts and generated .NET/Angular clients for the recording AI-analysis task endpoints introduced by #2044.

Changes:

  • Adds start/read task scopes and serialization tests.
  • Adds AI-analysis endpoints, task schemas, and generated client APIs.
  • Adds generated model and endpoint documentation.

Prose verification was skipped because the documentation is generated from OpenAPI.

File Description
utils/​dotnet/​Devolutions.Gateway.Utils/​src/​AccessScope.cs Adds AI-analysis scopes.
utils/​dotnet/​Devolutions.Gateway.Utils.Tests/​JsonSerializationTests.cs Tests new scope serialization.
devolutions-gateway/​openapi/​ts-angular-client/​model/​taskState.ts Adds task-state model.
devolutions-gateway/​openapi/​ts-angular-client/​model/​taskInfo.ts Adds task information model.
devolutions-gateway/​openapi/​ts-angular-client/​model/​models.ts Exports new models.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiProvider.ts Adds provider enum.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisUsage.ts Adds token-usage model.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisSucceededPayload.ts Adds success payload.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisRunningPayload.ts Adds progress payload.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisRequest.ts Adds request model.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisFailedPayload.ts Adds failure payload.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisConflictCode.ts Adds conflict codes.
devolutions-gateway/​openapi/​ts-angular-client/​model/​aiAnalysisConflict.ts Adds conflict response.
devolutions-gateway/​openapi/​ts-angular-client/​model/​accessScope.ts Adds task scopes.
devolutions-gateway/​openapi/​ts-angular-client/​api/​jrec.service.ts Adds start/read methods.
devolutions-gateway/​openapi/​ts-angular-client/​.openapi-generator/​FILES Tracks generated models.
devolutions-gateway/​openapi/​gateway-api.yaml Defines endpoints and schemas.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​TaskState.cs Adds task-state enum.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​TaskInfo.cs Adds task information model.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiProvider.cs Adds provider enum.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisUsage.cs Adds token-usage model.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisSucceededPayload.cs Adds success payload.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisRunningPayload.cs Adds progress payload.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisRequest.cs Adds request model.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisFailedPayload.cs Adds failure payload.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisConflictCode.cs Adds conflict codes.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AiAnalysisConflict.cs Adds conflict response.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Model/​AccessScope.cs Adds task scopes.
devolutions-gateway/​openapi/​dotnet-client/​src/​Devolutions.Gateway.Client/​Api/​JrecApi.cs Adds synchronous and asynchronous APIs.
devolutions-gateway/​openapi/​dotnet-client/​README.md Indexes new APIs and models.
devolutions-gateway/​openapi/​dotnet-client/​docs/​TaskState.md Documents task states.
devolutions-gateway/​openapi/​dotnet-client/​docs/​TaskInfo.md Documents task information.
devolutions-gateway/​openapi/​dotnet-client/​docs/​JrecApi.md Documents new endpoints.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiProvider.md Documents providers.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisUsage.md Documents token usage.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisSucceededPayload.md Documents success payload.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisRunningPayload.md Documents progress payload.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisRequest.md Documents request fields.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisFailedPayload.md Documents failure payload.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisConflictCode.md Documents conflict codes.
devolutions-gateway/​openapi/​dotnet-client/​docs/​AiAnalysisConflict.md Documents conflict responses.
devolutions-gateway/​openapi/​dotnet-client/​.openapi-generator/​FILES Tracks generated .NET files.
devolutions-gateway/​openapi/​doc/​index.adoc Adds generated API reference.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

{
StringBuilder sb = new StringBuilder();
sb.Append("class AiAnalysisRequest {\n");
sb.Append(" ApiKey: ").Append(ApiKey).Append("\n");
Comment on lines +1573 to +1577
type: integer
format: int32
description: Upper bound of tokens in each AI answer.
nullable: true
minimum: 0
Comment on lines +1607 to +1609
description: Part of the step done, from 0 to 100.
nullable: true
minimum: 0
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) force-pushed the feat/ai-analysis-openapi branch 3 times, most recently from 8e4d74e to df68eb2 Compare October 13, 2026 17:21
@irvingoujAtDevolution
irvingouj@Devolutions (irvingoujAtDevolution) removed this pull request from stack #2059 October 13, 2026 17:32
DVLS can now sign scope tokens for
`gateway.tasks.recording-ai-analysis.start`, to start an AI analysis of
a recorded session, and `gateway.tasks.recording-ai-analysis.read`, to
read its Task.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adds `POST /jet/jrec/{session_id}/ai-analysis`,
`GET /jet/jrec/{session_id}/ai-analysis/{task_id}`,
their schemas and the `gateway.tasks.recording-ai-analysis.start` and
`gateway.tasks.recording-ai-analysis.read` scopes to gateway-api.yaml,
and regenerates the dotnet and TypeScript clients and the docs. Only
the AI analysis output is kept; the existing version and content-type
drift of the committed clients is left as is.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants