From fe32267f011df4444169d45787bac50b6249eab4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 02:21:20 +0000 Subject: [PATCH 1/5] =?UTF-8?q?chore(jsdoc):=20fix=20@link=20annotations?= =?UTF-8?q?=20to=20refer=20only=20to=20parts=20of=20the=20package=E2=80=98?= =?UTF-8?q?s=20public=20interface?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/internal/to-file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/to-file.ts b/src/internal/to-file.ts index 245e849..30eada3 100644 --- a/src/internal/to-file.ts +++ b/src/internal/to-file.ts @@ -73,7 +73,7 @@ export type ToFileInput = /** * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats - * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s + * @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible * @param {Object=} options additional properties * @param {string=} options.type the MIME type of the content From aac1084dca1bb547f314144891ed277ff82f2c89 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 02:47:17 +0000 Subject: [PATCH 2/5] chore(internal): use npm pack for build uploads --- scripts/utils/upload-artifact.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/utils/upload-artifact.sh b/scripts/utils/upload-artifact.sh index 38abeb4..efeeb16 100755 --- a/scripts/utils/upload-artifact.sh +++ b/scripts/utils/upload-artifact.sh @@ -12,9 +12,11 @@ if [[ "$SIGNED_URL" == "null" ]]; then exit 1 fi -UPLOAD_RESPONSE=$(tar "${BASE_PATH:+-C$BASE_PATH}" -cz "${ARTIFACT_PATH:-dist}" | curl -v -X PUT \ +TARBALL=$(cd dist && npm pack --silent) + +UPLOAD_RESPONSE=$(curl -v -X PUT \ -H "Content-Type: application/gzip" \ - --data-binary @- "$SIGNED_URL" 2>&1) + --data-binary "@dist/$TARBALL" "$SIGNED_URL" 2>&1) if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then echo -e "\033[32mUploaded build to Stainless storage.\033[0m" From 77333abe7f7ee0c53da495adcec728b2fed7f831 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 13:43:59 +0000 Subject: [PATCH 3/5] feat: WIP browser extensions --- .stats.yml | 8 +- api.md | 16 ++ src/client.ts | 19 ++ src/resources/browsers/browsers.ts | 77 +++++++ src/resources/browsers/index.ts | 1 + src/resources/extensions.ts | 200 ++++++++++++++++++ src/resources/index.ts | 8 + tests/api-resources/browsers/browsers.test.ts | 24 ++- tests/api-resources/extensions.test.ts | 60 ++++++ 9 files changed, 408 insertions(+), 5 deletions(-) create mode 100644 src/resources/extensions.ts create mode 100644 tests/api-resources/extensions.test.ts diff --git a/.stats.yml b/.stats.yml index 0af2575..b296ff8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 51 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-8a6175a75caa75c3de5400edf97a34e526ac3f62c63955375437461581deb0c2.yml -openapi_spec_hash: 1a880e4ce337a0e44630e6d87ef5162a -config_hash: 49c2ff978aaa5ccb4ce324a72f116010 +configured_endpoints: 57 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-936db268b3dcae5d64bd5d590506d8134304ffcbf67389eb9b1555b3febfd4cb.yml +openapi_spec_hash: 145485087adf1b28c052bacb4df68462 +config_hash: 5236f9b34e39dc1930e36a88c714abd4 diff --git a/api.md b/api.md index 9165c58..9bf2b7d 100644 --- a/api.md +++ b/api.md @@ -73,6 +73,7 @@ Methods: - client.browsers.list() -> BrowserListResponse - client.browsers.delete({ ...params }) -> void - client.browsers.deleteByID(id) -> void +- client.browsers.uploadExtensions(id, { ...params }) -> void ## Replays @@ -177,3 +178,18 @@ Methods: - client.proxies.retrieve(id) -> ProxyRetrieveResponse - client.proxies.list() -> ProxyListResponse - client.proxies.delete(id) -> void + +# Extensions + +Types: + +- ExtensionListResponse +- ExtensionUploadResponse + +Methods: + +- client.extensions.list() -> ExtensionListResponse +- client.extensions.delete(idOrName) -> void +- client.extensions.download(idOrName) -> Response +- client.extensions.downloadFromChromeStore({ ...params }) -> Response +- client.extensions.upload({ ...params }) -> ExtensionUploadResponse diff --git a/src/client.ts b/src/client.ts index d5dc675..2b74698 100644 --- a/src/client.ts +++ b/src/client.ts @@ -32,6 +32,13 @@ import { Deployments, } from './resources/deployments'; import { KernelApp } from './core/app-framework'; +import { + ExtensionDownloadFromChromeStoreParams, + ExtensionListResponse, + ExtensionUploadParams, + ExtensionUploadResponse, + Extensions, +} from './resources/extensions'; import { InvocationCreateParams, InvocationCreateResponse, @@ -61,6 +68,7 @@ import { BrowserListResponse, BrowserPersistence, BrowserRetrieveResponse, + BrowserUploadExtensionsParams, Browsers, Profile, } from './resources/browsers/browsers'; @@ -832,6 +840,7 @@ export class Kernel { browsers: API.Browsers = new API.Browsers(this); profiles: API.Profiles = new API.Profiles(this); proxies: API.Proxies = new API.Proxies(this); + extensions: API.Extensions = new API.Extensions(this); } Kernel.Deployments = Deployments; @@ -840,6 +849,7 @@ Kernel.Invocations = Invocations; Kernel.Browsers = Browsers; Kernel.Profiles = Profiles; Kernel.Proxies = Proxies; +Kernel.Extensions = Extensions; export declare namespace Kernel { export type RequestOptions = Opts.RequestOptions; @@ -889,6 +899,7 @@ export declare namespace Kernel { type BrowserListResponse as BrowserListResponse, type BrowserCreateParams as BrowserCreateParams, type BrowserDeleteParams as BrowserDeleteParams, + type BrowserUploadExtensionsParams as BrowserUploadExtensionsParams, }; export { @@ -905,6 +916,14 @@ export declare namespace Kernel { type ProxyCreateParams as ProxyCreateParams, }; + export { + Extensions as Extensions, + type ExtensionListResponse as ExtensionListResponse, + type ExtensionUploadResponse as ExtensionUploadResponse, + type ExtensionDownloadFromChromeStoreParams as ExtensionDownloadFromChromeStoreParams, + type ExtensionUploadParams as ExtensionUploadParams, + }; + export type AppAction = API.AppAction; export type ErrorDetail = API.ErrorDetail; export type ErrorEvent = API.ErrorEvent; diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index 8368194..32681da 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -48,8 +48,10 @@ import { Fs, } from './fs/fs'; import { APIPromise } from '../../core/api-promise'; +import { type Uploadable } from '../../core/uploads'; import { buildHeaders } from '../../internal/headers'; import { RequestOptions } from '../../internal/request-options'; +import { multipartFormRequestOptions } from '../../internal/uploads'; import { path } from '../../internal/utils/path'; export class Browsers extends APIResource { @@ -134,6 +136,36 @@ export class Browsers extends APIResource { headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } + + /** + * Loads one or more unpacked extensions and restarts Chromium on the browser + * instance. + * + * @example + * ```ts + * await client.browsers.uploadExtensions('id', { + * extensions: [ + * { + * name: 'name', + * zip_file: fs.createReadStream('path/to/file'), + * }, + * ], + * }); + * ``` + */ + uploadExtensions( + id: string, + body: BrowserUploadExtensionsParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post( + path`/browsers/${id}/extensions`, + multipartFormRequestOptions( + { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]) }, + this._client, + ), + ); + } } /** @@ -340,6 +372,11 @@ export namespace BrowserListResponse { } export interface BrowserCreateParams { + /** + * List of browser extensions to load into the session. Provide each by id or name. + */ + extensions?: Array; + /** * If true, launches the browser using a headless image (no VNC/GUI). Defaults to * false. @@ -387,6 +424,23 @@ export interface BrowserCreateParams { } export namespace BrowserCreateParams { + /** + * Extension selection for the browser session. Provide either id or name of an + * extension uploaded to Kernel. + */ + export interface Extension { + /** + * Extension ID to load for this browser session + */ + id?: string; + + /** + * Extension name to load for this browser session (instead of id). Must be 1-255 + * characters, using letters, numbers, dots, underscores, or hyphens. + */ + name?: string; + } + /** * Profile selection for the browser session. Provide either id or name. If * specified, the matching profile will be loaded into the browser session. @@ -419,6 +473,28 @@ export interface BrowserDeleteParams { persistent_id: string; } +export interface BrowserUploadExtensionsParams { + /** + * List of extensions to upload and activate + */ + extensions: Array; +} + +export namespace BrowserUploadExtensionsParams { + export interface Extension { + /** + * Folder name to place the extension under /home/kernel/extensions/ + */ + name: string; + + /** + * Zip archive containing an unpacked Chromium extension (must include + * manifest.json) + */ + zip_file: Uploadable; + } +} + Browsers.Replays = Replays; Browsers.Fs = Fs; Browsers.Process = Process; @@ -433,6 +509,7 @@ export declare namespace Browsers { type BrowserListResponse as BrowserListResponse, type BrowserCreateParams as BrowserCreateParams, type BrowserDeleteParams as BrowserDeleteParams, + type BrowserUploadExtensionsParams as BrowserUploadExtensionsParams, }; export { diff --git a/src/resources/browsers/index.ts b/src/resources/browsers/index.ts index bcd5b40..71eab3b 100644 --- a/src/resources/browsers/index.ts +++ b/src/resources/browsers/index.ts @@ -9,6 +9,7 @@ export { type BrowserListResponse, type BrowserCreateParams, type BrowserDeleteParams, + type BrowserUploadExtensionsParams, } from './browsers'; export { Fs, diff --git a/src/resources/extensions.ts b/src/resources/extensions.ts new file mode 100644 index 0000000..5697a07 --- /dev/null +++ b/src/resources/extensions.ts @@ -0,0 +1,200 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { APIResource } from '../core/resource'; +import { APIPromise } from '../core/api-promise'; +import { type Uploadable } from '../core/uploads'; +import { buildHeaders } from '../internal/headers'; +import { RequestOptions } from '../internal/request-options'; +import { multipartFormRequestOptions } from '../internal/uploads'; +import { path } from '../internal/utils/path'; + +export class Extensions extends APIResource { + /** + * List extensions owned by the caller's organization. + * + * @example + * ```ts + * const extensions = await client.extensions.list(); + * ``` + */ + list(options?: RequestOptions): APIPromise { + return this._client.get('/extensions', options); + } + + /** + * Delete an extension by its ID or by its name. + * + * @example + * ```ts + * await client.extensions.delete('id_or_name'); + * ``` + */ + delete(idOrName: string, options?: RequestOptions): APIPromise { + return this._client.delete(path`/extensions/${idOrName}`, { + ...options, + headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), + }); + } + + /** + * Download the extension as a ZIP archive by ID or name. + * + * @example + * ```ts + * const response = await client.extensions.download( + * 'id_or_name', + * ); + * + * const content = await response.blob(); + * console.log(content); + * ``` + */ + download(idOrName: string, options?: RequestOptions): APIPromise { + return this._client.get(path`/extensions/${idOrName}`, { + ...options, + headers: buildHeaders([{ Accept: 'application/octet-stream' }, options?.headers]), + __binaryResponse: true, + }); + } + + /** + * Returns a ZIP archive containing the unpacked extension fetched from the Chrome + * Web Store. + * + * @example + * ```ts + * const response = + * await client.extensions.downloadFromChromeStore({ + * url: 'url', + * }); + * + * const content = await response.blob(); + * console.log(content); + * ``` + */ + downloadFromChromeStore( + query: ExtensionDownloadFromChromeStoreParams, + options?: RequestOptions, + ): APIPromise { + return this._client.get('/extensions/from_chrome_store', { + query, + ...options, + headers: buildHeaders([{ Accept: 'application/octet-stream' }, options?.headers]), + __binaryResponse: true, + }); + } + + /** + * Upload a zip file containing an unpacked browser extension. Optionally provide a + * unique name for later reference. + * + * @example + * ```ts + * const response = await client.extensions.upload({ + * file: fs.createReadStream('path/to/file'), + * }); + * ``` + */ + upload(body: ExtensionUploadParams, options?: RequestOptions): APIPromise { + return this._client.post('/extensions', multipartFormRequestOptions({ body, ...options }, this._client)); + } +} + +export type ExtensionListResponse = Array; + +export namespace ExtensionListResponse { + /** + * A browser extension uploaded to Kernel. + */ + export interface ExtensionListResponseItem { + /** + * Unique identifier for the extension + */ + id: string; + + /** + * Timestamp when the extension was created + */ + created_at: string; + + /** + * Size of the extension archive in bytes + */ + size_bytes: number; + + /** + * Timestamp when the extension was last used + */ + last_used_at?: string | null; + + /** + * Optional, easier-to-reference name for the extension. Must be unique within the + * organization. + */ + name?: string | null; + } +} + +/** + * A browser extension uploaded to Kernel. + */ +export interface ExtensionUploadResponse { + /** + * Unique identifier for the extension + */ + id: string; + + /** + * Timestamp when the extension was created + */ + created_at: string; + + /** + * Size of the extension archive in bytes + */ + size_bytes: number; + + /** + * Timestamp when the extension was last used + */ + last_used_at?: string | null; + + /** + * Optional, easier-to-reference name for the extension. Must be unique within the + * organization. + */ + name?: string | null; +} + +export interface ExtensionDownloadFromChromeStoreParams { + /** + * Chrome Web Store URL for the extension. + */ + url: string; + + /** + * Target operating system for the extension package. Defaults to linux. + */ + os?: 'win' | 'mac' | 'linux'; +} + +export interface ExtensionUploadParams { + /** + * ZIP file containing the browser extension. + */ + file: Uploadable; + + /** + * Optional unique name within the organization to reference this extension. + */ + name?: string; +} + +export declare namespace Extensions { + export { + type ExtensionListResponse as ExtensionListResponse, + type ExtensionUploadResponse as ExtensionUploadResponse, + type ExtensionDownloadFromChromeStoreParams as ExtensionDownloadFromChromeStoreParams, + type ExtensionUploadParams as ExtensionUploadParams, + }; +} diff --git a/src/resources/index.ts b/src/resources/index.ts index 0288a65..37026ae 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -11,6 +11,7 @@ export { type BrowserListResponse, type BrowserCreateParams, type BrowserDeleteParams, + type BrowserUploadExtensionsParams, } from './browsers/browsers'; export { Deployments, @@ -24,6 +25,13 @@ export { type DeploymentFollowParams, type DeploymentListResponsesOffsetPagination, } from './deployments'; +export { + Extensions, + type ExtensionListResponse, + type ExtensionUploadResponse, + type ExtensionDownloadFromChromeStoreParams, + type ExtensionUploadParams, +} from './extensions'; export { Invocations, type InvocationStateEvent, diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts index 3434e72..8d573b6 100644 --- a/tests/api-resources/browsers/browsers.test.ts +++ b/tests/api-resources/browsers/browsers.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Kernel from '@onkernel/sdk'; +import Kernel, { toFile } from '@onkernel/sdk'; const client = new Kernel({ apiKey: 'My API Key', @@ -26,6 +26,7 @@ describe('resource browsers', () => { await expect( client.browsers.create( { + extensions: [{ id: 'id', name: 'name' }], headless: false, invocation_id: 'rr33xuugxj9h0bkf1rdt2bet', persistence: { id: 'my-awesome-browser-for-user-1234' }, @@ -91,4 +92,25 @@ describe('resource browsers', () => { expect(dataAndResponse.data).toBe(response); expect(dataAndResponse.response).toBe(rawResponse); }); + + // Prism tests are disabled + test.skip('uploadExtensions: only required params', async () => { + const responsePromise = client.browsers.uploadExtensions('id', { + extensions: [{ name: 'name', zip_file: await toFile(Buffer.from('# my file contents'), 'README.md') }], + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('uploadExtensions: required and optional params', async () => { + const response = await client.browsers.uploadExtensions('id', { + extensions: [{ name: 'name', zip_file: await toFile(Buffer.from('# my file contents'), 'README.md') }], + }); + }); }); diff --git a/tests/api-resources/extensions.test.ts b/tests/api-resources/extensions.test.ts new file mode 100644 index 0000000..515415f --- /dev/null +++ b/tests/api-resources/extensions.test.ts @@ -0,0 +1,60 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import Kernel, { toFile } from '@onkernel/sdk'; + +const client = new Kernel({ + apiKey: 'My API Key', + baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010', +}); + +describe('resource extensions', () => { + // Prism tests are disabled + test.skip('list', async () => { + const responsePromise = client.extensions.list(); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('delete', async () => { + const responsePromise = client.extensions.delete('id_or_name'); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + test('downloadFromChromeStore: required and optional params', async () => { + const response = await client.extensions.downloadFromChromeStore({ url: 'url', os: 'win' }); + }); + + // Prism tests are disabled + test.skip('upload: only required params', async () => { + const responsePromise = client.extensions.upload({ + file: await toFile(Buffer.from('# my file contents'), 'README.md'), + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('upload: required and optional params', async () => { + const response = await client.extensions.upload({ + file: await toFile(Buffer.from('# my file contents'), 'README.md'), + name: 'name', + }); + }); +}); From c4ce155693c9634405efafb4f1043e1bce08ccb3 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 13:51:57 +0000 Subject: [PATCH 4/5] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index b296ff8..f577dd0 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 57 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-936db268b3dcae5d64bd5d590506d8134304ffcbf67389eb9b1555b3febfd4cb.yml openapi_spec_hash: 145485087adf1b28c052bacb4df68462 -config_hash: 5236f9b34e39dc1930e36a88c714abd4 +config_hash: 15cd063f8e308686ac71bf9ee9634625 From d2b0a87c524fa6cfb260182104a44544c06bce1d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 13:52:15 +0000 Subject: [PATCH 5/5] release: 0.14.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ package.json | 2 +- src/version.ts | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ed21d28..727e2be 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.13.0" + ".": "0.14.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e20e55..0ea0274 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.14.0 (2025-10-07) + +Full Changelog: [v0.13.0...v0.14.0](https://github.com/onkernel/kernel-node-sdk/compare/v0.13.0...v0.14.0) + +### Features + +* WIP browser extensions ([77333ab](https://github.com/onkernel/kernel-node-sdk/commit/77333abe7f7ee0c53da495adcec728b2fed7f831)) + + +### Chores + +* **internal:** use npm pack for build uploads ([aac1084](https://github.com/onkernel/kernel-node-sdk/commit/aac1084dca1bb547f314144891ed277ff82f2c89)) +* **jsdoc:** fix [@link](https://github.com/link) annotations to refer only to parts of the packageā€˜s public interface ([fe32267](https://github.com/onkernel/kernel-node-sdk/commit/fe32267f011df4444169d45787bac50b6249eab4)) + ## 0.13.0 (2025-10-03) Full Changelog: [v0.12.0...v0.13.0](https://github.com/onkernel/kernel-node-sdk/compare/v0.12.0...v0.13.0) diff --git a/package.json b/package.json index 92fc936..eebd87b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onkernel/sdk", - "version": "0.13.0", + "version": "0.14.0", "description": "The official TypeScript library for the Kernel API", "author": "Kernel <>", "types": "dist/index.d.ts", diff --git a/src/version.ts b/src/version.ts index 9d013cc..e2b0672 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.13.0'; // x-release-please-version +export const VERSION = '0.14.0'; // x-release-please-version