wezard 2.7.2 → 2.7.3
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/daemon/handoff.js +26 -5
- package/dist/daemon/handoff.js.map +1 -1
- package/dist/daemon/index.js +81 -13
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/message-events.js +88 -45
- package/dist/daemon/message-events.js.map +1 -1
- package/dist/daemon/mirror-bridge.js +220 -49
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/peers.js +9 -3
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/router.js +3 -2
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/workflow-nodes.js +19 -0
- package/dist/daemon/workflow-nodes.js.map +1 -1
- package/dist/mcp/server.js +3 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/modal-pane.js +6 -0
- package/dist/shared/modal-pane.js.map +1 -1
- package/package.json +1 -1
package/dist/daemon/handoff.js
CHANGED
|
@@ -39,13 +39,21 @@ const carryOf = (p) => p.mode === "self"
|
|
|
39
39
|
? `以下是你自己上一段会话压缩出来的交接简报, 据此无缝接着干:\n\n${p.brief}`
|
|
40
40
|
: `以下是上一个会话交接过来的工作简报,请据此无缝接手并继续:\n\n${p.brief}`;
|
|
41
41
|
export const createHandoffs = (deps) => {
|
|
42
|
-
|
|
43
|
-
const
|
|
42
|
+
/** 每场交接扣下的终句: step 一路传的是不可变快照, 扣下发生在它之外 —— 记在这里, 落盘时并进去。 */
|
|
43
|
+
const cuts = new Map();
|
|
44
|
+
const withCut = (p) => { const c = cuts.get(p.target); return c?.length ? { ...p, cut: [...c] } : p; };
|
|
45
|
+
const save = (p) => void deps.store?.set(p.target, withCut(p));
|
|
46
|
+
const drop = (p) => { cuts.delete(p.target); deps.store?.drop(p.target); };
|
|
44
47
|
const fail = (p, status, reason) => {
|
|
48
|
+
const cut = withCut(p).cut ?? [];
|
|
45
49
|
drop(p);
|
|
46
|
-
deps.log.warn({ mod: "handoff", target: p.target, stage: p.stage, reason }, "handoff: 放弃");
|
|
47
|
-
if (p.mode === "self")
|
|
50
|
+
deps.log.warn({ mod: "handoff", target: p.target, stage: p.stage, reason, cut }, "handoff: 放弃");
|
|
51
|
+
if (p.mode === "self") {
|
|
48
52
|
deps.notify(p.target, `上下文交接没做成: ${reason}`);
|
|
53
|
+
// 新会话没接上, 没人会「继续 <event>」: 切断那一轮扣下的终句就是那几笔仅有的交代。
|
|
54
|
+
if (cut.length)
|
|
55
|
+
deps.uncut(p.target, cut);
|
|
56
|
+
}
|
|
49
57
|
return { ok: false, status, reason, ...(p.brief ? { brief: p.brief } : {}) };
|
|
50
58
|
};
|
|
51
59
|
const idle = (p, ms) => waitForIdle(p.target, deps.isBusy, ms, () => false);
|
|
@@ -147,7 +155,9 @@ export const createHandoffs = (deps) => {
|
|
|
147
155
|
deps.log.warn({ mod: "handoff", target: p.target, err: e.message }, "handoff: 简报留档失败");
|
|
148
156
|
}
|
|
149
157
|
// 欠账续答排在最后一步: 先落盘再动手 —— reload 正好落在这一刻就重放它 (注入幂等)。
|
|
150
|
-
|
|
158
|
+
// 交接做成了: 扣下的终句由「继续 <event>」续答取代, 不再补投。
|
|
159
|
+
cuts.delete(p.target);
|
|
160
|
+
const next = saved({ ...p, cut: undefined, stage: "resuming" });
|
|
151
161
|
void resumeOwed(next);
|
|
152
162
|
return { ok: true, brief: p.brief ?? "" };
|
|
153
163
|
}
|
|
@@ -162,6 +172,8 @@ export const createHandoffs = (deps) => {
|
|
|
162
172
|
/** 闸立在整场交接上: 发起之后进来的话 (人、同伴、回执、日程) 都进新会话。 */
|
|
163
173
|
const run = (p) => {
|
|
164
174
|
const release = hold(p.target);
|
|
175
|
+
if (p.cut?.length)
|
|
176
|
+
cuts.set(p.target, p.cut);
|
|
165
177
|
if (p.mode === "self" && p.stage === "waiting")
|
|
166
178
|
cutting.add(p.target);
|
|
167
179
|
return step(p)
|
|
@@ -192,6 +204,15 @@ export const createHandoffs = (deps) => {
|
|
|
192
204
|
deps.log.info({ mod: "handoff", resumed: open.map((p) => `${p.target}@${p.stage}`) }, "handoff: reload 后续做");
|
|
193
205
|
return open.length;
|
|
194
206
|
},
|
|
207
|
+
cut: (target, event) => {
|
|
208
|
+
const c = cuts.get(target) ?? [];
|
|
209
|
+
if (c.includes(event))
|
|
210
|
+
return;
|
|
211
|
+
cuts.set(target, [...c, event]);
|
|
212
|
+
const p = deps.store?.get(target);
|
|
213
|
+
if (p)
|
|
214
|
+
save(p);
|
|
215
|
+
},
|
|
195
216
|
};
|
|
196
217
|
};
|
|
197
218
|
//# sourceMappingURL=handoff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../daemon/handoff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../daemon/handoff.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/index.js
CHANGED
|
@@ -213,6 +213,8 @@ const main = async () => {
|
|
|
213
213
|
peerEvents?.accepted(e); },
|
|
214
214
|
committed: (e) => { if (e.payload.peer)
|
|
215
215
|
peerEvents?.committed(e); },
|
|
216
|
+
gone: (e) => { if (e.payload.peer)
|
|
217
|
+
peerEvents?.gone?.(e); },
|
|
216
218
|
canceled: (e) => {
|
|
217
219
|
if (e.payload.peer)
|
|
218
220
|
peerEvents?.canceled(e);
|
|
@@ -977,8 +979,8 @@ const main = async () => {
|
|
|
977
979
|
};
|
|
978
980
|
/** 一笔活第几个来回 (§3.2): 同一行上已经注入过的续问数 + 1 —— 现算, 不落第二份数据。
|
|
979
981
|
* 续问的注入事件 id 是 `route:<event>:r<legs>`, 所以从它自己就能数回来 (reload 也在盘上)。 */
|
|
980
|
-
const legsOf = (event) => events.
|
|
981
|
-
const m =
|
|
982
|
+
const legsOf = (event) => events.ids().reduce((n, id) => {
|
|
983
|
+
const m = id.startsWith(`route:${event}:r`) ? Number(id.slice(`route:${event}:r`.length)) : NaN;
|
|
982
984
|
return Number.isInteger(m) && m > n ? m : n;
|
|
983
985
|
}, 1);
|
|
984
986
|
/** 同一笔活上的一句续问 (idle-nudge 追问 / 工单打回): 不新开行, 注入事件 id
|
|
@@ -1051,6 +1053,16 @@ const main = async () => {
|
|
|
1051
1053
|
// 交接是生命周期事件, 不进群; 失败只捎给它自己 (它调完 handoff_self 拿到的是
|
|
1052
1054
|
// scheduled:true, 不说的话它不知道上下文其实没换)。
|
|
1053
1055
|
notify: (t, text) => notices.post([t], text),
|
|
1056
|
+
// 交接没做成: 切断那一轮扣下的终句按原行补投 —— 走与轮终同一条 onFinal (行已被合成失败落定的, 照追述规则处理)。
|
|
1057
|
+
uncut: (t, ids) => ids.forEach((id) => {
|
|
1058
|
+
const e = events.get(id);
|
|
1059
|
+
if (!e?.result) {
|
|
1060
|
+
log.warn({ target: t, event: id }, "handoff: 扣下的终句已不在事件库, 补投不了");
|
|
1061
|
+
return;
|
|
1062
|
+
}
|
|
1063
|
+
log.info({ target: t, event: id, serves: e.serves }, "handoff: 交接没做成, 补投切断那一轮的终句");
|
|
1064
|
+
settleFinal(e, { text: e.result.body });
|
|
1065
|
+
}),
|
|
1054
1066
|
log,
|
|
1055
1067
|
store: loadJsonMap(cfg.wrc.mirror.handoffsFile),
|
|
1056
1068
|
archive: (e) => {
|
|
@@ -1074,7 +1086,7 @@ const main = async () => {
|
|
|
1074
1086
|
const waiting = r.kind === "wizard" ? r.to : baseOfKey(r.channel); // 等着它交代的那一方 (信封挂在它名下)
|
|
1075
1087
|
const channel = r.kind === "chat" ? r.channel : ""; // 结论要落回群里时才带频道 (§9.4)
|
|
1076
1088
|
const base = `route:${event}:resume`;
|
|
1077
|
-
const id = events.
|
|
1089
|
+
const id = events.known(base) ? `${base}:${at}` : base;
|
|
1078
1090
|
try {
|
|
1079
1091
|
events.accept({
|
|
1080
1092
|
id, identity: JSON.stringify([t, event, "resume", at]),
|
|
@@ -1242,7 +1254,12 @@ const main = async () => {
|
|
|
1242
1254
|
if (row.job && isTerminal(out.status) && !row.late)
|
|
1243
1255
|
jobs.settle(row.job, row.owner, out.status, parseClosing(out.body).artifacts, { turn: event });
|
|
1244
1256
|
}
|
|
1245
|
-
|
|
1257
|
+
postRoute(row, out, router.escalate(event, (k) => !!wizards.get(k)), `rcpt:${event}:${out.rev}`);
|
|
1258
|
+
};
|
|
1259
|
+
/** 一份定论的投递 (账本已记过): 投给升级后的收方 `esc` (没有 = 行上的 receiver)。群收方只落
|
|
1260
|
+
* `hand`; wizard 收方 (含 Dead Letter 退到的群默认 wizard) 进收件箱, id = `inbox`。 */
|
|
1261
|
+
const postRoute = (row, out, esc, inbox) => {
|
|
1262
|
+
const event = row.event;
|
|
1246
1263
|
const receiver = esc?.receiver ?? row.receiver;
|
|
1247
1264
|
const via = (esc?.via ?? []).map(displayName);
|
|
1248
1265
|
// 升级落在 chat 根 = Dead Letter: 退到那个群, 由它的默认 wizard 收下这份结论。
|
|
@@ -1266,7 +1283,6 @@ const main = async () => {
|
|
|
1266
1283
|
const retellTo = late && servedRow && servedRow.owner === to && servedRow.outcome?.status !== "canceled"
|
|
1267
1284
|
? servedRow.receiver.kind === "wizard" ? displayName(servedRow.receiver.to) : chatNameOf(cfg, servedRow.receiver.channel) || servedRow.receiver.channel
|
|
1268
1285
|
: undefined;
|
|
1269
|
-
const inbox = `rcpt:${event}:${out.rev}`;
|
|
1270
1286
|
const job = row.job ? jobs.get(row.job) : undefined;
|
|
1271
1287
|
const tally = row.job ? jobs.tally(row.job) : undefined;
|
|
1272
1288
|
events.accept({
|
|
@@ -1291,6 +1307,34 @@ const main = async () => {
|
|
|
1291
1307
|
});
|
|
1292
1308
|
router.commit(ops.hand({ event, inbox }));
|
|
1293
1309
|
};
|
|
1310
|
+
/** 收件箱里那份回执投不到了 (`gone`: 收方没有绑定, 按 store 也恢复不了) —— 投进去时它还在
|
|
1311
|
+
* 注册表上, 升级没跳过它。现在把它当不在, 沿 receiver 边重走一次升级: 能收的上层 wizard /
|
|
1312
|
+
* 群根 (Dead Letter) 收下。链上无处可升 (根行的收方自己没了): canceled 是收掉它的那一方自己
|
|
1313
|
+
* 发起的, 没人在等, 不再投; 别的定论退到收方的家群 (Dead Letter)。账本不再记第二遍。 */
|
|
1314
|
+
const rerouteGone = (e) => {
|
|
1315
|
+
const from = e.payload.peer?.from;
|
|
1316
|
+
const event = from?.receipt ? from.event : undefined;
|
|
1317
|
+
const row = event ? router.get(event) : undefined;
|
|
1318
|
+
if (!event || !row || !from?.status) {
|
|
1319
|
+
log.warn({ id: e.id, target: e.target }, "receipt reroute: 认不出回执的那一行, 投不出去");
|
|
1320
|
+
return;
|
|
1321
|
+
}
|
|
1322
|
+
const reachable = (k) => k !== e.target && !!wizards.get(k) && !!mirrorStore.get(k);
|
|
1323
|
+
const home = baseOfKey(e.target);
|
|
1324
|
+
const esc = router.escalate(event, reachable)
|
|
1325
|
+
?? (row.receiver.kind === "wizard" && reachable(row.receiver.to) ? undefined
|
|
1326
|
+
: from.status === "canceled" || home === e.target ? null
|
|
1327
|
+
: { receiver: { kind: "chat", channel: home, message: "" }, serves: "", via: [e.target] });
|
|
1328
|
+
if (esc === null) {
|
|
1329
|
+
log.info({ id: e.id, target: e.target, event, status: from.status }, "receipt reroute: 收方已不在且无处可升, 不再投");
|
|
1330
|
+
return;
|
|
1331
|
+
}
|
|
1332
|
+
const rev = e.id.slice(`rcpt:${event}:`.length).split("~")[0];
|
|
1333
|
+
const prefix = `rcpt:${event}:${rev}~`;
|
|
1334
|
+
const inbox = `${prefix}${events.ids().filter((id) => id.startsWith(prefix)).length + 1}`;
|
|
1335
|
+
log.info({ id: e.id, target: e.target, event, to: esc?.receiver ?? row.receiver, inbox }, "receipt reroute: 收方已不在, 改投");
|
|
1336
|
+
postRoute(row, { status: from.status, body: e.payload.text, rev }, esc, inbox);
|
|
1337
|
+
};
|
|
1294
1338
|
/** 一条路由 op: 先落盘, 再投该投的 (need / error 带正文入箱; answer 按 receiver 投递)。这里
|
|
1295
1339
|
* 只管 `re` (`mark open`) 把那一行拉回在飞 —— 账本与工单跟着 deliverRoute 走。 */
|
|
1296
1340
|
const commitRoute = (op) => {
|
|
@@ -1318,10 +1362,17 @@ const main = async () => {
|
|
|
1318
1362
|
if (e.serves && bounced.get(e.serves) === e.id)
|
|
1319
1363
|
return;
|
|
1320
1364
|
// 自我交接切断的那一轮: 收尾那句不是欠着的那几笔的答案 —— 行留 open, 交给新会话的「继续 <event>」。
|
|
1365
|
+
// 扣下记在这场交接上: 交接没做成 (新会话没起来), 它就是那几笔仅有的交代, 由 uncut 补投。
|
|
1321
1366
|
if (cuttingTurn(e.target)) {
|
|
1322
1367
|
log.info({ event: e.id, target: e.target, serves: e.serves }, "handoff: 交接切断的那一轮终句不落定");
|
|
1368
|
+
if (!verdict.error)
|
|
1369
|
+
handoffs.cut(e.target, e.id);
|
|
1323
1370
|
return;
|
|
1324
1371
|
}
|
|
1372
|
+
settleFinal(e, verdict);
|
|
1373
|
+
};
|
|
1374
|
+
/** 一轮的终句落到它服务的那一行上 (定论 / 中途态), 验收不合规格就打回续问。 */
|
|
1375
|
+
const settleFinal = (e, verdict) => {
|
|
1325
1376
|
const plans = router.onFinal(e.target, e.serves, verdict);
|
|
1326
1377
|
const answer = plans.flatMap((op) => (op.op === "answer" && op.outcome.status === "done" ? [op] : []))[0];
|
|
1327
1378
|
const row = answer ? router.get(answer.event) : undefined;
|
|
@@ -1922,6 +1973,15 @@ const main = async () => {
|
|
|
1922
1973
|
if (p.attemptId)
|
|
1923
1974
|
workflow.cancel(e.target, e.speaker, p.job, p.from.event);
|
|
1924
1975
|
},
|
|
1976
|
+
// 收方没了: 回执沿链改投; 派活 / 续问不另做 —— 那一行的 owner 就是它, sweeper 见 pane 不在判 dead 上浮。
|
|
1977
|
+
gone: (e) => {
|
|
1978
|
+
const p = e.payload.peer;
|
|
1979
|
+
log.warn({ id: e.id, target: e.target, receipt: !!p.from.receipt }, "message event: 收方已不在 (无绑定, 恢复失败), 不再重投");
|
|
1980
|
+
if (p.attemptId)
|
|
1981
|
+
workflow.dispatched(p.attemptId, false);
|
|
1982
|
+
if (p.from.receipt)
|
|
1983
|
+
rerouteGone(e);
|
|
1984
|
+
},
|
|
1925
1985
|
ready: async (e) => prereqsOf(e.speaker, e.payload.peer.after ?? []).every((r) => r.state === "done")
|
|
1926
1986
|
&& (e.priority === "now" || await m.idleNow(e.target) || !(await m.paneLive(e.target)) || (e.priority === "urgent" && !(await othersTurn(e.target, e.speaker)))),
|
|
1927
1987
|
inject: async (e, boundary) => {
|
|
@@ -1960,6 +2020,7 @@ const main = async () => {
|
|
|
1960
2020
|
return false;
|
|
1961
2021
|
return router.finalReleased(e.target, e.serves, (events.get(e.id) ?? e).result?.body ?? "");
|
|
1962
2022
|
});
|
|
2023
|
+
m.setEventHandedAway((e) => { const row = e.serves ? router.get(e.serves) : undefined; return !!row && row.owner !== e.target; });
|
|
1963
2024
|
// boot 的路由表侧恢复 (T8): held 重查前置、answered 重投一次; 二者幂等, 与 events.resume
|
|
1964
2025
|
// 重放的注入/回执撞上无害。
|
|
1965
2026
|
void m.restored.then(() => { events.resume(); settleHeld(); replayAnswered(); });
|
|
@@ -2277,6 +2338,9 @@ const main = async () => {
|
|
|
2277
2338
|
catch (error) {
|
|
2278
2339
|
return { status: 409, body: { ok: false, eventId, reason: errText(error) } };
|
|
2279
2340
|
}
|
|
2341
|
+
// 交出的是人问的那一笔: 那句话的气泡跟着行走, 接手方开轮时接过去续写 (不另开新气泡)。
|
|
2342
|
+
if (handedChat && serves)
|
|
2343
|
+
m.handBubble(self, serves, eventId, target);
|
|
2280
2344
|
// `re` 把那一笔从 need / error 拉回 open (§3.2 的 need→open / error→open): 行状态是「这份中途态
|
|
2281
2345
|
// 已经报过了」的去重记号 —— 不拉回去, owner 下一轮交同一个中途态就被静默吞掉 (往返断在这里)。
|
|
2282
2346
|
if (reTarget && (reTarget.status === "need" || reTarget.status === "error"))
|
|
@@ -2428,7 +2492,7 @@ const main = async () => {
|
|
|
2428
2492
|
// 同一对并发多笔是允许的 (§4.1): 先取**还在排队**的那份 (那份还没进过你的会话); 都取过了就
|
|
2429
2493
|
// 报最新那件已交付 —— 绝不把已经 paste 过的那份当成新答案交回来。
|
|
2430
2494
|
const mine = router.settledTo(self).filter((r) => r.owner === h.target).reverse() // byAt → 新在前
|
|
2431
|
-
.map((row) => { const box = receiptOf(row); return { row, box, ev:
|
|
2495
|
+
.map((row) => { const box = receiptOf(row); const execution = events.executionOf(box.id); return { row, box, ev: execution && { execution } }; });
|
|
2432
2496
|
const pick = mine.find((x) => x.ev?.execution === "queued") ?? mine[0];
|
|
2433
2497
|
if (!pick)
|
|
2434
2498
|
return { name: h.address, idle: wr.idle, ...(wr.reason ? { reason: wr.reason } : {}),
|
|
@@ -3366,12 +3430,8 @@ const main = async () => {
|
|
|
3366
3430
|
d = { kind: "spawn", why: `${d.why}; 但它被${t.body.gated === "direction" ? "方向闸" : "冷门控"}退回 (${String(t.body.reason)}) —— 改为白板 spawn` };
|
|
3367
3431
|
}
|
|
3368
3432
|
const name = (b.name ?? "").toString().trim();
|
|
3369
|
-
const description = (b.description ?? "").toString().trim();
|
|
3370
|
-
|
|
3371
|
-
settleRoot(false);
|
|
3372
|
-
json(res, 400, { ok: false, decision: "spawn", reason: `${d.why} —— 要新生一个, 带上 name (这件事的短名) 与 description (它的职责) 重发`, ...(shown.length ? { candidates: shown } : {}) });
|
|
3373
|
-
return;
|
|
3374
|
-
}
|
|
3433
|
+
const description = (b.description ?? "").toString().trim() || clipLine(task, 120);
|
|
3434
|
+
// 空 name 交给 bearAs / claimSlot 按职责自动取名避重, 不当作显式点名复用旧记录。
|
|
3375
3435
|
const tier = taskTier;
|
|
3376
3436
|
const born = await bearAs(self, { inherit: false, name, description, tier, ...(lead ? { lead: true } : {}) }, undefined, dispatchOrigin?.authority);
|
|
3377
3437
|
if (born.status !== 200) {
|
|
@@ -3676,6 +3736,8 @@ const main = async () => {
|
|
|
3676
3736
|
job: jobId, kind: "task", spawned: true, role: roleParam(body.role),
|
|
3677
3737
|
...(plan?.ok && plan.op === "transfer" ? { transferred: true } : {}),
|
|
3678
3738
|
} } });
|
|
3739
|
+
if (handedChat && serves)
|
|
3740
|
+
m.handBubble(self, serves, eventId, target);
|
|
3679
3741
|
}
|
|
3680
3742
|
else if (jobId && birthGuard()) {
|
|
3681
3743
|
jobs.attach(jobId, { target, task: "", spawned: true, ...(roleParam(body.role) ? { role: roleParam(body.role) } : {}) });
|
|
@@ -4871,9 +4933,14 @@ const main = async () => {
|
|
|
4871
4933
|
}
|
|
4872
4934
|
setTimeout(() => void sweep().catch((e) => log.warn({ err: e.message }, "pane cap sweep failed")), 15_000).unref();
|
|
4873
4935
|
}
|
|
4936
|
+
let shuttingDown = false;
|
|
4874
4937
|
const shutdown = async (signal) => {
|
|
4938
|
+
if (shuttingDown)
|
|
4939
|
+
return;
|
|
4940
|
+
shuttingDown = true;
|
|
4875
4941
|
log.info({ signal }, "shutdown signal");
|
|
4876
|
-
|
|
4942
|
+
// Pause delivery, but persist arrivals while transports/in-flight handlers drain.
|
|
4943
|
+
events.drain();
|
|
4877
4944
|
stopSweep();
|
|
4878
4945
|
scheduler.stop();
|
|
4879
4946
|
steward?.stop();
|
|
@@ -4888,6 +4955,7 @@ const main = async () => {
|
|
|
4888
4955
|
setTimeout(() => process.exit(0), 1500).unref();
|
|
4889
4956
|
await new Promise((r) => setTimeout(r, 200));
|
|
4890
4957
|
await Promise.allSettled([ws.shutdown(), http.close()]);
|
|
4958
|
+
events.stop();
|
|
4891
4959
|
process.exit(0);
|
|
4892
4960
|
};
|
|
4893
4961
|
http.register("POST /shutdown", (_req, res) => {
|