diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 508a7081..19c0e9cc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.103.0" + ".": "0.104.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 14213f10..eb98375c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.104.0](https://github.com/kernel/kernel-python-sdk/compare/v0.103.0...v0.104.0) (2026-09-15) + + +### Features + +* Expose the WebMCP `awaiting_submission` status ([9b5cb34](https://github.com/kernel/kernel-python-sdk/commit/9b5cb34e8fb19c22a44c42aca9e1fc61bf7744a9)) + ## [0.103.0](https://github.com/kernel/kernel-python-sdk/compare/v0.102.0...v0.103.0) (2026-09-15) diff --git a/pyproject.toml b/pyproject.toml index e8a7f193..6b6ca1ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kernel" -version = "0.103.0" +version = "0.104.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 033ca8e7..0a7fea06 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.103.0" # x-release-please-version +__version__ = "0.104.0" # x-release-please-version diff --git a/src/kernel/resources/browsers/webmcp.py b/src/kernel/resources/browsers/webmcp.py index 00f571de..450a5c4f 100644 --- a/src/kernel/resources/browsers/webmcp.py +++ b/src/kernel/resources/browsers/webmcp.py @@ -60,11 +60,16 @@ def invoke_tool( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InvocationResult: - """ - Invokes the exact live registration identified by tool_ref and waits - synchronously for its result. Navigation during execution is allowed. If the tab - or embedded frame disappears, or the request times out after invocation begins, - the response reports outcome_unknown and the tool is not retried. + """Invokes the exact live registration identified by tool_ref. + + Non-autosubmit + declarative form tools return after their fields are populated with an + awaiting_submission status. Other tools wait for a terminal result, including + across navigation. Inspect a populated form, obtain any required confirmation, + then submit through Playwright or computer interaction without invoking the tool + again. If the tab or embedded frame disappears, or the request times out after + invocation begins, the response reports outcome_unknown and the tool is not + retried. Args: input: Tool input, limited to 1 MiB after JSON serialization. @@ -168,11 +173,16 @@ async def invoke_tool( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InvocationResult: - """ - Invokes the exact live registration identified by tool_ref and waits - synchronously for its result. Navigation during execution is allowed. If the tab - or embedded frame disappears, or the request times out after invocation begins, - the response reports outcome_unknown and the tool is not retried. + """Invokes the exact live registration identified by tool_ref. + + Non-autosubmit + declarative form tools return after their fields are populated with an + awaiting_submission status. Other tools wait for a terminal result, including + across navigation. Inspect a populated form, obtain any required confirmation, + then submit through Playwright or computer interaction without invoking the tool + again. If the tab or embedded frame disappears, or the request times out after + invocation begins, the response reports outcome_unknown and the tool is not + retried. Args: input: Tool input, limited to 1 MiB after JSON serialization. diff --git a/src/kernel/types/browsers/invocation_result.py b/src/kernel/types/browsers/invocation_result.py index 7ecd69ce..c8c06188 100644 --- a/src/kernel/types/browsers/invocation_result.py +++ b/src/kernel/types/browsers/invocation_result.py @@ -11,7 +11,13 @@ class InvocationResult(BaseModel): invocation_id: str - status: Literal["completed", "canceled", "error"] + status: Literal["completed", "canceled", "error", "awaiting_submission"] + """ + awaiting_submission means a non-autosubmit declarative form was populated but + not submitted. Inspect the form, obtain any required confirmation, then submit + through Playwright or computer interaction without invoking the tool again. The + other statuses are terminal results. + """ error_text: Optional[str] = None