@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.cjs
CHANGED
|
@@ -4523,6 +4523,12 @@ var ShellTaskManager = class {
|
|
|
4523
4523
|
tasks = /* @__PURE__ */ new Map();
|
|
4524
4524
|
seq = 0;
|
|
4525
4525
|
cleanupInstalled = false;
|
|
4526
|
+
/** 任务集合变化监听(server 用它推送,替代控制台的 5s 轮询) */
|
|
4527
|
+
listener = null;
|
|
4528
|
+
/** 注册变化监听(传 null 取消) */
|
|
4529
|
+
setListener(cb) {
|
|
4530
|
+
this.listener = cb;
|
|
4531
|
+
}
|
|
4526
4532
|
/** 启动一个后台任务,立即返回快照(不等退出) */
|
|
4527
4533
|
start(opts) {
|
|
4528
4534
|
this.installCleanup();
|
|
@@ -4550,16 +4556,26 @@ var ShellTaskManager = class {
|
|
|
4550
4556
|
this.tasks.set(id, task);
|
|
4551
4557
|
child.stdout?.on("data", (d) => task.stdout.add(d.toString("utf-8")));
|
|
4552
4558
|
child.stderr?.on("data", (d) => task.stderr.add(d.toString("utf-8")));
|
|
4553
|
-
child.on("error", (err) =>
|
|
4554
|
-
`
|
|
4559
|
+
child.on("error", (err) => {
|
|
4560
|
+
task.stderr.add(`[spawn error] ${err.message}
|
|
4561
|
+
`);
|
|
4562
|
+
if (task.status === "running") {
|
|
4563
|
+
task.endedAt = Date.now();
|
|
4564
|
+
task.status = "exited";
|
|
4565
|
+
this._notify(task.scope);
|
|
4566
|
+
}
|
|
4567
|
+
});
|
|
4555
4568
|
child.on("exit", (code, signal) => {
|
|
4556
4569
|
task.exitCode = code;
|
|
4557
4570
|
task.signal = signal;
|
|
4558
4571
|
task.endedAt = Date.now();
|
|
4559
4572
|
if (task.status !== "killed") task.status = "exited";
|
|
4573
|
+
this._notify(task.scope);
|
|
4560
4574
|
});
|
|
4561
4575
|
child.unref();
|
|
4562
|
-
|
|
4576
|
+
const snap = this.snapshot(task);
|
|
4577
|
+
this._notify(task.scope);
|
|
4578
|
+
return snap;
|
|
4563
4579
|
}
|
|
4564
4580
|
/** 读取任务输出与状态 */
|
|
4565
4581
|
output(taskId) {
|
|
@@ -4578,6 +4594,7 @@ var ShellTaskManager = class {
|
|
|
4578
4594
|
task.status = "killed";
|
|
4579
4595
|
task.endedAt = Date.now();
|
|
4580
4596
|
killTree(task.child.pid);
|
|
4597
|
+
this._notify(task.scope);
|
|
4581
4598
|
}
|
|
4582
4599
|
return this.snapshot(task);
|
|
4583
4600
|
}
|
|
@@ -4597,6 +4614,33 @@ var ShellTaskManager = class {
|
|
|
4597
4614
|
}
|
|
4598
4615
|
}
|
|
4599
4616
|
}
|
|
4617
|
+
/**
|
|
4618
|
+
* 通知订阅方「该归属下运行中的任务变了」。
|
|
4619
|
+
*
|
|
4620
|
+
* 只遍历内存任务表取字段,不调用 snapshot(后者会 join 两路 64KB 缓冲)。
|
|
4621
|
+
*/
|
|
4622
|
+
_notify(scope) {
|
|
4623
|
+
const listener = this.listener;
|
|
4624
|
+
if (!listener) return;
|
|
4625
|
+
const tasks = [];
|
|
4626
|
+
for (const task of this.tasks.values()) {
|
|
4627
|
+
if (task.scope !== scope || task.status !== "running") continue;
|
|
4628
|
+
tasks.push({
|
|
4629
|
+
task_id: task.id,
|
|
4630
|
+
command: task.command,
|
|
4631
|
+
status: task.status,
|
|
4632
|
+
running: true,
|
|
4633
|
+
exit_code: task.exitCode,
|
|
4634
|
+
signal: task.signal,
|
|
4635
|
+
duration_ms: Date.now() - task.startedAt,
|
|
4636
|
+
started_at: task.startedAt
|
|
4637
|
+
});
|
|
4638
|
+
}
|
|
4639
|
+
try {
|
|
4640
|
+
listener(scope, tasks);
|
|
4641
|
+
} catch {
|
|
4642
|
+
}
|
|
4643
|
+
}
|
|
4600
4644
|
snapshot(task) {
|
|
4601
4645
|
return {
|
|
4602
4646
|
task_id: task.id,
|