Metadata-Version: 2.5
Name: licos-platform-cli
Version: 0.6.1
Summary: LICOS platform CLI
Requires-Python: >=3.10
Requires-Dist: licos-platform-sdk>=0.7.1
Description-Content-Type: text/markdown

# licos-platform-cli

LICOS 平台命令行工具。`licos-platform help` 返回结构化 JSON 帮助。

## 当前使用者（0.5.1 起）

```bash
licos-platform user me
licos-platform user me --workspace-id <执行工作空间ID>
licos-platform help user me
```

用户接口默认使用 `LICOS_CURRENT_USER_ID` 指定的容器执行用户换取 Token。它不代表网页登录者。平台地址、服务凭证和项目工作空间沿用运行时配置。
多用户请求可将当前使用者 Token 通过标准输入传入，不将 Token 放在命令行参数中：

```bash
licos-platform user me --token-stdin
```

输入不含 `Bearer ` 前缀的 Token 并结束标准输入。程序调用时可通过子进程的 `input` 参数传入。

输出为与低代码 `sys_user` 相同的 JSON：用户 ID、账号、姓名、头像、执行企业、
主部门、全部所属部门、组织任职、主岗位和主职务。部门含名称路径、ID 路径；
无部门/任职时保持 `[]`/`null`。缺少当前使用者身份或 Token 失效时返回非零退出码，
不改用项目所有者。Token 和内部服务凭证不回显。


## 身份选择（0.6.0 起）

`LICOS_CURRENT_USER_ID` 表示容器启动时配置的执行用户，项目身份指运行时配置的项目所有者身份。不同命令的默认身份如下：

| 命令 | 默认身份 | 网页登录用户执行 |
| --- | --- | --- |
| `user me` | 按 `LICOS_CURRENT_USER_ID` 换 Token | 使用 `--token-stdin` |
| `knowledge enterprise …` | 按 `LICOS_CURRENT_USER_ID` 换 Token | 使用 `--token-stdin`，企业范围和权限由平台认证结果确定 |
| `ontology search`、`ontology invoke` | 按 `LICOS_CURRENT_USER_ID` 换 Token | 使用 `--token-stdin` |
| 普通 `knowledge …` | 项目身份 | 需要用户权限时使用 `--token-stdin` |
| 数据库、对象存储、OAuth 应用管理 | 项目身份 | 保持项目身份 |

用户操作未传 `--token-stdin` 时，用 `LICOS_CURRENT_USER_ID` 和运行时服务凭证换 Token；缺少执行用户配置则报错。`--token-stdin` 优先使用标准输入的 Token，空输入直接报错，不再换取其他身份。

HTTP 服务调用用户接口时，必须从本次认证会话取得 Token，并写入该子进程的标准输入；缺少 Token 时在业务入口返回登录错误。不能依赖容器默认用户，也不能把请求 Token 或用户 ID 写入共享环境变量。例如在 Python 服务中：

```python
import subprocess

# token 来自本次请求的认证会话，不含 "Bearer " 前缀。
result = subprocess.run(
    ["licos-platform", "user", "me", "--token-stdin"],
    input=token,
    text=True,
    capture_output=True,
    check=True,
)
```

显式传入的 Token 鉴权失败时返回非零退出码，由调用方更新登录凭证，不切换到容器用户或项目所有者。项目所有者和工作空间等资源归属字段单独保留，不用它们冒充调用用户。
