@adaptic/maestro 1.10.4 → 1.10.5
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/package.json
CHANGED
|
@@ -507,9 +507,16 @@ export function releaseRequestClaim(attrs) {
|
|
|
507
507
|
* @param {string} threadTs - Thread parent timestamp
|
|
508
508
|
*/
|
|
509
509
|
export function releaseThreadLock(channel, threadTs) {
|
|
510
|
-
if (!channel
|
|
510
|
+
if (!channel) return;
|
|
511
511
|
// Match normalization in acquireThreadLock — DMs always use "dm-channel"
|
|
512
|
+
// regardless of whether threadTs is set. This MUST happen before the
|
|
513
|
+
// empty-threadTs check, otherwise DM channel locks never get released
|
|
514
|
+
// and every DM after the first gets dropped for the full 60min TTL
|
|
515
|
+
// (observed in ravi-ai on 2026-05-12: CEO's follow-up DM 23min after
|
|
516
|
+
// the first was skipped with "thread_dedup: DM channel already
|
|
517
|
+
// dispatched 1200s ago").
|
|
512
518
|
if (channel.startsWith("D")) threadTs = "dm-channel";
|
|
519
|
+
if (!threadTs) return; // non-DM channel without a thread — no lock to release
|
|
513
520
|
const safeKey = sanitiseItemId(`thread-${channel}-${threadTs}`);
|
|
514
521
|
const lockPath = join(LOCKS_DIR, `${safeKey}.lock`);
|
|
515
522
|
try {
|