Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
2a04bdc
feat(sdks): fold SDK monorepo in-tree under sdks/
danielpaulus Aug 11, 2026
ea4b0ea
ci(sdks): add consolidated dispatch-only release-sdks.yml (lockstep)
danielpaulus Aug 11, 2026
a7e212f
spec(v3): model full feature-complete daemon surface (~125 ops)
danielpaulus Aug 11, 2026
1309c53
feat(mcp): add UI-automation + web-debug tools and make @go-ios/mcp p…
danielpaulus Aug 11, 2026
e98221c
feat(sdk/ts): extend TypeScript SDK to the full 125-operation surface
danielpaulus Aug 11, 2026
6676b4b
feat(python-sdk): extend to full 125-endpoint v3 surface
danielpaulus Aug 11, 2026
f249eba
feat(sdks/java): extend Java SDK to the full 125-endpoint surface
danielpaulus Aug 11, 2026
3a3699b
feat(sdk/csharp): extend GoIos.Sdk to the full 125-op surface
danielpaulus Aug 11, 2026
fa6fcee
Merge remote-tracking branch 'origin/v3/python' into worktree-agent-a…
danielpaulus Aug 11, 2026
c229101
Merge remote-tracking branch 'origin/v3/java' into worktree-agent-ad6…
danielpaulus Aug 11, 2026
3c6c521
Merge remote-tracking branch 'origin/v3/csharp' into worktree-agent-a…
danielpaulus Aug 11, 2026
703efb3
Merge remote-tracking branch 'origin/v3/mcp' into worktree-agent-ad64…
danielpaulus Aug 11, 2026
a3640bd
ci(sdks): publish @go-ios/mcp to npm; guard Java src/main against .gi…
danielpaulus Aug 11, 2026
6c228ec
docs(csharp): add runnable examples suite for GoIos.Sdk
danielpaulus Aug 11, 2026
af00b81
mcp: add runnable examples suite (docs + pre-release smoke test)
danielpaulus Aug 11, 2026
b08e7b3
docs(sdks/python): add runnable examples suite + pre-release smoke ru…
danielpaulus Aug 11, 2026
4feac50
docs(java-sdk): add runnable examples suite + pre-release smoke runner
danielpaulus Aug 11, 2026
5dd5585
docs(sdk/ts): add runnable examples suite + smoke-test runner
danielpaulus Aug 11, 2026
21346f4
Merge remote-tracking branch 'origin/examples/python' into feat/sdks-…
danielpaulus Aug 11, 2026
3c9b64e
Merge remote-tracking branch 'origin/examples/java' into feat/sdks-in…
danielpaulus Aug 11, 2026
71ad812
Merge remote-tracking branch 'origin/examples/csharp' into feat/sdks-…
danielpaulus Aug 11, 2026
08e0407
Merge remote-tracking branch 'origin/examples/mcp' into feat/sdks-in-…
danielpaulus Aug 11, 2026
97534a7
docs(sdks): add examples overview + wire pre-release verification
danielpaulus Aug 11, 2026
59317c0
feat(sdk/ts): auto-discover local go-ios REST daemon when no baseUrl
danielpaulus Aug 11, 2026
2a768f9
feat(sdk-java): auto-discover ephemeral go-ios daemon when no baseUrl
danielpaulus Aug 11, 2026
67249a4
feat(csharp-sdk): auto-discover local go-ios REST daemon (ephemeral p…
danielpaulus Aug 11, 2026
6038feb
feat(python-sdk): auto-discover local go-ios REST daemon
danielpaulus Aug 11, 2026
bf0a8a3
Merge remote-tracking branch 'origin/discovery/python' into feat/sdks…
danielpaulus Aug 11, 2026
0c0f1a8
Merge remote-tracking branch 'origin/discovery/java' into feat/sdks-i…
danielpaulus Aug 11, 2026
a1f3108
Merge remote-tracking branch 'origin/discovery/csharp' into feat/sdks…
danielpaulus Aug 11, 2026
0011671
docs(sdks): harmonize TS/Java/C# examples to auto-discover the local …
danielpaulus Aug 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
82 changes: 82 additions & 0 deletions .github/workflows/sdks-publish-csharp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: SDKs — C# publish (NuGet)

# Config only: this workflow builds/tests on every push and, on a version tag,
# packs and pushes to NuGet. Publishing requires the NUGET_API_KEY secret to be
# configured in the repo; without it the push step is skipped (never fails).
#
# Tag gating uses the `csharp-v*` prefix so it never collides with go-ios's own
# `v*` release tags.

on:
push:
branches: [main]
tags: ["csharp-v*"]
paths:
- "sdks/packages/csharp/**"
- "sdks/spec/openapi/**"
- ".github/workflows/sdks-publish-csharp.yml"
pull_request:
paths:
- "sdks/packages/csharp/**"
- ".github/workflows/sdks-publish-csharp.yml"
workflow_dispatch:

defaults:
run:
working-directory: sdks/packages/csharp

jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # SourceLink wants full history

- uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"

- name: Restore
run: dotnet restore GoIos.Sdk.sln

- name: Build (Release)
run: dotnet build GoIos.Sdk.sln --configuration Release --no-restore

- name: Test
run: dotnet test GoIos.Sdk.sln --configuration Release --no-build --verbosity normal

publish:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
# Only on a csharp-v* tag, and after build/test passes.
needs: build-test
if: startsWith(github.ref, 'refs/tags/csharp-v')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"

- name: Pack (Release)
run: dotnet pack src/GoIos.Sdk/GoIos.Sdk.csproj --configuration Release --output ../../artifacts

- name: Upload package artifact
uses: actions/upload-artifact@v4
with:
name: nupkg
path: sdks/artifacts/*.nupkg

- name: Push to NuGet
# Skipped automatically when the secret is not configured.
if: ${{ env.NUGET_API_KEY != '' }}
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
working-directory: .
run: |
dotnet nuget push "sdks/artifacts/*.nupkg" \
--api-key "$NUGET_API_KEY" \
--source https://api.nuget.org/v3/index.json \
--skip-duplicate
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
39 changes: 39 additions & 0 deletions .github/workflows/sdks-publish-java.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: SDKs — Java SDK

on:
push:
branches: [main]
paths:
- "sdks/packages/java/**"
- "sdks/spec/openapi/openapi.yaml"
- ".github/workflows/sdks-publish-java.yml"
pull_request:
paths:
- "sdks/packages/java/**"
- "sdks/spec/openapi/openapi.yaml"
- ".github/workflows/sdks-publish-java.yml"

jobs:
build:
name: Build & test (Java 17)
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/packages/java
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: maven

- name: Verify generated client is up to date
run: |
./scripts/generate.sh
git diff --exit-code -- generated/src \
|| (echo "::error::generated/ is stale — run sdks/packages/java/scripts/generate.sh and commit" && exit 1)

- name: Build & test
run: mvn -B -ntp verify
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
101 changes: 101 additions & 0 deletions .github/workflows/sdks-publish-python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: SDKs — Python publish (PyPI)

# Tests the Python SDK on every push/PR that touches it, and publishes to PyPI
# via Trusted Publishing (OIDC) when a `python-v*` tag is pushed or the workflow
# is dispatched manually. No API token is used — publishing is authorised by the
# OIDC identity registered as a Trusted Publisher for `go-ios-sdk` on PyPI.
#
# Tag gating uses the `python-v*` prefix so it never collides with go-ios's own
# `v*` release tags.

on:
push:
branches: [main]
paths:
- "sdks/packages/python/**"
- ".github/workflows/sdks-publish-python.yml"
tags:
- "python-v*"
pull_request:
paths:
- "sdks/packages/python/**"
- ".github/workflows/sdks-publish-python.yml"
workflow_dispatch:
inputs:
publish:
description: "Publish to PyPI (requires a Trusted Publisher config)"
type: boolean
default: false

defaults:
run:
working-directory: sdks/packages/python

jobs:
test:
name: test (py${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install (with dev deps)
run: uv pip install --system -e ".[dev]"

- name: Lint
run: ruff check src tests

- name: Type-check facade
run: mypy src/go_ios_sdk

- name: Unit tests
run: pytest -q

build:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
name: build sdist + wheel
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
python-version: "3.12"
- name: Build
run: uv build --sdist --wheel
- uses: actions/upload-artifact@v4
with:
name: dist
path: sdks/packages/python/dist/*

publish:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
name: publish to PyPI (OIDC)
runs-on: ubuntu-latest
needs: build
# Only on a release tag, or a manual dispatch that opted in.
if: >-
startsWith(github.ref, 'refs/tags/python-v') ||
(github.event_name == 'workflow_dispatch' && inputs.publish)
environment:
name: pypi
url: https://pypi.org/project/go-ios-sdk/
permissions:
# Required for PyPI Trusted Publishing (OIDC). Do NOT add a token.
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist
50 changes: 50 additions & 0 deletions .github/workflows/sdks-publish-typescript.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: SDKs — TypeScript publish (npm)

# Config only — dispatch-driven. Publishes @go-ios/sdk to npm with provenance.
# Do NOT enable auto-publish on push without a maintainer sign-off.
on:
workflow_dispatch: {}

permissions:
contents: read
# Required for npm provenance (OIDC-signed publish attestation).
id-token: write

jobs:
publish:
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/packages/typescript
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
cache: npm
cache-dependency-path: sdks/packages/typescript/package-lock.json

- name: Install dependencies
run: npm ci

- name: Type-check
run: npm run typecheck

- name: Test
run: npm test

- name: Build
run: npm run build

# `changeset publish` runs `npm publish`; with npm >= 9 and id-token: write
# this emits a provenance attestation. Do NOT set NODE_AUTH_TOKEN to an
# empty value or add an .npmrc token line — that breaks OIDC provenance.
- name: Version & publish
run: |
npx changeset version
npx changeset publish
env:
NPM_CONFIG_PROVENANCE: "true"
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Loading
Loading