diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 593fcf0c..2261026f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.140.0" + ".": "0.141.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index a901620d..cc8125ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.141.0](https://github.com/kernel/kernel-node-sdk/compare/v0.140.0...v0.141.0) (2026-11-05) + + +### Features + +* Add customer-managed VGS vault card payments ([0caa5b0](https://github.com/kernel/kernel-node-sdk/commit/0caa5b0c57b0c4c278f138b41f1504074972f802)) +* Move GPU browsers to L40S-3Q and 6Q vGPU profiles ([83e0781](https://github.com/kernel/kernel-node-sdk/commit/83e0781aa667b0cd238acc19b52aa99ce5fed328)) +* Remove SerpApi and Valyu search providers ([80829c7](https://github.com/kernel/kernel-node-sdk/commit/80829c75c62f1c0002e349a3501e3ca866b299f6)) +* Return access_token_rejected code when Link rejects a customer-supplied token ([d8c7df1](https://github.com/kernel/kernel-node-sdk/commit/d8c7df1730838dd4bcdf48b50eda833a77513951)) + + +### Bug Fixes + +* generate VGS card aliases in the TypeScript SDK ([f59f588](https://github.com/kernel/kernel-node-sdk/commit/f59f588595cba39391dbf91db44002cf6547bcbb)) + ## [0.140.0](https://github.com/kernel/kernel-node-sdk/compare/v0.139.0...v0.140.0) (2026-11-04) diff --git a/api.md b/api.md index bff49bf1..6386621a 100644 --- a/api.md +++ b/api.md @@ -595,6 +595,11 @@ Types: - VaultItemOperationResponse - VaultPaymentMethod - VaultWebmcpBinding +- VgsCardInput +- VgsCardState +- VgsCardVaultItemSpec +- VgsWalletState +- VgsWalletVaultItemSpec - WalletVaultItemSpec - WalletVaultItemState - WebmcpInvokeVaultItemOperationRequest diff --git a/package.json b/package.json index 36d4ef7d..6d234039 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onkernel/sdk", - "version": "0.140.0", + "version": "0.141.0", "description": "The official TypeScript library for the Kernel API", "author": "Kernel <>", "types": "dist/index.d.ts", diff --git a/src/resources/browsers/browsers.ts b/src/resources/browsers/browsers.ts index ed8938f7..0469a262 100644 --- a/src/resources/browsers/browsers.ts +++ b/src/resources/browsers/browsers.ts @@ -838,10 +838,11 @@ export interface BrowserUsage { } /** - * Video memory (VRAM) of a GPU browser session. 2GiB sessions have 4 vCPU and 6GiB - * memory. 4GiB sessions have 8 vCPU and 12GiB memory. + * Video memory (VRAM) of a GPU browser session. 3GiB sessions have 4 vCPU and 6GiB + * memory. 6GiB sessions have 8 vCPU and 12GiB memory. 2GiB and 4GiB are deprecated + * aliases for 3GiB and 6GiB: they are accepted on create and never returned. */ -export type BrowserVideoMemory = '2GiB' | '4GiB'; +export type BrowserVideoMemory = '3GiB' | '6GiB' | '2GiB' | '4GiB'; /** * Browser profile metadata. @@ -1827,8 +1828,8 @@ export interface BrowserCreateParams { /** * Video memory (VRAM) for a GPU browser session. Requires gpu=true. Defaults to - * 2GiB, which comes with 4 vCPU and 6GiB memory. 4GiB comes with 8 vCPU and 12GiB - * memory. + * 3GiB, which comes with 4 vCPU and 6GiB memory. 6GiB comes with 8 vCPU and 12GiB + * memory. 2GiB and 4GiB are deprecated aliases for 3GiB and 6GiB. */ video_memory?: BrowserVideoMemory; diff --git a/src/resources/search/providers.ts b/src/resources/search/providers.ts index 6ed4f077..0514abe1 100644 --- a/src/resources/search/providers.ts +++ b/src/resources/search/providers.ts @@ -176,17 +176,7 @@ export interface ProviderListParams { * Optional concrete provider slug filter. Omit to list every provider. A slug that * is not listed returns an empty array. */ - slug?: - | 'brave' - | 'exa' - | 'perplexity' - | 'context' - | 'parallel' - | 'valyu' - | 'octen' - | 'you' - | 'tavily' - | 'serpapi'; + slug?: 'brave' | 'exa' | 'perplexity' | 'context' | 'parallel' | 'octen' | 'you' | 'tavily'; } export declare namespace Providers { diff --git a/src/resources/search/search.ts b/src/resources/search/search.ts index 7b6e8b83..c0eae7f7 100644 --- a/src/resources/search/search.ts +++ b/src/resources/search/search.ts @@ -74,11 +74,9 @@ export type ProviderTarget = | ProviderTarget.SearchPerplexityTarget | ProviderTarget.SearchContextTarget | ProviderTarget.SearchParallelTarget - | ProviderTarget.SearchValyuTarget | ProviderTarget.SearchOctenTarget | ProviderTarget.SearchYouTarget - | ProviderTarget.SearchTavilyTarget - | ProviderTarget.SearchSerpAPITarget; + | ProviderTarget.SearchTavilyTarget; export namespace ProviderTarget { export interface SearchBraveTarget { @@ -464,78 +462,6 @@ export namespace ProviderTarget { } } - export interface SearchValyuTarget { - provider: 'valyu'; - - options?: SearchValyuTarget.Options; - } - - export namespace SearchValyuTarget { - export interface Options { - /** - * Trade depth for latency. - */ - fast_mode?: boolean; - - /** - * Allow historical cached results. - */ - historical_cache?: boolean; - - /** - * Include abstracts for academic sources. - */ - include_abstracts?: boolean; - - /** - * Natural-language retrieval guidance. - */ - instructions?: string; - - /** - * Mark the search as an agent tool call. - */ - is_tool_call?: boolean; - - /** - * Provider-native count. Lower-only alias for max_results. - */ - max_num_results?: number; - - /** - * Provider-native USD-per-thousand-results price ceiling. Forwarded to Valyu. - */ - max_price?: number; - - /** - * Provider-native minimum relevance threshold. Not a normalized cross-provider - * score. - */ - relevance_threshold?: number; - - /** - * Provider result-content length preset. - */ - response_length?: 'short' | 'medium' | 'large' | 'max'; - - /** - * Corpus selector, including all, web, proprietary, and news. Provider corpus - * choice may change billing; Kernel does not force web-only searches. - */ - search_type?: string; - - /** - * Bias retrieval toward these sources. - */ - source_biases?: Array; - - /** - * Return URLs without content. - */ - url_only?: boolean; - } - } - export interface SearchOctenTarget { provider: 'octen'; @@ -747,87 +673,6 @@ export namespace ProviderTarget { topic?: 'general' | 'news' | 'finance'; } } - - export interface SearchSerpAPITarget { - provider: 'serpapi'; - - options?: SearchSerpAPITarget.Options; - } - - export namespace SearchSerpAPITarget { - export interface Options { - /** - * SerpApi engine identifier. The Kernel integration currently supports google - * only. - */ - engine: string; - - /** - * Device profile used for the search. - */ - device?: 'desktop' | 'mobile' | 'tablet'; - - /** - * Google duplicate-content filter. - */ - filter?: 0 | 1; - - /** - * Two-letter Google country code. - */ - gl?: string; - - /** - * Google domain to search when using the google engine. - */ - google_domain?: string; - - /** - * Interface language code. - */ - hl?: string; - - /** - * Free-form geographic location used for localized results. - */ - location?: string; - - /** - * Google auto-correction filter. - */ - nfpr?: 0 | 1; - - /** - * When true, bypass SerpApi cached results when supported. - */ - no_cache?: boolean; - - /** - * Number of results requested from the search engine. - */ - num?: number; - - /** - * Safe-search setting for engines that support it. - */ - safe?: 'active' | 'off'; - - /** - * Zero-based result offset for pagination. - */ - start?: number; - - /** - * Google vertical search selector, such as images, video, news, or shopping. - */ - tbm?: string; - - /** - * Google time and search modifiers, including freshness filters. - */ - tbs?: string; - } - } } export interface Request { diff --git a/src/resources/vault-provider-configs.ts b/src/resources/vault-provider-configs.ts index 24ba4d00..ece61203 100644 --- a/src/resources/vault-provider-configs.ts +++ b/src/resources/vault-provider-configs.ts @@ -118,7 +118,8 @@ export type VaultProviderConfigsOffsetPagination = OffsetPagination; + + masks?: VgsCardState.Masks; + + status_reason?: string; +} + +export namespace VgsCardState { + export interface Masks { + brand?: string; + + last4?: string; + + /** + * Last four digits of the network token presented to the merchant. + */ + token_last4?: string; + + [k: string]: string | undefined; + } +} + +/** + * One live purchase with a card in the customer's VGS vault. authorize reveals + * card.pan_alias and card.cvc_alias through Kernel's VGS outbound proxy, which + * replaces both with aliases in Kernel's vault before they reach Kernel; Kernel + * never receives the card number or security code. The card is then ready with no + * further approval, until expires_at, by default five minutes after authorize. + * fill types Kernel's aliases on merchant_url's origin, and Kernel's VGS proxy + * replaces them with the card's details when the browser submits checkout. An + * expired card requires a new purchase with a freshly collected CVC alias. The + * amount and merchant are recorded but do not restrict payment requests sent by + * the browser. Card updates are not supported; delete and create a new item + * instead. + */ +export interface VgsCardVaultItemSpec { + /** + * Integer amount in minor currency units (at most 1000000). + */ + amount: number; + + /** + * ISO 4217 code. Supported: aud, brl, cad, chf, czk, dkk, eur, gbp, hkd, inr, jpy, + * krw, mxn, nok, nzd, pln, sek, sgd, usd, zar. + */ + currency: string; + + merchant_name: string; + + /** + * Merchant checkout URL. Fill is allowed only on this URL's origin. + */ + merchant_url: string; + + provider: 'vgs'; + + /** + * Key of the VGS wallet item whose configuration reads the aliases. + */ + wallet: string; + + /** + * Required when creating the card. Never returned. + */ + card?: VgsCardInput; +} + +export interface VgsWalletState { + provider: 'vgs'; + + /** + * A VGS wallet is connected on creation. pending_authorization or degraded means + * its creation did not finish; reading the wallet retries it, and a wallet that + * stays degraded can be deleted and created again. Whether its configuration's + * credentials still work is checked when a card is authorized. + */ + status: 'pending_authorization' | 'connected' | 'degraded'; + + status_reason?: string; +} + +/** + * Cards kept in the customer's own VGS vault. The wallet binds a VGS provider + * configuration and is connected on creation; it holds no cards and has no payment + * methods. Each purchase is a card item that carries the card's aliases from the + * customer's vault. The configuration binding cannot be changed after creation. + */ +export interface VgsWalletVaultItemSpec { + provider: 'vgs'; + + /** + * Select a VGS configuration. Required, because there are no Kernel-managed VGS + * credentials for this provider. + */ + provider_config: VgsWalletVaultItemSpec.ProviderConfig; +} + +export namespace VgsWalletVaultItemSpec { + /** + * Select a VGS configuration. Required, because there are no Kernel-managed VGS + * credentials for this provider. + */ + export interface ProviderConfig { + id?: string; + + name?: string; + } +} + /** * AgentCard wallet. Omit provider_config to use Kernel-managed credentials, or * select a customer-owned configuration. Mode (sandbox vs live) is determined by @@ -3935,7 +4097,8 @@ export type WalletVaultItemSpec = | WalletVaultItemSpec.LinkWalletVaultItemSpec | WalletVaultItemSpec.AgentCardWalletVaultItemSpec | KernelWalletVaultItemSpec - | ShopPayWalletVaultItemSpec; + | ShopPayWalletVaultItemSpec + | VgsWalletVaultItemSpec; export namespace WalletVaultItemSpec { export interface LinkWalletVaultItemSpec { @@ -4035,7 +4198,8 @@ export type WalletVaultItemState = | WalletVaultItemState.LinkWalletState | WalletVaultItemState.AgentCardWalletState | KernelWalletState - | ShopPayWalletState; + | ShopPayWalletState + | VgsWalletState; export namespace WalletVaultItemState { export interface LinkWalletState { @@ -4784,7 +4948,8 @@ export declare namespace ItemUpsertParams { | WalletVaultItemRequest.LinkWalletVaultItemRequestSpec | WalletVaultItemRequest.AgentCardWalletVaultItemSpec | KernelWalletVaultItemSpec - | ShopPayWalletVaultItemSpec; + | ShopPayWalletVaultItemSpec + | VgsWalletVaultItemSpec; /** * Body param @@ -4831,30 +4996,31 @@ export declare namespace ItemUpsertParams { * subsequent refresh-token rotation after a successful import; the customer must * stop refreshing this grant. With token_refresh=customer, send only the access * token: your backend keeps the refresh token and rotates the grant, and Kernel - * never refreshes or revokes it. Replace the stored access token with the wallet's - * update_access_token operation before each step that reaches Link, such as - * creating, authorizing or filling a card. When Link rejects the stored access - * token, operations return 409 without contacting Link again; update the token and - * retry. The remainder of this description applies to token_refresh=kernel. With - * token_refresh=kernel, Kernel owns subsequent refresh-token rotation; the - * customer must stop refreshing this grant. Import does not verify the refresh - * token: if it or the configured client credentials are rejected during a later - * refresh, the imported wallet becomes degraded. An unknown refresh outcome also - * leaves it degraded; Kernel does not retry a refresh token that may already have - * been consumed. There is no in-place reauthorization operation for an imported - * wallet. If this imported wallet's credentials become unusable, obtain a fresh - * Link OAuth grant in your backend and create a wallet under a NEW wallet key. Use - * the new wallet for NEW cards and payments, not to retry an old payment whose - * outcome is uncertain. This does not replace the old grant, rebind existing - * cards, or resolve their payment outcomes. Retain the old wallet and its cards - * while reconciling any uncertain payments with the provider or support. Do not - * repeat an uncertain payment on the new wallet, and do not treat deletion as - * evidence that it did not execute. Deletion of the old wallet can remain blocked - * by unresolved child cards. Repeating a create for the same item key and - * non-secret spec returns the existing wallet without replacing tokens, even if - * they have rotated or the wallet needs reconnection. ID and name references - * resolving to the same config are equivalent. A different config or non-secret - * spec returns 409. This create operation does not replace an existing grant. + * never refreshes or revokes it. When Link rejects the stored access token, any + * operation that reaches Link, such as creating, authorizing or filling a card, + * returns 409 with code access_token_rejected without contacting Link again. Push + * a fresh access token with the wallet's update_access_token operation, then retry + * the operation. The remainder of this description applies to + * token_refresh=kernel. With token_refresh=kernel, Kernel owns subsequent + * refresh-token rotation; the customer must stop refreshing this grant. Import + * does not verify the refresh token: if it or the configured client credentials + * are rejected during a later refresh, the imported wallet becomes degraded. An + * unknown refresh outcome also leaves it degraded; Kernel does not retry a refresh + * token that may already have been consumed. There is no in-place reauthorization + * operation for an imported wallet. If this imported wallet's credentials become + * unusable, obtain a fresh Link OAuth grant in your backend and create a wallet + * under a NEW wallet key. Use the new wallet for NEW cards and payments, not to + * retry an old payment whose outcome is uncertain. This does not replace the old + * grant, rebind existing cards, or resolve their payment outcomes. Retain the old + * wallet and its cards while reconciling any uncertain payments with the provider + * or support. Do not repeat an uncertain payment on the new wallet, and do not + * treat deletion as evidence that it did not execute. Deletion of the old wallet + * can remain blocked by unresolved child cards. Repeating a create for the same + * item key and non-secret spec returns the existing wallet without replacing + * tokens, even if they have rotated or the wallet needs reconnection. ID and name + * references resolving to the same config are equivalent. A different config or + * non-secret spec returns 409. This create operation does not replace an existing + * grant. */ export interface ImportedLinkAuthorizationInput { client: ImportedLinkAuthorizationInput.Client; @@ -5130,6 +5296,11 @@ export declare namespace Items { type VaultItemOperationResponse as VaultItemOperationResponse, type VaultPaymentMethod as VaultPaymentMethod, type VaultWebmcpBinding as VaultWebmcpBinding, + type VgsCardInput as VgsCardInput, + type VgsCardState as VgsCardState, + type VgsCardVaultItemSpec as VgsCardVaultItemSpec, + type VgsWalletState as VgsWalletState, + type VgsWalletVaultItemSpec as VgsWalletVaultItemSpec, type WalletVaultItemSpec as WalletVaultItemSpec, type WalletVaultItemState as WalletVaultItemState, type WebmcpInvokeVaultItemOperationRequest as WebmcpInvokeVaultItemOperationRequest, diff --git a/src/resources/vaults/vaults.ts b/src/resources/vaults/vaults.ts index 53f34a35..e108c3a3 100644 --- a/src/resources/vaults/vaults.ts +++ b/src/resources/vaults/vaults.ts @@ -92,6 +92,11 @@ import { VaultItemOperationResponse, VaultPaymentMethod, VaultWebmcpBinding, + VgsCardInput, + VgsCardState, + VgsCardVaultItemSpec, + VgsWalletState, + VgsWalletVaultItemSpec, WalletVaultItemSpec, WalletVaultItemState, WebmcpInvokeVaultItemOperationRequest, @@ -366,6 +371,11 @@ export declare namespace Vaults { type VaultItemOperationResponse as VaultItemOperationResponse, type VaultPaymentMethod as VaultPaymentMethod, type VaultWebmcpBinding as VaultWebmcpBinding, + type VgsCardInput as VgsCardInput, + type VgsCardState as VgsCardState, + type VgsCardVaultItemSpec as VgsCardVaultItemSpec, + type VgsWalletState as VgsWalletState, + type VgsWalletVaultItemSpec as VgsWalletVaultItemSpec, type WalletVaultItemSpec as WalletVaultItemSpec, type WalletVaultItemState as WalletVaultItemState, type WebmcpInvokeVaultItemOperationRequest as WebmcpInvokeVaultItemOperationRequest, diff --git a/src/version.ts b/src/version.ts index 47d5dc0b..98896b65 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.140.0'; // x-release-please-version +export const VERSION = '0.141.0'; // x-release-please-version diff --git a/tests/api-resources/browsers/browsers.test.ts b/tests/api-resources/browsers/browsers.test.ts index efb216d1..63ada8e7 100644 --- a/tests/api-resources/browsers/browsers.test.ts +++ b/tests/api-resources/browsers/browsers.test.ts @@ -88,7 +88,7 @@ describe('resource browsers', () => { }, timeout_seconds: 10, vaults: [{ id: 'id', name: 'x' }], - video_memory: '2GiB', + video_memory: '3GiB', viewport: { height: 800, width: 1280,