diff --git a/.release-please-manifest.json b/.release-please-manifest.json index aebbc8bc..f70d9978 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.101.0" + ".": "0.102.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 77497eb7..09b862b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.102.0](https://github.com/kernel/kernel-python-sdk/compare/v0.101.0...v0.102.0) (2026-09-11) + + +### Features + +* Allow replacing AgentCard cards after unknown creates ([22a8731](https://github.com/kernel/kernel-python-sdk/commit/22a87318e6ac2f1318a295b9d22de5b2306e66b2)) +* Document punctuation key sequences ([e7850fd](https://github.com/kernel/kernel-python-sdk/commit/e7850fd5757934c731373c5cb09b4444a29d7e84)) +* Reapply vendor guidance recommendations ([dfcc7ec](https://github.com/kernel/kernel-python-sdk/commit/dfcc7ecbaa087a07d11a5b0eb4738b41b8fadd8b)) +* Report proxy-restricted targets from config registry lookup ([c276ebc](https://github.com/kernel/kernel-python-sdk/commit/c276ebc6fd266924894b300b13ff02f30d0c8527)) + ## [0.101.0](https://github.com/kernel/kernel-python-sdk/compare/v0.100.0...v0.101.0) (2026-09-11) diff --git a/pyproject.toml b/pyproject.toml index ce24d358..473c0ec0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kernel" -version = "0.101.0" +version = "0.102.0" description = "The official Python library for the kernel API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/kernel/_version.py b/src/kernel/_version.py index 058933d0..b5daff26 100644 --- a/src/kernel/_version.py +++ b/src/kernel/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "kernel" -__version__ = "0.101.0" # x-release-please-version +__version__ = "0.102.0" # x-release-please-version diff --git a/src/kernel/resources/browsers/computer.py b/src/kernel/resources/browsers/computer.py index dcb242c6..b40ac897 100644 --- a/src/kernel/resources/browsers/computer.py +++ b/src/kernel/resources/browsers/computer.py @@ -397,7 +397,9 @@ def press_key( keys: List of key symbols to press. Each item should be a key symbol supported by xdotool (see X11 keysym definitions). Examples include "Return", "Shift", "Ctrl", "Alt", "F5". Items in this list could also be combinations, e.g. - "Ctrl+t" or "Ctrl+Shift+Tab". + "Ctrl+t" or "Ctrl+Shift+Tab". Use X11 names for punctuation in combinations, + such as "Ctrl+minus" or "Ctrl+plus". A literal hyphen is also accepted as an + alias, so "Ctrl+-" is normalized to "Ctrl+minus". duration: Duration to hold the keys down in milliseconds. If omitted or 0, keys are tapped. @@ -1002,7 +1004,9 @@ async def press_key( keys: List of key symbols to press. Each item should be a key symbol supported by xdotool (see X11 keysym definitions). Examples include "Return", "Shift", "Ctrl", "Alt", "F5". Items in this list could also be combinations, e.g. - "Ctrl+t" or "Ctrl+Shift+Tab". + "Ctrl+t" or "Ctrl+Shift+Tab". Use X11 names for punctuation in combinations, + such as "Ctrl+minus" or "Ctrl+plus". A literal hyphen is also accepted as an + alias, so "Ctrl+-" is normalized to "Ctrl+minus". duration: Duration to hold the keys down in milliseconds. If omitted or 0, keys are tapped. diff --git a/src/kernel/resources/vaults/items.py b/src/kernel/resources/vaults/items.py index dd790910..ac45401a 100644 --- a/src/kernel/resources/vaults/items.py +++ b/src/kernel/resources/vaults/items.py @@ -209,9 +209,11 @@ def delete( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> None: """ - Unresolved payment operations block deletion, including operations on child - cards of a wallet. Reconcile the original attempt with the provider or support - first; deleting or recreating an item is not proof that a payment did not occur. + Unresolved payment operations normally block deletion, including operations on + child cards of a wallet. An AgentCard checkout whose create response returned no + authorization ID may be explicitly abandoned by deleting that card directly; + deleting its wallet or vault remains blocked. Deleting or recreating an item is + not proof that a payment did not occur. Args: extra_headers: Send extra headers @@ -625,9 +627,11 @@ async def delete( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> None: """ - Unresolved payment operations block deletion, including operations on child - cards of a wallet. Reconcile the original attempt with the provider or support - first; deleting or recreating an item is not proof that a payment did not occur. + Unresolved payment operations normally block deletion, including operations on + child cards of a wallet. An AgentCard checkout whose create response returned no + authorization ID may be explicitly abandoned by deleting that card directly; + deleting its wallet or vault remains blocked. Deleting or recreating an item is + not proof that a payment did not occur. Args: extra_headers: Send extra headers diff --git a/src/kernel/types/browsers/computer_batch_params.py b/src/kernel/types/browsers/computer_batch_params.py index 7fc6abb5..dbd91756 100644 --- a/src/kernel/types/browsers/computer_batch_params.py +++ b/src/kernel/types/browsers/computer_batch_params.py @@ -110,7 +110,10 @@ class ActionPressKey(TypedDict, total=False): Each item should be a key symbol supported by xdotool (see X11 keysym definitions). Examples include "Return", "Shift", "Ctrl", "Alt", "F5". Items in - this list could also be combinations, e.g. "Ctrl+t" or "Ctrl+Shift+Tab". + this list could also be combinations, e.g. "Ctrl+t" or "Ctrl+Shift+Tab". Use X11 + names for punctuation in combinations, such as "Ctrl+minus" or "Ctrl+plus". A + literal hyphen is also accepted as an alias, so "Ctrl+-" is normalized to + "Ctrl+minus". """ duration: int diff --git a/src/kernel/types/browsers/computer_press_key_params.py b/src/kernel/types/browsers/computer_press_key_params.py index ea2c9b45..8722e1b3 100644 --- a/src/kernel/types/browsers/computer_press_key_params.py +++ b/src/kernel/types/browsers/computer_press_key_params.py @@ -15,7 +15,10 @@ class ComputerPressKeyParams(TypedDict, total=False): Each item should be a key symbol supported by xdotool (see X11 keysym definitions). Examples include "Return", "Shift", "Ctrl", "Alt", "F5". Items in - this list could also be combinations, e.g. "Ctrl+t" or "Ctrl+Shift+Tab". + this list could also be combinations, e.g. "Ctrl+t" or "Ctrl+Shift+Tab". Use X11 + names for punctuation in combinations, such as "Ctrl+minus" or "Ctrl+plus". A + literal hyphen is also accepted as an alias, so "Ctrl+-" is normalized to + "Ctrl+minus". """ duration: int diff --git a/src/kernel/types/config_registry_response.py b/src/kernel/types/config_registry_response.py index 9995173f..eead2467 100644 --- a/src/kernel/types/config_registry_response.py +++ b/src/kernel/types/config_registry_response.py @@ -21,3 +21,11 @@ class ConfigRegistryResponse(BaseModel): """A recommendation or a structured no-recommendation result.""" target: Target + + guidance: Optional[str] = None + """Short advisory markdown to facilitate navigating this target. + + Returned even when no configuration reached the target, since knowing what + prevented success is useful without a configuration. Not verified against this + target. Null when nothing applicable was observed or no notes exist. + """ diff --git a/src/kernel/types/lookup_response.py b/src/kernel/types/lookup_response.py index cf0f5c16..d717b8cf 100644 --- a/src/kernel/types/lookup_response.py +++ b/src/kernel/types/lookup_response.py @@ -4,12 +4,21 @@ from .target import Target from .._models import BaseModel -from .recommendation import Recommendation +from .recommendation_result import RecommendationResult __all__ = ["LookupResponse"] class LookupResponse(BaseModel): - recommendation: Optional[Recommendation] = None + recommendation: Optional[RecommendationResult] = None + """A recommendation or a structured no-recommendation result.""" target: Target + + guidance: Optional[str] = None + """Short advisory markdown to facilitate navigating this target. + + Returned even when no configuration reached the target, since knowing what + prevented success is useful without a configuration. Not verified against this + target. Null when nothing applicable was observed or no notes exist. + """ diff --git a/src/kernel/types/vaults/card_vault_item_state.py b/src/kernel/types/vaults/card_vault_item_state.py index 7bb7e274..c64f2ab7 100644 --- a/src/kernel/types/vaults/card_vault_item_state.py +++ b/src/kernel/types/vaults/card_vault_item_state.py @@ -79,9 +79,11 @@ class AgentCardCardState(BaseModel): status: Literal["requested", "ready", "pending_approval", "degraded", "recovery_required"] """recovery_required means the original checkout outcome is unresolved. - Do not retry, delete, or replace it. Known authorization IDs may be reconciled - through provider observations; otherwise contact the provider or support for - manual reconciliation. It does not mean declined or expired. + Automatic reuse is blocked. Known authorization IDs must be reconciled through + provider observations or support. When no authorization ID was returned, an + explicitly confirmed item deletion may abandon the unresolved attempt so the + caller can create a replacement; deletion does not prove that the original + attempt failed. It does not mean declined or expired. """ aliases: Optional[VaultCardAliases] = None