Skip to content

Add "exposed" operation for system nexus endpoint#736

Open
spkane31 wants to merge 3 commits intomasterfrom
spk/signal-with-start
Open

Add "exposed" operation for system nexus endpoint#736
spkane31 wants to merge 3 commits intomasterfrom
spk/signal-with-start

Conversation

@spkane31
Copy link
Contributor

@spkane31 spkane31 commented Mar 18, 2026

What changed?
Add nexusannotations/v1 package to define service operations as exposed for Nexus handlers.

A sample of a code generator that takes use of this command is here

Why?
Enables the system nexus endpoint work in server repo

Breaking changes
NA

Server PR
NA

@spkane31 spkane31 requested review from a team as code owners March 18, 2026 21:41
// (-- api-linter: core::0136::prepositions=disabled
// aip.dev/not-precedent: "With" is used to indicate combined operation. --)
rpc SignalWithStartWorkflowExecution (SignalWithStartWorkflowExecutionRequest) returns (SignalWithStartWorkflowExecutionResponse) {
option (nexus.v1.operation).tags = "exposed";
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For reviewer: this tag can be used by our code generation tool to generate Nexus handler interfaces.

Copy link
Contributor

@lina-temporal lina-temporal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the annotation approach here, I think that even with the downside of a few of the fields being irrelevant in Nexus operation context, it's still the best option for maintainability and adoption across our APIs. Think we're still in discussion on the nature of the codegen, but this part LGTM.

Copy link
Member

@bergundy bergundy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have some questions to answer before we can merge this.


import "google/protobuf/descriptor.proto";

option go_package = "github.com/bergundy/nexus-proto-annotations/go/nexus/v1";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The package name here would be different depending on the verdict of where we would want to put these annotations. I don't think we should reference anything in my personal repo.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also note that the annotations already exist in the referenced GH repo, I had to inline them here because the package name nexus was conflicting and confusing our protoc generation pipeline.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants