@zqagent/core 0.3.8 → 0.3.9
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.js +1 -1
- package/dist/internal/update/platform.cjs +1 -1
- package/dist/internal/update/platform.js +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/index.cjs
CHANGED
|
@@ -10395,6 +10395,12 @@ var ShellTaskManager = class {
|
|
|
10395
10395
|
tasks = /* @__PURE__ */ new Map();
|
|
10396
10396
|
seq = 0;
|
|
10397
10397
|
cleanupInstalled = false;
|
|
10398
|
+
/** 任务集合变化监听(server 用它推送,替代控制台的 5s 轮询) */
|
|
10399
|
+
listener = null;
|
|
10400
|
+
/** 注册变化监听(传 null 取消) */
|
|
10401
|
+
setListener(cb) {
|
|
10402
|
+
this.listener = cb;
|
|
10403
|
+
}
|
|
10398
10404
|
/** 启动一个后台任务,立即返回快照(不等退出) */
|
|
10399
10405
|
start(opts) {
|
|
10400
10406
|
this.installCleanup();
|
|
@@ -10422,16 +10428,26 @@ var ShellTaskManager = class {
|
|
|
10422
10428
|
this.tasks.set(id, task);
|
|
10423
10429
|
child.stdout?.on("data", (d) => task.stdout.add(d.toString("utf-8")));
|
|
10424
10430
|
child.stderr?.on("data", (d) => task.stderr.add(d.toString("utf-8")));
|
|
10425
|
-
child.on("error", (err) =>
|
|
10426
|
-
`
|
|
10431
|
+
child.on("error", (err) => {
|
|
10432
|
+
task.stderr.add(`[spawn error] ${err.message}
|
|
10433
|
+
`);
|
|
10434
|
+
if (task.status === "running") {
|
|
10435
|
+
task.endedAt = Date.now();
|
|
10436
|
+
task.status = "exited";
|
|
10437
|
+
this._notify(task.scope);
|
|
10438
|
+
}
|
|
10439
|
+
});
|
|
10427
10440
|
child.on("exit", (code, signal) => {
|
|
10428
10441
|
task.exitCode = code;
|
|
10429
10442
|
task.signal = signal;
|
|
10430
10443
|
task.endedAt = Date.now();
|
|
10431
10444
|
if (task.status !== "killed") task.status = "exited";
|
|
10445
|
+
this._notify(task.scope);
|
|
10432
10446
|
});
|
|
10433
10447
|
child.unref();
|
|
10434
|
-
|
|
10448
|
+
const snap = this.snapshot(task);
|
|
10449
|
+
this._notify(task.scope);
|
|
10450
|
+
return snap;
|
|
10435
10451
|
}
|
|
10436
10452
|
/** 读取任务输出与状态 */
|
|
10437
10453
|
output(taskId) {
|
|
@@ -10450,6 +10466,7 @@ var ShellTaskManager = class {
|
|
|
10450
10466
|
task.status = "killed";
|
|
10451
10467
|
task.endedAt = Date.now();
|
|
10452
10468
|
killTree(task.child.pid);
|
|
10469
|
+
this._notify(task.scope);
|
|
10453
10470
|
}
|
|
10454
10471
|
return this.snapshot(task);
|
|
10455
10472
|
}
|
|
@@ -10469,6 +10486,33 @@ var ShellTaskManager = class {
|
|
|
10469
10486
|
}
|
|
10470
10487
|
}
|
|
10471
10488
|
}
|
|
10489
|
+
/**
|
|
10490
|
+
* 通知订阅方「该归属下运行中的任务变了」。
|
|
10491
|
+
*
|
|
10492
|
+
* 只遍历内存任务表取字段,不调用 snapshot(后者会 join 两路 64KB 缓冲)。
|
|
10493
|
+
*/
|
|
10494
|
+
_notify(scope) {
|
|
10495
|
+
const listener = this.listener;
|
|
10496
|
+
if (!listener) return;
|
|
10497
|
+
const tasks = [];
|
|
10498
|
+
for (const task of this.tasks.values()) {
|
|
10499
|
+
if (task.scope !== scope || task.status !== "running") continue;
|
|
10500
|
+
tasks.push({
|
|
10501
|
+
task_id: task.id,
|
|
10502
|
+
command: task.command,
|
|
10503
|
+
status: task.status,
|
|
10504
|
+
running: true,
|
|
10505
|
+
exit_code: task.exitCode,
|
|
10506
|
+
signal: task.signal,
|
|
10507
|
+
duration_ms: Date.now() - task.startedAt,
|
|
10508
|
+
started_at: task.startedAt
|
|
10509
|
+
});
|
|
10510
|
+
}
|
|
10511
|
+
try {
|
|
10512
|
+
listener(scope, tasks);
|
|
10513
|
+
} catch {
|
|
10514
|
+
}
|
|
10515
|
+
}
|
|
10472
10516
|
snapshot(task) {
|
|
10473
10517
|
return {
|
|
10474
10518
|
task_id: task.id,
|