Metadata-Version: 2.5
Name: traceguard-pro
Version: 0.4.0
Summary: TraceGuard Pro — payload inspection, budgets, approvals and Ed25519 offline licensing
Project-URL: Homepage, https://github.com/ve-loma/traceguard
Project-URL: Docs, https://ve-loma.github.io/traceguard/
Author: TraceGuard Contributors
License: LicenseRef-TraceGuard-Pro-Commercial
Keywords: agent,ai,enterprise,guardrails,security
Requires-Python: >=3.11
Requires-Dist: ai-traceguard>=0.1.0
Requires-Dist: cryptography>=42.0
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# TraceGuard Pro

[TraceGuard](https://github.com/ve-loma/traceguard) 的**商业增值层** —— 面向生产环境的
AI Agent 运行时护栏。

开源核心（MIT）按「工具名 + 静态风险」做判断。TraceGuard Pro 补上受监管团队和生产环境
**真正会付费**的确定性能力——全部在进程内运行，**无网络、无模型调用**。

| 能力 | 做什么 | 版本 |
|---|---|---|
| **参数级敏感信息扫描** | 拦截参数里含密钥 / PII 的调用（`api_key`、`password`、`private_key`…） | Pro |
| **死循环拦截** | 同一个工具 + 参数被反复重试时阻断 | Pro |
| **Token 预算** | 单次会话超过 Token 上限时阻断 | Pro |
| **审计导出** | 把 SHA-256 审计链导出为可独立复核的 JSONL | Pro |
| **行业策略包** | 金融 / 医疗 / DevOps 的敏感词 + 预算预设 | Pro |
| **人工审批流** | MEDIUM 风险改为要求人工审批，而不是静默放行 | Team |
| **席位报表** | 按操作者聚合的审计视图 | Team |
| **签名导出 / 自定义包 / SLA** | — | Enterprise |

## 安全设计

- **绝不发起网络请求。** 授权码是 **Ed25519 非对称签名**，本地用**公钥**验签。
- **源码公开也伪造不出授权码。** 客户端只含公钥；只有卖家的私钥能签出有效码。
- **机器绑定（可选）。** 一份授权可锁定到某一台机器。
- **完整性自检（可选）。** 检测包文件是否被改动。
- **拦截路径无模型调用。** 判断是确定性代码。

## 安装

```bash
pip install ai-traceguard traceguard-pro
```

## 激活与查看状态

```bash
traceguard-pro machine-id      # 打印本机机器码（机器绑定用）
traceguard-pro activate TGP1....   # 激活
traceguard-pro status          # 查看授权状态
traceguard-pro report audit.db # 导出可校验的审计 JSONL
```

## 使用

```python
from traceguard_pro import ProGuard

guard = ProGuard(
    policy="policies/base.yaml",
    pro_policy="policies-pro/pro.yaml",
    license_key="TGP1....",     # 离线授权码
    mode="strict",
)

result = guard.check("send_email", {"body": "my password=hunter2"})
if not result.allowed:
    raise PermissionError(result.reason)   # 被 payload_scan 拦下
```

未持有效授权码时，`ProGuard` **优雅降级为开源核心行为**，方便先试后买。

## 签发授权码（卖家专用）

私钥是 Ed25519，**只存在卖家侧**（本地文件 / 私有仓库 Secret），绝不进客户端。

```bash
# 本地
python tools/issue_license.py --plan pro --seats 1 --days 365
python tools/issue_license.py --plan team --seats 10 --machine 26e28ebdd786310b
python tools/issue_license.py --plan enterprise --seats 25 --perpetual

# 或在 GitHub 网页 / 手机 App：Actions → Issue TraceGuard Pro License → Run workflow
```

- 私钥来源：`--key-file` 或环境变量 `TRACEGUARD_PRO_PRIVATE_KEY`（base64 或 PEM）。
- 打包加固（可选）：见 [`docs/packaging-locked.md`](docs/packaging-locked.md)。
- 完整性清单：`python tools/freeze_manifest.py`
