az-aio-client 2026.5.10

AIO Desktop 后端 HTTP 客户端:Shell 组件注册表与桌面状态 API 的同步调用封装
Documentation
# az-aio-client

AIO Desktop 后端 HTTP 客户端,提供对 Shell 组件注册表和桌面状态 API 的同步调用封装。

## 功能

- 类型安全的 AIO Desktop REST API 客户端,基于 `reqwest::blocking`
- 可选的桌面会话令牌认证(`x-aio-desktop-token` header)
- 完整的 Shell 组件管理接口:列表、获取、插入/更新(upsert)、局部修补(patch)、移除、配置保存、构建
- 桌面后端状态查询(`/api/desktop/status`- 统一的 `AioClientError` 错误类型,区分传输层错误与 HTTP 状态错误

## 安装

在 `Cargo.toml` 中添加:

```toml
[dependencies]
az-aio-client = { path = "../az-aio-client" }        # workspace 内部引用
# 或发布后:
# az-aio-client = "0.1"                               # crates.io 引用
```

## 用法

```rust
use az_aio_client::AioClient;

// 创建客户端(无需认证令牌)
let client = AioClient::new("http://localhost:9120");

// 或携带桌面会话令牌
let client = AioClient::with_desktop_token(
    "http://localhost:9120",
    "your-desktop-session-token",
);

// 查询桌面后端状态
let status = client.desktop_status()?;
println!("Desktop OK: {}", status.ok);

// 列出所有 Shell 组件
let registry = client.list_shell_components()?;
println!("共 {} 个组件", registry.components.len());

// 获取单个组件
if let Some(component) = client.get_shell_component("my-alias")? {
    println!("组件预览: {}", component.preview);
}
```

## 依赖的 crates

- `az-config-center-contract` — Shell 组件的共享数据类型
- `reqwest` — HTTP 客户端(阻塞模式)
- `serde` / `serde_json` — JSON 序列化与反序列化
- `thiserror` — 错误类型派生
- `urlencoding` — URL 路径编码(组件名称可能含特殊字符)