Metadata-Version: 2.4
Name: fs2aun-proxy
Version: 0.1.0
Summary: Bridge Feishu bot messages to AUN agents.
Project-URL: Homepage, https://example.invalid/fs2aun-proxy
Project-URL: Repository, https://example.invalid/fs2aun-proxy
Author: fs2aun-proxy contributors
License: Proprietary
Keywords: aun,bot,feishu,proxy
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Framework :: FastAPI
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Communications :: Chat
Requires-Python: >=3.12
Requires-Dist: cryptography>=42.0
Requires-Dist: fastapi>=0.115
Requires-Dist: filelock>=3.14
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.7
Requires-Dist: qrcode[pil]>=7.4
Requires-Dist: uvicorn[standard]>=0.30
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.2; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Description-Content-Type: text/markdown

# fs2aun-proxy (Python)

飞书消息通过 AUN 代理转发到目标 AID 的单进程代理服务。

## 安装

```bash
python -m venv .venv && . .venv/bin/activate
python -m pip install -e ".[dev]"
```

## 测试 / 检查

```bash
python -m pytest -q
python -m ruff check .
python -m mypy
```

## 运行

```bash
fs2aun-proxy serve -c config.toml
fs2aun-proxy fs-user create -c config.toml  # 扫码创建/授权飞书机器人并写回 [feishu] app_id/app_secret
fs2aun-proxy aid create newbot.agentid.pub -c config.toml  # 创建本地 AUN AID 身份，不自动切换 [aun] aid
fs2aun-proxy bind create -c config.toml alice.agent
fs2aun-proxy bind create -c config.toml          # 省略 AID 时使用 [aun] default_aid_dst
fs2aun-proxy bind list -c config.toml
fs2aun-proxy bind remove -c config.toml ou_x alice.agent
curl -H "Authorization: Bearer $FS2AUN_ADMIN_TOKEN" http://127.0.0.1:8286/binds
```

## 配置

见 `config.example.toml`。敏感项（admin.token、bind.token_secret、bind.session_secret、feishu.app_secret、aun.encryption_seed）须 >= 32 字节，可用 `FS2AUN_*` 环境变量覆盖。

## 架构

单进程服务，包含以下模块：

- **config** — TOML 配置加载与校验
- **models** — Pydantic 数据模型（AunMessage、Binding 等）
- **storage** — 原子性 JSON 文件存储（带 FileLock）
- **dedup** — 持久化 / 内存 TTL 去重
- **router** — 绑定表、关联 ID、反向路由（asyncio.Lock 保护）
- **ack** — 待发送表与 ACK 状态机
- **feishu** — 飞书 REST 发送、OAuth 解析、Webhook 安全校验
- **aun** — AUN 网关 WebSocket 客户端
- **bind** — 绑定 Token、所有权授权、Challenge 存储
- **oauth** — OAuth Session AES-GCM 加密 Cookie
- **service** — 代理核心逻辑（飞书→AUN、AUN→飞书）
- **http_app** — FastAPI 应用（Webhook、OAuth 回调、管理 API）
- **cli** — 命令行入口（serve / webserve / fs-user create / aid create / bind create|list|remove）
