@kiturone/kapibala 0.0.7 → 0.0.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 +57 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +27 -3
- package/dist/index.d.ts +27 -3
- package/dist/index.js +57 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1151,9 +1151,13 @@ declare class SessionManager {
|
|
|
1151
1151
|
constructor(options?: SessionManagerOptions);
|
|
1152
1152
|
/** 默认新建独立空会话,写入头部并持有单写者锁;不读取其它正文。 */
|
|
1153
1153
|
create(): Promise<ManagedSession>;
|
|
1154
|
-
/**
|
|
1154
|
+
/**
|
|
1155
|
+
* 按正文活动排序分页;有效 sidecar 只读元数据,不读取完整 JSONL。默认排除已归档会话。
|
|
1156
|
+
* pageSize 由调用方显式给出时必须在 1–100 之间;非法页参数直接失败,不静默修正。
|
|
1157
|
+
*/
|
|
1155
1158
|
list(page?: number, options?: {
|
|
1156
1159
|
includeArchived?: boolean;
|
|
1160
|
+
pageSize?: number;
|
|
1157
1161
|
}): Promise<{
|
|
1158
1162
|
items: SessionMetadata[];
|
|
1159
1163
|
total: number;
|
|
@@ -3617,6 +3621,9 @@ declare class AgentRuntime {
|
|
|
3617
3621
|
private readonly controllers;
|
|
3618
3622
|
private readonly timers;
|
|
3619
3623
|
private readonly stateListeners;
|
|
3624
|
+
/** 宿主观察订阅独立于调度等待;关闭宿主订阅不能影响任务收口。 */
|
|
3625
|
+
private readonly taskChangeListeners;
|
|
3626
|
+
private taskChangeNotificationPending;
|
|
3620
3627
|
private readonly outbox;
|
|
3621
3628
|
private readonly runningPromises;
|
|
3622
3629
|
private runner;
|
|
@@ -3638,6 +3645,17 @@ declare class AgentRuntime {
|
|
|
3638
3645
|
* 获取指定子代理记录快照。
|
|
3639
3646
|
*/
|
|
3640
3647
|
getTask(agentId: string): AgentTaskRecord | undefined;
|
|
3648
|
+
/**
|
|
3649
|
+
* 订阅任务创建与状态变化;通知只表示快照可能已更新,不提供可变任务对象。
|
|
3650
|
+
* 同一轮微任务内的变化可合并,不保证逐个中间状态;订阅时不主动发送通知,
|
|
3651
|
+
* 宿主应先订阅,再通过 listTasks 按会话和根任务读取独立复制的快照。
|
|
3652
|
+
* 监听器的同步异常与异步拒绝均隔离,不等待监听器,也不触发结果投递或父模型请求。
|
|
3653
|
+
*
|
|
3654
|
+
* @param listener 无参数变化监听器;应只读取展示状态,异步监听器可自行重叠执行。
|
|
3655
|
+
* @returns 幂等取消函数;同一监听器的多次订阅独立取消,运行时关闭时全部释放。
|
|
3656
|
+
* 已关闭的运行时不保留新订阅,返回的取消函数可安全调用。
|
|
3657
|
+
*/
|
|
3658
|
+
subscribeTaskChanges(listener: () => void | Promise<void>): () => void;
|
|
3641
3659
|
/**
|
|
3642
3660
|
* 判断目标任务是否为指定祖先任务的后代(直接或间接子任务)。
|
|
3643
3661
|
*/
|
|
@@ -3703,11 +3721,11 @@ declare class AgentRuntime {
|
|
|
3703
3721
|
pending: string[];
|
|
3704
3722
|
}>;
|
|
3705
3723
|
/**
|
|
3706
|
-
*
|
|
3724
|
+
* 按过滤条件查询子代理任务列表;每条记录深度复制,调用方修改快照不影响运行时。
|
|
3707
3725
|
*/
|
|
3708
3726
|
listTasks(filter?: ListAgentsFilter): AgentTaskRecord[];
|
|
3709
3727
|
/**
|
|
3710
|
-
* 关闭 Runtime
|
|
3728
|
+
* 关闭 Runtime 并取消所有活动任务;立即释放宿主订阅,再等待任务清理收口。
|
|
3711
3729
|
*/
|
|
3712
3730
|
close(): Promise<void>;
|
|
3713
3731
|
/**
|
|
@@ -3717,7 +3735,13 @@ declare class AgentRuntime {
|
|
|
3717
3735
|
private releaseTaskSlotOnce;
|
|
3718
3736
|
private releaseActiveSlot;
|
|
3719
3737
|
private clearTaskTimer;
|
|
3738
|
+
/** 先保留调度等待者的同步唤醒时序,再异步通知宿主读取任务快照。 */
|
|
3720
3739
|
private notifyStateChange;
|
|
3740
|
+
/**
|
|
3741
|
+
* 合并宿主变化通知,避免宿主回调同步重入任务状态转换;不改变内部等待者的唤醒时序。
|
|
3742
|
+
* 派发前再次检查订阅与关闭状态,取消后的回调不会执行,观察者失败不传播至任务。
|
|
3743
|
+
*/
|
|
3744
|
+
private notifyTaskChanges;
|
|
3721
3745
|
private waitForNextStateChange;
|
|
3722
3746
|
}
|
|
3723
3747
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1151,9 +1151,13 @@ declare class SessionManager {
|
|
|
1151
1151
|
constructor(options?: SessionManagerOptions);
|
|
1152
1152
|
/** 默认新建独立空会话,写入头部并持有单写者锁;不读取其它正文。 */
|
|
1153
1153
|
create(): Promise<ManagedSession>;
|
|
1154
|
-
/**
|
|
1154
|
+
/**
|
|
1155
|
+
* 按正文活动排序分页;有效 sidecar 只读元数据,不读取完整 JSONL。默认排除已归档会话。
|
|
1156
|
+
* pageSize 由调用方显式给出时必须在 1–100 之间;非法页参数直接失败,不静默修正。
|
|
1157
|
+
*/
|
|
1155
1158
|
list(page?: number, options?: {
|
|
1156
1159
|
includeArchived?: boolean;
|
|
1160
|
+
pageSize?: number;
|
|
1157
1161
|
}): Promise<{
|
|
1158
1162
|
items: SessionMetadata[];
|
|
1159
1163
|
total: number;
|
|
@@ -3617,6 +3621,9 @@ declare class AgentRuntime {
|
|
|
3617
3621
|
private readonly controllers;
|
|
3618
3622
|
private readonly timers;
|
|
3619
3623
|
private readonly stateListeners;
|
|
3624
|
+
/** 宿主观察订阅独立于调度等待;关闭宿主订阅不能影响任务收口。 */
|
|
3625
|
+
private readonly taskChangeListeners;
|
|
3626
|
+
private taskChangeNotificationPending;
|
|
3620
3627
|
private readonly outbox;
|
|
3621
3628
|
private readonly runningPromises;
|
|
3622
3629
|
private runner;
|
|
@@ -3638,6 +3645,17 @@ declare class AgentRuntime {
|
|
|
3638
3645
|
* 获取指定子代理记录快照。
|
|
3639
3646
|
*/
|
|
3640
3647
|
getTask(agentId: string): AgentTaskRecord | undefined;
|
|
3648
|
+
/**
|
|
3649
|
+
* 订阅任务创建与状态变化;通知只表示快照可能已更新,不提供可变任务对象。
|
|
3650
|
+
* 同一轮微任务内的变化可合并,不保证逐个中间状态;订阅时不主动发送通知,
|
|
3651
|
+
* 宿主应先订阅,再通过 listTasks 按会话和根任务读取独立复制的快照。
|
|
3652
|
+
* 监听器的同步异常与异步拒绝均隔离,不等待监听器,也不触发结果投递或父模型请求。
|
|
3653
|
+
*
|
|
3654
|
+
* @param listener 无参数变化监听器;应只读取展示状态,异步监听器可自行重叠执行。
|
|
3655
|
+
* @returns 幂等取消函数;同一监听器的多次订阅独立取消,运行时关闭时全部释放。
|
|
3656
|
+
* 已关闭的运行时不保留新订阅,返回的取消函数可安全调用。
|
|
3657
|
+
*/
|
|
3658
|
+
subscribeTaskChanges(listener: () => void | Promise<void>): () => void;
|
|
3641
3659
|
/**
|
|
3642
3660
|
* 判断目标任务是否为指定祖先任务的后代(直接或间接子任务)。
|
|
3643
3661
|
*/
|
|
@@ -3703,11 +3721,11 @@ declare class AgentRuntime {
|
|
|
3703
3721
|
pending: string[];
|
|
3704
3722
|
}>;
|
|
3705
3723
|
/**
|
|
3706
|
-
*
|
|
3724
|
+
* 按过滤条件查询子代理任务列表;每条记录深度复制,调用方修改快照不影响运行时。
|
|
3707
3725
|
*/
|
|
3708
3726
|
listTasks(filter?: ListAgentsFilter): AgentTaskRecord[];
|
|
3709
3727
|
/**
|
|
3710
|
-
* 关闭 Runtime
|
|
3728
|
+
* 关闭 Runtime 并取消所有活动任务;立即释放宿主订阅,再等待任务清理收口。
|
|
3711
3729
|
*/
|
|
3712
3730
|
close(): Promise<void>;
|
|
3713
3731
|
/**
|
|
@@ -3717,7 +3735,13 @@ declare class AgentRuntime {
|
|
|
3717
3735
|
private releaseTaskSlotOnce;
|
|
3718
3736
|
private releaseActiveSlot;
|
|
3719
3737
|
private clearTaskTimer;
|
|
3738
|
+
/** 先保留调度等待者的同步唤醒时序,再异步通知宿主读取任务快照。 */
|
|
3720
3739
|
private notifyStateChange;
|
|
3740
|
+
/**
|
|
3741
|
+
* 合并宿主变化通知,避免宿主回调同步重入任务状态转换;不改变内部等待者的唤醒时序。
|
|
3742
|
+
* 派发前再次检查订阅与关闭状态,取消后的回调不会执行,观察者失败不传播至任务。
|
|
3743
|
+
*/
|
|
3744
|
+
private notifyTaskChanges;
|
|
3721
3745
|
private waitForNextStateChange;
|
|
3722
3746
|
}
|
|
3723
3747
|
|
package/dist/index.js
CHANGED
|
@@ -1598,17 +1598,21 @@ var SessionManager = class {
|
|
|
1598
1598
|
throw error;
|
|
1599
1599
|
}
|
|
1600
1600
|
}
|
|
1601
|
-
/**
|
|
1601
|
+
/**
|
|
1602
|
+
* 按正文活动排序分页;有效 sidecar 只读元数据,不读取完整 JSONL。默认排除已归档会话。
|
|
1603
|
+
* pageSize 由调用方显式给出时必须在 1–100 之间;非法页参数直接失败,不静默修正。
|
|
1604
|
+
*/
|
|
1602
1605
|
async list(page = 1, options) {
|
|
1603
|
-
|
|
1606
|
+
const pageSize = options?.pageSize ?? 20;
|
|
1607
|
+
if (!Number.isSafeInteger(page) || page < 1 || !Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > 100)
|
|
1604
1608
|
throw new Error("History page must be a positive integer");
|
|
1605
1609
|
const all = await this.allMetadata();
|
|
1606
1610
|
const filtered = options?.includeArchived ? all : all.filter((m) => !m.archived);
|
|
1607
1611
|
return {
|
|
1608
|
-
items: filtered.slice((page - 1) *
|
|
1612
|
+
items: filtered.slice((page - 1) * pageSize, page * pageSize),
|
|
1609
1613
|
total: filtered.length,
|
|
1610
1614
|
page,
|
|
1611
|
-
pages: Math.max(1, Math.ceil(filtered.length /
|
|
1615
|
+
pages: Math.max(1, Math.ceil(filtered.length / pageSize))
|
|
1612
1616
|
};
|
|
1613
1617
|
}
|
|
1614
1618
|
/** 解析完整 ID 或唯一前缀对应的会话文件与 ID。 */
|
|
@@ -10660,6 +10664,9 @@ var AgentRuntime = class {
|
|
|
10660
10664
|
controllers = /* @__PURE__ */ new Map();
|
|
10661
10665
|
timers = /* @__PURE__ */ new Map();
|
|
10662
10666
|
stateListeners = /* @__PURE__ */ new Set();
|
|
10667
|
+
/** 宿主观察订阅独立于调度等待;关闭宿主订阅不能影响任务收口。 */
|
|
10668
|
+
taskChangeListeners = /* @__PURE__ */ new Set();
|
|
10669
|
+
taskChangeNotificationPending = false;
|
|
10663
10670
|
outbox;
|
|
10664
10671
|
runningPromises = /* @__PURE__ */ new Map();
|
|
10665
10672
|
runner;
|
|
@@ -10694,6 +10701,25 @@ var AgentRuntime = class {
|
|
|
10694
10701
|
const task = this.tasks.get(agentId);
|
|
10695
10702
|
return task ? structuredClone(task) : void 0;
|
|
10696
10703
|
}
|
|
10704
|
+
/**
|
|
10705
|
+
* 订阅任务创建与状态变化;通知只表示快照可能已更新,不提供可变任务对象。
|
|
10706
|
+
* 同一轮微任务内的变化可合并,不保证逐个中间状态;订阅时不主动发送通知,
|
|
10707
|
+
* 宿主应先订阅,再通过 listTasks 按会话和根任务读取独立复制的快照。
|
|
10708
|
+
* 监听器的同步异常与异步拒绝均隔离,不等待监听器,也不触发结果投递或父模型请求。
|
|
10709
|
+
*
|
|
10710
|
+
* @param listener 无参数变化监听器;应只读取展示状态,异步监听器可自行重叠执行。
|
|
10711
|
+
* @returns 幂等取消函数;同一监听器的多次订阅独立取消,运行时关闭时全部释放。
|
|
10712
|
+
* 已关闭的运行时不保留新订阅,返回的取消函数可安全调用。
|
|
10713
|
+
*/
|
|
10714
|
+
subscribeTaskChanges(listener) {
|
|
10715
|
+
if (this.isClosed) return () => {
|
|
10716
|
+
};
|
|
10717
|
+
const subscription = () => listener();
|
|
10718
|
+
this.taskChangeListeners.add(subscription);
|
|
10719
|
+
return () => {
|
|
10720
|
+
this.taskChangeListeners.delete(subscription);
|
|
10721
|
+
};
|
|
10722
|
+
}
|
|
10697
10723
|
/**
|
|
10698
10724
|
* 判断目标任务是否为指定祖先任务的后代(直接或间接子任务)。
|
|
10699
10725
|
*/
|
|
@@ -10869,6 +10895,7 @@ var AgentRuntime = class {
|
|
|
10869
10895
|
parentTask.childAgentIds.add(agentId);
|
|
10870
10896
|
}
|
|
10871
10897
|
}
|
|
10898
|
+
this.notifyTaskChanges();
|
|
10872
10899
|
const preferredRole = ROLE_PRESETS[params.role].preferredRole;
|
|
10873
10900
|
return {
|
|
10874
10901
|
agentId,
|
|
@@ -11125,7 +11152,7 @@ var AgentRuntime = class {
|
|
|
11125
11152
|
return { completed, pending };
|
|
11126
11153
|
}
|
|
11127
11154
|
/**
|
|
11128
|
-
*
|
|
11155
|
+
* 按过滤条件查询子代理任务列表;每条记录深度复制,调用方修改快照不影响运行时。
|
|
11129
11156
|
*/
|
|
11130
11157
|
listTasks(filter) {
|
|
11131
11158
|
const results = [];
|
|
@@ -11155,10 +11182,11 @@ var AgentRuntime = class {
|
|
|
11155
11182
|
return results;
|
|
11156
11183
|
}
|
|
11157
11184
|
/**
|
|
11158
|
-
* 关闭 Runtime
|
|
11185
|
+
* 关闭 Runtime 并取消所有活动任务;立即释放宿主订阅,再等待任务清理收口。
|
|
11159
11186
|
*/
|
|
11160
11187
|
async close() {
|
|
11161
11188
|
this.isClosed = true;
|
|
11189
|
+
this.taskChangeListeners.clear();
|
|
11162
11190
|
const activeTasks = Array.from(this.tasks.values()).filter((t) => isActiveTaskStatus(t.status));
|
|
11163
11191
|
await Promise.all(activeTasks.map((t) => this.cancelTask(t.agentId, "Runtime closing")));
|
|
11164
11192
|
await Promise.all(Array.from(this.runningPromises.values()).map((p) => p.catch(() => {
|
|
@@ -11195,6 +11223,7 @@ var AgentRuntime = class {
|
|
|
11195
11223
|
this.timers.delete(agentId);
|
|
11196
11224
|
}
|
|
11197
11225
|
}
|
|
11226
|
+
/** 先保留调度等待者的同步唤醒时序,再异步通知宿主读取任务快照。 */
|
|
11198
11227
|
notifyStateChange() {
|
|
11199
11228
|
for (const listener of this.stateListeners) {
|
|
11200
11229
|
try {
|
|
@@ -11202,6 +11231,28 @@ var AgentRuntime = class {
|
|
|
11202
11231
|
} catch {
|
|
11203
11232
|
}
|
|
11204
11233
|
}
|
|
11234
|
+
this.notifyTaskChanges();
|
|
11235
|
+
}
|
|
11236
|
+
/**
|
|
11237
|
+
* 合并宿主变化通知,避免宿主回调同步重入任务状态转换;不改变内部等待者的唤醒时序。
|
|
11238
|
+
* 派发前再次检查订阅与关闭状态,取消后的回调不会执行,观察者失败不传播至任务。
|
|
11239
|
+
*/
|
|
11240
|
+
notifyTaskChanges() {
|
|
11241
|
+
if (this.isClosed || this.taskChangeNotificationPending || this.taskChangeListeners.size === 0) {
|
|
11242
|
+
return;
|
|
11243
|
+
}
|
|
11244
|
+
this.taskChangeNotificationPending = true;
|
|
11245
|
+
queueMicrotask(() => {
|
|
11246
|
+
this.taskChangeNotificationPending = false;
|
|
11247
|
+
for (const listener of [...this.taskChangeListeners]) {
|
|
11248
|
+
if (!this.taskChangeListeners.has(listener)) continue;
|
|
11249
|
+
try {
|
|
11250
|
+
void Promise.resolve(listener()).catch(() => {
|
|
11251
|
+
});
|
|
11252
|
+
} catch {
|
|
11253
|
+
}
|
|
11254
|
+
}
|
|
11255
|
+
});
|
|
11205
11256
|
}
|
|
11206
11257
|
waitForNextStateChange(signal) {
|
|
11207
11258
|
if (signal.aborted) return Promise.resolve();
|