1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! # adk-computer-use
//!
//! First-party ADK-Rust orchestration and wire contracts for the
//! [`computer-use-mcp`](https://github.com/zavora-ai/computer-use-mcp)
//! desktop-automation server.
//!
//! This crate **does not** perform desktop actuation. Desktop policy, target
//! validation, lease ownership, physical-user interruption, and idempotent
//! effects remain authoritative in `computer-use-mcp`. Instead, this crate
//! supplies the governed ADK-side layer that drives that server safely:
//!
//! - **Wire contracts** ([`contracts`]) — camelCase wire types with disclosure-safe
//! validation (digest-only postconditions, value-free sensitivity evidence,
//! bounded approval scopes).
//! - **Authorization** ([`ScopeAuthorizer`], [`ComputerUseAuthContext`]) — a coarse
//! `computer:*` scope gate bound to an [`adk_auth`]-verified identity that
//! model or graph state cannot forge.
//! - **Deterministic workflow** ([`build_reference_graph`]) — an [`adk_graph`]
//! graph that fans observation out in parallel, previews before mutation,
//! interrupts for digest-bound approval, executes exactly once, and verifies
//! the receipt.
//! - **Runtime boundary** ([`ComputerUseRuntime`]) — the trait the graph drives,
//! with a live MCP adapter ([`ComputerUseMcpRuntime`]) or an in-process fake.
//! - **Cancellation** ([`CancellationBridge`]) — revokes desktop authority
//! before stopping ADK reasoning.
//! - **Release evaluation** ([`ComputerUseEvaluator`], [`AdkEvaluationReceipt`]) —
//! deterministic trajectory scoring and a tamper-evident evidence receipt.
//!
//! ## Quick start
//!
//! The graph is driven through the [`ComputerUseRuntime`] trait, so it can run
//! against an in-process implementation with no external server. See the
//! `minimal_graph` example for a complete, runnable version:
//!
//! ```no_run
//! use std::sync::Arc;
//! use adk_computer_use::{build_reference_graph, ScopeAuthorizer};
//! # use adk_computer_use::ComputerUseRuntime;
//! # fn build(runtime: Arc<dyn ComputerUseRuntime>) -> Result<(), adk_graph::GraphError> {
//! let authorizer = Arc::new(ScopeAuthorizer::new(["computer:plan", "computer:execute:background"]));
//! let graph = build_reference_graph(runtime, authorizer)?;
//! # let _ = graph;
//! # Ok(())
//! # }
//! ```
//!
//! To drive a real desktop, back the graph with [`ComputerUseMcpRuntime`] and a
//! running `computer-use-mcp` server (see the macOS examples).
/// Runtime adapters and response binding.
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
// Wire contracts are re-exported at the crate root for ergonomic access.
pub use ;