@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.js
CHANGED
|
@@ -10272,6 +10272,12 @@ var ShellTaskManager = class {
|
|
|
10272
10272
|
tasks = /* @__PURE__ */ new Map();
|
|
10273
10273
|
seq = 0;
|
|
10274
10274
|
cleanupInstalled = false;
|
|
10275
|
+
/** 任务集合变化监听(server 用它推送,替代控制台的 5s 轮询) */
|
|
10276
|
+
listener = null;
|
|
10277
|
+
/** 注册变化监听(传 null 取消) */
|
|
10278
|
+
setListener(cb) {
|
|
10279
|
+
this.listener = cb;
|
|
10280
|
+
}
|
|
10275
10281
|
/** 启动一个后台任务,立即返回快照(不等退出) */
|
|
10276
10282
|
start(opts) {
|
|
10277
10283
|
this.installCleanup();
|
|
@@ -10299,16 +10305,26 @@ var ShellTaskManager = class {
|
|
|
10299
10305
|
this.tasks.set(id, task);
|
|
10300
10306
|
child.stdout?.on("data", (d) => task.stdout.add(d.toString("utf-8")));
|
|
10301
10307
|
child.stderr?.on("data", (d) => task.stderr.add(d.toString("utf-8")));
|
|
10302
|
-
child.on("error", (err) =>
|
|
10303
|
-
`
|
|
10308
|
+
child.on("error", (err) => {
|
|
10309
|
+
task.stderr.add(`[spawn error] ${err.message}
|
|
10310
|
+
`);
|
|
10311
|
+
if (task.status === "running") {
|
|
10312
|
+
task.endedAt = Date.now();
|
|
10313
|
+
task.status = "exited";
|
|
10314
|
+
this._notify(task.scope);
|
|
10315
|
+
}
|
|
10316
|
+
});
|
|
10304
10317
|
child.on("exit", (code, signal) => {
|
|
10305
10318
|
task.exitCode = code;
|
|
10306
10319
|
task.signal = signal;
|
|
10307
10320
|
task.endedAt = Date.now();
|
|
10308
10321
|
if (task.status !== "killed") task.status = "exited";
|
|
10322
|
+
this._notify(task.scope);
|
|
10309
10323
|
});
|
|
10310
10324
|
child.unref();
|
|
10311
|
-
|
|
10325
|
+
const snap = this.snapshot(task);
|
|
10326
|
+
this._notify(task.scope);
|
|
10327
|
+
return snap;
|
|
10312
10328
|
}
|
|
10313
10329
|
/** 读取任务输出与状态 */
|
|
10314
10330
|
output(taskId) {
|
|
@@ -10327,6 +10343,7 @@ var ShellTaskManager = class {
|
|
|
10327
10343
|
task.status = "killed";
|
|
10328
10344
|
task.endedAt = Date.now();
|
|
10329
10345
|
killTree(task.child.pid);
|
|
10346
|
+
this._notify(task.scope);
|
|
10330
10347
|
}
|
|
10331
10348
|
return this.snapshot(task);
|
|
10332
10349
|
}
|
|
@@ -10346,6 +10363,33 @@ var ShellTaskManager = class {
|
|
|
10346
10363
|
}
|
|
10347
10364
|
}
|
|
10348
10365
|
}
|
|
10366
|
+
/**
|
|
10367
|
+
* 通知订阅方「该归属下运行中的任务变了」。
|
|
10368
|
+
*
|
|
10369
|
+
* 只遍历内存任务表取字段,不调用 snapshot(后者会 join 两路 64KB 缓冲)。
|
|
10370
|
+
*/
|
|
10371
|
+
_notify(scope) {
|
|
10372
|
+
const listener = this.listener;
|
|
10373
|
+
if (!listener) return;
|
|
10374
|
+
const tasks = [];
|
|
10375
|
+
for (const task of this.tasks.values()) {
|
|
10376
|
+
if (task.scope !== scope || task.status !== "running") continue;
|
|
10377
|
+
tasks.push({
|
|
10378
|
+
task_id: task.id,
|
|
10379
|
+
command: task.command,
|
|
10380
|
+
status: task.status,
|
|
10381
|
+
running: true,
|
|
10382
|
+
exit_code: task.exitCode,
|
|
10383
|
+
signal: task.signal,
|
|
10384
|
+
duration_ms: Date.now() - task.startedAt,
|
|
10385
|
+
started_at: task.startedAt
|
|
10386
|
+
});
|
|
10387
|
+
}
|
|
10388
|
+
try {
|
|
10389
|
+
listener(scope, tasks);
|
|
10390
|
+
} catch {
|
|
10391
|
+
}
|
|
10392
|
+
}
|
|
10349
10393
|
snapshot(task) {
|
|
10350
10394
|
return {
|
|
10351
10395
|
task_id: task.id,
|