-
-
Notifications
You must be signed in to change notification settings - Fork 329
feat(sdks): fold SDK monorepo in-tree under sdks/ #819
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
danielpaulus
wants to merge
31
commits into
main
Choose a base branch
from
feat/sdks-in-tree
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
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 ea4b0ea
ci(sdks): add consolidated dispatch-only release-sdks.yml (lockstep)
danielpaulus a7e212f
spec(v3): model full feature-complete daemon surface (~125 ops)
danielpaulus 1309c53
feat(mcp): add UI-automation + web-debug tools and make @go-ios/mcp p…
danielpaulus e98221c
feat(sdk/ts): extend TypeScript SDK to the full 125-operation surface
danielpaulus 6676b4b
feat(python-sdk): extend to full 125-endpoint v3 surface
danielpaulus f249eba
feat(sdks/java): extend Java SDK to the full 125-endpoint surface
danielpaulus 3a3699b
feat(sdk/csharp): extend GoIos.Sdk to the full 125-op surface
danielpaulus fa6fcee
Merge remote-tracking branch 'origin/v3/python' into worktree-agent-a…
danielpaulus c229101
Merge remote-tracking branch 'origin/v3/java' into worktree-agent-ad6…
danielpaulus 3c6c521
Merge remote-tracking branch 'origin/v3/csharp' into worktree-agent-a…
danielpaulus 703efb3
Merge remote-tracking branch 'origin/v3/mcp' into worktree-agent-ad64…
danielpaulus a3640bd
ci(sdks): publish @go-ios/mcp to npm; guard Java src/main against .gi…
danielpaulus 6c228ec
docs(csharp): add runnable examples suite for GoIos.Sdk
danielpaulus af00b81
mcp: add runnable examples suite (docs + pre-release smoke test)
danielpaulus b08e7b3
docs(sdks/python): add runnable examples suite + pre-release smoke ru…
danielpaulus 4feac50
docs(java-sdk): add runnable examples suite + pre-release smoke runner
danielpaulus 5dd5585
docs(sdk/ts): add runnable examples suite + smoke-test runner
danielpaulus 21346f4
Merge remote-tracking branch 'origin/examples/python' into feat/sdks-…
danielpaulus 3c9b64e
Merge remote-tracking branch 'origin/examples/java' into feat/sdks-in…
danielpaulus 71ad812
Merge remote-tracking branch 'origin/examples/csharp' into feat/sdks-…
danielpaulus 08e0407
Merge remote-tracking branch 'origin/examples/mcp' into feat/sdks-in-…
danielpaulus 97534a7
docs(sdks): add examples overview + wire pre-release verification
danielpaulus 59317c0
feat(sdk/ts): auto-discover local go-ios REST daemon when no baseUrl
danielpaulus 2a768f9
feat(sdk-java): auto-discover ephemeral go-ios daemon when no baseUrl
danielpaulus 67249a4
feat(csharp-sdk): auto-discover local go-ios REST daemon (ephemeral p…
danielpaulus 6038feb
feat(python-sdk): auto-discover local go-ios REST daemon
danielpaulus bf0a8a3
Merge remote-tracking branch 'origin/discovery/python' into feat/sdks…
danielpaulus 0c0f1a8
Merge remote-tracking branch 'origin/discovery/java' into feat/sdks-i…
danielpaulus a1f3108
Merge remote-tracking branch 'origin/discovery/csharp' into feat/sdks…
danielpaulus 0011671
docs(sdks): harmonize TS/Java/C# examples to auto-discover the local …
danielpaulus File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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: | ||
| # 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 | ||
|
github-advanced-security[bot] marked this conversation as resolved.
Fixed
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
|
github-advanced-security[bot] marked this conversation as resolved.
Fixed
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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: | ||
|
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: | ||
|
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 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.