Metadata-Version: 2.4
Name: ennew-harness-sdk
Version: 0.1.1
Summary: Ennew Harness 业务上下文与前端消息 Python SDK
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Ennew Harness Python SDK

适用于 Python 3.9 及以上版本，安装包名为 `ennew-harness-sdk`，导入名称为 `ennew_harness`。

从 `0.1.1` 起，导入名称由 `harness` 改为 `ennew_harness`，避免与 Worker 自身的同名包冲突。升级后请同步修改业务脚本中的导入语句；不保留旧名称别名。

```bash
python3 -m pip install --upgrade ennew-harness-sdk
```

本 SDK 依赖 Ennew Harness 运行环境，并非独立运行的公共网关客户端。运行时必须提供 `CODEX_THREAD_ID`；读取上下文还需设置 `ENV`，并能访问对应业务网关。发送前端消息需要本机 Worker 服务。

安装到运行业务脚本的 Python 环境后，可直接使用：

```python
from ennew_harness import context, gui

current = context.get_current_context()
gui.send("file_changed", {"file": "report.md"})
```

两个方法都从运行时的 `CODEX_THREAD_ID` 获取当前线程身份。`gui.send` 要求传入非空的 `type` 和字典 `payload`，把 `type` 同时写入 `params.type` 与 `params.message` 中的业务 JSON，经 Worker 本机 `127.0.0.1:18080/internal/events` 发到当前线程的前端连接。只有线程正在执行且前端连接仍在时才能发送；接口返回成功表示消息已写入 WebSocket，不保证前端已处理。

`context.get_current_context()` 根据运行环境变量 `ENV` 选择 `FAT`、`UAT` 或 `PROD` 的网关配置，只返回允许业务脚本读取的身份与业务字段。三套网关 URL 定义在 `ennew_harness/context.py`，请求不内置 Token。环境名称区分大小写；安装 SDK 不会自动授予业务网关访问权限。

源码仓库中可运行上下文示例脚本：`python3 fat_context.py`。该脚本不随安装包提供。
