Skip to content

Commit 10faeb4

Browse files
Merge remote-tracking branch 'origin/main' into HEAD
Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
2 parents fdf4a19 + 4cb77a9 commit 10faeb4

119 files changed

Lines changed: 31497 additions & 279 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/debug-openshell-cluster/SKILL.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,13 @@ Common findings:
210210
host's IPv4 default route. Rootless pasta uses the private source address
211211
selected by that route; rootful Podman uses the bridge gateway address.
212212
- Callback discovery reports that the requested address equals the primary
213-
listener: configure a distinct primary address. For Podman Machine, keep the
214-
IPv4 loopback callback separate by using an IPv6-loopback primary such as
215-
`[::1]:17670`.
213+
listener: configure a distinct primary address. For Podman Machine, bind the
214+
primary listener to IPv6 loopback, for example
215+
`bind_address = "[::1]:17670"`, and register the CLI endpoint as
216+
`https://localhost:17670`. The generated certificate includes `localhost`,
217+
while a raw `https://[::1]:17670` endpoint can fail TLS setup with
218+
`invalid dns name`. This leaves `127.0.0.1:17670` available for the
219+
callback-only listener.
216220
- Rootless slirp4netns, another named helper, or missing helper metadata
217221
requires an explicitly remote `grpc_endpoint`. An explicit `host_gateway_ip`
218222
cannot bypass slirp4netns host-loopback isolation. Do not work around

.github/workflows/branch-checks.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,25 @@ jobs:
218218
- name: Test
219219
run: mise run test:python
220220

221+
go:
222+
name: Go SDK
223+
needs: pr_metadata
224+
if: needs.pr_metadata.outputs.should_run == 'true'
225+
runs-on: linux-amd64-cpu8
226+
container:
227+
image: ghcr.io/nvidia/openshell/ci:latest
228+
credentials:
229+
username: ${{ github.actor }}
230+
password: ${{ secrets.GITHUB_TOKEN }}
231+
steps:
232+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
233+
234+
- name: Install tools
235+
run: mise install --locked
236+
237+
- name: Lint, build, test, proto-check
238+
run: mise run go:ci
239+
221240
markdown:
222241
name: Markdown
223242
needs: pr_metadata

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ pip-log.txt
6464
pip-delete-this-directory.txt
6565

6666
# Unit test / coverage reports
67+
coverage.out
6768
htmlcov/
6869
.tox/
6970
.nox/

AGENTS.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,15 @@ ocsf_emit!(event);
204204
- `mise run e2e` — End-to-end tests against a running gateway. Run for infrastructure, sandbox, or policy changes.
205205
- `mise run ci` — Full local CI (lint + compile/type checks + tests). Run before opening a PR.
206206

207+
## Go SDK (`sdk/go/`)
208+
209+
- The Go SDK lives in `sdk/go/` with module path `github.com/NVIDIA/OpenShell/sdk/go`.
210+
- Run `mise run go:ci` for the full SDK CI pipeline (lint, build, test, proto-check, docs-check).
211+
- Proto bindings are generated with `mise run go:proto:gen` from the `.proto` files in `proto/`.
212+
- Domain types in `sdk/go/openshell/v1/types/` must not import proto packages.
213+
- Converters in `sdk/go/openshell/v1/internal/converter/` deep-copy slices and maps at boundaries.
214+
- Tests use bufconn for in-process gRPC and testify for assertions.
215+
207216
## Python
208217

209218
- Always use `uv` for Python commands (e.g., `uv pip install`, `uv run`, `uv venv`)

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ Bazel does not yet cover `mise run gateway`, `mise run sandbox`, `mise run e2e`,
434434
| --------------- | --------------------------------------------- |
435435
| `crates/` | Rust crates |
436436
| `python/` | Python SDK and bindings |
437+
| `sdk/go/` | Go SDK (types, gRPC clients, converters) |
437438
| `proto/` | Protocol buffer definitions |
438439
| `tasks/` | `mise` task definitions and build scripts |
439440
| `deploy/` | Dockerfiles, Helm chart, Kubernetes manifests |

0 commit comments

Comments
 (0)