mooncat-browser 0.1.0 → 0.2.0
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/browser-op/backend/browserd.cjs +4 -1
- package/browser-op/extension/server.cjs +3 -2
- package/browser-op/extension/service.cjs +7 -2
- package/browser-op/index.cjs +14 -17
- package/browser-op/webplater/dist/chrome-mv3/chunks/offscreen-JoFB8k4y.js +1 -0
- package/browser-op/webplater/dist/chrome-mv3/manifest.json +1 -1
- package/browser-op/webplater/dist/chrome-mv3/offscreen.html +1 -1
- package/browser-op/webplater/entrypoints/offscreen/main.ts +4 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +328 -83
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +63 -42
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +69 -73
- package/dist/config.js.map +1 -1
- package/dist/instance.d.ts +57 -0
- package/dist/instance.d.ts.map +1 -0
- package/dist/instance.js +128 -0
- package/dist/instance.js.map +1 -0
- package/dist/prepare-extension.d.ts +37 -0
- package/dist/prepare-extension.d.ts.map +1 -0
- package/dist/prepare-extension.js +144 -0
- package/dist/prepare-extension.js.map +1 -0
- package/dist/server.d.ts +38 -23
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +50 -35
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/browser/SKILL.md +23 -10
- package/skills/browser/references/collect.md +2 -0
- package/skills/browser/references/high-risk.md +25 -12
- package/skills/browser/references/probing.md +2 -0
- package/browser-op/webplater/dist/chrome-mv3/chunks/offscreen-CFXYw9Mo.js +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,39 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
// -*- coding: utf-8 -*-
|
|
2
3
|
// cli.ts — mooncat-browser 命令行入口。
|
|
3
4
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// mooncat-browser health [--port 17322]
|
|
7
|
-
// mooncat-browser stop [--port 17322]
|
|
8
|
-
// mooncat-browser open --url <url> [--port 17322]
|
|
9
|
-
// mooncat-browser install-extension
|
|
10
|
-
// mooncat-browser skills [--skill <name>] [--target <dir>] [--list]
|
|
5
|
+
// mooncat-browser 是独立包:不写全局 appData,不假设 mooncat space 目录。
|
|
6
|
+
// 所有运行数据由项目配置(config/browser.json 或 mooncat-browser.config.json)显式声明。
|
|
11
7
|
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
8
|
+
// 命令:
|
|
9
|
+
// mooncat-browser init [name] 初始化项目配置 + 数据目录
|
|
10
|
+
// mooncat-browser start <name> 启动实例(wrapper + browserd + Chrome)
|
|
11
|
+
// mooncat-browser start <name> --temp 临时实例(系统 temp,退出清理)
|
|
12
|
+
// mooncat-browser stop <name> graceful 停止实例
|
|
13
|
+
// mooncat-browser status <name> 查实例运行状态
|
|
14
|
+
// mooncat-browser health <name> 探测 browserd 是否就绪
|
|
15
|
+
// mooncat-browser open <name> --url <url> 打开/复用浏览器并导航
|
|
16
|
+
// mooncat-browser list 列出配置里的实例 + 运行状态
|
|
17
|
+
// mooncat-browser install-extension 打印 WebPlater 扩展路径
|
|
18
|
+
// mooncat-browser skills [--skill <name>] 安装内置 skills
|
|
19
|
+
//
|
|
20
|
+
// <name> 是 config 里 instances 的 key(默认实例叫 default)。
|
|
21
|
+
// --rpc-port / --health-port / --profile 等作为高级覆盖(覆盖配置文件值)。
|
|
14
22
|
import { Command } from "commander";
|
|
15
23
|
import { createRequire } from "node:module";
|
|
16
|
-
import { resolveConfig } from "./config.js";
|
|
17
24
|
import { BrowserClient } from "./client.js";
|
|
18
25
|
import { startService, readServiceState, serviceStatePath, browserdScriptPath } from "./server.js";
|
|
26
|
+
import { defaultInstanceEntry, findProjectConfig, InstanceNotFoundError, listInstanceNames, loadInstance, NotInitializedError, tempInstance, } from "./instance.js";
|
|
27
|
+
import { prepareExtension, verifyInstanceExtension } from "./prepare-extension.js";
|
|
19
28
|
import { fileURLToPath } from "node:url";
|
|
20
|
-
import { homedir } from "node:os";
|
|
21
29
|
import { join } from "node:path";
|
|
22
|
-
import { cpSync, existsSync, mkdirSync, readdirSync, rmSync } from "node:fs";
|
|
30
|
+
import { cpSync, existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
23
31
|
const require = createRequire(import.meta.url);
|
|
24
32
|
const __dirname = fileURLToPath(new URL(".", import.meta.url));
|
|
25
|
-
/** webplater
|
|
33
|
+
/** webplater 扩展已构建产物目录(install-extension 指向这里)。 */
|
|
26
34
|
function extensionDistDir() {
|
|
27
35
|
return process.env.MOONCAT_BROWSER_EXTENSION || join(__dirname, "..", "browser-op", "webplater", "dist", "chrome-mv3");
|
|
28
36
|
}
|
|
29
37
|
function printHeader(title) {
|
|
30
38
|
console.log(`\n[mooncat-browser] ${title}`);
|
|
31
39
|
}
|
|
32
|
-
/**
|
|
33
|
-
function
|
|
34
|
-
|
|
40
|
+
/** 把 commander 解析的 opts 转成 CliOverrides(只取高级覆盖字段)。 */
|
|
41
|
+
function optsToOverrides(opts) {
|
|
42
|
+
const num = (v) => (typeof v === "number" ? v : undefined);
|
|
43
|
+
const str = (v) => (typeof v === "string" ? v : undefined);
|
|
44
|
+
return {
|
|
45
|
+
rpcPort: num(opts.rpcPort) ?? num(opts.port),
|
|
46
|
+
port: num(opts.port) ?? num(opts.rpcPort),
|
|
47
|
+
healthPort: num(opts.healthPort),
|
|
48
|
+
extensionPort: num(opts.extensionPort),
|
|
49
|
+
profileDir: str(opts.profile),
|
|
50
|
+
stateDir: str(opts.stateDir),
|
|
51
|
+
logsDir: str(opts.logsDir),
|
|
52
|
+
extensionDir: str(opts.extensionDir),
|
|
53
|
+
chromePath: str(opts.chrome),
|
|
54
|
+
routeMode: str(opts.routeMode),
|
|
55
|
+
};
|
|
35
56
|
}
|
|
36
|
-
/** 轮询 rpcPort
|
|
57
|
+
/** 轮询 rpcPort,直到连不上(browserd 已退)或超时。返回 true 表示已退出。 */
|
|
37
58
|
async function waitForExit(rpcPort, timeoutMs) {
|
|
38
59
|
const deadline = Date.now() + timeoutMs;
|
|
39
60
|
while (Date.now() < deadline) {
|
|
@@ -41,7 +62,7 @@ async function waitForExit(rpcPort, timeoutMs) {
|
|
|
41
62
|
await fetch(`http://127.0.0.1:${rpcPort}/health`, {
|
|
42
63
|
signal: AbortSignal.timeout(1000),
|
|
43
64
|
});
|
|
44
|
-
//
|
|
65
|
+
// 还活着,继续等
|
|
45
66
|
}
|
|
46
67
|
catch {
|
|
47
68
|
return true; // 连不上 = 已退
|
|
@@ -50,72 +71,210 @@ async function waitForExit(rpcPort, timeoutMs) {
|
|
|
50
71
|
}
|
|
51
72
|
return false;
|
|
52
73
|
}
|
|
74
|
+
/** 友好处理 NotInitializedError / InstanceNotFoundError,其它原样抛。 */
|
|
75
|
+
function handleConfigError(e) {
|
|
76
|
+
if (e instanceof NotInitializedError || e instanceof InstanceNotFoundError) {
|
|
77
|
+
console.error(`\n[mooncat-browser] ${e.message}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
throw e;
|
|
81
|
+
}
|
|
53
82
|
async function run() {
|
|
54
83
|
const program = new Command();
|
|
55
84
|
program
|
|
56
85
|
.name("mooncat-browser")
|
|
57
|
-
.description("
|
|
86
|
+
.description("浏览器自动化工具包:可独立启动的本地服务 + JS/TS client (实例化、项目级配置)")
|
|
58
87
|
.version(getVersion());
|
|
88
|
+
// ─── init ───────────────────────────────────────────────────────────────
|
|
89
|
+
program
|
|
90
|
+
.command("init [name]")
|
|
91
|
+
.description("初始化项目配置 + 数据目录(默认实例名 default)")
|
|
92
|
+
.option("--dir <path>", "数据根目录(默认 .browser)")
|
|
93
|
+
.action((name, opts) => {
|
|
94
|
+
const instName = name || "default";
|
|
95
|
+
const dataRoot = opts.dir || ".browser";
|
|
96
|
+
const cwd = process.cwd();
|
|
97
|
+
// 选 config/browser.json 作为默认配置文件(config/ 目录更直观)
|
|
98
|
+
const cfgDir = join(cwd, "config");
|
|
99
|
+
const cfgPath = join(cfgDir, "browser.json");
|
|
100
|
+
if (existsSync(cfgPath)) {
|
|
101
|
+
console.error(`\n[mooncat-browser] config already exists: ${cfgPath}`);
|
|
102
|
+
console.error(` to add an instance, edit it manually or remove it first`);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
mkdirSync(cfgDir, { recursive: true });
|
|
106
|
+
const entry = {
|
|
107
|
+
...defaultInstanceEntry(instName),
|
|
108
|
+
profileDir: `${dataRoot}/${instName}/profile`,
|
|
109
|
+
stateDir: `${dataRoot}/${instName}/state`,
|
|
110
|
+
logsDir: `${dataRoot}/${instName}/logs`,
|
|
111
|
+
extensionDir: `${dataRoot}/${instName}/extension`,
|
|
112
|
+
};
|
|
113
|
+
const file = { instances: { [instName]: entry } };
|
|
114
|
+
writeFileSync(cfgPath, JSON.stringify(file, null, 2) + "\n", "utf8");
|
|
115
|
+
// 预创建数据目录(加 .gitkeep,方便进版本库)。extension 目录不预创建——
|
|
116
|
+
// 它由 prepare-extension 命令显式生成(含占位符替换),不该手动建空壳。
|
|
117
|
+
for (const sub of ["profile", "state", "logs"]) {
|
|
118
|
+
const d = join(cwd, dataRoot, instName, sub);
|
|
119
|
+
mkdirSync(d, { recursive: true });
|
|
120
|
+
writeFileSync(join(d, ".gitkeep"), "", "utf8");
|
|
121
|
+
}
|
|
122
|
+
printHeader(`initialized`);
|
|
123
|
+
console.log(` config : ${cfgPath}`);
|
|
124
|
+
console.log(` instance : ${instName}`);
|
|
125
|
+
console.log(` data : ${dataRoot}/${instName}/{profile,state,logs}`);
|
|
126
|
+
console.log(`\n next:`);
|
|
127
|
+
console.log(` mooncat-browser start ${instName} # CDP 路直跑`);
|
|
128
|
+
console.log(` mooncat-browser prepare-extension ${instName} # extension 路需先生成扩展目录`);
|
|
129
|
+
});
|
|
130
|
+
// ─── prepare-extension ──────────────────────────────────────────────────
|
|
131
|
+
program
|
|
132
|
+
.command("prepare-extension <name>")
|
|
133
|
+
.description("为实例生成 unpacked 扩展目录(替换 WS 端口占位符;然后手动 load unpacked 到 profileDir)")
|
|
134
|
+
.action((name, opts) => {
|
|
135
|
+
let cfg;
|
|
136
|
+
try {
|
|
137
|
+
const handle = findProjectConfig(process.cwd());
|
|
138
|
+
cfg = loadInstance(name, handle, optsToOverrides(opts));
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
handleConfigError(e);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
printHeader(`prepare extension for instance "${name}"`);
|
|
145
|
+
try {
|
|
146
|
+
const { replacedFiles, metadata, templateDir } = prepareExtension(cfg);
|
|
147
|
+
console.log(` template : ${templateDir}`);
|
|
148
|
+
console.log(` target : ${cfg.extensionDir}`);
|
|
149
|
+
console.log(` extensionPort : ${cfg.extensionPort}`);
|
|
150
|
+
console.log(` hostWsUrl : ${metadata.hostWsUrl}`);
|
|
151
|
+
console.log(` replaced files: ${replacedFiles}`);
|
|
152
|
+
console.log(` build version : ${metadata.sourceBuildVersion}`);
|
|
153
|
+
console.log(`\n next: 手动 load unpacked 到本实例的 Chrome profile`);
|
|
154
|
+
console.log(` 1. mooncat-browser start ${name} --route-mode extension`);
|
|
155
|
+
console.log(` 2. Chrome -> chrome://extensions -> 开发者模式 -> 加载已解压的扩展程序`);
|
|
156
|
+
console.log(` 3. 选择目录: ${cfg.extensionDir}`);
|
|
157
|
+
console.log(` 4. 重启浏览器(close + open)走 extension 路`);
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
console.error(`\n [ERROR] prepare failed: ${e.message}`);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
59
164
|
// ─── start ──────────────────────────────────────────────────────────────
|
|
60
165
|
program
|
|
61
|
-
.command("start")
|
|
62
|
-
.description("
|
|
63
|
-
.option("-p, --port <port>", "browserd RPC
|
|
166
|
+
.command("start <name>")
|
|
167
|
+
.description("启动实例(wrapper + browserd 常驻 + Chrome)")
|
|
168
|
+
.option("-p, --port <port>", "高级覆盖:browserd RPC 端口", (v) => Number(v))
|
|
64
169
|
.option("--rpc-port <port>", "同 --port", (v) => Number(v))
|
|
65
|
-
.option("--health-port <port>", "wrapper health
|
|
66
|
-
.option("--
|
|
67
|
-
.option("--
|
|
68
|
-
.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
170
|
+
.option("--health-port <port>", "高级覆盖:wrapper health 端口", (v) => Number(v))
|
|
171
|
+
.option("--extension-port <port>", "高级覆盖:extension WS 端口(第一版不消费)", (v) => Number(v))
|
|
172
|
+
.option("--profile <path>", "高级覆盖:Chrome user-data-dir")
|
|
173
|
+
.option("--state-dir <path>", "高级覆盖:wrapper/browserd 状态目录")
|
|
174
|
+
.option("--logs-dir <path>", "高级覆盖:日志目录")
|
|
175
|
+
.option("--chrome <path>", "高级覆盖:Chrome 可执行文件路径")
|
|
176
|
+
.option("--route-mode <mode>", "高级覆盖:路由模式(auto|cdp|extension)")
|
|
177
|
+
.option("--temp", "临时实例(系统 temp,退出清理,不读项目配置)")
|
|
178
|
+
.action(async (name, opts) => {
|
|
179
|
+
let cfg;
|
|
180
|
+
let cleanup = null;
|
|
181
|
+
try {
|
|
182
|
+
if (opts.temp) {
|
|
183
|
+
const t = tempInstance(name, optsToOverrides(opts));
|
|
184
|
+
cfg = t.cfg;
|
|
185
|
+
cleanup = t.cleanup;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
const handle = findProjectConfig(process.cwd());
|
|
189
|
+
cfg = loadInstance(name, handle, optsToOverrides(opts));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
handleConfigError(e);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
printHeader(`starting instance "${cfg.name}"`);
|
|
197
|
+
console.log(` rpc port : ${cfg.rpcPort} (clients connect here)`);
|
|
198
|
+
console.log(` health port : ${cfg.healthPort}`);
|
|
199
|
+
console.log(` extension port: ${cfg.extensionPort} (WS port for WebPlater extension)`);
|
|
200
|
+
console.log(` profile : ${cfg.profileDir}`);
|
|
201
|
+
console.log(` state : ${cfg.stateDir}`);
|
|
202
|
+
console.log(` logs : ${cfg.logsDir}`);
|
|
203
|
+
console.log(` extension dir : ${cfg.extensionDir}`);
|
|
204
|
+
console.log(` chrome : ${cfg.chromePath || "(auto-detect)"}`);
|
|
205
|
+
console.log(` browserd : ${browserdScriptPath()}`);
|
|
206
|
+
if (opts.temp)
|
|
207
|
+
console.log(` mode : TEMP (cleaned on exit)`);
|
|
208
|
+
// route=extension 前置检查:实例 extensionDir 必须先 prepare。
|
|
209
|
+
// route=cdp/auto 不需要(temp 也不需要)。
|
|
210
|
+
const wantExtension = cfg.routeMode === "extension";
|
|
211
|
+
if (wantExtension && !opts.temp) {
|
|
212
|
+
const issue = verifyInstanceExtension(cfg);
|
|
213
|
+
if (issue) {
|
|
214
|
+
console.error(`\n [ERROR] extension 目录未就绪: ${issue}`);
|
|
215
|
+
console.error(` run: mooncat-browser prepare-extension ${cfg.name}`);
|
|
216
|
+
if (cleanup)
|
|
217
|
+
cleanup();
|
|
218
|
+
process.exit(1);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
82
221
|
try {
|
|
83
222
|
await startService(cfg);
|
|
84
|
-
console.log(`\n service running. Ctrl+C to stop, or: mooncat-browser stop
|
|
223
|
+
console.log(`\n service running. Ctrl+C to stop, or: mooncat-browser stop ${cfg.name}`);
|
|
85
224
|
}
|
|
86
225
|
catch (e) {
|
|
226
|
+
if (cleanup)
|
|
227
|
+
cleanup();
|
|
87
228
|
console.error(`\n [ERROR] failed to start: ${e.message}`);
|
|
88
229
|
process.exit(1);
|
|
89
230
|
}
|
|
231
|
+
// temp 模式:wrapper 退出时清理(SIGINT/SIGTERM 走 stop(),process.exit 前也清)
|
|
232
|
+
if (cleanup) {
|
|
233
|
+
process.on("exit", () => cleanup());
|
|
234
|
+
}
|
|
90
235
|
});
|
|
91
236
|
// ─── health ─────────────────────────────────────────────────────────────
|
|
92
237
|
program
|
|
93
|
-
.command("health")
|
|
94
|
-
.description("
|
|
95
|
-
.
|
|
96
|
-
|
|
97
|
-
|
|
238
|
+
.command("health <name>")
|
|
239
|
+
.description("探测实例的 browserd 是否就绪 + 是否已 open")
|
|
240
|
+
.action(async (name, opts) => {
|
|
241
|
+
let cfg;
|
|
242
|
+
try {
|
|
243
|
+
const handle = findProjectConfig(process.cwd());
|
|
244
|
+
cfg = loadInstance(name, handle, optsToOverrides(opts));
|
|
245
|
+
}
|
|
246
|
+
catch (e) {
|
|
247
|
+
handleConfigError(e);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const client = new BrowserClient({ port: cfg.rpcPort });
|
|
98
251
|
const h = await client.health();
|
|
99
252
|
if (!h) {
|
|
100
253
|
console.error(`\n[mooncat-browser] browserd not reachable at ${client.baseUrl}`);
|
|
101
|
-
console.error(` hint: run \`mooncat-browser start\` first`);
|
|
254
|
+
console.error(` hint: run \`mooncat-browser start ${name}\` first`);
|
|
102
255
|
process.exit(1);
|
|
103
256
|
}
|
|
104
|
-
printHeader(`health @ ${client.baseUrl}`);
|
|
257
|
+
printHeader(`health @ ${client.baseUrl} (instance ${name})`);
|
|
105
258
|
console.log(JSON.stringify(h, null, 2));
|
|
106
259
|
});
|
|
107
260
|
// ─── stop ───────────────────────────────────────────────────────────────
|
|
108
261
|
program
|
|
109
|
-
.command("stop")
|
|
110
|
-
.description("graceful
|
|
111
|
-
.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
262
|
+
.command("stop <name>")
|
|
263
|
+
.description("graceful 停止实例(关闭 Chrome + 退出 wrapper,不重启)")
|
|
264
|
+
.action(async (name, opts) => {
|
|
265
|
+
let cfg;
|
|
266
|
+
try {
|
|
267
|
+
const handle = findProjectConfig(process.cwd());
|
|
268
|
+
cfg = loadInstance(name, handle, optsToOverrides(opts));
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
handleConfigError(e);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const state = readServiceState(cfg);
|
|
115
275
|
const healthPort = state?.healthPort ?? cfg.healthPort;
|
|
116
|
-
printHeader(`stopping
|
|
117
|
-
// 1) 优先走 wrapper /shutdown
|
|
118
|
-
// healthPort 从 start 时持久化的状态文件读,避免 CLI 覆盖不一致。
|
|
276
|
+
printHeader(`stopping instance "${name}" (rpc :${cfg.rpcPort})`);
|
|
277
|
+
// 1) 优先走 wrapper /shutdown(wrapper 协调 graceful 关闭 + 不重启)
|
|
119
278
|
let viaWrapper = false;
|
|
120
279
|
try {
|
|
121
280
|
const resp = await fetch(`http://127.0.0.1:${healthPort}/shutdown`, { method: "POST" });
|
|
@@ -125,7 +284,7 @@ async function run() {
|
|
|
125
284
|
}
|
|
126
285
|
}
|
|
127
286
|
catch {
|
|
128
|
-
/* wrapper
|
|
287
|
+
/* wrapper 不在,回落到直接关 browserd */
|
|
129
288
|
}
|
|
130
289
|
// 2) wrapper 不在 → 直接发 close 给 browserd
|
|
131
290
|
if (!viaWrapper) {
|
|
@@ -138,14 +297,13 @@ async function run() {
|
|
|
138
297
|
console.error(` [WARN] direct close failed: ${e.message}`);
|
|
139
298
|
}
|
|
140
299
|
}
|
|
141
|
-
// 3) 等 browserd
|
|
300
|
+
// 3) 等 browserd 退出(最多 ~12s)
|
|
142
301
|
const gone = await waitForExit(cfg.rpcPort, 12000);
|
|
143
302
|
console.log(` browserd ${gone ? "stopped" : "still alive (may be restarting or stuck)"}`);
|
|
144
303
|
// 4) 清理可能残留的状态文件
|
|
145
304
|
try {
|
|
146
|
-
if (existsSync(serviceStatePath(cfg
|
|
147
|
-
|
|
148
|
-
unlinkSync(serviceStatePath(cfg.rpcPort));
|
|
305
|
+
if (existsSync(serviceStatePath(cfg))) {
|
|
306
|
+
unlinkSyncSafe(serviceStatePath(cfg));
|
|
149
307
|
console.log(` removed stale state file`);
|
|
150
308
|
}
|
|
151
309
|
}
|
|
@@ -154,19 +312,60 @@ async function run() {
|
|
|
154
312
|
}
|
|
155
313
|
console.log(` done. (Chrome closed gracefully, login state preserved)`);
|
|
156
314
|
});
|
|
315
|
+
// ─── status ─────────────────────────────────────────────────────────────
|
|
316
|
+
program
|
|
317
|
+
.command("status <name>")
|
|
318
|
+
.description("查实例运行状态(走 wrapper /health,含 browserd/chrome pid)")
|
|
319
|
+
.action(async (name, opts) => {
|
|
320
|
+
let cfg;
|
|
321
|
+
try {
|
|
322
|
+
const handle = findProjectConfig(process.cwd());
|
|
323
|
+
cfg = loadInstance(name, handle, optsToOverrides(opts));
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
handleConfigError(e);
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const state = readServiceState(cfg);
|
|
330
|
+
const healthPort = state?.healthPort ?? cfg.healthPort;
|
|
331
|
+
printHeader(`status of instance "${name}"`);
|
|
332
|
+
try {
|
|
333
|
+
const resp = await fetch(`http://127.0.0.1:${healthPort}/health`, {
|
|
334
|
+
signal: AbortSignal.timeout(2000),
|
|
335
|
+
});
|
|
336
|
+
if (!resp.ok)
|
|
337
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
338
|
+
const s = (await resp.json());
|
|
339
|
+
console.log(JSON.stringify(s, null, 2));
|
|
340
|
+
}
|
|
341
|
+
catch (e) {
|
|
342
|
+
console.log(` not running (${e.message})`);
|
|
343
|
+
if (state)
|
|
344
|
+
console.log(` (stale state file: pid=${state.pid}, started ${state.startedAt})`);
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
});
|
|
157
348
|
// ─── open ───────────────────────────────────────────────────────────────
|
|
158
349
|
program
|
|
159
|
-
.command("open")
|
|
160
|
-
.description("
|
|
350
|
+
.command("open <name>")
|
|
351
|
+
.description("连接已运行实例,打开/复用浏览器并导航到 URL")
|
|
161
352
|
.requiredOption("-u, --url <url>", "要打开的 URL")
|
|
162
|
-
.option("
|
|
163
|
-
.
|
|
164
|
-
|
|
165
|
-
|
|
353
|
+
.option("--headless", "无头模式(仅 CDP 路生效)")
|
|
354
|
+
.action(async (name, opts) => {
|
|
355
|
+
let cfg;
|
|
356
|
+
try {
|
|
357
|
+
const handle = findProjectConfig(process.cwd());
|
|
358
|
+
cfg = loadInstance(name, handle, optsToOverrides(opts));
|
|
359
|
+
}
|
|
360
|
+
catch (e) {
|
|
361
|
+
handleConfigError(e);
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
const client = new BrowserClient({ port: cfg.rpcPort });
|
|
166
365
|
const h = await client.health();
|
|
167
366
|
if (!h) {
|
|
168
367
|
console.error(`\n[mooncat-browser] browserd not reachable at ${client.baseUrl}`);
|
|
169
|
-
console.error(` hint: run \`mooncat-browser start\` first`);
|
|
368
|
+
console.error(` hint: run \`mooncat-browser start ${name}\` first`);
|
|
170
369
|
process.exit(1);
|
|
171
370
|
}
|
|
172
371
|
if (!h.open && !h.browserOpen) {
|
|
@@ -175,9 +374,48 @@ async function run() {
|
|
|
175
374
|
}
|
|
176
375
|
const tab = await client.newTab({ url: opts.url });
|
|
177
376
|
printHeader(`opened`);
|
|
178
|
-
console.log(`
|
|
179
|
-
console.log(`
|
|
180
|
-
console.log(`
|
|
377
|
+
console.log(` instance : ${name}`);
|
|
378
|
+
console.log(` url : ${opts.url}`);
|
|
379
|
+
console.log(` pageHandle : ${JSON.stringify(tab.pageHandle)}`);
|
|
380
|
+
console.log(` reused : ${tab.reused ?? false}`);
|
|
381
|
+
});
|
|
382
|
+
// ─── list ───────────────────────────────────────────────────────────────
|
|
383
|
+
program
|
|
384
|
+
.command("list")
|
|
385
|
+
.description("列出项目配置里所有实例 + 运行状态")
|
|
386
|
+
.action(async () => {
|
|
387
|
+
let handle;
|
|
388
|
+
try {
|
|
389
|
+
handle = findProjectConfig(process.cwd());
|
|
390
|
+
}
|
|
391
|
+
catch (e) {
|
|
392
|
+
handleConfigError(e);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const names = listInstanceNames(handle);
|
|
396
|
+
printHeader(`instances in ${handle.configPath}`);
|
|
397
|
+
if (!names.length) {
|
|
398
|
+
console.log(` (no instances defined)`);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
for (const n of names) {
|
|
402
|
+
const cfg = loadInstance(n, handle);
|
|
403
|
+
const state = readServiceState(cfg);
|
|
404
|
+
let running = false;
|
|
405
|
+
if (state) {
|
|
406
|
+
try {
|
|
407
|
+
const resp = await fetch(`http://127.0.0.1:${state.healthPort}/health`, {
|
|
408
|
+
signal: AbortSignal.timeout(1000),
|
|
409
|
+
});
|
|
410
|
+
running = resp.ok;
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
running = false;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
const flag = running ? "running" : state ? "stale" : "stopped";
|
|
417
|
+
console.log(` ${n.padEnd(16)} rpc:${cfg.rpcPort} health:${cfg.healthPort} [${flag}]`);
|
|
418
|
+
}
|
|
181
419
|
});
|
|
182
420
|
// ─── install-extension ──────────────────────────────────────────────────
|
|
183
421
|
program
|
|
@@ -196,15 +434,16 @@ async function run() {
|
|
|
196
434
|
console.log(` 1. enable "Developer mode" (top right)`);
|
|
197
435
|
console.log(` 2. click "Load unpacked"`);
|
|
198
436
|
console.log(` 3. select the directory above`);
|
|
199
|
-
console.log(`\n
|
|
437
|
+
console.log(`\n 装扩展后,重启浏览器(close + open)才会切到 extension 路由。`);
|
|
438
|
+
console.log(` 注意:第一版 extension 路是单实例(WS 端口固定)。多实例请走 CDP 路。`);
|
|
200
439
|
});
|
|
201
440
|
// ─── skills ─────────────────────────────────────────────────────────────
|
|
202
441
|
program
|
|
203
442
|
.command("skills")
|
|
204
|
-
.description("安装/更新内置 skills
|
|
205
|
-
.option("-s, --skill <name>", "只安装指定 skill
|
|
206
|
-
.option("-t, --target <dir>", "
|
|
207
|
-
.option("--list", "只列出包内的 skills
|
|
443
|
+
.description("安装/更新内置 skills 到项目本地 .agents/skills(覆盖同名,幂等可重复执行)")
|
|
444
|
+
.option("-s, --skill <name>", "只安装指定 skill(默认全部)")
|
|
445
|
+
.option("-t, --target <dir>", "自定义目标目录(默认 .agents/skills)")
|
|
446
|
+
.option("--list", "只列出包内的 skills,不拷贝")
|
|
208
447
|
.action((opts) => {
|
|
209
448
|
const srcRoot = skillsSourceDir();
|
|
210
449
|
if (!existsSync(srcRoot)) {
|
|
@@ -212,7 +451,6 @@ async function run() {
|
|
|
212
451
|
console.error(` hint: 包发布时可能漏了 skills/ 目录`);
|
|
213
452
|
process.exit(1);
|
|
214
453
|
}
|
|
215
|
-
// 列出源里的 skill 子目录(每个含 SKILL.md)
|
|
216
454
|
const names = readdirSync(srcRoot, { withFileTypes: true })
|
|
217
455
|
.filter((d) => d.isDirectory())
|
|
218
456
|
.filter((d) => existsSync(join(srcRoot, d.name, "SKILL.md")))
|
|
@@ -236,7 +474,6 @@ async function run() {
|
|
|
236
474
|
for (const n of requested) {
|
|
237
475
|
const src = join(srcRoot, n);
|
|
238
476
|
const dest = join(destRoot, n);
|
|
239
|
-
// 先清空目标 skill 目录再拷贝,保证与源完全一致(删除源里已移除的旧文件,如重命名后的残留)
|
|
240
477
|
rmSync(dest, { recursive: true, force: true });
|
|
241
478
|
cpSync(src, dest, { recursive: true, force: true });
|
|
242
479
|
console.log(` [ok] ${n} -> ${dest}`);
|
|
@@ -245,17 +482,25 @@ async function run() {
|
|
|
245
482
|
});
|
|
246
483
|
await program.parseAsync(process.argv);
|
|
247
484
|
}
|
|
248
|
-
/**
|
|
485
|
+
/** 安全 unlink(独立函数,方便 stop 里 import 前已可用)。 */
|
|
486
|
+
function unlinkSyncSafe(p) {
|
|
487
|
+
try {
|
|
488
|
+
rmSync(p, { force: true });
|
|
489
|
+
}
|
|
490
|
+
catch {
|
|
491
|
+
/* ignore */
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
/** 包内 skills 源目录:dist/cli.js -> ../skills;源码运行 -> ../../skills。 */
|
|
249
495
|
function skillsSourceDir() {
|
|
250
496
|
return process.env.MOONCAT_BROWSER_SKILLS_SRC || join(__dirname, "..", "skills");
|
|
251
497
|
}
|
|
252
|
-
/** skills
|
|
498
|
+
/** skills 安装默认目标:项目本地 .agents/skills(cwd 下)。
|
|
499
|
+
* 与 mooncat-browser "项目级、不写全局" 的定位一致——skills 跟着项目走,不污染全局。 */
|
|
253
500
|
function defaultSkillsTarget() {
|
|
254
|
-
return join(
|
|
501
|
+
return join(process.cwd(), ".agents", "skills");
|
|
255
502
|
}
|
|
256
503
|
function getVersion() {
|
|
257
|
-
// 编译后 dist/cli.js 读 ../package.json;源码运行时读 ../../package.json
|
|
258
|
-
// 统一用相对包根查找(容忍 dist/ 与 src/ 两种位置)
|
|
259
504
|
const candidates = [
|
|
260
505
|
join(__dirname, "..", "package.json"),
|
|
261
506
|
join(__dirname, "..", "..", "package.json"),
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|