superun-ai-cli 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.md +5 -5
- package/README.en.md +22 -5
- package/README.md +26 -9
- package/dist/api/integration-api.d.ts +3 -1
- package/dist/api/integration-api.js +40 -2
- package/dist/api/integration-api.js.map +1 -1
- package/dist/api/plugin-api.d.ts +5 -2
- package/dist/api/plugin-api.js +59 -3
- package/dist/api/plugin-api.js.map +1 -1
- package/dist/auth/browser-login.js +2 -2
- package/dist/commands/auth/login.js +1 -1
- package/dist/commands/chat/plugin.js +11 -6
- package/dist/commands/chat/plugin.js.map +1 -1
- package/dist/conversation/managed-agent-entry.js +3 -3
- package/dist/conversation/next-actions.js +12 -4
- package/dist/conversation/next-actions.js.map +1 -1
- package/dist/conversation/state-resolver.js +1 -1
- package/dist/interactions/handlers/reply-plugin.js +29 -3
- package/dist/interactions/handlers/reply-plugin.js.map +1 -1
- package/dist/interactions/handlers/reply-secret.js +3 -0
- package/dist/interactions/handlers/reply-secret.js.map +1 -1
- package/dist/interactions/managed-agent-model.js +1 -1
- package/dist/interactions/parsers/plugin-action.js +45 -4
- package/dist/interactions/parsers/plugin-action.js.map +1 -1
- package/dist/interactions/parsers/secret-input.js +5 -2
- package/dist/interactions/parsers/secret-input.js.map +1 -1
- package/dist/interactions/plugin-config.d.ts +9 -0
- package/dist/interactions/plugin-config.js +102 -0
- package/dist/interactions/plugin-config.js.map +1 -0
- package/dist/interactions/registry.js +1 -1
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +73 -4
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/INSTALL.md
CHANGED
|
@@ -31,7 +31,7 @@ WorkBuddy 等工具可能使用自带 Node/npm,与普通终端的安装位置
|
|
|
31
31
|
首次安装、版本查询及旧版升级统一使用以下方式;由安装助手准备并执行,不要求用户读取凭证或修改自己的 npm 配置:
|
|
32
32
|
|
|
33
33
|
- 按当前 Node 和 PATH 定位 npm 可执行文件,解析符号链接得到 `npm-cli.js`,通过当前 Node 直接启动它;不读取 `.npmrc` 来定位 npm,也不执行 `npm config list/get`。
|
|
34
|
-
- 为 npm 子进程新建环境,只传系统运行所需的 PATH、HOME、临时目录、Windows 系统目录、语言,以及代理、CA/证书、缓存配置。不要复制整个环境后仅删除几个已知 Token 名;不传 npm Token、
|
|
34
|
+
- 为 npm 子进程新建环境,只传系统运行所需的 PATH、HOME、临时目录、Windows 系统目录、语言,以及代理、CA/证书、缓存配置。不要复制整个环境后仅删除几个已知 Token 名;不传 npm Token、superun PAT、其他业务凭证和 `NODE_OPTIONS`。主进程中的 superun 登录配置保持不变。
|
|
35
35
|
- 在子进程中固定 `npm_config_userconfig = os.devNull`、`npm_config_globalconfig = path.join(os.devNull, 'superun-empty-npmrc')`、`npm_config_global = 'true'`、`npm_config_registry = 'https://registry.npmjs.org/'`,不继承其他 npm 配置。两份空配置使用不同路径;全局模式跳过项目 `.npmrc`。跨平台路径由 Node 的 `node:os`、`node:path` 计算。
|
|
36
36
|
- 使用下列命令参数安装公开包,并关闭安装脚本、审计与捐助提示。捕获 npm 输出,只报告安装结果、版本或错误码,不把 npm 原始日志发给模型,也不通过打印环境变量排查认证。
|
|
37
37
|
- 旧版在启动更新前被拦截时,不反复执行旧版业务命令;在同一 Node 环境按上述方式安装新版,再验证 `superun-ai version`。安装来源、权限或网络问题应如实报告,不要求用户关闭宿主的敏感信息保护。
|
|
@@ -48,9 +48,9 @@ npm install -g superun-ai-cli --registry=https://registry.npmjs.org --ignore-scr
|
|
|
48
48
|
npm view superun-ai-cli name version dist-tags --registry=https://registry.npmjs.org --json
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
- 安装成功后继续验证命令,再引导用户登录
|
|
51
|
+
- 安装成功后继续验证命令,再引导用户登录 superun。
|
|
52
52
|
- 如果返回 `E404`、网络、证书、权限或其他错误,如实说明并检查 npm 官方 Registry 的访问情况,不自动切换包名、镜像源或源码安装方式。
|
|
53
|
-
- 更新现有安装时,保留用户的
|
|
53
|
+
- 更新现有安装时,保留用户的 superun 凭据;不要求重新导入 PAT。
|
|
54
54
|
- 公开包安装、版本查询及旧入口修复均由安装助手在当前执行环境完成。使用当前 Node 启动对应 npm,以空用户/全局配置执行,禁止读取用户 npmrc 或继承 npm 登录 Token;保留必要的代理和证书环境变量。不要把 npm 凭证授权、环境切换或升级命令转交给用户,也不要关闭宿主的权限保护。
|
|
55
55
|
|
|
56
56
|
### 可选:用户明确要求从源码安装
|
|
@@ -86,7 +86,7 @@ superun-ai version
|
|
|
86
86
|
|
|
87
87
|
确认命令可以启动。若提示找不到命令,检查当前终端的 `PATH`、所用 Node.js 安装及 npm 全局目录;不要把它误判为业务登录失败。不要通过全量打印环境变量来排查,避免泄露凭据。
|
|
88
88
|
|
|
89
|
-
业务命令会先检查 npm `latest`,在独立目录安装并验证新版,切换默认执行入口后继续;原 npm 安装作为启动入口保留,普通终端和工具自带环境各自维护版本。业务执行不清理旧版本或失败安装目录,不通过原地全局更新触发旧包批量删除。版本查询或更新失败时停止业务,不回退旧版继续请求。公开包更新不需要 npm 登录 Token,不让模型读取 npm 凭证明文。版本校验失败时先处理 Registry 访问或安装错误,不清除
|
|
89
|
+
业务命令会先检查 npm `latest`,在独立目录安装并验证新版,切换默认执行入口后继续;原 npm 安装作为启动入口保留,普通终端和工具自带环境各自维护版本。业务执行不清理旧版本或失败安装目录,不通过原地全局更新触发旧包批量删除。版本查询或更新失败时停止业务,不回退旧版继续请求。公开包更新不需要 npm 登录 Token,不让模型读取 npm 凭证明文。版本校验失败时先处理 Registry 访问或安装错误,不清除 superun 凭据。旧入口如在加载新版之前就失败,由安装助手在同一环境完成一次升级并验证,再继续用户任务,不要求用户自行查路径或敲命令;宿主要求权限时仍按实际授权流程处理。
|
|
90
90
|
|
|
91
91
|
## 4. 引导用户登录
|
|
92
92
|
|
|
@@ -104,7 +104,7 @@ superun-ai auth status
|
|
|
104
104
|
superun-ai auth login
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
CLI 会打开
|
|
107
|
+
CLI 会打开 superun 登录页面,完成后领取 PAT 并保存到本地。浏览器未自动打开时,把 CLI 打印的登录地址提供给用户。保持登录命令运行,等它返回成功;不要另起重复登录流程。等待期间告诉用户需要完成网页登录,超时或取消时如实说明。
|
|
108
108
|
|
|
109
109
|
如果用户明确要导入已有 PAT,请让用户在自己的交互式终端执行:
|
|
110
110
|
|
package/README.en.md
CHANGED
|
@@ -15,7 +15,7 @@ Requires Node.js 22 or newer and npm.
|
|
|
15
15
|
Send the following prompt to Claude Code, Codex, or another AI coding agent. The agent will follow the [installation guide](INSTALL.md) to check your environment, install the CLI, and guide you through login and verification:
|
|
16
16
|
|
|
17
17
|
```text
|
|
18
|
-
Read https://raw.githubusercontent.com/AiGuangInc/superun-ai-cli/refs/heads/main/INSTALL.md and help me install and configure superun-ai-cli. Install from npm. Let me complete
|
|
18
|
+
Read https://raw.githubusercontent.com/AiGuangInc/superun-ai-cli/refs/heads/main/INSTALL.md and help me install and configure superun-ai-cli. Install from npm. Let me complete superun login in my browser; do not request or display my PAT in plain text.
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
If the agent already has this repository open, ask it to read `INSTALL.md` in the repository root.
|
|
@@ -26,7 +26,7 @@ If the agent already has this repository open, ask it to read `INSTALL.md` in th
|
|
|
26
26
|
npm install -g superun-ai-cli --registry=https://registry.npmjs.org
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
`-g` installs the package globally. Once the global command directory is on your `PATH`, you can run `superun-ai` from any directory. Installing this public package does not require an npm publishing account; sign in to
|
|
29
|
+
`-g` installs the package globally. Once the global command directory is on your `PATH`, you can run `superun-ai` from any directory. Installing this public package does not require an npm publishing account; sign in to superun after installation.
|
|
30
30
|
|
|
31
31
|
The package name is `superun-ai-cli`; the shell command is `superun-ai`.
|
|
32
32
|
|
|
@@ -124,7 +124,7 @@ superun-ai auth status
|
|
|
124
124
|
superun-ai auth logout
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
`auth login` reuses an existing PAT. If none is configured, it opens the system default browser for
|
|
127
|
+
`auth login` reuses an existing PAT. If none is configured, it opens the system default browser for superun login and saves the resulting PAT locally. Business commands without a PAT use the same login flow, including commands run from an agent's non-TTY shell, then resume the original operation without requiring a separate `auth login` command. `auth status` only checks existing configuration and does not open a browser.
|
|
128
128
|
|
|
129
129
|
Browser login waits for up to five minutes. Press Ctrl+C to cancel. If the browser does not open automatically, use the URL printed in the terminal. The website login token is only used to obtain a PAT and is not stored locally.
|
|
130
130
|
|
|
@@ -176,7 +176,7 @@ While `chat wait` or a write command is waiting, progress from every polling ite
|
|
|
176
176
|
|
|
177
177
|
Overall completion retains the existing session, message, interaction, and background-work rules. `taskProgress` is display-only: a completed item or changed card does not end the wait, and item counts do not determine overall completion. Existing early style-preview notifications, local timeouts, and user-input behavior remain unchanged. Pass `--progress-revision` with the previous revision to compute `changed`; it does not suppress progress output on subsequent queries, and `chat state` and `chat style list` also accept this option.
|
|
178
178
|
|
|
179
|
-
The CLI connects to
|
|
179
|
+
The CLI connects to superun by default. Use the global `--endpoint <URL>` option to specify an API endpoint and `--locale <language>` to choose the response language.
|
|
180
180
|
|
|
181
181
|
## Answer questions and create an agent
|
|
182
182
|
|
|
@@ -190,7 +190,7 @@ Creating a managed agent has three setup steps:
|
|
|
190
190
|
|
|
191
191
|
Review the settings and confirm creation once you have finished. You can go back to make changes, skip optional steps, or stop creating the agent. “Quick create” uses the current description without adding knowledge files, a memory store, or optional skills.
|
|
192
192
|
|
|
193
|
-
Upload knowledge files and custom skill packages through the
|
|
193
|
+
Upload knowledge files and custom skill packages through the superun website after creation. Built-in capabilities are currently included with the agent; clearing their checkboxes does not disable them.
|
|
194
194
|
|
|
195
195
|
When using the CLI directly, prepare an answer file following the current question's instructions, then submit it:
|
|
196
196
|
|
|
@@ -210,6 +210,23 @@ If you exit midway, the questions change, or an operation's outcome is unclear,
|
|
|
210
210
|
superun-ai chat state <sessionId>
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
+
## Enable plugins
|
|
214
|
+
|
|
215
|
+
Use `superun-ai chat plugin list <sessionId>` to see the plugins available to your project, then enable one as needed:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
superun-ai chat plugin enable <sessionId> <pluginId>
|
|
219
|
+
superun-ai chat plugin status <sessionId> <pluginId>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Plugins with a platform-managed option, such as speech recognition, do not require your own credentials by default. To use your own account or a plugin that requires credentials, follow the secure-input instructions. Do not paste secrets into ordinary chat. When using the CLI directly, provide a configuration file with `--input ./plugin-config.json`.
|
|
223
|
+
|
|
224
|
+
To start a disabled plugin again, use the same `chat plugin enable` command. In-progress operations continue waiting without a duplicate submission.
|
|
225
|
+
|
|
226
|
+
If an enable request appears in a conversation, answer that request instead of running a second enable command. Keep following its progress while it runs. Restoring a configured plugin will either reuse its settings or ask for credentials as needed.
|
|
227
|
+
|
|
228
|
+
If external authorization or website configuration is needed, follow the instructions before continuing. You can skip plugins you do not need yet.
|
|
229
|
+
|
|
213
230
|
## Automatic testing and code review
|
|
214
231
|
|
|
215
232
|
```bash
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
把下面这段话发给 Claude Code、Codex 或其他 AI 编码 Agent,它会根据[安装指南](INSTALL.md)检查环境、安装 CLI,并引导你完成登录与验证:
|
|
18
18
|
|
|
19
19
|
```text
|
|
20
|
-
请阅读 https://raw.githubusercontent.com/AiGuangInc/superun-ai-cli/refs/heads/main/INSTALL.md,帮我安装并配置 superun-ai-cli。请通过 npm 安装,登录
|
|
20
|
+
请阅读 https://raw.githubusercontent.com/AiGuangInc/superun-ai-cli/refs/heads/main/INSTALL.md,帮我安装并配置 superun-ai-cli。请通过 npm 安装,登录 superun 时让我在浏览器完成操作,不要索取或展示 PAT 明文。
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
如果 Agent 已经打开本仓库,也可以直接让它阅读根目录的 `INSTALL.md`。
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
npm install -g superun-ai-cli --registry=https://registry.npmjs.org
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
`-g` 表示全局安装。全局命令目录在 `PATH` 中时,可以在任意目录使用 `superun-ai`。安装公开包不需要 npm 发布账号;安装后登录的是
|
|
31
|
+
`-g` 表示全局安装。全局命令目录在 `PATH` 中时,可以在任意目录使用 `superun-ai`。安装公开包不需要 npm 发布账号;安装后登录的是 superun 账号。
|
|
32
32
|
|
|
33
33
|
安装包名为 `superun-ai-cli`,使用时的命令名为 `superun-ai`。
|
|
34
34
|
|
|
@@ -77,7 +77,7 @@ superun-ai chat style generate --help
|
|
|
77
77
|
```text
|
|
78
78
|
superun-ai
|
|
79
79
|
├── auth # 管理 PAT 登录
|
|
80
|
-
│ ├── login # 登录
|
|
80
|
+
│ ├── login # 登录 superun 并保存 PAT
|
|
81
81
|
│ ├── status # 查看本地 PAT 配置状态
|
|
82
82
|
│ └── logout # 清除本地 PAT
|
|
83
83
|
├── session # 查询项目
|
|
@@ -126,7 +126,7 @@ superun-ai auth status
|
|
|
126
126
|
superun-ai auth logout
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
已有 PAT 时,`auth login` 直接复用;没有时自动打开系统默认浏览器,完成
|
|
129
|
+
已有 PAT 时,`auth login` 直接复用;没有时自动打开系统默认浏览器,完成 superun 登录后领取 PAT 并保存到本地,无需手动复制。业务命令缺少 PAT 时也会自动进入同一登录流程,包括 Agent 的非 TTY Shell;登录完成后继续执行原命令,无需另行执行 `auth login`。`auth status` 仍只检查已有配置,不打开浏览器。
|
|
130
130
|
|
|
131
131
|
网页登录最多等待 5 分钟,按 Ctrl+C 可取消。浏览器未自动打开时,可以手动打开终端提示的地址。网页登录 Token 只用于申请 PAT,不会保存到本地。
|
|
132
132
|
|
|
@@ -182,7 +182,7 @@ superun-ai chat stop <sessionId>
|
|
|
182
182
|
|
|
183
183
|
整体结束判断沿用原有会话、消息、交互和后台工作状态逻辑,`taskProgress` 仅用于展示;单项完成或进度卡更新不会结束等待,也不以进度条目数量推断整轮完成。原有单个风格方案就绪提示、本地等待超时及用户问答行为保持不变。`--progress-revision` 可传入上次版本用于计算 `changed`,但不抑制每次查询的进度输出;`chat state` 与 `chat style list` 同样支持该参数。
|
|
184
184
|
|
|
185
|
-
默认连接
|
|
185
|
+
默认连接 superun 服务。全局参数 `--endpoint <URL>` 可指定 API 地址,`--locale <language>` 可指定响应语言。
|
|
186
186
|
|
|
187
187
|
## 回答问题与创建智能体
|
|
188
188
|
|
|
@@ -196,7 +196,7 @@ superun-ai chat stop <sessionId>
|
|
|
196
196
|
|
|
197
197
|
完成配置后,核对信息并确认创建。需要调整时可以返回修改,也可以跳过可选步骤或终止创建。选择“快速创建”会直接按当前设定创建,不配置知识文件、记忆库和可选技能。
|
|
198
198
|
|
|
199
|
-
知识文件和自定义技能包请在创建后到
|
|
199
|
+
知识文件和自定义技能包请在创建后到 superun 网页端上传。当前内置能力随智能体提供,取消勾选不等于禁用对应能力。
|
|
200
200
|
|
|
201
201
|
直接使用 CLI 时,按当前问题的提示准备答案文件,再提交:
|
|
202
202
|
|
|
@@ -216,9 +216,26 @@ superun-ai chat interaction skip <sessionId> <interactionId>
|
|
|
216
216
|
superun-ai chat state <sessionId>
|
|
217
217
|
```
|
|
218
218
|
|
|
219
|
+
## 启用插件
|
|
220
|
+
|
|
221
|
+
使用 `superun-ai chat plugin list <sessionId>` 查看项目可用插件,再按需启用:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
superun-ai chat plugin enable <sessionId> <pluginId>
|
|
225
|
+
superun-ai chat plugin status <sessionId> <pluginId>
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
语音识别等支持平台托管的插件默认无需自备密钥。使用自有账号,或启用需要凭据的插件时,请按提示通过安全输入提供配置,不要把密钥发到普通聊天里。直接使用 CLI 时,可通过 `--input ./plugin-config.json` 提交配置文件。
|
|
229
|
+
|
|
230
|
+
停用后需要再次启动时,仍使用同一条 `chat plugin enable` 命令。操作进行中会继续等待,无需重复提交。
|
|
231
|
+
|
|
232
|
+
如果插件是在对话中请求启用的,直接回答那条启用或配置提示;不必再执行一次独立启用命令。启用过程中继续查看进度即可。已有配置的插件恢复时会按提示复用配置或要求补充凭据。
|
|
233
|
+
|
|
234
|
+
需要外部平台授权或到网页修改配置时,按提示完成后再继续。暂时不需要的插件可以选择跳过。
|
|
235
|
+
|
|
219
236
|
## 自动测试
|
|
220
237
|
|
|
221
|
-
自动测试验证指定
|
|
238
|
+
自动测试验证指定 superun 项目中的已有功能。发现确认的产品问题后,先在对话中告知,再自动修复并汇报。每次聚焦一个具体流程;测试环境异常、疑似问题和未覆盖范围会如实说明。
|
|
222
239
|
|
|
223
240
|
```bash
|
|
224
241
|
superun-ai chat test <sessionId>
|
|
@@ -271,7 +288,7 @@ superun-ai chat send <sessionId> --test-followup <sourceMessageId> --message "
|
|
|
271
288
|
|
|
272
289
|
## 代码审查
|
|
273
290
|
|
|
274
|
-
代码审查检查指定
|
|
291
|
+
代码审查检查指定 superun 项目的已有代码。未指定范围时检查刚才的改动;指定范围时原样传递用户要求。发现确认的问题后先告知用户,再自动修复并汇报;与用户明确意图冲突的修复先确认业务规则。代码审查与功能的实际运行验证分别表达,不把审查完成或修复完成说成测试、复审通过。
|
|
275
292
|
|
|
276
293
|
```bash
|
|
277
294
|
superun-ai chat review <sessionId>
|
|
@@ -447,7 +464,7 @@ CLI 每次执行业务命令前都查询 npm `latest`。版本不一致时,使
|
|
|
447
464
|
|
|
448
465
|
自动更新保留原 npm 安装作为稳定启动入口,新版本存放于 `~/.cache/superun-ai-cli/installations/` 下按安装来源和 Node 环境隔离的目录,通过小型入口记录切换实际执行版本,不原地覆盖全局包。每次安装使用独立目录,并发安装互不覆盖;不创建更新锁,不在业务命令中删除旧版本、失败安装目录或切换残留,避免 npm 清理旧包触发宿主的批量删除确认。历史版本会占用磁盘,本版不自动清理。CLI 不绕过宿主权限保护,其他文件写入或网络权限仍受宿主管理。
|
|
449
466
|
|
|
450
|
-
公开包的版本预检与安装使用无登录凭证的 npm 配置,不读取用户、全局或项目的 npmrc。更新子进程仅接收运行和网络所需的环境变量,不继承 npm Token、
|
|
467
|
+
公开包的版本预检与安装使用无登录凭证的 npm 配置,不读取用户、全局或项目的 npmrc。更新子进程仅接收运行和网络所需的环境变量,不继承 npm Token、superun PAT、其他业务凭证或 `NODE_OPTIONS`,也不弹出 CLI 自己的 npm 登录步骤。环境变量中的代理、CA/证书与缓存配置继续生效;只写在 npmrc 中的配置不用于自动更新。官方 Registry 不可用时,可回退到 `npm_config_registry` / `NPM_CONFIG_REGISTRY` 环境变量指定的无凭证镜像地址,安装沿用查询成功的源。恢复过程不输出 npm 原始日志或凭据;失败只返回原因码,不关闭证书校验、不绕过宿主权限保护。AI 安装助手的首次安装与旧版升级也按 [安装指南](INSTALL.md) 使用无凭证环境,避免旧入口在加载新版之前读取 npm 凭证。
|
|
451
468
|
|
|
452
469
|
可以执行 `superun-ai update` 主动同步 npm `latest`。从源码安装也遵循相同的版本校验;修改源码后需要重新构建,如果全局命令不是链接到该目录,再执行 `npm install -g .`。
|
|
453
470
|
|
|
@@ -4,6 +4,8 @@ import type { JsonObject } from '../contracts/value.js';
|
|
|
4
4
|
export declare class IntegrationApi {
|
|
5
5
|
private readonly client;
|
|
6
6
|
constructor(client: ApiClient);
|
|
7
|
-
connect(sessionId: string, integration: string, payload: JsonObject, toolId?: string): Promise<JsonObject>;
|
|
7
|
+
connect(sessionId: string, integration: string, payload: JsonObject, toolId?: string, suggested?: JsonObject): Promise<JsonObject>;
|
|
8
8
|
status(sessionId: string, integration: string): Promise<JsonObject>;
|
|
9
|
+
batchStatus(sessionId: string, integrations: string[]): Promise<JsonObject>;
|
|
10
|
+
disable(sessionId: string, integration: string): Promise<JsonObject>;
|
|
9
11
|
}
|
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
import { object } from '../contracts/value.js';
|
|
2
|
+
import { preparePluginConfig } from '../interactions/plugin-config.js';
|
|
3
|
+
import { CliError } from '../output/exit-codes.js';
|
|
2
4
|
export class IntegrationApi {
|
|
3
5
|
client;
|
|
4
6
|
constructor(client) {
|
|
5
7
|
this.client = client;
|
|
6
8
|
}
|
|
7
|
-
async connect(sessionId, integration, payload, toolId) {
|
|
8
|
-
|
|
9
|
+
async connect(sessionId, integration, payload, toolId, suggested = {}) {
|
|
10
|
+
if (integration === 'CUSTOM_MINIPROGRAM' && toolId)
|
|
11
|
+
throw new CliError('UNSUPPORTED_INTERACTION', '小程序配置确认需在网页完成;基础插件启停可使用 chat plugin 命令');
|
|
12
|
+
const current = await this.status(sessionId, integration);
|
|
13
|
+
if (current.integrationStatus === 'ENABLED')
|
|
14
|
+
return current;
|
|
15
|
+
if (![
|
|
16
|
+
'UNKNOWN',
|
|
17
|
+
'NOT_ENABLED',
|
|
18
|
+
'DISABLED',
|
|
19
|
+
'PAUSED',
|
|
20
|
+
'ENABLING',
|
|
21
|
+
'RESTORING',
|
|
22
|
+
'PAUSING',
|
|
23
|
+
'DISABLING',
|
|
24
|
+
].includes(String(current.integrationStatus)))
|
|
25
|
+
throw new CliError('PROTOCOL_ERROR', '插件状态响应无效,请查询后继续', {
|
|
26
|
+
sessionId,
|
|
27
|
+
pluginId: integration,
|
|
28
|
+
});
|
|
29
|
+
if (!toolId && ['ENABLING', 'RESTORING'].includes(String(current.integrationStatus)))
|
|
30
|
+
return current;
|
|
31
|
+
const config = preparePluginConfig(integration, payload, current, suggested);
|
|
32
|
+
const facade = integration === 'ASR'
|
|
33
|
+
? 'AsrIntegration'
|
|
34
|
+
: integration === 'FACEID'
|
|
35
|
+
? 'FaceIdIntegration'
|
|
36
|
+
: 'SessionIntegration';
|
|
37
|
+
return object(await this.client.call(`/api/uxa-center/agent/${facade}/connectIntegration`, { sessionId, integration, payload: config, toolId }, true));
|
|
9
38
|
}
|
|
10
39
|
async status(sessionId, integration) {
|
|
11
40
|
return object(await this.client.call('/api/uxa-center/agent/SessionIntegration/integrationStatus', {
|
|
@@ -13,5 +42,14 @@ export class IntegrationApi {
|
|
|
13
42
|
integration,
|
|
14
43
|
}));
|
|
15
44
|
}
|
|
45
|
+
async batchStatus(sessionId, integrations) {
|
|
46
|
+
return object(await this.client.call('/api/uxa-center/agent/SessionIntegration/batchIntegrationStatus', {
|
|
47
|
+
sessionId,
|
|
48
|
+
integrations,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
async disable(sessionId, integration) {
|
|
52
|
+
return object(await this.client.call('/api/uxa-center/agent/SessionIntegration/disableIntegration', { sessionId, integration }, true));
|
|
53
|
+
}
|
|
16
54
|
}
|
|
17
55
|
//# sourceMappingURL=integration-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-api.js","sourceRoot":"","sources":["../../src/api/integration-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAClD,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,WAAmB,EACnB,OAAmB,EACnB,MAAe;
|
|
1
|
+
{"version":3,"file":"integration-api.js","sourceRoot":"","sources":["../../src/api/integration-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAClD,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,WAAmB,EACnB,OAAmB,EACnB,MAAe,EACf,YAAwB,EAAE;QAE1B,IAAI,WAAW,KAAK,oBAAoB,IAAI,MAAM;YAChD,MAAM,IAAI,QAAQ,CAChB,yBAAyB,EACzB,wCAAwC,CACzC,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC5D,IACE,CAAC;YACC,SAAS;YACT,aAAa;YACb,UAAU;YACV,QAAQ;YACR,UAAU;YACV,WAAW;YACX,SAAS;YACT,WAAW;SACZ,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE7C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,iBAAiB,EAAE;gBACtD,SAAS;gBACT,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;QACL,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC;QACrG,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7E,MAAM,MAAM,GACV,WAAW,KAAK,KAAK;YACnB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,WAAW,KAAK,QAAQ;gBACxB,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,oBAAoB,CAAC;QAC7B,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,yBAAyB,MAAM,qBAAqB,EACpD,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EACnD,IAAI,CACL,CACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,WAAmB;QACjD,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;YACnF,SAAS;YACT,WAAW;SACZ,CAAC,CACH,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,YAAsB;QACzD,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE;YACxF,SAAS;YACT,YAAY;SACb,CAAC,CACH,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,WAAmB;QAClD,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,6DAA6D,EAC7D,EAAE,SAAS,EAAE,WAAW,EAAE,EAC1B,IAAI,CACL,CACF,CAAC;IACJ,CAAC;CACF"}
|
package/dist/api/plugin-api.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** 插件的脱敏查询与启停;补齐 Glow 已公开的集成入口,不修改插件内部实现。@author xiuyu.yi */
|
|
2
2
|
import type { ApiClient } from '../transport/api-client.js';
|
|
3
|
-
import type
|
|
3
|
+
import { type JsonObject } from '../contracts/value.js';
|
|
4
4
|
export declare class PluginApi {
|
|
5
5
|
private readonly client;
|
|
6
|
+
private readonly integration;
|
|
6
7
|
constructor(client: ApiClient);
|
|
8
|
+
private visible;
|
|
9
|
+
private state;
|
|
7
10
|
list(sessionId: string): Promise<JsonObject>;
|
|
8
11
|
operate(action: 'status' | 'enable' | 'disable', sessionId: string, pluginId: string): Promise<JsonObject>;
|
|
9
12
|
}
|
package/dist/api/plugin-api.js
CHANGED
|
@@ -1,14 +1,70 @@
|
|
|
1
|
-
import { object } from '../contracts/value.js';
|
|
1
|
+
import { object, text } from '../contracts/value.js';
|
|
2
|
+
import { IntegrationApi } from './integration-api.js';
|
|
3
|
+
import { integrationKey } from '../interactions/handlers/reply-plugin.js';
|
|
4
|
+
import { getSuperunHostingDomain } from '../config/runtime-config.js';
|
|
5
|
+
import { CliError } from '../output/exit-codes.js';
|
|
6
|
+
// ProjectPlugin 目录尚未包含的 Glow 基础插件;Skill 卡片不属于集成生命周期。
|
|
7
|
+
const GLOW_PLUGINS = {
|
|
8
|
+
SUPERUN_PAYMENT: 'superun 支付',
|
|
9
|
+
MEDIA_TRANSCODE: '音视频转码',
|
|
10
|
+
AMAP: '高德地图',
|
|
11
|
+
FACEID: '人脸核验',
|
|
12
|
+
SMS: '短信',
|
|
13
|
+
CUSTOM_MINIPROGRAM: '微信小程序',
|
|
14
|
+
DINGTALK: '钉钉',
|
|
15
|
+
WECOM: '企业微信',
|
|
16
|
+
FEISHU: '飞书',
|
|
17
|
+
STRIPE: 'Stripe 支付',
|
|
18
|
+
};
|
|
2
19
|
export class PluginApi {
|
|
3
20
|
client;
|
|
21
|
+
integration;
|
|
4
22
|
constructor(client) {
|
|
5
23
|
this.client = client;
|
|
24
|
+
this.integration = new IntegrationApi(client);
|
|
25
|
+
}
|
|
26
|
+
visible(pluginId) {
|
|
27
|
+
return (pluginId !== 'SUPERUN_PAYMENT' || getSuperunHostingDomain(this.client.config.endpoint) === 'superun.yun');
|
|
28
|
+
}
|
|
29
|
+
state(response, pluginId) {
|
|
30
|
+
const state = text(response.integrationStatus);
|
|
31
|
+
if (!state)
|
|
32
|
+
throw new CliError('PROTOCOL_ERROR', '接口未返回插件状态,请重新查询', { pluginId });
|
|
33
|
+
return { pluginId, state };
|
|
6
34
|
}
|
|
7
35
|
async list(sessionId) {
|
|
8
|
-
|
|
36
|
+
const response = object(await this.client.call('/api/uxa-center/agent/ProjectPlugin/list', { sessionId }));
|
|
37
|
+
if (!Array.isArray(response.plugins))
|
|
38
|
+
throw new CliError('PROTOCOL_ERROR', '接口未返回插件目录');
|
|
39
|
+
const plugins = response.plugins.map(object).filter((plugin) => this.visible(String(plugin.pluginId)));
|
|
40
|
+
const existing = new Set(plugins.map((plugin) => plugin.pluginId));
|
|
41
|
+
const missing = Object.keys(GLOW_PLUGINS).filter((id) => this.visible(id) && !existing.has(id));
|
|
42
|
+
const statuses = missing.length ? await this.integration.batchStatus(sessionId, missing) : {};
|
|
43
|
+
return {
|
|
44
|
+
...response,
|
|
45
|
+
plugins: [
|
|
46
|
+
...plugins,
|
|
47
|
+
...missing.map((pluginId) => ({
|
|
48
|
+
...this.state(object(statuses[pluginId]), pluginId),
|
|
49
|
+
displayName: GLOW_PLUGINS[pluginId],
|
|
50
|
+
})),
|
|
51
|
+
],
|
|
52
|
+
};
|
|
9
53
|
}
|
|
10
54
|
async operate(action, sessionId, pluginId) {
|
|
11
|
-
|
|
55
|
+
const key = integrationKey(pluginId.trim()).toUpperCase();
|
|
56
|
+
if (!this.visible(key))
|
|
57
|
+
throw new CliError('INVALID_ARGUMENT', '此插件在当前站点不可用', { pluginId: key });
|
|
58
|
+
if (Object.hasOwn(GLOW_PLUGINS, key)) {
|
|
59
|
+
const response = action === 'status'
|
|
60
|
+
? await this.integration.status(sessionId, key)
|
|
61
|
+
: action === 'enable'
|
|
62
|
+
? await this.integration.connect(sessionId, key, {})
|
|
63
|
+
: await this.integration.disable(sessionId, key);
|
|
64
|
+
return this.state(response, key);
|
|
65
|
+
}
|
|
66
|
+
// 保留已有入口,尤其是 Cloud 对历史 SUPABASE / SUPABASE_EMBED 的正确路由。
|
|
67
|
+
return object(await this.client.call(`/api/uxa-center/agent/ProjectPlugin/${action}`, { sessionId, pluginId: key === 'SUPABASE_EMBED' ? 'SUPERUN_CLOUD' : key }, action !== 'status'));
|
|
12
68
|
}
|
|
13
69
|
}
|
|
14
70
|
//# sourceMappingURL=plugin-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-api.js","sourceRoot":"","sources":["../../src/api/plugin-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-api.js","sourceRoot":"","sources":["../../src/api/plugin-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAmB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qDAAqD;AACrD,MAAM,YAAY,GAA2B;IAC3C,eAAe,EAAE,YAAY;IAC7B,eAAe,EAAE,OAAO;IACxB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,IAAI;IACT,kBAAkB,EAAE,OAAO;IAC3B,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF,MAAM,OAAO,SAAS;IAES;IADZ,WAAW,CAAiB;IAC7C,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACO,OAAO,CAAC,QAAgB;QAC9B,OAAO,CACL,QAAQ,KAAK,iBAAiB,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,aAAa,CACzG,CAAC;IACJ,CAAC;IACO,KAAK,CAAC,QAAoB,EAAE,QAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,QAAQ,GAAG,MAAM,CACrB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,SAAS,EAAE,CAAC,CAClF,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC5B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC;oBACnD,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC;iBACpC,CAAC,CAAC;aACJ;SACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,OAAO,CACX,MAAuC,EACvC,SAAiB,EACjB,QAAgB;QAEhB,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACpB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GACZ,MAAM,KAAK,QAAQ;gBACjB,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC;gBAC/C,CAAC,CAAC,MAAM,KAAK,QAAQ;oBACnB,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;oBACpD,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,wDAAwD;QACxD,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,uCAAuC,MAAM,EAAE,EAC/C,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,EACzE,MAAM,KAAK,QAAQ,CACpB,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -30,7 +30,7 @@ export async function ensurePat(options) {
|
|
|
30
30
|
return existing;
|
|
31
31
|
if (!allowBrowser)
|
|
32
32
|
throw new CliError('AUTH_REQUIRED', '未配置 PAT,请执行 superun-ai auth login;脚本中请设置 SUPERUN_PAT 或使用 auth login --stdin');
|
|
33
|
-
// 认证统一使用
|
|
33
|
+
// 认证统一使用 superun 站点,业务地址不影响登录与凭据签发。
|
|
34
34
|
const loginConfig = { ...config, endpoint: DEFAULT_ENDPOINT };
|
|
35
35
|
const uuid = randomUUID();
|
|
36
36
|
const loginUrl = new URL('/web/cli-token-callback', loginConfig.endpoint);
|
|
@@ -39,7 +39,7 @@ export async function ensurePat(options) {
|
|
|
39
39
|
const signal = AbortSignal.any([commandSignal, timeout]);
|
|
40
40
|
try {
|
|
41
41
|
signal.throwIfAborted();
|
|
42
|
-
output.log(`请在浏览器完成
|
|
42
|
+
output.log(`请在浏览器完成 superun 登录:${loginUrl.href}`);
|
|
43
43
|
if (!(await openBrowser(loginUrl.href, signal)))
|
|
44
44
|
output.log('未能自动打开浏览器,请手动打开上面的地址。');
|
|
45
45
|
const anonymousClient = new ApiClient(loginConfig, '', undefined, signal);
|
|
@@ -5,7 +5,7 @@ import { requireCredentials } from '../shared.js';
|
|
|
5
5
|
export function registerLogin(auth, context) {
|
|
6
6
|
auth
|
|
7
7
|
.command('login')
|
|
8
|
-
.description('登录
|
|
8
|
+
.description('登录 superun 并保存 PAT')
|
|
9
9
|
.addOption(new Option('--pat', '在终端隐藏输入现有 PAT').conflicts('stdin'))
|
|
10
10
|
.option('--stdin', '从标准输入读取 PAT')
|
|
11
11
|
.action(async (options, command) => {
|
|
@@ -27,10 +27,11 @@ export function registerPlugin(chat, context) {
|
|
|
27
27
|
context.output.write(entry);
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
+
const status = await service.plugin.operate('status', sessionId, pluginId);
|
|
30
31
|
context.output.write({
|
|
31
|
-
state: 'COMPLETED',
|
|
32
|
+
state: ACTIVE.has(String(status.state)) ? 'RUNNING' : 'COMPLETED',
|
|
32
33
|
sessionId,
|
|
33
|
-
plugin:
|
|
34
|
+
plugin: status,
|
|
34
35
|
});
|
|
35
36
|
});
|
|
36
37
|
for (const action of ['enable', 'disable']) {
|
|
@@ -84,13 +85,17 @@ export function registerPlugin(chat, context) {
|
|
|
84
85
|
const completed = action === 'enable'
|
|
85
86
|
? result.state === 'ENABLED'
|
|
86
87
|
: ['NOT_ENABLED', 'DISABLED', 'PAUSED'].includes(String(result.state));
|
|
87
|
-
|
|
88
|
+
const inProgress = (action === 'enable' ? ['ENABLING', 'RESTORING'] : ['DISABLING', 'PAUSING']).includes(String(result.state));
|
|
89
|
+
if (!completed && !inProgress) {
|
|
88
90
|
result = object(await businessWrite(context, service, sessionId, async () => {
|
|
89
|
-
if (action === 'enable' &&
|
|
90
|
-
|
|
91
|
+
if (action === 'enable' &&
|
|
92
|
+
(options.input || ['ASR', 'FACEID'].includes(integrationKey(pluginId)))) {
|
|
93
|
+
const config = options.input ? await readInput(requiredText(options.input, 'input')) : {};
|
|
91
94
|
for (const value of Object.values(config))
|
|
92
|
-
if (typeof value === 'string')
|
|
95
|
+
if (typeof value === 'string') {
|
|
93
96
|
context.output.registerSecret(value);
|
|
97
|
+
context.output.registerSecret(value.trim());
|
|
98
|
+
}
|
|
94
99
|
const response = await service.integration.connect(sessionId, integrationKey(pluginId), config);
|
|
95
100
|
return { pluginId, state: response.integrationStatus };
|
|
96
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/commands/chat/plugin.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,OAAuB;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAChE,MAAM;SACH,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IACL,MAAM;SACH,OAAO,CAAC,+BAA+B,CAAC;SACxC,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAgB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACzF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,KAAK,GACT,cAAc,CAAC,QAAQ,CAAC,KAAK,0BAA0B;YACrD,CAAC,CAAC,MAAM,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC;YAClD,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/commands/chat/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,8 +47,8 @@ export function buildManagedAgentIntentRoutingArgs(action) {
|
|
|
47
47
|
'产品适配判断必须发生在配置向导之前;尚未确定进入通用智能体分支时,不得调用 ManagedAgentWizard 或创建通用智能体资源。',
|
|
48
48
|
'若当前对话已足以确认用户需要有持续上下文、记忆、资料、工具行动、长期任务或可复用角色的智能体,直接进入下述向导准备阶段,不再询问产品类型。',
|
|
49
49
|
'若信息不足,只用 AskUserQuestion 补齐区分 superun AI 与通用智能体所缺的信息。',
|
|
50
|
-
'只要产品适配判断 superun AI 更合适(包括补充信息后的判断),都必须再用 AskUserQuestion 展示一次最终能力选择,不能直接宣布已选择 superun AI。第一项为“使用
|
|
51
|
-
'用户选择通用智能体后,进入下述向导准备阶段;用户选择
|
|
50
|
+
'只要产品适配判断 superun AI 更合适(包括补充信息后的判断),都必须再用 AskUserQuestion 展示一次最终能力选择,不能直接宣布已选择 superun AI。第一项为“使用 superun AI(推荐)”并按当前需求写一句具体推荐理由,第二项为“仍使用 superun 通用智能体”并说明会进入配置向导。',
|
|
51
|
+
'用户选择通用智能体后,进入下述向导准备阶段;用户选择 superun AI 后,立即调用 PluginEnable(plugin_name=SUPERUN_AI、mode=auto),启用成功后继续完成用户原始任务,不调用 ManagedAgentWizard。不得让用户再去右侧功能列表手动勾选,也不得在启用或原始任务完成前用说明文字结束任务流。',
|
|
52
52
|
'AskUserQuestion 返回答案后必须在同一任务流中执行所选分支;回答卡片、推荐结论或 PluginEnable 成功都不是原始任务的终点。',
|
|
53
53
|
'任何“跳过并继续”都必须遵循 initial_product_intent,继续通用智能体流程并进入下述向导准备阶段;不得把跳过解释为接受推荐。用户明确选择“不要启用”或“暂不创建”时停止能力流程。',
|
|
54
54
|
'向导准备阶段:先检查通用智能体插件状态;尚未启用时按现有 Skill 约定完成插件启用确认并等待启用成功,已启用时复用现有插件。',
|
|
@@ -62,7 +62,7 @@ export function buildManagedAgentIntentRoutingArgs(action) {
|
|
|
62
62
|
'文件页无文件时操作按钮是“上传”,已有文件时是“新建”;默认只说“在文件页上传”,不要把按钮名称或位置说死。“测试”页通过临时会话试用智能体,测试配置不会自动接入网站或应用;只有原任务包含产品接入时才继续完成对应接入工作。',
|
|
63
63
|
'每次创建成功都要提示 MCP 的配置入口,不以 mcpServers 是否为空决定是否提示:“智能体创建完成后,你还可以在智能体详情的「能力与连接 → MCP 连接」中接入 MCP 服务。”这是入口说明,不表示已经接通或当前一定没有 MCP。',
|
|
64
64
|
'这些说明只表达后续可按需配置,不追问、不自动补配被跳过的能力,也不写入所创建智能体的设定;必选内置能力不属于可选 Skill,skillIds 为空不表示智能体没有能力。文件和记忆库上传、创建成功也不表示已在运行会话中生效。创建失败、取消或等待中不发送成功后的配置提示;原任务包含产品开发、接入或执行时,提示后继续原任务。',
|
|
65
|
-
'上述自动启用只适用于用户在最终能力选择中明确选中的
|
|
65
|
+
'上述自动启用只适用于用户在最终能力选择中明确选中的 superun AI;产品适配本身不授权自动启用或创建通用智能体。通用智能体仍保留必要的插件启用确认,最终创建由用户点击向导中的“创建智能体”或第一步的“快速创建”确认。',
|
|
66
66
|
'用户询问费用时,简短说明使用助手会消耗算力,并从 superun 余额扣除,具体用量可在“消费明细”中查看;不编造价格或用量,也不把计费说明固定附加到每次创建成功回复中。',
|
|
67
67
|
].join('\n');
|
|
68
68
|
}
|
|
@@ -28,13 +28,13 @@ const PLAN_REVIEW_INSTRUCTION = '请按 messages 顺序展示原始规划对话
|
|
|
28
28
|
const FEATURE_SELECTION_INSTRUCTION = '请按 messages 顺序展示原始对话和功能清单,保留展示编号与 details.features 中真实 id 的对应关系;无需额外生成或链接功能清单文档,也不追加勾选状态提示。此时功能尚待选择开发,不展示“继续创作”或“上线运营”入口。最后只提示:“请回复要开发的功能编号或具体需求。”';
|
|
29
29
|
const INTERACTION_INSTRUCTIONS = {
|
|
30
30
|
MANAGED_AGENT_WIZARD: QUESTIONNAIRE_INSTRUCTION,
|
|
31
|
-
UNSUPPORTED: '当前 CLI 无法处理该交互,请到
|
|
31
|
+
UNSUPPORTED: '当前 CLI 无法处理该交互,请到 superun 网页完成后再查询,不自动跳过。',
|
|
32
32
|
PRD_CLARIFICATION: `${QUESTIONNAIRE_INSTRUCTION};整组答齐提交后直接生成风格并默认等待风格预览页面供用户选择,不再额外询问是否生成`,
|
|
33
33
|
ASK_USER_TOOL: `${QUESTIONNAIRE_INSTRUCTION};提交后等待实际返回的问题或方案,不自动确认规划`,
|
|
34
34
|
ASK_USER_MESSAGE: `${QUESTIONNAIRE_INSTRUCTION};提交后等待实际返回的问题或方案,不自动确认规划`,
|
|
35
35
|
SECRET_INPUT: '请用户安全提供当前要求的密钥,不要回显密钥内容',
|
|
36
|
-
PLUGIN_SECRET_INPUT: '
|
|
37
|
-
PLUGIN_ACTION: '
|
|
36
|
+
PLUGIN_SECRET_INPUT: '先展示 details 中的权限清单和安全设置提示,再通过安全输入收集插件所需配置;不要在普通聊天中索取或回显密钥,不替用户完成外部授权。',
|
|
37
|
+
PLUGIN_ACTION: '展示当前插件的说明、权限清单和安全设置提示;引导用户处理必要的外部授权,再按当前允许的动作确认或跳过。无需密钥的托管模式不索取密钥,可选密钥不作为必填项;不得声称已经替用户完成外部授权。',
|
|
38
38
|
DDL_CONFIRMATION: '请用户阅读并确认数据库变更',
|
|
39
39
|
STYLE_SELECTION: '请用户打开风格预览页面并选择候选,只展示页面链接',
|
|
40
40
|
ENTER_IDEATION: '请用户确认进入构想阶段',
|
|
@@ -156,7 +156,15 @@ function nextActionsForState(result, config) {
|
|
|
156
156
|
? action === 'SUBMIT'
|
|
157
157
|
? String(interaction.details?.instruction ?? QUESTIONNAIRE_INSTRUCTION)
|
|
158
158
|
: `仅在用户主动要求此操作时执行 ${action};这是可选导航,不新增题目,不追加单选或二次确认。`
|
|
159
|
-
:
|
|
159
|
+
: interaction.kind === 'PLUGIN_ACTION'
|
|
160
|
+
? [
|
|
161
|
+
INTERACTION_INSTRUCTIONS[interaction.kind],
|
|
162
|
+
interaction.details?.notice,
|
|
163
|
+
interaction.details?.instruction,
|
|
164
|
+
]
|
|
165
|
+
.filter(Boolean)
|
|
166
|
+
.join(' ')
|
|
167
|
+
: INTERACTION_INSTRUCTIONS[interaction.kind];
|
|
160
168
|
return {
|
|
161
169
|
action,
|
|
162
170
|
instruction: `${instruction}。使用此 interactionId 对应的 questions、details 和 answerSchema,补齐 input 后通过 --input - 提交 JSON;不要替用户填写或选择。`,
|