@zqagent/core 0.3.7 → 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/tools/media.cjs
CHANGED
|
@@ -256,6 +256,12 @@ var ShellTaskManager = class {
|
|
|
256
256
|
tasks = /* @__PURE__ */ new Map();
|
|
257
257
|
seq = 0;
|
|
258
258
|
cleanupInstalled = false;
|
|
259
|
+
/** 任务集合变化监听(server 用它推送,替代控制台的 5s 轮询) */
|
|
260
|
+
listener = null;
|
|
261
|
+
/** 注册变化监听(传 null 取消) */
|
|
262
|
+
setListener(cb) {
|
|
263
|
+
this.listener = cb;
|
|
264
|
+
}
|
|
259
265
|
/** 启动一个后台任务,立即返回快照(不等退出) */
|
|
260
266
|
start(opts) {
|
|
261
267
|
this.installCleanup();
|
|
@@ -283,16 +289,26 @@ var ShellTaskManager = class {
|
|
|
283
289
|
this.tasks.set(id, task);
|
|
284
290
|
child.stdout?.on("data", (d) => task.stdout.add(d.toString("utf-8")));
|
|
285
291
|
child.stderr?.on("data", (d) => task.stderr.add(d.toString("utf-8")));
|
|
286
|
-
child.on("error", (err) =>
|
|
287
|
-
`
|
|
292
|
+
child.on("error", (err) => {
|
|
293
|
+
task.stderr.add(`[spawn error] ${err.message}
|
|
294
|
+
`);
|
|
295
|
+
if (task.status === "running") {
|
|
296
|
+
task.endedAt = Date.now();
|
|
297
|
+
task.status = "exited";
|
|
298
|
+
this._notify(task.scope);
|
|
299
|
+
}
|
|
300
|
+
});
|
|
288
301
|
child.on("exit", (code, signal) => {
|
|
289
302
|
task.exitCode = code;
|
|
290
303
|
task.signal = signal;
|
|
291
304
|
task.endedAt = Date.now();
|
|
292
305
|
if (task.status !== "killed") task.status = "exited";
|
|
306
|
+
this._notify(task.scope);
|
|
293
307
|
});
|
|
294
308
|
child.unref();
|
|
295
|
-
|
|
309
|
+
const snap = this.snapshot(task);
|
|
310
|
+
this._notify(task.scope);
|
|
311
|
+
return snap;
|
|
296
312
|
}
|
|
297
313
|
/** 读取任务输出与状态 */
|
|
298
314
|
output(taskId) {
|
|
@@ -311,6 +327,7 @@ var ShellTaskManager = class {
|
|
|
311
327
|
task.status = "killed";
|
|
312
328
|
task.endedAt = Date.now();
|
|
313
329
|
killTree(task.child.pid);
|
|
330
|
+
this._notify(task.scope);
|
|
314
331
|
}
|
|
315
332
|
return this.snapshot(task);
|
|
316
333
|
}
|
|
@@ -330,6 +347,33 @@ var ShellTaskManager = class {
|
|
|
330
347
|
}
|
|
331
348
|
}
|
|
332
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* 通知订阅方「该归属下运行中的任务变了」。
|
|
352
|
+
*
|
|
353
|
+
* 只遍历内存任务表取字段,不调用 snapshot(后者会 join 两路 64KB 缓冲)。
|
|
354
|
+
*/
|
|
355
|
+
_notify(scope) {
|
|
356
|
+
const listener = this.listener;
|
|
357
|
+
if (!listener) return;
|
|
358
|
+
const tasks = [];
|
|
359
|
+
for (const task of this.tasks.values()) {
|
|
360
|
+
if (task.scope !== scope || task.status !== "running") continue;
|
|
361
|
+
tasks.push({
|
|
362
|
+
task_id: task.id,
|
|
363
|
+
command: task.command,
|
|
364
|
+
status: task.status,
|
|
365
|
+
running: true,
|
|
366
|
+
exit_code: task.exitCode,
|
|
367
|
+
signal: task.signal,
|
|
368
|
+
duration_ms: Date.now() - task.startedAt,
|
|
369
|
+
started_at: task.startedAt
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
try {
|
|
373
|
+
listener(scope, tasks);
|
|
374
|
+
} catch {
|
|
375
|
+
}
|
|
376
|
+
}
|
|
333
377
|
snapshot(task) {
|
|
334
378
|
return {
|
|
335
379
|
task_id: task.id,
|