openclaw-lark-multi-agent 1.8.11 → 1.8.12

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.
@@ -2242,6 +2242,10 @@ export class OpenClawClient {
2242
2242
  }
2243
2243
  if (seen.size > total)
2244
2244
  return unknown();
2245
+ // Every page must positively confirm inactivity. Otherwise a malformed
2246
+ // head/middle page could be laundered by a valid final page.
2247
+ if (info?.hasActiveRun !== false)
2248
+ return unknown();
2245
2249
  const next = pending.nextBefore;
2246
2250
  if (next !== undefined && (!Number.isSafeInteger(next) || next <= 0 || cursors.has(next) || before !== undefined && next >= before))
2247
2251
  return unknown();
@@ -2259,6 +2263,8 @@ export class OpenClawClient {
2259
2263
  // Pagination is not an atomic snapshot. Re-read the current head and
2260
2264
  // identity/activity before returning positive evidence to local CAS.
2261
2265
  const head = await this.rpc('chat.history', { sessionKey: key, limit: 20 }, 1500);
2266
+ if (Date.now() >= deadline)
2267
+ return unknown();
2262
2268
  const hi = head?.sessionInfo, hp = head?.pendingInputs, hid = hi?.sessionId || head?.sessionId;
2263
2269
  if (!validId(hi?.sessionId) || !validId(head?.sessionId) || head?.sessionKey !== key || hid !== id || hi?.sessionId && head?.sessionId && hi.sessionId !== head.sessionId)
2264
2270
  return unknown();
@@ -2266,6 +2272,8 @@ export class OpenClawClient {
2266
2272
  return { ...base, archived: true, idleConfirmed: false };
2267
2273
  if (hi?.hasActiveRun === true || head?.inFlightRun || Number.isSafeInteger(hp?.queuedCount) && hp.queuedCount > 0)
2268
2274
  return { ...base, idleConfirmed: false, busyConfirmed: true, activeRunId: typeof head?.inFlightRun?.runId === 'string' ? head.inFlightRun.runId : undefined };
2275
+ if (hi?.hasActiveRun !== false)
2276
+ return unknown();
2269
2277
  if (hp?.total !== total || hp?.queuedCount !== undefined && (!Number.isSafeInteger(hp.queuedCount) || hp.queuedCount < 0))
2270
2278
  return unknown();
2271
2279
  if (Array.isArray(hp?.items) && hp.items.some((item) => typeof item?.id === 'string' && item.id && item.state === 'queued'))
@@ -1,7 +1,7 @@
1
- # 1.8.11 candidate — retained pending inputs and output attribution
1
+ # 1.8.11 — retained pending inputs and output attribution
2
2
 
3
- Local offline-tested candidate only. This note does not assert publication,
4
- runtime activation, real-model execution or Feishu delivery verification.
3
+ These changes are validated offline. Publication, runtime activation, real-model
4
+ execution and Feishu delivery are separate verification checkpoints.
5
5
 
6
6
  ## Correctness changes
7
7
 
@@ -45,3 +45,8 @@ changed. The coordinated `lma-core` plugin remains **0.2.0**.
45
45
  Deployment, activation and live acceptance remain separate owner-controlled
46
46
  steps. This candidate does not repair individual historical business rows or
47
47
  retry already-delivered/internal input mirrors.
48
+
49
+ ## Follow-up
50
+
51
+ The published 1.8.11 tag does not include the stricter per-page/head inactivity
52
+ and absolute head-deadline checks. Use 1.8.12 for that follow-up correction.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-lark-multi-agent",
3
- "version": "1.8.11",
3
+ "version": "1.8.12",
4
4
  "description": "Multi-bot Lark/Feishu bridge for OpenClaw, with per-bot model routing and isolated sessions",
5
5
  "type": "module",
6
6
  "scripts": {