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.
Files changed (139) hide show
  1. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.coverage +0 -0
  2. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/CHANGELOG.md +9 -0
  3. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/PKG-INFO +12 -2
  4. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/README.md +11 -1
  5. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/coverage.xml +642 -552
  6. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/uv.lock +1 -1
  7. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/__init__.py +1 -1
  8. openbox_langgraph_sdk_python-1.2.0/openbox_langgraph/activity_approval.py +156 -0
  9. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/client.py +1 -1
  10. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/core_adapter.py +27 -75
  11. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/core_runtime.py +1 -1
  12. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/langgraph_handler.py +20 -147
  13. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/pyproject.toml +1 -1
  14. openbox_langgraph_sdk_python-1.2.0/tests/test_activity_approval_waiter.py +98 -0
  15. openbox_langgraph_sdk_python-1.2.0/tests/test_approval_in_place.py +196 -0
  16. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_context_cleanup_on_error.py +13 -20
  17. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_hook_approval_retry.py +27 -83
  18. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_langchain_callback_tool_ordering.py +20 -46
  19. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_workload_identity.py +1 -1
  20. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/uv.lock +1 -1
  21. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/CODEOWNERS +0 -0
  22. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/pr-governance.yml +0 -0
  23. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/pr-quality.yml +0 -0
  24. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/pr-security.yml +0 -0
  25. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.github/workflows/publish.yml +0 -0
  26. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.gitignore +0 -0
  27. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/.gitleaks.toml +0 -0
  28. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/AGENTS.md +0 -0
  29. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/CLAUDE.md +0 -0
  30. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/CODE_OF_CONDUCT.md +0 -0
  31. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/LICENSE +0 -0
  32. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/SECURITY.md +0 -0
  33. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/.env.example +0 -0
  34. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/.gitignore +0 -0
  35. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/AGENTS.md +0 -0
  36. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/README.md +0 -0
  37. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/demo/demo_04_content_builder_langgraph/pyproject.toml +0 -0
  38. {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
  39. {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
  40. {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
  41. {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
  42. {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
  43. {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
  44. {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
  45. {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
  46. {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
  47. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/code-standards.md +0 -0
  48. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/codebase-summary.md +0 -0
  49. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/project-overview-pdr.md +0 -0
  50. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/project-roadmap.md +0 -0
  51. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/docs/system-architecture.md +0 -0
  52. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/activity_context_binding.py +0 -0
  53. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/config.py +0 -0
  54. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/core_events.py +0 -0
  55. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/errors.py +0 -0
  56. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/hitl.py +0 -0
  57. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/identity.py +0 -0
  58. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/langgraph_hook_runtime.py +0 -0
  59. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/otel_setup.py +0 -0
  60. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/span_processor.py +0 -0
  61. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/tool_activity_binding.py +0 -0
  62. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/trace_context_registry.py +0 -0
  63. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/tracing.py +0 -0
  64. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/types.py +0 -0
  65. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/openbox_langgraph/verdict_handler.py +0 -0
  66. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/sonar-project.properties +0 -0
  67. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/conftest.py +0 -0
  68. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/README.md +0 -0
  69. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/__init__.py +0 -0
  70. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/capture_harness.py +0 -0
  71. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/chain_completed.normalized.json +0 -0
  72. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/chain_completed.raw.json +0 -0
  73. {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
  74. {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
  75. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/fake_agent_graphs.py +0 -0
  76. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/generate_fixtures.py +0 -0
  77. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/graph_capture_harness.py +0 -0
  78. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_signed.normalized.json +0 -0
  79. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_signed.raw.json +0 -0
  80. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_unsigned.normalized.json +0 -0
  81. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/headers_unsigned.raw.json +0 -0
  82. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/id_normalization.py +0 -0
  83. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/layer1_handbuilt_pins.py +0 -0
  84. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_completed.normalized.json +0 -0
  85. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_completed.raw.json +0 -0
  86. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_started.normalized.json +0 -0
  87. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/llm_started.raw.json +0 -0
  88. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/ordering_single_llm_turn.json +0 -0
  89. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/ordering_tool_call_turn.json +0 -0
  90. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/ordering_two_llm_calls_turn.json +0 -0
  91. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/real_emitted_event_fixtures.py +0 -0
  92. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/signal_received.normalized.json +0 -0
  93. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/signal_received.raw.json +0 -0
  94. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_completed.normalized.json +0 -0
  95. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_completed.raw.json +0 -0
  96. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_started.normalized.json +0 -0
  97. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/subagent_tool_started.raw.json +0 -0
  98. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_completed.normalized.json +0 -0
  99. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_completed.raw.json +0 -0
  100. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_started.normalized.json +0 -0
  101. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/tool_started.raw.json +0 -0
  102. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_completed_error_close.normalized.json +0 -0
  103. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_completed_error_close.raw.json +0 -0
  104. {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
  105. {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
  106. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_started.normalized.json +0 -0
  107. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/golden/workflow_started.raw.json +0 -0
  108. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_activity_context_binding.py +0 -0
  109. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_agent_identity.py +0 -0
  110. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_approval_strict_parsing.py +0 -0
  111. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_client_shim_compat.py +0 -0
  112. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_config_client_core.py +0 -0
  113. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_config_resolution_precedence.py +0 -0
  114. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_context_fallback_task_and_thread.py +0 -0
  115. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_context_turn_isolation.py +0 -0
  116. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_contextvars_propagation.py +0 -0
  117. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_conformance_suite.py +0 -0
  118. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_context_binding.py +0 -0
  119. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_events_envelopes.py +0 -0
  120. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_core_runtime_config.py +0 -0
  121. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_did_client_signing.py +0 -0
  122. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_fail_open_block_preserved.py +0 -0
  123. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_framework_adapter_translation.py +0 -0
  124. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_gate_error_translation.py +0 -0
  125. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_golden_baseline.py +0 -0
  126. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_governance_changes.py +0 -0
  127. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_halt_run_isolation.py +0 -0
  128. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_hook_context_pinning.py +0 -0
  129. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_hook_family_exclusivity.py +0 -0
  130. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_langchain_callback_dedup.py +0 -0
  131. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_langchain_callback_llm_context.py +0 -0
  132. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_lifecycle_golden_parity.py +0 -0
  133. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_loop_liveness_on_sync_approval.py +0 -0
  134. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_public_exports_baseline.py +0 -0
  135. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_recording_client_seam.py +0 -0
  136. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_signed_headers_parity.py +0 -0
  137. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_types_hook_core.py +0 -0
  138. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_verdict_span_hitl_core.py +0 -0
  139. {openbox_langgraph_sdk_python-1.1.0 → openbox_langgraph_sdk_python-1.2.0}/tests/test_version_static.py +0 -0
@@ -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.1.0
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. The SDK resumes or raises `ApprovalRejectedError` accordingly.
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. The SDK resumes or raises `ApprovalRejectedError` accordingly.
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
  |---|---|---|---|