openbox-langgraph-sdk-python 1.1.0__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.coverage +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/CHANGELOG.md +9 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/PKG-INFO +12 -2
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/README.md +11 -1
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/coverage.xml +642 -552
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/uv.lock +1 -1
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/__init__.py +1 -1
- openbox_langgraph_sdk_python-1.2.0/openbox_langgraph/activity_approval.py +156 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/client.py +1 -1
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/core_adapter.py +27 -75
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/core_runtime.py +1 -1
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/langgraph_handler.py +20 -147
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/pyproject.toml +1 -1
- openbox_langgraph_sdk_python-1.2.0/tests/test_activity_approval_waiter.py +98 -0
- openbox_langgraph_sdk_python-1.2.0/tests/test_approval_in_place.py +196 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_context_cleanup_on_error.py +13 -20
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_hook_approval_retry.py +27 -83
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_langchain_callback_tool_ordering.py +20 -46
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_workload_identity.py +1 -1
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/uv.lock +1 -1
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/CODEOWNERS +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/pr-governance.yml +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/pr-quality.yml +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/pr-security.yml +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/publish.yml +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.gitignore +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.gitleaks.toml +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/AGENTS.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/CLAUDE.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/CODE_OF_CONDUCT.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/LICENSE +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/SECURITY.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/.env.example +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/.gitignore +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/AGENTS.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/README.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/pyproject.toml +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/skills/blog-post/SKILL.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/skills/social-media/SKILL.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/__init__.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/agent.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/main.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/paths.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/prompt.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/tools_content.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/src/demo_04_content_builder_langgraph/tools_fs.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/code-standards.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/codebase-summary.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/project-overview-pdr.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/project-roadmap.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/system-architecture.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/activity_context_binding.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/config.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/core_events.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/errors.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/hitl.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/identity.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/langgraph_hook_runtime.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/otel_setup.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/span_processor.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/tool_activity_binding.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/trace_context_registry.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/tracing.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/types.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/verdict_handler.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/sonar-project.properties +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/conftest.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/README.md +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/__init__.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/capture_harness.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/chain_completed.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/chain_completed.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/chain_started.handbuilt_serialization_pin.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/chain_started.handbuilt_serialization_pin.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/fake_agent_graphs.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/generate_fixtures.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/graph_capture_harness.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_signed.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_signed.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_unsigned.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_unsigned.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/id_normalization.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/layer1_handbuilt_pins.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_completed.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_completed.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_started.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_started.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/ordering_single_llm_turn.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/ordering_tool_call_turn.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/ordering_two_llm_calls_turn.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/real_emitted_event_fixtures.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/signal_received.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/signal_received.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_completed.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_completed.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_started.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_started.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_completed.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_completed.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_started.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_started.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_completed_error_close.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_completed_error_close.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_failed.handbuilt_serialization_pin.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_failed.handbuilt_serialization_pin.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_started.normalized.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_started.raw.json +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_activity_context_binding.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_agent_identity.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_approval_strict_parsing.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_client_shim_compat.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_config_client_core.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_config_resolution_precedence.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_context_fallback_task_and_thread.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_context_turn_isolation.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_contextvars_propagation.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_conformance_suite.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_context_binding.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_events_envelopes.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_runtime_config.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_did_client_signing.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_fail_open_block_preserved.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_framework_adapter_translation.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_gate_error_translation.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_golden_baseline.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_governance_changes.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_halt_run_isolation.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_hook_context_pinning.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_hook_family_exclusivity.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_langchain_callback_dedup.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_langchain_callback_llm_context.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_lifecycle_golden_parity.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_loop_liveness_on_sync_approval.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_public_exports_baseline.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_recording_client_seam.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_signed_headers_parity.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_types_hook_core.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_verdict_span_hitl_core.py +0 -0
- {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_version_static.py +0 -0
|
Binary file
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
- Resume approved tools and operation hooks in place, preserving their activity IDs
|
|
6
|
+
and graph state instead of replaying the entire graph from its original input.
|
|
7
|
+
- Handle repeated approval requests through invocation and streaming entry points.
|
|
8
|
+
Share each decision between sync and async callbacks for the same evaluation.
|
|
9
|
+
- Cancel pending sync-tool waits when their turn ends, preventing a late approval
|
|
10
|
+
from executing an abandoned tool. Fail closed for sync waits on the event loop.
|
|
11
|
+
|
|
3
12
|
## 1.1.0
|
|
4
13
|
|
|
5
14
|
- Upgrade `openbox-sdk-python` to `>=1.4.0` for IAM v3 workload identity. Keep
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: openbox-langgraph-sdk-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: OpenBox governance and observability SDK for LangGraph
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -373,7 +373,17 @@ governed = create_openbox_graph_handler(
|
|
|
373
373
|
)
|
|
374
374
|
```
|
|
375
375
|
|
|
376
|
-
The human approves or rejects from the OpenBox dashboard.
|
|
376
|
+
The human approves or rejects from the OpenBox dashboard. Approval resumes the
|
|
377
|
+
pending tool or hook operation with the same activity ID and graph state. Completed
|
|
378
|
+
nodes and earlier tool side effects are not replayed. Later approval requests wait
|
|
379
|
+
independently, including through `astream_governed` and `astream_events`. Rejection
|
|
380
|
+
raises `ApprovalRejectedError`; expiration raises `ApprovalExpiredError`.
|
|
381
|
+
|
|
382
|
+
Async operations await the decision without blocking the event loop. Synchronous
|
|
383
|
+
tools wait in their executor thread. A synchronous operation called directly on the
|
|
384
|
+
event-loop thread cannot safely suspend its stack, so pending approval raises
|
|
385
|
+
`OpenBoxConfigError`; use an async operation or `asyncio.to_thread()` in that case.
|
|
386
|
+
Cancelling the governed turn also stops pending approval waits.
|
|
377
387
|
|
|
378
388
|
| Key | Type | Default | Description |
|
|
379
389
|
|---|---|---|---|
|
|
@@ -331,7 +331,17 @@ governed = create_openbox_graph_handler(
|
|
|
331
331
|
)
|
|
332
332
|
```
|
|
333
333
|
|
|
334
|
-
The human approves or rejects from the OpenBox dashboard.
|
|
334
|
+
The human approves or rejects from the OpenBox dashboard. Approval resumes the
|
|
335
|
+
pending tool or hook operation with the same activity ID and graph state. Completed
|
|
336
|
+
nodes and earlier tool side effects are not replayed. Later approval requests wait
|
|
337
|
+
independently, including through `astream_governed` and `astream_events`. Rejection
|
|
338
|
+
raises `ApprovalRejectedError`; expiration raises `ApprovalExpiredError`.
|
|
339
|
+
|
|
340
|
+
Async operations await the decision without blocking the event loop. Synchronous
|
|
341
|
+
tools wait in their executor thread. A synchronous operation called directly on the
|
|
342
|
+
event-loop thread cannot safely suspend its stack, so pending approval raises
|
|
343
|
+
`OpenBoxConfigError`; use an async operation or `asyncio.to_thread()` in that case.
|
|
344
|
+
Cancelling the governed turn also stops pending approval waits.
|
|
335
345
|
|
|
336
346
|
| Key | Type | Default | Description |
|
|
337
347
|
|---|---|---|---|
|