From 29d98ac8ec7d9fe704d07ac0bce4b60d0f2ed121 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 03:08:05 +0000 Subject: [PATCH 1/3] chore: lint tests --- scripts/lint | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/lint b/scripts/lint index fa7ba1f..c10fa02 100755 --- a/scripts/lint +++ b/scripts/lint @@ -5,4 +5,7 @@ set -e cd "$(dirname "$0")/.." echo "==> Running Go build" -go build ./... +go build . + +# Compile the tests but don't run them +go test -c . From 2162b0a2396b520acf176b8622b8728e51f8787d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 18:15:12 +0000 Subject: [PATCH 2/3] feat(api): manual updates --- .stats.yml | 8 ++++---- api.md | 1 + browser.go | 24 ++++++++++++++++++++++++ browser_test.go | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 401ed65..aa1aff7 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 17 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-3ec96d0022acb32aa2676c2e7ae20152b899a776ccd499380c334c955b9ba071.yml -openapi_spec_hash: b64c095d82185c1cd0355abea88b606f -config_hash: 00ec9df250b9dc077f8d3b93a442d252 +configured_endpoints: 18 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-d173129101e26f450c200e84430d993479c034700cf826917425d513b88912e6.yml +openapi_spec_hash: 150b86da7588979d7619b1a894e4720c +config_hash: eaeed470b1070b34df69c49d68e67355 diff --git a/api.md b/api.md index 8756701..7688be8 100644 --- a/api.md +++ b/api.md @@ -84,3 +84,4 @@ Methods: - client.Browsers.List(ctx context.Context) ([]kernel.BrowserListResponse, error) - client.Browsers.Delete(ctx context.Context, body kernel.BrowserDeleteParams) error - client.Browsers.DeleteByID(ctx context.Context, id string) error +- client.Browsers.GetReplay(ctx context.Context, id string) (http.Response, error) diff --git a/browser.go b/browser.go index 6f89d74..298260e 100644 --- a/browser.go +++ b/browser.go @@ -87,6 +87,19 @@ func (r *BrowserService) DeleteByID(ctx context.Context, id string, opts ...opti return } +// Get browser session replay. +func (r *BrowserService) GetReplay(ctx context.Context, id string, opts ...option.RequestOption) (res *http.Response, err error) { + opts = append(r.Options[:], opts...) + opts = append([]option.RequestOption{option.WithHeader("Accept", "video/mp4")}, opts...) + if id == "" { + err = errors.New("missing required id parameter") + return + } + path := fmt.Sprintf("browsers/%s/replay", id) + err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...) + return +} + // Optional persistence configuration for the browser session. type BrowserPersistence struct { // Unique identifier for the persistent browser session. @@ -141,12 +154,15 @@ type BrowserNewResponse struct { BrowserLiveViewURL string `json:"browser_live_view_url"` // Optional persistence configuration for the browser session. Persistence BrowserPersistence `json:"persistence"` + // Remote URL for viewing the browser session replay if enabled + ReplayViewURL string `json:"replay_view_url"` // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. JSON struct { CdpWsURL respjson.Field SessionID respjson.Field BrowserLiveViewURL respjson.Field Persistence respjson.Field + ReplayViewURL respjson.Field ExtraFields map[string]respjson.Field raw string } `json:"-"` @@ -168,12 +184,15 @@ type BrowserGetResponse struct { BrowserLiveViewURL string `json:"browser_live_view_url"` // Optional persistence configuration for the browser session. Persistence BrowserPersistence `json:"persistence"` + // Remote URL for viewing the browser session replay if enabled + ReplayViewURL string `json:"replay_view_url"` // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. JSON struct { CdpWsURL respjson.Field SessionID respjson.Field BrowserLiveViewURL respjson.Field Persistence respjson.Field + ReplayViewURL respjson.Field ExtraFields map[string]respjson.Field raw string } `json:"-"` @@ -195,12 +214,15 @@ type BrowserListResponse struct { BrowserLiveViewURL string `json:"browser_live_view_url"` // Optional persistence configuration for the browser session. Persistence BrowserPersistence `json:"persistence"` + // Remote URL for viewing the browser session replay if enabled + ReplayViewURL string `json:"replay_view_url"` // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. JSON struct { CdpWsURL respjson.Field SessionID respjson.Field BrowserLiveViewURL respjson.Field Persistence respjson.Field + ReplayViewURL respjson.Field ExtraFields map[string]respjson.Field raw string } `json:"-"` @@ -218,6 +240,8 @@ type BrowserNewParams struct { Headless param.Opt[bool] `json:"headless,omitzero"` // action invocation ID InvocationID param.Opt[string] `json:"invocation_id,omitzero"` + // If true, enables replay recording of the browser session. Defaults to false. + Replay param.Opt[bool] `json:"replay,omitzero"` // If true, launches the browser in stealth mode to reduce detection by anti-bot // mechanisms. Stealth param.Opt[bool] `json:"stealth,omitzero"` diff --git a/browser_test.go b/browser_test.go index 52e4e4f..cc82173 100644 --- a/browser_test.go +++ b/browser_test.go @@ -3,8 +3,12 @@ package kernel_test import ( + "bytes" "context" "errors" + "io" + "net/http" + "net/http/httptest" "os" "testing" @@ -32,6 +36,7 @@ func TestBrowserNewWithOptionalParams(t *testing.T) { Persistence: kernel.BrowserPersistenceParam{ ID: "my-awesome-browser-for-user-1234", }, + Replay: kernel.Bool(true), Stealth: kernel.Bool(true), }) if err != nil { @@ -136,3 +141,38 @@ func TestBrowserDeleteByID(t *testing.T) { t.Fatalf("err should be nil: %s", err.Error()) } } + +func TestBrowserGetReplay(t *testing.T) { + t.Skip("skipped: tests are disabled for the time being") + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(200) + w.Write([]byte("abc")) + })) + defer server.Close() + baseURL := server.URL + client := kernel.NewClient( + option.WithBaseURL(baseURL), + option.WithAPIKey("My API Key"), + ) + resp, err := client.Browsers.GetReplay(context.TODO(), "htzv5orfit78e1m2biiifpbv") + if err != nil { + var apierr *kernel.Error + if errors.As(err, &apierr) { + t.Log(string(apierr.DumpRequest(true))) + } + t.Fatalf("err should be nil: %s", err.Error()) + } + defer resp.Body.Close() + + b, err := io.ReadAll(resp.Body) + if err != nil { + var apierr *kernel.Error + if errors.As(err, &apierr) { + t.Log(string(apierr.DumpRequest(true))) + } + t.Fatalf("err should be nil: %s", err.Error()) + } + if !bytes.Equal(b, []byte("abc")) { + t.Fatalf("return value not %s: %s", "abc", b) + } +} From 1ef189b2560c8f1d6a684181a0f10e84c1fd6730 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 18:17:39 +0000 Subject: [PATCH 3/3] release: 0.7.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ README.md | 2 +- internal/version.go | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 1b77f50..1bc5713 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.7.0" + ".": "0.7.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 28ead31..eb0e6c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 0.7.1 (2025-07-08) + +Full Changelog: [v0.7.0...v0.7.1](https://github.com/onkernel/kernel-go-sdk/compare/v0.7.0...v0.7.1) + +### Features + +* **api:** manual updates ([2162b0a](https://github.com/onkernel/kernel-go-sdk/commit/2162b0a2396b520acf176b8622b8728e51f8787d)) + + +### Chores + +* lint tests ([29d98ac](https://github.com/onkernel/kernel-go-sdk/commit/29d98ac8ec7d9fe704d07ac0bce4b60d0f2ed121)) + ## 0.7.0 (2025-07-02) Full Changelog: [v0.6.5...v0.7.0](https://github.com/onkernel/kernel-go-sdk/compare/v0.6.5...v0.7.0) diff --git a/README.md b/README.md index 4231558..4a68f80 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Or to pin the version: ```sh -go get -u 'github.com/onkernel/kernel-go-sdk@v0.7.0' +go get -u 'github.com/onkernel/kernel-go-sdk@v0.7.1' ``` diff --git a/internal/version.go b/internal/version.go index 79301ae..9d349c6 100644 --- a/internal/version.go +++ b/internal/version.go @@ -2,4 +2,4 @@ package internal -const PackageVersion = "0.7.0" // x-release-please-version +const PackageVersion = "0.7.1" // x-release-please-version