Skip to content

Feature/go client - #33

Merged
ClemensElflein merged 12 commits into
xtech:mainfrom
Apehaenger:feature/go-client
Oct 28, 2026
Merged

ClemensElflein merged 12 commits into
xtech:mainfrom
Apehaenger:feature/go-client

Conversation

@Apehaenger

Copy link
Copy Markdown
Collaborator

This includes #32

Add a new `xbot_service_interface_go` package implementing a Go client
for the xbot wire protocol (discovery, claim, RPC calls, and DATA
messages) without code generation or cgo, depending only on
fxamacker/cbor. Includes heatshrink compression support, typed argument
helpers, and comprehensive tests.

Add a GitHub Actions workflow to run gofmt, go vet, race-enabled tests,
and build checks on the Go package, and update the Readme with Go
Interface usage documentation.
Add documentation for the new `xbot-codegen` command across the root
Readme, codegen README, and Go module README, explaining how to generate
typed clients from a service.json, the `-service-id` option, CI sync
workflow, and current limitations (outputs, non-scalar arrays).
- Generate slice types and pack/decode helpers for non-uint8
  fixed-size arrays instead of erroring out
- Emit ExpectedType/Version so generated clients reject services
  announcing an incompatible schema
- Create the output directory when running under go:generate
- Only emit the numeric array helpers the generated file needs
- Document new options and ErrIncompatibleService in README
@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Both the Python and Go generators now fail early with a clear
error when an enum has an empty values map. Previously the
to_string path attempted to derive a member count from
max(values), causing an opaque ValueError during code
emission. A test case is added to cover the Go validator.
@ClemensElflein
ClemensElflein merged commit 53187f5 into xtech:main Oct 28, 2026
8 of 9 checks passed
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.

2 participants