@ohos-cpf/3rdloop 0.0.4 → 0.0.6
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/README.md +119 -128
- package/lib/cli.js +25 -0
- package/lib/serve.js +280 -0
- package/lib/update.js +46 -6
- package/lib/web-ext.js +454 -0
- package/lib/web.js +664 -0
- package/package.json +2 -1
- package/vendor/Server/CLI/opencode/index.js +2 -2
- package/vendor/Server/DbUse/StorageManager.js +7 -1
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +92 -0
- package/vendor/Server/Routes/routes/flexrunner.js +2 -0
- package/vendor/Server/Skills/arkts-code-use/SKILL.md +270 -0
- package/vendor/Server/Skills/arkts-code-use/assets/TEMPLATES.md +367 -0
- package/vendor/Server/Skills/arkts-code-use/references/API_VERIFICATION.md +144 -0
- package/vendor/Server/Skills/arkts-code-use/references/ARKTS_RULES.md +240 -0
- package/vendor/Server/Skills/arkts-code-use/references/CODE_PATTERNS.md +431 -0
- package/vendor/Server/Skills/arkts-code-use/references/SYNTAX_CHECK_GUIDE.md +164 -0
- package/vendor/Server/Skills/arkts-code-use/scripts/verify-arkts.cjs +428 -0
- package/vendor/Server/Skills/gitcode-repo-fork/SKILL.md +310 -0
- package/vendor/Server/Skills/gitcode-repo-fork/assets/FORK_REPORT_TEMPLATE.md +113 -0
- package/vendor/Server/Skills/gitcode-repo-fork/references/FORK_DECISION_GUIDE.md +124 -0
- package/vendor/Server/Skills/gitcode-repo-fork/references/GITCODE_FORK_API.md +95 -0
- package/vendor/Server/Skills/gitcode-repo-fork/scripts/gitcode-fork.cjs +285 -0
- package/vendor/VERSION +3 -3
- package/web/css/arktslibrarycheck.css +322 -0
- package/web/css/codecheck.css +464 -0
- package/web/css/flutterlibrarycheck.css +322 -0
- package/web/css/knowledge.css +332 -0
- package/web/css/loop.css +578 -0
- package/web/css/md-reader.css +240 -0
- package/web/css/rnlibrarycheck.css +322 -0
- package/web/css/theme.css +702 -0
- package/web/index.html +713 -0
- package/web/js/arktslibrarycheck.js +1495 -0
- package/web/js/codecheck.js +1098 -0
- package/web/js/flutterlibrarycheck.js +1447 -0
- package/web/js/health.js +69 -0
- package/web/js/knowledge.js +358 -0
- package/web/js/loop.js +1102 -0
- package/web/js/md-reader.js +435 -0
- package/web/js/navigation.js +238 -0
- package/web/js/rnlibrarycheck.js +1462 -0
- package/web/js/stats.js +110 -0
- package/web/js/theme.js +46 -0
- package/web/js/utils.js +228 -0
- package/web/knowledge.html +146 -0
- package/web/loop.html +219 -0
package/README.md
CHANGED
|
@@ -34,198 +34,189 @@ npm i -g @ohos-cpf/3rdloop
|
|
|
34
34
|
|
|
35
35
|
## 使用
|
|
36
36
|
|
|
37
|
+
按使用场景组织:装好之后,先做**环境自检**并完成**必要配置**,然后**快速开启一个任务**;进阶场景(PR 检视/自动提 PR、Web 界面、自更新)按需查阅。
|
|
37
38
|
|
|
39
|
+
### 场景一:初次使用 —— 环境自检
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
安装后第一步,先跑环境自检:
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- 项目级:仓库 `Server/.env`
|
|
45
|
-
- 用户级:`~/.3lib/.env`
|
|
46
|
-
- 系统环境变量:`setx DASHSCOPE_API_KEY "sk-xxx"`
|
|
43
|
+
```bash
|
|
44
|
+
3rdloop doctor
|
|
45
|
+
```
|
|
47
46
|
|
|
47
|
+
`doctor` 会逐项检查 Node / opencode / `.env` 凭据 / SKILL 目录 / 数据目录,缺什么会明确提示。除此之外还需要了解:
|
|
48
48
|
|
|
49
|
+
- **Node.js** >= 22
|
|
50
|
+
- **opencode CLI**:`3rdloop` 会自动拉起 `opencode serve`(在项目上一级目录运行),退出时清理进程树;已存在则复用,一般无需手动管理
|
|
51
|
+
- **LLM 凭据**:`doctor` 提示凭据缺失时,见下面"配置"一节
|
|
52
|
+
|
|
53
|
+
### 场景二:配置 —— 需要注意哪些配置项
|
|
49
54
|
|
|
50
|
-
|
|
55
|
+
绝大多数配置项都有内置默认值,**开箱即用**。只有 LLM 凭据是必配项:
|
|
51
56
|
|
|
52
57
|
```bash
|
|
53
|
-
#
|
|
54
|
-
3rdloop
|
|
58
|
+
# 必配:百炼 API Key(从 https://bailian.console.aliyun.com/ 获取,get/list 脱敏显示)
|
|
59
|
+
3rdloop config set DASHSCOPE_API_KEY <sk-xxxxxxxx>
|
|
60
|
+
```
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
3rdloop run "为 libcurl 生成鸿蒙 demo 场景并跑通编译"
|
|
62
|
+
按需可选(不设置即关闭/自动):
|
|
58
63
|
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
```bash
|
|
65
|
+
# GitCode Token(仅访问私有仓库时需要,get/list 脱敏显示)
|
|
66
|
+
3rdloop config set GIT_TOKEN <your-gitcode-token>
|
|
61
67
|
|
|
62
|
-
#
|
|
63
|
-
3rdloop
|
|
64
|
-
3rdloop progress <taskId> --watch
|
|
65
|
-
3rdloop abort <taskId>
|
|
66
|
-
3rdloop list --status running
|
|
67
|
-
3rdloop result <taskId> --json
|
|
68
|
+
# SKILL 目录覆盖(等效 --skill-dir,不设置则自动解析)
|
|
69
|
+
3rdloop config set 3LIB_SKILL_DIR </path/to/Skills>
|
|
68
70
|
```
|
|
69
71
|
|
|
72
|
+
有默认值、一般无需改(调整时参考):
|
|
70
73
|
|
|
74
|
+
```bash
|
|
75
|
+
# LLM 端点(默认百炼 OpenAI 兼容端点,仅切换其他 LLM 服务时修改)
|
|
76
|
+
3rdloop config set LLM_BASE_URL https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
71
77
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
| 命令 | 说明 |
|
|
76
|
-
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
|
77
|
-
| `3rdloop run <desc>` | 提交任务并阻塞到准出终态(默认行为) |
|
|
78
|
-
| `3rdloop submit <desc>` | 提交任务,打印 taskId 后进程内继续执行 |
|
|
79
|
-
| `3rdloop wait <taskId> [--timeout 30m]` | 等待任务到终态 |
|
|
80
|
-
| `3rdloop progress <taskId> [--watch]` | 查询进度;`--watch` 持续轮询到终态 |
|
|
81
|
-
| `3rdloop abort <taskId>` | 中止任务 |
|
|
82
|
-
| `3rdloop list [--status st] [--limit N] [--older-than 7d]` | 列出任务 |
|
|
83
|
-
| `3rdloop result <taskId> [--raw]` | 读取最终结果 |
|
|
84
|
-
| `3rdloop step run <desc> [--task-id id] [--step-id N] [--input-report p] [--max-retries N] [--loop N] [--task-dir p] [--specified-skill <SKILL name|目录名>]` | 单步执行(FlexRunner 直连,不经拆解/编排/审核) |
|
|
85
|
-
| `3rdloop step status <taskId> [--step-id N]` | 查询单步状态/产物/会话 |
|
|
86
|
-
| `3rdloop step result <taskId> [--step-id N]` | 读取该步 result.md 内容 |
|
|
87
|
-
| `3rdloop orch run <task-def.json>` | 加载任务定义 + 启动编排,阻塞到终态 |
|
|
88
|
-
| `3rdloop orch load <task-def.json>` | 仅加载任务定义(落盘 orchestration.json,进程退出后仍可 start) |
|
|
89
|
-
| `3rdloop orch start <taskId>` | 从磁盘恢复 LOADED 状态并启动编排,阻塞到终态 |
|
|
90
|
-
| `3rdloop orch progress <taskId> [--loop N]` | 查询编排进度 |
|
|
91
|
-
| `3rdloop orch abort|pause|resume <taskId>` | 终止/暂停/恢复编排 |
|
|
92
|
-
| `3rdloop orch tasks` | 列出编排任务 |
|
|
93
|
-
| `3rdloop workflows` | 列出已注册的固定编排工作流 |
|
|
94
|
-
| `3rdloop run <工作流名> [--flag <值> ...]` | 以固定编排执行工作流(阻塞到终态) |
|
|
95
|
-
| `3rdloop run pr-check --pr-url <URL> [--library-type <arkts|flutter|rn|tpccplus>]` | PR 代码检视 |
|
|
96
|
-
| `3rdloop run pr-push [--workspace-dir <p>] [--upstream-url <URL>] [--base-branch <b>] [--changelog <auto|true|false>] [--dry-run <true|false>]` | 三方库自动提 PR(fork 工作区修改 → 源仓库 Issue/PR + 触发 CI) |
|
|
97
|
-
| `3rdloop config list|get|set|unset` | 命令配置 `.env` 配置项(默认读写 `~/.3lib/.env`) |
|
|
98
|
-
| `3rdloop update [--check] [--yes] [--force] [--registry <url>]` | 自更新到 npm 最新版(尊重用户镜像源) |
|
|
99
|
-
| `3rdloop doctor` | 环境自检(Node/opencode/.env/SKILL/数据目录) |
|
|
100
|
-
| `3rdloop version` | 版本信息 |
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
更多进阶用法(`step` 参数细节、`orch` 任务定义格式、工作流注册),见仓库 `cli/README_DEVELOP.md` 或 `3rdloop <子命令> --help`。
|
|
78
|
+
# LLM 模型 id
|
|
79
|
+
3rdloop config set LLM_MODEL glm-5.2
|
|
104
80
|
|
|
105
|
-
|
|
81
|
+
# 默认 CLI 类型(opencode | deveco-code,HarmonyOS 场景切 deveco-code)
|
|
82
|
+
3rdloop config set CLI_TYPE deveco-code
|
|
106
83
|
|
|
84
|
+
# 数据存储目录(默认 ~/.3lib/3rdloop/db,如团队共享目录)
|
|
85
|
+
3rdloop config set 3LIB_DATA_DIR "D:\code\team\shared-db"
|
|
86
|
+
```
|
|
107
87
|
|
|
108
|
-
|
|
109
|
-
| --- | ----------------------------------- |
|
|
110
|
-
| 0 | 通过 / 成功 |
|
|
111
|
-
| 1 | 错误(参数 / 环境 / 任务不存在) |
|
|
112
|
-
| 2 | 任务执行失败(终态 `failed` / `error` / 未通过) |
|
|
113
|
-
| 3 | `wait` 超时 |
|
|
114
|
-
| 130 | Ctrl+C(SIGINT) |
|
|
115
|
-
| 143 | SIGTERM |
|
|
88
|
+
> 其余配置项(`LLM_MAX_TOKENS` / `LLM_ENABLE_THINKING` / `SELECTOR_*` / `MAX_CONCURRENT_SESSIONS` / `OPENCODE_*` / `DEVECO_*`)均有内置默认值,完整清单执行 `3rdloop config list` 查看。`3LIB_ROOT` / `3LIB_HOME` 仅支持系统环境变量(`export` / `setx`),`config set` 会拒绝写入。
|
|
116
89
|
|
|
90
|
+
配置完成后统一验证:
|
|
117
91
|
|
|
92
|
+
```bash
|
|
93
|
+
3rdloop config list # 查看全部配置项及当前生效值
|
|
94
|
+
3rdloop doctor # 环境自检
|
|
95
|
+
```
|
|
118
96
|
|
|
97
|
+
凭据也可以不通过 `config` 配置,任选一层即可:系统环境变量(`setx DASHSCOPE_API_KEY "sk-xxx"`)、用户级 `~/.3lib/.env`、项目根 `Server/.env`。
|
|
119
98
|
|
|
120
|
-
|
|
99
|
+
### 场景三:快速开启一个任务
|
|
121
100
|
|
|
101
|
+
在目标三方库仓库目录下,一句话描述任务,提交并阻塞到准出终态(**最常用**):
|
|
122
102
|
|
|
103
|
+
```bash
|
|
104
|
+
3rdloop run "为 libcurl 生成鸿蒙 demo 场景并跑通编译"
|
|
105
|
+
```
|
|
123
106
|
|
|
124
|
-
|
|
107
|
+
`run` 会自动完成"任务拆解 → 编排执行 → 准出审核"的完整大循环,多轮次自动重规划直到通过;退出码 `0` 即通过。
|
|
125
108
|
|
|
126
|
-
|
|
109
|
+
任务比较耗时、不想干等?提交后立即返回 taskId(进程内继续跑,需保持进程存活),之后可用 `3rdloop progress/wait/result <taskId>` 跟进:
|
|
127
110
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
> - macOS / Linux: `~/.3lib/3rdloop/db`
|
|
111
|
+
```bash
|
|
112
|
+
3rdloop submit "分析 sqlite3 的鸿蒙化可行性"
|
|
113
|
+
```
|
|
132
114
|
|
|
133
|
-
|
|
115
|
+
### 场景四:跑预置工作流(PR 检视 / 自动提 PR 等)
|
|
134
116
|
|
|
135
|
-
|
|
117
|
+
常用固定流程已封装为一键工作流,先看有哪些:
|
|
136
118
|
|
|
137
|
-
|
|
119
|
+
```bash
|
|
120
|
+
3rdloop workflows # 列出已注册的固定编排工作流
|
|
121
|
+
3rdloop run <工作流名> --help # 查看某个工作流的参数说明
|
|
122
|
+
```
|
|
138
123
|
|
|
124
|
+
**三方库自动提 PR**(fork 工作区修改 → 源仓库 Issue/PR + 触发 CI):
|
|
139
125
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
126
|
+
```bash
|
|
127
|
+
# 最常用:在 fork 仓库克隆目录下直接执行(workspace-dir 缺省取当前目录)
|
|
128
|
+
3rdloop run pr-push
|
|
129
|
+
|
|
130
|
+
# 显式指定工作区与可选参数
|
|
131
|
+
3rdloop run pr-push --workspace-dir D:\work\fork-repo --upstream-url https://gitcode.com/CPF-RN/lib \
|
|
132
|
+
--changelog auto --dry-run false
|
|
133
|
+
```
|
|
147
134
|
|
|
135
|
+
> 提 PR 是非幂等发布操作,失败不会自动重试;执行成功后报告 `ohos-lib-pr-push-report.md` 会自动复制到执行目录。先用 `--print-taskdef` dry-run 可以核对将执行的编排定义。
|
|
148
136
|
|
|
149
|
-
|
|
137
|
+
### 场景五:用 Web 界面操作(serve / web)
|
|
150
138
|
|
|
151
|
-
|
|
139
|
+
除了命令行,也可以在浏览器里使用 Web 工作台(提交任务 / 查看循环进度 / PR 检视等),由两个命令提供支撑:
|
|
152
140
|
|
|
153
|
-
`
|
|
141
|
+
**`3rdloop serve` —— 启动 Server HTTP 后端**(供前端 / 脚本反向代理调用):
|
|
154
142
|
|
|
155
143
|
```bash
|
|
156
|
-
#
|
|
157
|
-
3rdloop
|
|
144
|
+
# 只启动后端(默认 http://127.0.0.1:3000,可用 --port / 3LIB_SERVER_PORT 覆盖)
|
|
145
|
+
3rdloop serve
|
|
158
146
|
|
|
159
|
-
#
|
|
160
|
-
3rdloop
|
|
147
|
+
# 后端 + Web 前端一起拉起(前端默认 8080,可用 --web-port / 3LIB_WEB_PORT 覆盖)
|
|
148
|
+
3rdloop serve --web
|
|
149
|
+
```
|
|
161
150
|
|
|
162
|
-
|
|
163
|
-
3rdloop config list
|
|
151
|
+
> CLI 的 `run`/`submit`/`wait` 等命令保持嵌入式模式,不经此后端;两者可独立使用。
|
|
164
152
|
|
|
165
|
-
|
|
166
|
-
3rdloop config unset 3LIB_DATA_DIR
|
|
167
|
-
```
|
|
153
|
+
**`3rdloop web` —— 启动 Web 前端服务**(静态托管 + `/api/*` 反代到后端 + 扩展挂载,默认端口 8080):
|
|
168
154
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
- `--data-dir` / `--skill-dir` 命令行 flag 仍是最高的单次覆盖
|
|
155
|
+
```bash
|
|
156
|
+
# 启动并自动打开浏览器(--backend 默认指向 http://127.0.0.1:3000,配合 serve 使用)
|
|
157
|
+
3rdloop web --open
|
|
173
158
|
|
|
174
|
-
|
|
159
|
+
# 自定义端口 / 后端地址
|
|
160
|
+
3rdloop web --port 8081 --backend http://127.0.0.1:3000
|
|
175
161
|
|
|
176
|
-
|
|
162
|
+
# 禁用全部扩展(纯核心工作台模式)
|
|
163
|
+
3rdloop web --no-ext
|
|
164
|
+
```
|
|
177
165
|
|
|
178
|
-
|
|
166
|
+
扩展机制(tag / issue / prcheck 等二级目录功能以扩展形式按需安装,不随 npm 包分发):
|
|
179
167
|
|
|
180
168
|
```bash
|
|
181
|
-
|
|
182
|
-
3rdloop
|
|
169
|
+
3rdloop web install-ext <扩展目录> # 安装扩展到 ~/.3lib/3rdloop/web-ext/
|
|
170
|
+
3rdloop web list-ext # 列出可用扩展(含来源与挂载点)
|
|
171
|
+
3rdloop web remove-ext <扩展名> # 移除已安装扩展
|
|
183
172
|
```
|
|
184
173
|
|
|
185
|
-
|
|
174
|
+
更多进阶用法(任务管理、`step` 单步执行、`orch` 自定义编排、工作流注册等),见仓库 `cli/README_DEVELOP.md` 或 `3rdloop <子命令> --help`。
|
|
186
175
|
|
|
187
|
-
```bash
|
|
188
|
-
# GitCode Token(仅访问私有仓库时需要,get/list 脱敏显示)
|
|
189
|
-
3rdloop config set GIT_TOKEN <your-gitcode-token>
|
|
190
176
|
|
|
191
|
-
|
|
192
|
-
3rdloop config set 3LIB_SKILL_DIR </path/to/Skills>
|
|
193
|
-
```
|
|
177
|
+
### 退出码
|
|
194
178
|
|
|
195
|
-
**有默认值、一般无需改(调整时参考):**
|
|
196
179
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
180
|
+
| 码 | 含义 |
|
|
181
|
+
| --- | ----------------------------------- |
|
|
182
|
+
| 0 | 通过 / 成功 |
|
|
183
|
+
| 1 | 错误(参数 / 环境 / 任务不存在) |
|
|
184
|
+
| 2 | 任务执行失败(终态 `failed` / `error` / 未通过) |
|
|
185
|
+
| 3 | `wait` 超时 |
|
|
186
|
+
| 130 | Ctrl+C(SIGINT) |
|
|
187
|
+
| 143 | SIGTERM |
|
|
200
188
|
|
|
201
|
-
# LLM 模型 id
|
|
202
|
-
3rdloop config set LLM_MODEL glm-5.2
|
|
203
189
|
|
|
204
|
-
# 默认 CLI 类型(opencode | deveco-code,HarmonyOS 场景切 deveco-code)
|
|
205
|
-
3rdloop config set CLI_TYPE deveco-code
|
|
206
190
|
|
|
207
|
-
# 设置数据存储目录
|
|
208
|
-
3rdloop config set 3LIB_DATA_DIR xxxxx
|
|
209
|
-
```
|
|
210
191
|
|
|
211
|
-
|
|
192
|
+
## 配置
|
|
212
193
|
|
|
213
|
-
|
|
194
|
+
> 快速上手需要的配置(LLM 凭据等)见上文 [场景二:配置](#场景二配置--需要注意哪些配置项)。本节补充完整的配置参考:数据目录与环境变量清单。
|
|
214
195
|
|
|
215
|
-
|
|
216
|
-
3rdloop config list # 查看全部配置项及当前生效值
|
|
217
|
-
3rdloop doctor # 环境自检
|
|
218
|
-
```
|
|
196
|
+
### 数据目录(中间产物)
|
|
219
197
|
|
|
198
|
+
任务中间产物默认落在用户级统一目录,跨平台一致、不随执行目录或 npm 卸载变化:
|
|
220
199
|
|
|
200
|
+
> 默认 `~/.3lib/3rdloop/db`
|
|
201
|
+
>
|
|
202
|
+
> - Windows: `C:\Users\<用户>\.3lib\3rdloop\db`
|
|
203
|
+
> - macOS / Linux: `~/.3lib/3rdloop/db`
|
|
221
204
|
|
|
222
|
-
|
|
205
|
+
任务写入 `<数据目录>/task/{taskId}/`。可用 `--data-dir` flag 或 `3LIB_DATA_DIR` 覆盖(如团队共享目录)。
|
|
223
206
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
207
|
+
### 环境变量
|
|
208
|
+
|
|
209
|
+
CLI 自身配置(`3LIB_*` 前缀):
|
|
227
210
|
|
|
211
|
+
| 变量 | 作用 | 默认值 |
|
|
212
|
+
| ------------------ | --------------------------------- | -------------------- |
|
|
213
|
+
| `3LIB_DATA_DIR` | 数据目录覆盖(等效 `--data-dir`) | `~/.3lib/3rdloop/db` |
|
|
214
|
+
| `3LIB_ROOT` | 项目根覆盖(须为系统环境变量,`.env` 文件不生效) | 自动探测 |
|
|
215
|
+
| `3LIB_HOME` | 用户 3lib 主目录(含日志 `logs/`,须为系统环境变量) | `~/.3lib` |
|
|
216
|
+
| `3LIB_SKILL_DIR` | SKILL 目录覆盖(等效 `--skill-dir`) | 默认按发布/开发状态自动解析 |
|
|
217
|
+
| `3LIB_TASK_PREFIX` | taskId 前缀(审计用) | 空 |
|
|
228
218
|
|
|
219
|
+
LLM 凭据变量(`DASHSCOPE_API_KEY` / `LLM_MODEL` 等):按上文场景二所述,系统环境变量 / `~/.3lib/.env` / 项目根 `Server/.env` 任选一层配置即可。
|
|
229
220
|
|
|
230
221
|
## API
|
|
231
222
|
|
|
@@ -284,7 +275,7 @@ LLM 凭据变量(`DASHSCOPE_API_KEY` / `LLM_MODEL` 等):按上面的 `.env
|
|
|
284
275
|
|
|
285
276
|
## 维护者
|
|
286
277
|
|
|
287
|
-
[@junxiaoliu927](https://gitcode.com/Sincerelyurs
|
|
278
|
+
[@lalhan](https://gitcode.com/lalhanorz) [@junxiaoliu927](https://gitcode.com/Sincerelyurs)
|
|
288
279
|
|
|
289
280
|
## 许可证
|
|
290
281
|
|
package/lib/cli.js
CHANGED
|
@@ -144,9 +144,15 @@ export async function runCli(argv) {
|
|
|
144
144
|
case 'config':
|
|
145
145
|
return cmdConfig({ flags, rest, projectRoot, user3libHome, jsonMode, out });
|
|
146
146
|
|
|
147
|
+
case 'serve':
|
|
148
|
+
return cmdServe({ flags, rest, jsonMode, dataDir });
|
|
149
|
+
|
|
147
150
|
case 'update':
|
|
148
151
|
return cmdUpdate({ flags, rest, jsonMode, out });
|
|
149
152
|
|
|
153
|
+
case 'web':
|
|
154
|
+
return cmdWeb({ flags, rest, user3libHome, dataDir, jsonMode, out });
|
|
155
|
+
|
|
150
156
|
default:
|
|
151
157
|
process.stderr.write(`未知命令: ${cmd}\n`);
|
|
152
158
|
printHelp();
|
|
@@ -218,6 +224,13 @@ async function cmdUpdate({ flags, rest, jsonMode, out }) {
|
|
|
218
224
|
return result.ok ? EXIT.OK : EXIT.ERROR;
|
|
219
225
|
}
|
|
220
226
|
|
|
227
|
+
// ─── serve(启动 Server HTTP 后端,供前端展示)─────────────────────────
|
|
228
|
+
|
|
229
|
+
async function cmdServe({ flags, rest, jsonMode, dataDir }) {
|
|
230
|
+
const { cmdServe: impl } = await import('./serve.js');
|
|
231
|
+
return impl({ rest: flags.rest, jsonMode, dataDir });
|
|
232
|
+
}
|
|
233
|
+
|
|
221
234
|
// ─── run / submit ──────────────────────────────────────────────────
|
|
222
235
|
|
|
223
236
|
async function cmdRun({ flags, rest, projectRoot, dataDir, skillDir, jsonMode, quiet, verbose, out, u }) {
|
|
@@ -610,6 +623,14 @@ async function cmdOrch({ flags, rest, projectRoot, dataDir, skillDir, jsonMode,
|
|
|
610
623
|
return impl({ flags, rest, projectRoot, dataDir, skillDir, jsonMode, quiet, verbose, out, u });
|
|
611
624
|
}
|
|
612
625
|
|
|
626
|
+
/**
|
|
627
|
+
* 3rdloop web 命令二段分发(转发到 lib/web.js:前端服务 + 扩展挂载)。
|
|
628
|
+
*/
|
|
629
|
+
async function cmdWeb({ flags, rest, user3libHome, dataDir, jsonMode, out }) {
|
|
630
|
+
const { cmdWeb: impl } = await import('./web.js');
|
|
631
|
+
return impl({ flags, rest, user3libHome, dataDir, jsonMode, out });
|
|
632
|
+
}
|
|
633
|
+
|
|
613
634
|
// ─── 帮助 ─────────────────────────────────────────────────────────
|
|
614
635
|
|
|
615
636
|
function printHelp() {
|
|
@@ -638,7 +659,11 @@ function printHelp() {
|
|
|
638
659
|
3rdloop workflows 列出已注册的固定编排工作流
|
|
639
660
|
3rdloop run <工作流名> [--flag <值> ...] 以固定编排执行工作流(阻塞到终态)
|
|
640
661
|
3rdloop config list|get|set|unset ... 配置 .env 配置项(默认读写 ~/.3lib/.env)
|
|
662
|
+
3rdloop serve [--port N] [-w|--web] [--web-port N] 启动 Server HTTP 后端(供前端展示)
|
|
641
663
|
3rdloop update [--check] [--yes] [--force] [--registry <url>] 自更新到 npm 最新版
|
|
664
|
+
3rdloop web [--port N] [--backend <url>] 启动 Web 前端服务
|
|
665
|
+
3rdloop web install-ext <dir> 安装扩展(tag/issue/prcheck 等二级功能)
|
|
666
|
+
3rdloop web list-ext | remove-ext <name> 扩展管理
|
|
642
667
|
3rdloop doctor 环境自检
|
|
643
668
|
3rdloop version 版本信息
|
|
644
669
|
|