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