@zqagent/core 0.3.8 → 0.3.10
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/dist/index.cjs +47 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +47 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/tools/git.cjs +47 -3
- package/dist/internal/tools/git.cjs.map +1 -1
- package/dist/internal/tools/git.js +47 -3
- package/dist/internal/tools/git.js.map +1 -1
- package/dist/internal/tools/shell.cjs +54 -5
- package/dist/internal/tools/shell.cjs.map +1 -1
- package/dist/internal/tools/shell.d.cts +26 -1
- package/dist/internal/tools/shell.d.ts +26 -1
- package/dist/internal/tools/shell.js +52 -4
- package/dist/internal/tools/shell.js.map +1 -1
- package/dist/internal/update/controller.cjs +1 -1
- package/dist/internal/update/controller.cjs.map +1 -1
- package/dist/internal/update/controller.js +1 -1
- package/dist/internal/update/controller.js.map +1 -1
- package/dist/internal/update/platform.cjs +1 -1
- package/dist/internal/update/platform.cjs.map +1 -1
- package/dist/internal/update/platform.js +1 -1
- package/dist/internal/update/platform.js.map +1 -1
- package/dist/tools/explore.cjs +47 -3
- package/dist/tools/explore.cjs.map +1 -1
- package/dist/tools/explore.js +47 -3
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/git.cjs +47 -3
- package/dist/tools/git.cjs.map +1 -1
- package/dist/tools/git.js +47 -3
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/media.cjs +47 -3
- package/dist/tools/media.cjs.map +1 -1
- package/dist/tools/media.js +47 -3
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/search.cjs +47 -3
- package/dist/tools/search.cjs.map +1 -1
- package/dist/tools/search.js +47 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.cjs +54 -5
- package/dist/tools/shell.cjs.map +1 -1
- package/dist/tools/shell.d.cts +1 -1
- package/dist/tools/shell.d.ts +1 -1
- package/dist/tools/shell.js +52 -4
- package/dist/tools/shell.js.map +1 -1
- package/package.json +2 -2
package/dist/tools/explore.js
CHANGED
|
@@ -4494,6 +4494,12 @@ var ShellTaskManager = class {
|
|
|
4494
4494
|
tasks = /* @__PURE__ */ new Map();
|
|
4495
4495
|
seq = 0;
|
|
4496
4496
|
cleanupInstalled = false;
|
|
4497
|
+
/** 任务集合变化监听(server 用它推送,替代控制台的 5s 轮询) */
|
|
4498
|
+
listener = null;
|
|
4499
|
+
/** 注册变化监听(传 null 取消) */
|
|
4500
|
+
setListener(cb) {
|
|
4501
|
+
this.listener = cb;
|
|
4502
|
+
}
|
|
4497
4503
|
/** 启动一个后台任务,立即返回快照(不等退出) */
|
|
4498
4504
|
start(opts) {
|
|
4499
4505
|
this.installCleanup();
|
|
@@ -4521,16 +4527,26 @@ var ShellTaskManager = class {
|
|
|
4521
4527
|
this.tasks.set(id, task);
|
|
4522
4528
|
child.stdout?.on("data", (d) => task.stdout.add(d.toString("utf-8")));
|
|
4523
4529
|
child.stderr?.on("data", (d) => task.stderr.add(d.toString("utf-8")));
|
|
4524
|
-
child.on("error", (err) =>
|
|
4525
|
-
`
|
|
4530
|
+
child.on("error", (err) => {
|
|
4531
|
+
task.stderr.add(`[spawn error] ${err.message}
|
|
4532
|
+
`);
|
|
4533
|
+
if (task.status === "running") {
|
|
4534
|
+
task.endedAt = Date.now();
|
|
4535
|
+
task.status = "exited";
|
|
4536
|
+
this._notify(task.scope);
|
|
4537
|
+
}
|
|
4538
|
+
});
|
|
4526
4539
|
child.on("exit", (code, signal) => {
|
|
4527
4540
|
task.exitCode = code;
|
|
4528
4541
|
task.signal = signal;
|
|
4529
4542
|
task.endedAt = Date.now();
|
|
4530
4543
|
if (task.status !== "killed") task.status = "exited";
|
|
4544
|
+
this._notify(task.scope);
|
|
4531
4545
|
});
|
|
4532
4546
|
child.unref();
|
|
4533
|
-
|
|
4547
|
+
const snap = this.snapshot(task);
|
|
4548
|
+
this._notify(task.scope);
|
|
4549
|
+
return snap;
|
|
4534
4550
|
}
|
|
4535
4551
|
/** 读取任务输出与状态 */
|
|
4536
4552
|
output(taskId) {
|
|
@@ -4549,6 +4565,7 @@ var ShellTaskManager = class {
|
|
|
4549
4565
|
task.status = "killed";
|
|
4550
4566
|
task.endedAt = Date.now();
|
|
4551
4567
|
killTree(task.child.pid);
|
|
4568
|
+
this._notify(task.scope);
|
|
4552
4569
|
}
|
|
4553
4570
|
return this.snapshot(task);
|
|
4554
4571
|
}
|
|
@@ -4568,6 +4585,33 @@ var ShellTaskManager = class {
|
|
|
4568
4585
|
}
|
|
4569
4586
|
}
|
|
4570
4587
|
}
|
|
4588
|
+
/**
|
|
4589
|
+
* 通知订阅方「该归属下运行中的任务变了」。
|
|
4590
|
+
*
|
|
4591
|
+
* 只遍历内存任务表取字段,不调用 snapshot(后者会 join 两路 64KB 缓冲)。
|
|
4592
|
+
*/
|
|
4593
|
+
_notify(scope) {
|
|
4594
|
+
const listener = this.listener;
|
|
4595
|
+
if (!listener) return;
|
|
4596
|
+
const tasks = [];
|
|
4597
|
+
for (const task of this.tasks.values()) {
|
|
4598
|
+
if (task.scope !== scope || task.status !== "running") continue;
|
|
4599
|
+
tasks.push({
|
|
4600
|
+
task_id: task.id,
|
|
4601
|
+
command: task.command,
|
|
4602
|
+
status: task.status,
|
|
4603
|
+
running: true,
|
|
4604
|
+
exit_code: task.exitCode,
|
|
4605
|
+
signal: task.signal,
|
|
4606
|
+
duration_ms: Date.now() - task.startedAt,
|
|
4607
|
+
started_at: task.startedAt
|
|
4608
|
+
});
|
|
4609
|
+
}
|
|
4610
|
+
try {
|
|
4611
|
+
listener(scope, tasks);
|
|
4612
|
+
} catch {
|
|
4613
|
+
}
|
|
4614
|
+
}
|
|
4571
4615
|
snapshot(task) {
|
|
4572
4616
|
return {
|
|
4573
4617
|
task_id: task.id,
|