@kiturone/kapibala 0.0.7 → 0.0.8
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 +49 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -2
- package/dist/index.d.ts +22 -2
- package/dist/index.js +49 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -10839,6 +10839,9 @@ var AgentRuntime = class {
|
|
|
10839
10839
|
controllers = /* @__PURE__ */ new Map();
|
|
10840
10840
|
timers = /* @__PURE__ */ new Map();
|
|
10841
10841
|
stateListeners = /* @__PURE__ */ new Set();
|
|
10842
|
+
/** 宿主观察订阅独立于调度等待;关闭宿主订阅不能影响任务收口。 */
|
|
10843
|
+
taskChangeListeners = /* @__PURE__ */ new Set();
|
|
10844
|
+
taskChangeNotificationPending = false;
|
|
10842
10845
|
outbox;
|
|
10843
10846
|
runningPromises = /* @__PURE__ */ new Map();
|
|
10844
10847
|
runner;
|
|
@@ -10873,6 +10876,25 @@ var AgentRuntime = class {
|
|
|
10873
10876
|
const task = this.tasks.get(agentId);
|
|
10874
10877
|
return task ? structuredClone(task) : void 0;
|
|
10875
10878
|
}
|
|
10879
|
+
/**
|
|
10880
|
+
* 订阅任务创建与状态变化;通知只表示快照可能已更新,不提供可变任务对象。
|
|
10881
|
+
* 同一轮微任务内的变化可合并,不保证逐个中间状态;订阅时不主动发送通知,
|
|
10882
|
+
* 宿主应先订阅,再通过 listTasks 按会话和根任务读取独立复制的快照。
|
|
10883
|
+
* 监听器的同步异常与异步拒绝均隔离,不等待监听器,也不触发结果投递或父模型请求。
|
|
10884
|
+
*
|
|
10885
|
+
* @param listener 无参数变化监听器;应只读取展示状态,异步监听器可自行重叠执行。
|
|
10886
|
+
* @returns 幂等取消函数;同一监听器的多次订阅独立取消,运行时关闭时全部释放。
|
|
10887
|
+
* 已关闭的运行时不保留新订阅,返回的取消函数可安全调用。
|
|
10888
|
+
*/
|
|
10889
|
+
subscribeTaskChanges(listener) {
|
|
10890
|
+
if (this.isClosed) return () => {
|
|
10891
|
+
};
|
|
10892
|
+
const subscription = () => listener();
|
|
10893
|
+
this.taskChangeListeners.add(subscription);
|
|
10894
|
+
return () => {
|
|
10895
|
+
this.taskChangeListeners.delete(subscription);
|
|
10896
|
+
};
|
|
10897
|
+
}
|
|
10876
10898
|
/**
|
|
10877
10899
|
* 判断目标任务是否为指定祖先任务的后代(直接或间接子任务)。
|
|
10878
10900
|
*/
|
|
@@ -11048,6 +11070,7 @@ var AgentRuntime = class {
|
|
|
11048
11070
|
parentTask.childAgentIds.add(agentId);
|
|
11049
11071
|
}
|
|
11050
11072
|
}
|
|
11073
|
+
this.notifyTaskChanges();
|
|
11051
11074
|
const preferredRole = ROLE_PRESETS[params.role].preferredRole;
|
|
11052
11075
|
return {
|
|
11053
11076
|
agentId,
|
|
@@ -11304,7 +11327,7 @@ var AgentRuntime = class {
|
|
|
11304
11327
|
return { completed, pending };
|
|
11305
11328
|
}
|
|
11306
11329
|
/**
|
|
11307
|
-
*
|
|
11330
|
+
* 按过滤条件查询子代理任务列表;每条记录深度复制,调用方修改快照不影响运行时。
|
|
11308
11331
|
*/
|
|
11309
11332
|
listTasks(filter) {
|
|
11310
11333
|
const results = [];
|
|
@@ -11334,10 +11357,11 @@ var AgentRuntime = class {
|
|
|
11334
11357
|
return results;
|
|
11335
11358
|
}
|
|
11336
11359
|
/**
|
|
11337
|
-
* 关闭 Runtime
|
|
11360
|
+
* 关闭 Runtime 并取消所有活动任务;立即释放宿主订阅,再等待任务清理收口。
|
|
11338
11361
|
*/
|
|
11339
11362
|
async close() {
|
|
11340
11363
|
this.isClosed = true;
|
|
11364
|
+
this.taskChangeListeners.clear();
|
|
11341
11365
|
const activeTasks = Array.from(this.tasks.values()).filter((t) => isActiveTaskStatus(t.status));
|
|
11342
11366
|
await Promise.all(activeTasks.map((t) => this.cancelTask(t.agentId, "Runtime closing")));
|
|
11343
11367
|
await Promise.all(Array.from(this.runningPromises.values()).map((p) => p.catch(() => {
|
|
@@ -11374,6 +11398,7 @@ var AgentRuntime = class {
|
|
|
11374
11398
|
this.timers.delete(agentId);
|
|
11375
11399
|
}
|
|
11376
11400
|
}
|
|
11401
|
+
/** 先保留调度等待者的同步唤醒时序,再异步通知宿主读取任务快照。 */
|
|
11377
11402
|
notifyStateChange() {
|
|
11378
11403
|
for (const listener of this.stateListeners) {
|
|
11379
11404
|
try {
|
|
@@ -11381,6 +11406,28 @@ var AgentRuntime = class {
|
|
|
11381
11406
|
} catch {
|
|
11382
11407
|
}
|
|
11383
11408
|
}
|
|
11409
|
+
this.notifyTaskChanges();
|
|
11410
|
+
}
|
|
11411
|
+
/**
|
|
11412
|
+
* 合并宿主变化通知,避免宿主回调同步重入任务状态转换;不改变内部等待者的唤醒时序。
|
|
11413
|
+
* 派发前再次检查订阅与关闭状态,取消后的回调不会执行,观察者失败不传播至任务。
|
|
11414
|
+
*/
|
|
11415
|
+
notifyTaskChanges() {
|
|
11416
|
+
if (this.isClosed || this.taskChangeNotificationPending || this.taskChangeListeners.size === 0) {
|
|
11417
|
+
return;
|
|
11418
|
+
}
|
|
11419
|
+
this.taskChangeNotificationPending = true;
|
|
11420
|
+
queueMicrotask(() => {
|
|
11421
|
+
this.taskChangeNotificationPending = false;
|
|
11422
|
+
for (const listener of [...this.taskChangeListeners]) {
|
|
11423
|
+
if (!this.taskChangeListeners.has(listener)) continue;
|
|
11424
|
+
try {
|
|
11425
|
+
void Promise.resolve(listener()).catch(() => {
|
|
11426
|
+
});
|
|
11427
|
+
} catch {
|
|
11428
|
+
}
|
|
11429
|
+
}
|
|
11430
|
+
});
|
|
11384
11431
|
}
|
|
11385
11432
|
waitForNextStateChange(signal) {
|
|
11386
11433
|
if (signal.aborted) return Promise.resolve();
|