From 371aee003c7d8bc705d0f582a43f5d2eb89a2cd0 Mon Sep 17 00:00:00 2001 From: maskarb Date: Wed, 11 Mar 2026 10:52:05 -0400 Subject: [PATCH 1/5] fix(sdk): sync generator templates with hand-edited SDK output The generated Go SDK had hand-edits that would be lost on regeneration: - WithInsecureSkipVerify client option (TLS skip for self-signed certs) - Compiled bearerTokenPattern regex (was per-call MustCompile) - Sessions().Delete() method (missing DELETE in OpenAPI spec) - Extra blank lines in type builders (template whitespace) Fix by updating the source templates and OpenAPI spec so regeneration produces identical output (minus timestamp/hash). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../openapi/openapi.sessions.yaml | 31 +++++++++++++++++++ .../templates/go/http_client.go.tmpl | 28 ++++++++++++----- .../generator/templates/go/types.go.tmpl | 5 +-- 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/components/ambient-api-server/openapi/openapi.sessions.yaml b/components/ambient-api-server/openapi/openapi.sessions.yaml index 00b5e8743..370a644e3 100644 --- a/components/ambient-api-server/openapi/openapi.sessions.yaml +++ b/components/ambient-api-server/openapi/openapi.sessions.yaml @@ -177,6 +177,37 @@ paths: application/json: schema: $ref: 'openapi.yaml#/components/schemas/Error' + delete: + summary: Delete a session by id + security: + - Bearer: [] + responses: + '204': + description: Session deleted successfully + '401': + description: Auth token is invalid + content: + application/json: + schema: + $ref: 'openapi.yaml#/components/schemas/Error' + '403': + description: Unauthorized to perform operation + content: + application/json: + schema: + $ref: 'openapi.yaml#/components/schemas/Error' + '404': + description: No session with specified id exists + content: + application/json: + schema: + $ref: 'openapi.yaml#/components/schemas/Error' + '500': + description: Unexpected error deleting session + content: + application/json: + schema: + $ref: 'openapi.yaml#/components/schemas/Error' parameters: - $ref: '#/components/parameters/id' /api/ambient/v1/sessions/{id}/status: diff --git a/components/ambient-sdk/generator/templates/go/http_client.go.tmpl b/components/ambient-sdk/generator/templates/go/http_client.go.tmpl index c6ac0db7e..d4d1e1f8e 100644 --- a/components/ambient-sdk/generator/templates/go/http_client.go.tmpl +++ b/components/ambient-sdk/generator/templates/go/http_client.go.tmpl @@ -8,6 +8,7 @@ package client import ( "bytes" "context" + "crypto/tls" "encoding/json" "fmt" "io" @@ -23,12 +24,13 @@ import ( ) type Client struct { - httpClient *http.Client - baseURL string - token string - project string - logger *slog.Logger - userAgent string + httpClient *http.Client + baseURL string + token string + project string + logger *slog.Logger + userAgent string + insecureSkipVerify bool } type ClientOption func(*Client) @@ -39,6 +41,15 @@ func WithTimeout(timeout time.Duration) ClientOption { } } +func WithInsecureSkipVerify() ClientOption { + return func(c *Client) { + c.insecureSkipVerify = true + c.httpClient.Transport = &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //nolint:gosec + } + } +} + func WithLogger(logger *slog.Logger) ClientOption { return func(c *Client) { c.logger = logger @@ -226,7 +237,8 @@ func validateURL(rawURL string) error { return nil } +var bearerTokenPattern = regexp.MustCompile(`([Bb]earer\s+)[a-zA-Z0-9\-_~.+/=]+`) + func sanitizeLogURL(rawURL string) string { - tokenPattern := regexp.MustCompile(`([Bb]earer\s+)[a-zA-Z0-9\-_~.+/=]+`) - return tokenPattern.ReplaceAllString(rawURL, "${1}[REDACTED]") + return bearerTokenPattern.ReplaceAllString(rawURL, "${1}[REDACTED]") } diff --git a/components/ambient-sdk/generator/templates/go/types.go.tmpl b/components/ambient-sdk/generator/templates/go/types.go.tmpl index 4d9e02774..8339e8810 100644 --- a/components/ambient-sdk/generator/templates/go/types.go.tmpl +++ b/components/ambient-sdk/generator/templates/go/types.go.tmpl @@ -44,8 +44,7 @@ func (b *{{$.Resource.Name}}Builder) {{.GoName}}(v {{.GoType}}) *{{$.Resource.Na b.resource.{{.GoName}} = v return b } -{{end}}{{end}} - +{{end}}{{- end}} func (b *{{.Resource.Name}}Builder) Build() (*{{.Resource.Name}}, error) { {{- range .Resource.Fields}} {{- if .Required}} @@ -78,7 +77,6 @@ func (b *{{$.Resource.Name}}PatchBuilder) {{.GoName}}(v {{.GoType}}) *{{$.Resour return b } {{end}} - func (b *{{.Resource.Name}}PatchBuilder) Build() map[string]any { return b.patch } @@ -97,7 +95,6 @@ func (b *{{$.Resource.Name}}StatusPatchBuilder) {{.GoName}}(v {{.GoType}}) *{{$. return b } {{end}} - func (b *{{.Resource.Name}}StatusPatchBuilder) Build() map[string]any { return b.patch } From f0a9e8bcc7666dd4228f890f6f6c25127a28e2f4 Mon Sep 17 00:00:00 2001 From: maskarb Date: Wed, 11 Mar 2026 10:55:25 -0400 Subject: [PATCH 2/5] ci(sdk): add drift check to detect generator/template desync Regenerates the SDK from the OpenAPI spec on PRs that touch the generator, templates, SDK output, or OpenAPI specs. Fails if the regenerated output differs from what's committed (ignoring timestamps). Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/sdk-drift-check.yml | 87 +++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .github/workflows/sdk-drift-check.yml diff --git a/.github/workflows/sdk-drift-check.yml b/.github/workflows/sdk-drift-check.yml new file mode 100644 index 000000000..c583b9d48 --- /dev/null +++ b/.github/workflows/sdk-drift-check.yml @@ -0,0 +1,87 @@ +name: SDK Drift Check + +on: + pull_request: + branches: [main] + paths: + - 'components/ambient-sdk/generator/**' + - 'components/ambient-sdk/go-sdk/**' + - 'components/ambient-sdk/python-sdk/**' + - 'components/ambient-sdk/ts-sdk/**' + - 'components/ambient-api-server/openapi/**' + - '.github/workflows/sdk-drift-check.yml' + + push: + branches: [main] + paths: + - 'components/ambient-sdk/generator/**' + - 'components/ambient-sdk/go-sdk/**' + - 'components/ambient-sdk/python-sdk/**' + - 'components/ambient-sdk/ts-sdk/**' + - 'components/ambient-api-server/openapi/**' + - '.github/workflows/sdk-drift-check.yml' + + workflow_dispatch: + +concurrency: + group: sdk-drift-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + check-drift: + name: SDK Generator Drift + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: components/ambient-sdk/generator/go.mod + cache-dependency-path: components/ambient-sdk/generator/go.sum + + - name: Regenerate SDK from OpenAPI spec + working-directory: components/ambient-sdk/generator + run: | + go run . \ + -spec ../../ambient-api-server/openapi/openapi.yaml \ + -go-out ../go-sdk \ + -python-out ../python-sdk/ambient_platform \ + -ts-out ../ts-sdk + + - name: Run gofmt on generated Go code + working-directory: components/ambient-sdk/go-sdk + run: go fmt ./... + + - name: Check for drift + run: | + # Ignore timestamp and hash lines (they change every run) + DRIFT=$(git diff \ + --ignore-matching-lines='// Spec SHA256:' \ + --ignore-matching-lines='// Generated:' \ + -- components/ambient-sdk/go-sdk/ \ + components/ambient-sdk/python-sdk/ \ + components/ambient-sdk/ts-sdk/) + + if [ -n "$DRIFT" ]; then + echo "❌ SDK drift detected — regenerated code differs from committed code." + echo "" + echo "This means either:" + echo " 1. A generator template was updated but the SDK was not regenerated" + echo " 2. The OpenAPI spec changed but the SDK was not regenerated" + echo " 3. Generated files were hand-edited (update the templates instead)" + echo "" + echo "Fix: cd components/ambient-sdk && make generate-sdk" + echo "" + echo "Diff:" + git diff \ + --ignore-matching-lines='// Spec SHA256:' \ + --ignore-matching-lines='// Generated:' \ + -- components/ambient-sdk/go-sdk/ \ + components/ambient-sdk/python-sdk/ \ + components/ambient-sdk/ts-sdk/ + exit 1 + fi + + echo "✅ No SDK drift detected" From 181e02d0b2483c230059fd1d5c5cfb0db0835ab4 Mon Sep 17 00:00:00 2001 From: maskarb Date: Wed, 11 Mar 2026 11:06:05 -0400 Subject: [PATCH 3/5] fix(sdk): regenerate SDK from updated spec and fix drift check patterns Regenerate all SDK outputs (Go, Python, TypeScript) so committed files match what the generator produces with the updated OpenAPI spec (session DELETE endpoint) and templates. Fix drift check ignore patterns to match both // and # comment styles for timestamp/hash lines. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/sdk-drift-check.yml | 9 +++++---- components/ambient-sdk/go-sdk/client/client.go | 4 ++-- components/ambient-sdk/go-sdk/client/iterator.go | 4 ++-- components/ambient-sdk/go-sdk/client/project_api.go | 4 ++-- .../go-sdk/client/project_settings_api.go | 4 ++-- components/ambient-sdk/go-sdk/client/session_api.go | 12 ++++++------ components/ambient-sdk/go-sdk/client/user_api.go | 4 ++-- components/ambient-sdk/go-sdk/types/base.go | 4 ++-- components/ambient-sdk/go-sdk/types/list_options.go | 4 ++-- components/ambient-sdk/go-sdk/types/project.go | 4 ++-- .../ambient-sdk/go-sdk/types/project_settings.go | 4 ++-- components/ambient-sdk/go-sdk/types/session.go | 4 ++-- components/ambient-sdk/go-sdk/types/user.go | 4 ++-- .../python-sdk/ambient_platform/__init__.py | 4 ++-- .../ambient-sdk/python-sdk/ambient_platform/_base.py | 4 ++-- .../python-sdk/ambient_platform/_iterator.py | 4 ++-- .../python-sdk/ambient_platform/_project_api.py | 4 ++-- .../ambient_platform/_project_settings_api.py | 4 ++-- .../python-sdk/ambient_platform/_session_api.py | 7 +++++-- .../python-sdk/ambient_platform/_user_api.py | 4 ++-- .../python-sdk/ambient_platform/client.py | 4 ++-- .../python-sdk/ambient_platform/project.py | 5 ++--- .../python-sdk/ambient_platform/project_settings.py | 5 ++--- .../python-sdk/ambient_platform/session.py | 5 ++--- .../ambient-sdk/python-sdk/ambient_platform/user.py | 5 ++--- components/ambient-sdk/ts-sdk/src/base.ts | 4 ++-- components/ambient-sdk/ts-sdk/src/client.ts | 4 ++-- components/ambient-sdk/ts-sdk/src/index.ts | 5 ++--- components/ambient-sdk/ts-sdk/src/project.ts | 5 ++--- components/ambient-sdk/ts-sdk/src/project_api.ts | 4 ++-- .../ambient-sdk/ts-sdk/src/project_settings.ts | 5 ++--- .../ambient-sdk/ts-sdk/src/project_settings_api.ts | 4 ++-- components/ambient-sdk/ts-sdk/src/session.ts | 5 ++--- components/ambient-sdk/ts-sdk/src/session_api.ts | 8 ++++++-- components/ambient-sdk/ts-sdk/src/user.ts | 5 ++--- components/ambient-sdk/ts-sdk/src/user_api.ts | 4 ++-- 36 files changed, 86 insertions(+), 87 deletions(-) diff --git a/.github/workflows/sdk-drift-check.yml b/.github/workflows/sdk-drift-check.yml index c583b9d48..55085deac 100644 --- a/.github/workflows/sdk-drift-check.yml +++ b/.github/workflows/sdk-drift-check.yml @@ -57,9 +57,10 @@ jobs: - name: Check for drift run: | # Ignore timestamp and hash lines (they change every run) + # Patterns cover both // (Go/TS) and # (Python) comment styles DRIFT=$(git diff \ - --ignore-matching-lines='// Spec SHA256:' \ - --ignore-matching-lines='// Generated:' \ + --ignore-matching-lines='Spec SHA256:' \ + --ignore-matching-lines='Generated:' \ -- components/ambient-sdk/go-sdk/ \ components/ambient-sdk/python-sdk/ \ components/ambient-sdk/ts-sdk/) @@ -76,8 +77,8 @@ jobs: echo "" echo "Diff:" git diff \ - --ignore-matching-lines='// Spec SHA256:' \ - --ignore-matching-lines='// Generated:' \ + --ignore-matching-lines='Spec SHA256:' \ + --ignore-matching-lines='Generated:' \ -- components/ambient-sdk/go-sdk/ \ components/ambient-sdk/python-sdk/ \ components/ambient-sdk/ts-sdk/ diff --git a/components/ambient-sdk/go-sdk/client/client.go b/components/ambient-sdk/go-sdk/client/client.go index 54ff98453..b0d75517f 100644 --- a/components/ambient-sdk/go-sdk/client/client.go +++ b/components/ambient-sdk/go-sdk/client/client.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package client diff --git a/components/ambient-sdk/go-sdk/client/iterator.go b/components/ambient-sdk/go-sdk/client/iterator.go index b68626ba8..19ce4792c 100644 --- a/components/ambient-sdk/go-sdk/client/iterator.go +++ b/components/ambient-sdk/go-sdk/client/iterator.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package client diff --git a/components/ambient-sdk/go-sdk/client/project_api.go b/components/ambient-sdk/go-sdk/client/project_api.go index 7c056024a..6ed4efd15 100644 --- a/components/ambient-sdk/go-sdk/client/project_api.go +++ b/components/ambient-sdk/go-sdk/client/project_api.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package client diff --git a/components/ambient-sdk/go-sdk/client/project_settings_api.go b/components/ambient-sdk/go-sdk/client/project_settings_api.go index 9e44d7689..a3b56b05b 100644 --- a/components/ambient-sdk/go-sdk/client/project_settings_api.go +++ b/components/ambient-sdk/go-sdk/client/project_settings_api.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package client diff --git a/components/ambient-sdk/go-sdk/client/session_api.go b/components/ambient-sdk/go-sdk/client/session_api.go index d9813651c..f3a995dce 100644 --- a/components/ambient-sdk/go-sdk/client/session_api.go +++ b/components/ambient-sdk/go-sdk/client/session_api.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package client @@ -62,6 +62,10 @@ func (a *SessionAPI) Update(ctx context.Context, id string, patch map[string]any return &result, nil } +func (a *SessionAPI) Delete(ctx context.Context, id string) error { + return a.client.do(ctx, http.MethodDelete, "/sessions/"+url.PathEscape(id), nil, http.StatusNoContent, nil) +} + func (a *SessionAPI) UpdateStatus(ctx context.Context, id string, patch map[string]any) (*types.Session, error) { body, err := json.Marshal(patch) if err != nil { @@ -90,10 +94,6 @@ func (a *SessionAPI) Stop(ctx context.Context, id string) (*types.Session, error return &result, nil } -func (a *SessionAPI) Delete(ctx context.Context, id string) error { - return a.client.do(ctx, http.MethodDelete, "/sessions/"+url.PathEscape(id), nil, http.StatusNoContent, nil) -} - func (a *SessionAPI) ListAll(ctx context.Context, opts *types.ListOptions) *Iterator[types.Session] { return NewIterator(func(page int) (*types.SessionList, error) { o := *opts diff --git a/components/ambient-sdk/go-sdk/client/user_api.go b/components/ambient-sdk/go-sdk/client/user_api.go index 350614fe2..9372dbd9d 100644 --- a/components/ambient-sdk/go-sdk/client/user_api.go +++ b/components/ambient-sdk/go-sdk/client/user_api.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package client diff --git a/components/ambient-sdk/go-sdk/types/base.go b/components/ambient-sdk/go-sdk/types/base.go index d01695811..d6f1759bd 100644 --- a/components/ambient-sdk/go-sdk/types/base.go +++ b/components/ambient-sdk/go-sdk/types/base.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package types diff --git a/components/ambient-sdk/go-sdk/types/list_options.go b/components/ambient-sdk/go-sdk/types/list_options.go index eaecd50f8..710b44b4b 100644 --- a/components/ambient-sdk/go-sdk/types/list_options.go +++ b/components/ambient-sdk/go-sdk/types/list_options.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package types diff --git a/components/ambient-sdk/go-sdk/types/project.go b/components/ambient-sdk/go-sdk/types/project.go index 6ff664ad0..ada129b05 100644 --- a/components/ambient-sdk/go-sdk/types/project.go +++ b/components/ambient-sdk/go-sdk/types/project.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package types diff --git a/components/ambient-sdk/go-sdk/types/project_settings.go b/components/ambient-sdk/go-sdk/types/project_settings.go index f6703f679..c9ba36d1b 100644 --- a/components/ambient-sdk/go-sdk/types/project_settings.go +++ b/components/ambient-sdk/go-sdk/types/project_settings.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package types diff --git a/components/ambient-sdk/go-sdk/types/session.go b/components/ambient-sdk/go-sdk/types/session.go index 2dbb69f43..3ce84678c 100644 --- a/components/ambient-sdk/go-sdk/types/session.go +++ b/components/ambient-sdk/go-sdk/types/session.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package types diff --git a/components/ambient-sdk/go-sdk/types/user.go b/components/ambient-sdk/go-sdk/types/user.go index 5a2b4893b..f7db7f644 100644 --- a/components/ambient-sdk/go-sdk/types/user.go +++ b/components/ambient-sdk/go-sdk/types/user.go @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z package types diff --git a/components/ambient-sdk/python-sdk/ambient_platform/__init__.py b/components/ambient-sdk/python-sdk/ambient_platform/__init__.py index 18bb4e16d..674dbfe2f 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/__init__.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/__init__.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z """Ambient Platform SDK for Python.""" diff --git a/components/ambient-sdk/python-sdk/ambient_platform/_base.py b/components/ambient-sdk/python-sdk/ambient_platform/_base.py index f6f6f155f..6cb31f3c8 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/_base.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/_base.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations diff --git a/components/ambient-sdk/python-sdk/ambient_platform/_iterator.py b/components/ambient-sdk/python-sdk/ambient_platform/_iterator.py index e71c28cb8..fa23fd19d 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/_iterator.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/_iterator.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations diff --git a/components/ambient-sdk/python-sdk/ambient_platform/_project_api.py b/components/ambient-sdk/python-sdk/ambient_platform/_project_api.py index ccc2d00b7..b2113d00f 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/_project_api.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/_project_api.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations diff --git a/components/ambient-sdk/python-sdk/ambient_platform/_project_settings_api.py b/components/ambient-sdk/python-sdk/ambient_platform/_project_settings_api.py index 4bc320300..ce60f4c86 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/_project_settings_api.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/_project_settings_api.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations diff --git a/components/ambient-sdk/python-sdk/ambient_platform/_session_api.py b/components/ambient-sdk/python-sdk/ambient_platform/_session_api.py index 645283b0a..a680c7996 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/_session_api.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/_session_api.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations @@ -35,6 +35,9 @@ def update(self, resource_id: str, patch: Any) -> Session: resp = self._client._request("PATCH", f"/sessions/{resource_id}", json=data) return Session.from_dict(resp) + def delete(self, resource_id: str) -> None: + self._client._request("DELETE", f"/sessions/{resource_id}", expect_json=False) + def update_status(self, resource_id: str, patch: Any) -> Session: data = patch.to_dict() if hasattr(patch, "to_dict") else patch resp = self._client._request("PATCH", f"/sessions/{resource_id}/status", json=data) diff --git a/components/ambient-sdk/python-sdk/ambient_platform/_user_api.py b/components/ambient-sdk/python-sdk/ambient_platform/_user_api.py index 32318a66d..f68b2e865 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/_user_api.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/_user_api.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations diff --git a/components/ambient-sdk/python-sdk/ambient_platform/client.py b/components/ambient-sdk/python-sdk/ambient_platform/client.py index cd8f7fa01..afc2ce91d 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/client.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/client.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations diff --git a/components/ambient-sdk/python-sdk/ambient_platform/project.py b/components/ambient-sdk/python-sdk/ambient_platform/project.py index eb408bd10..c35137b82 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/project.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/project.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations @@ -132,4 +132,3 @@ def status(self, value: str) -> ProjectPatch: def to_dict(self) -> dict: return dict(self._data) - diff --git a/components/ambient-sdk/python-sdk/ambient_platform/project_settings.py b/components/ambient-sdk/python-sdk/ambient_platform/project_settings.py index 4fcaa6368..0a032e3b0 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/project_settings.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/project_settings.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations @@ -102,4 +102,3 @@ def repositories(self, value: str) -> ProjectSettingsPatch: def to_dict(self) -> dict: return dict(self._data) - diff --git a/components/ambient-sdk/python-sdk/ambient_platform/session.py b/components/ambient-sdk/python-sdk/ambient_platform/session.py index 4889cbd81..a1b3e1a73 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/session.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/session.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations @@ -311,4 +311,3 @@ def start_time(self, value: Optional[datetime]) -> SessionStatusPatch: def to_dict(self) -> dict: return dict(self._data) - diff --git a/components/ambient-sdk/python-sdk/ambient_platform/user.py b/components/ambient-sdk/python-sdk/ambient_platform/user.py index ff080d997..92eb5133b 100644 --- a/components/ambient-sdk/python-sdk/ambient_platform/user.py +++ b/components/ambient-sdk/python-sdk/ambient_platform/user.py @@ -1,7 +1,7 @@ # Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. # Source: ../../ambient-api-server/openapi/openapi.yaml -# Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -# Generated: 2026-03-05T04:28:57Z +# Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +# Generated: 2026-03-11T15:04:40Z from __future__ import annotations @@ -104,4 +104,3 @@ def username(self, value: str) -> UserPatch: def to_dict(self) -> dict: return dict(self._data) - diff --git a/components/ambient-sdk/ts-sdk/src/base.ts b/components/ambient-sdk/ts-sdk/src/base.ts index 85f8f7908..c600e4200 100644 --- a/components/ambient-sdk/ts-sdk/src/base.ts +++ b/components/ambient-sdk/ts-sdk/src/base.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z export type ObjectReference = { id: string; diff --git a/components/ambient-sdk/ts-sdk/src/client.ts b/components/ambient-sdk/ts-sdk/src/client.ts index 12f539b47..f24151a38 100644 --- a/components/ambient-sdk/ts-sdk/src/client.ts +++ b/components/ambient-sdk/ts-sdk/src/client.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { AmbientClientConfig } from './base'; import { ProjectAPI } from './project_api'; diff --git a/components/ambient-sdk/ts-sdk/src/index.ts b/components/ambient-sdk/ts-sdk/src/index.ts index 545b23cd0..79356a97e 100644 --- a/components/ambient-sdk/ts-sdk/src/index.ts +++ b/components/ambient-sdk/ts-sdk/src/index.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z export { AmbientClient } from './client'; export type { AmbientClientConfig, ListOptions, RequestOptions, ObjectReference, ListMeta, APIError } from './base'; @@ -22,4 +22,3 @@ export { SessionAPI } from './session_api'; export type { User, UserList, UserCreateRequest, UserPatchRequest } from './user'; export { UserBuilder, UserPatchBuilder } from './user'; export { UserAPI } from './user_api'; - diff --git a/components/ambient-sdk/ts-sdk/src/project.ts b/components/ambient-sdk/ts-sdk/src/project.ts index ab8f4b4fb..27e1bdf02 100644 --- a/components/ambient-sdk/ts-sdk/src/project.ts +++ b/components/ambient-sdk/ts-sdk/src/project.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { ObjectReference, ListMeta } from './base'; @@ -116,4 +116,3 @@ export class ProjectPatchBuilder { return this.data as ProjectPatchRequest; } } - diff --git a/components/ambient-sdk/ts-sdk/src/project_api.ts b/components/ambient-sdk/ts-sdk/src/project_api.ts index 1bc083540..ea8bee773 100644 --- a/components/ambient-sdk/ts-sdk/src/project_api.ts +++ b/components/ambient-sdk/ts-sdk/src/project_api.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { AmbientClientConfig, ListOptions, RequestOptions } from './base'; import { ambientFetch, buildQueryString } from './base'; diff --git a/components/ambient-sdk/ts-sdk/src/project_settings.ts b/components/ambient-sdk/ts-sdk/src/project_settings.ts index e81f23c64..aa130e434 100644 --- a/components/ambient-sdk/ts-sdk/src/project_settings.ts +++ b/components/ambient-sdk/ts-sdk/src/project_settings.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { ObjectReference, ListMeta } from './base'; @@ -77,4 +77,3 @@ export class ProjectSettingsPatchBuilder { return this.data as ProjectSettingsPatchRequest; } } - diff --git a/components/ambient-sdk/ts-sdk/src/project_settings_api.ts b/components/ambient-sdk/ts-sdk/src/project_settings_api.ts index 8e02c069c..fb00fa795 100644 --- a/components/ambient-sdk/ts-sdk/src/project_settings_api.ts +++ b/components/ambient-sdk/ts-sdk/src/project_settings_api.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { AmbientClientConfig, ListOptions, RequestOptions } from './base'; import { ambientFetch, buildQueryString } from './base'; diff --git a/components/ambient-sdk/ts-sdk/src/session.ts b/components/ambient-sdk/ts-sdk/src/session.ts index 19e806459..e9338770d 100644 --- a/components/ambient-sdk/ts-sdk/src/session.ts +++ b/components/ambient-sdk/ts-sdk/src/session.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { ObjectReference, ListMeta } from './base'; @@ -337,4 +337,3 @@ export class SessionStatusPatchBuilder { return this.data as SessionStatusPatchRequest; } } - diff --git a/components/ambient-sdk/ts-sdk/src/session_api.ts b/components/ambient-sdk/ts-sdk/src/session_api.ts index 99a2fb5ac..0a4a73b60 100644 --- a/components/ambient-sdk/ts-sdk/src/session_api.ts +++ b/components/ambient-sdk/ts-sdk/src/session_api.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { AmbientClientConfig, ListOptions, RequestOptions } from './base'; import { ambientFetch, buildQueryString } from './base'; @@ -26,6 +26,10 @@ export class SessionAPI { return ambientFetch(this.config, 'PATCH', `/sessions/${id}`, patch, opts); } + async delete(id: string, opts?: RequestOptions): Promise { + return ambientFetch(this.config, 'DELETE', `/sessions/${id}`, undefined, opts); + } + async updateStatus(id: string, patch: SessionStatusPatchRequest, opts?: RequestOptions): Promise { return ambientFetch(this.config, 'PATCH', `/sessions/${id}/status`, patch, opts); } diff --git a/components/ambient-sdk/ts-sdk/src/user.ts b/components/ambient-sdk/ts-sdk/src/user.ts index ef665bb6c..a0bb3bf64 100644 --- a/components/ambient-sdk/ts-sdk/src/user.ts +++ b/components/ambient-sdk/ts-sdk/src/user.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { ObjectReference, ListMeta } from './base'; @@ -80,4 +80,3 @@ export class UserPatchBuilder { return this.data as UserPatchRequest; } } - diff --git a/components/ambient-sdk/ts-sdk/src/user_api.ts b/components/ambient-sdk/ts-sdk/src/user_api.ts index dacbd7afb..800085cf5 100644 --- a/components/ambient-sdk/ts-sdk/src/user_api.ts +++ b/components/ambient-sdk/ts-sdk/src/user_api.ts @@ -1,7 +1,7 @@ // Code generated by ambient-sdk-generator from openapi.yaml — DO NOT EDIT. // Source: ../../ambient-api-server/openapi/openapi.yaml -// Spec SHA256: f729ebc11ad1c453eeb0a679fa5c14eb1bc0096450cd18ca79e7c9b7b5c81acf -// Generated: 2026-03-05T04:28:57Z +// Spec SHA256: e075948095ee35d154a54e2d77a597f4fe48ef50e84ce30baeb5bc3f2bc2025a +// Generated: 2026-03-11T15:04:40Z import type { AmbientClientConfig, ListOptions, RequestOptions } from './base'; import { ambientFetch, buildQueryString } from './base'; From 1c67d924a291eccb64487f56b54951c81486a058 Mon Sep 17 00:00:00 2001 From: maskarb Date: Wed, 11 Mar 2026 11:08:33 -0400 Subject: [PATCH 4/5] fix(sdk): normalize trailing newlines in generator output The generator templates produce trailing blank lines that pre-commit's end-of-file-fixer strips on commit, causing perpetual drift. Fix by trimming trailing newlines in the generator itself so output always ends with exactly one newline. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/sdk-drift-check.yml | 6 ++++++ components/ambient-sdk/generator/main.go | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/sdk-drift-check.yml b/.github/workflows/sdk-drift-check.yml index 55085deac..68aded838 100644 --- a/.github/workflows/sdk-drift-check.yml +++ b/.github/workflows/sdk-drift-check.yml @@ -54,6 +54,12 @@ jobs: working-directory: components/ambient-sdk/go-sdk run: go fmt ./... + - name: Fix trailing newlines (match pre-commit end-of-file-fixer) + run: | + find components/ambient-sdk/go-sdk components/ambient-sdk/python-sdk components/ambient-sdk/ts-sdk \ + -type f \( -name '*.go' -o -name '*.py' -o -name '*.ts' \) \ + -exec sed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}' {} + + - name: Check for drift run: | # Ignore timestamp and hash lines (they change every run) diff --git a/components/ambient-sdk/generator/main.go b/components/ambient-sdk/generator/main.go index 0f2099800..2f7386ff8 100644 --- a/components/ambient-sdk/generator/main.go +++ b/components/ambient-sdk/generator/main.go @@ -341,13 +341,15 @@ func loadTemplate(path string) (*template.Template, error) { } func executeTemplate(tmpl *template.Template, outPath string, data interface{}) error { - f, err := os.Create(outPath) - if err != nil { + var buf strings.Builder + if err := tmpl.Execute(&buf, data); err != nil { return err } - defer func() { _ = f.Close() }() - return tmpl.Execute(f, data) + // Ensure file ends with exactly one newline (match pre-commit end-of-file-fixer) + content := strings.TrimRight(buf.String(), "\n") + "\n" + + return os.WriteFile(outPath, []byte(content), 0644) } func computeSpecHash(specPath string) (string, error) { From 9c90ebfc1a2284d7af6812706551bc80b0742fff Mon Sep 17 00:00:00 2001 From: maskarb Date: Wed, 11 Mar 2026 11:16:21 -0400 Subject: [PATCH 5/5] fix(sdk): clone transport in WithInsecureSkipVerify, deduplicate drift check - Clone the existing http.Transport instead of replacing it, preserving ProxyFromEnvironment, HTTP/2, and connection pool defaults - Remove duplicate git diff call in SDK drift check workflow Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/sdk-drift-check.yml | 7 +------ .../generator/templates/go/http_client.go.tmpl | 12 ++++++++++-- components/ambient-sdk/go-sdk/client/client.go | 12 ++++++++++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.github/workflows/sdk-drift-check.yml b/.github/workflows/sdk-drift-check.yml index 68aded838..5a233f7b6 100644 --- a/.github/workflows/sdk-drift-check.yml +++ b/.github/workflows/sdk-drift-check.yml @@ -82,12 +82,7 @@ jobs: echo "Fix: cd components/ambient-sdk && make generate-sdk" echo "" echo "Diff:" - git diff \ - --ignore-matching-lines='Spec SHA256:' \ - --ignore-matching-lines='Generated:' \ - -- components/ambient-sdk/go-sdk/ \ - components/ambient-sdk/python-sdk/ \ - components/ambient-sdk/ts-sdk/ + echo "$DRIFT" exit 1 fi diff --git a/components/ambient-sdk/generator/templates/go/http_client.go.tmpl b/components/ambient-sdk/generator/templates/go/http_client.go.tmpl index d4d1e1f8e..d453246b2 100644 --- a/components/ambient-sdk/generator/templates/go/http_client.go.tmpl +++ b/components/ambient-sdk/generator/templates/go/http_client.go.tmpl @@ -44,9 +44,17 @@ func WithTimeout(timeout time.Duration) ClientOption { func WithInsecureSkipVerify() ClientOption { return func(c *Client) { c.insecureSkipVerify = true - c.httpClient.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //nolint:gosec + t, ok := c.httpClient.Transport.(*http.Transport) + if !ok || t == nil { + t = http.DefaultTransport.(*http.Transport).Clone() + } else { + t = t.Clone() } + if t.TLSClientConfig == nil { + t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12} + } + t.TLSClientConfig.InsecureSkipVerify = true //nolint:gosec + c.httpClient.Transport = t } } diff --git a/components/ambient-sdk/go-sdk/client/client.go b/components/ambient-sdk/go-sdk/client/client.go index b0d75517f..6cca77ad9 100644 --- a/components/ambient-sdk/go-sdk/client/client.go +++ b/components/ambient-sdk/go-sdk/client/client.go @@ -44,9 +44,17 @@ func WithTimeout(timeout time.Duration) ClientOption { func WithInsecureSkipVerify() ClientOption { return func(c *Client) { c.insecureSkipVerify = true - c.httpClient.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //nolint:gosec + t, ok := c.httpClient.Transport.(*http.Transport) + if !ok || t == nil { + t = http.DefaultTransport.(*http.Transport).Clone() + } else { + t = t.Clone() } + if t.TLSClientConfig == nil { + t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12} + } + t.TLSClientConfig.InsecureSkipVerify = true //nolint:gosec + c.httpClient.Transport = t } }