openclaw-lark-multi-agent 1.8.15 → 1.8.17

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.
@@ -38,6 +38,9 @@ export declare class FeishuBot {
38
38
  /** Per-chat processQueue lock to avoid duplicate concurrent chat.send runs */
39
39
  private queueRuns;
40
40
  private queueOwners;
41
+ /** Monotone local batch epoch: an empty owner map must not hide an
42
+ * intervening admission/finish (ABA) from an asynchronous public lookup. */
43
+ private queueAdmissionEpoch;
41
44
  /** Per-chat serial send queue to guarantee message order */
42
45
  private sendQueue;
43
46
  /** Per-chat delayed runtime failure notifications, canceled if a real reply arrives. */
@@ -128,10 +131,23 @@ export declare class FeishuBot {
128
131
  static getByName(name: string): FeishuBot | undefined;
129
132
  static findByOpenId(openId: string): FeishuBot | undefined;
130
133
  private handleMessage;
134
+ /** Separate guarded-admission proof. Aggregate busy never becomes idle. */
135
+ private observedFollowupGuard;
136
+ /** A positive refusal must be durable AND explained to the sender. */
137
+ private retainChangedFollowup;
138
+ private explainUnconfirmedFollowup;
139
+ /** Keep each input's first observed leaf: a fresh arrival must not borrow
140
+ * an obsolete scheduler leaf from before it was received. */
141
+ private pinDispatchFollowupProof;
131
142
  /** With no local owner, the Gateway can still have externally admitted work.
132
143
  * Read public activity and pin its exact root before choosing insertion. Missing
133
144
  * identity is durable unbound custody, never a fabricated run or blind send. */
134
145
  private reconcileCurrentInputActivity;
146
+ /** An ingress reservation can outlive an ACK-window owner which finished
147
+ * before learning its runId. It is still never-attempted custody, not a
148
+ * licence to retarget/steer a successor. Require the same guarded proof and
149
+ * bounded observation with NO replacement local scheduler at every await. */
150
+ private reconcileRetainedFollowup;
135
151
  /** CAS includes the actual batch, not merely the queue Promise, and excludes
136
152
  * local admission/RPC windows even if the host briefly reports idle. */
137
153
  private reconcileDispatchCustody;
@@ -171,11 +187,10 @@ export declare class FeishuBot {
171
187
  private fireRunFailureObservers;
172
188
  private processQueue;
173
189
  /**
174
- * Force-release a stuck queue owner after the gateway authoritatively
175
- * reported the session idle (no active run). The zombie owner's deep waits
176
- * can otherwise hold chat custody forever: completion events routed through
177
- * the proactive path are invisible to them. Steer-fallback triggers are
178
- * restored via the failure observers so their input drains normally.
190
+ * Retire only the local queue scheduler after positive idle, trusted yield,
191
+ * or bounded guarded-followup proof. Never stop Gateway execution or infer
192
+ * a terminal outcome. Exact result recovery/target custody remains durable;
193
+ * attempted-unknown and accepted insertion records never enter replay.
179
194
  */
180
195
  private forceExpireQueueOwner;
181
196
  private processQueueInner;