fix: pin status posts, staleness filter, correct transcript parsing
- Auto-pin status posts on creation, unpin on session completion - Skip stale sessions (>5min since last transcript write) - Parse OpenClaw JSONL format (type:message with nested role/content) - Handle timestamp-prefixed transcript filenames
This commit is contained in:
@@ -90,6 +90,15 @@ class StatusBox {
|
|||||||
const post = await this._apiCall('POST', '/api/v4/posts', body);
|
const post = await this._apiCall('POST', '/api/v4/posts', body);
|
||||||
if (this.logger) this.logger.debug({ postId: post.id, channelId }, 'Created status post');
|
if (this.logger) this.logger.debug({ postId: post.id, channelId }, 'Created status post');
|
||||||
this.metrics.updatesSent++;
|
this.metrics.updatesSent++;
|
||||||
|
|
||||||
|
// Pin the status post so it's always visible
|
||||||
|
try {
|
||||||
|
await this._apiCall('POST', `/api/v4/posts/${post.id}/pin`, null);
|
||||||
|
if (this.logger) this.logger.debug({ postId: post.id }, 'Status post pinned');
|
||||||
|
} catch (pinErr) {
|
||||||
|
if (this.logger) this.logger.warn({ postId: post.id, err: pinErr }, 'Failed to pin status post');
|
||||||
|
}
|
||||||
|
|
||||||
return post.id;
|
return post.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -331,6 +331,14 @@ async function startDaemon() {
|
|||||||
logger.error({ sessionKey, err }, 'Failed to update final status');
|
logger.error({ sessionKey, err }, 'Failed to update final status');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unpin the status post when session is done
|
||||||
|
try {
|
||||||
|
await sharedStatusBox._apiCall('POST', `/api/v4/posts/${box.postId}/unpin`, null);
|
||||||
|
logger.debug({ sessionKey, postId: box.postId }, 'Status post unpinned');
|
||||||
|
} catch (unpinErr) {
|
||||||
|
logger.warn({ sessionKey, err: unpinErr }, 'Failed to unpin status post');
|
||||||
|
}
|
||||||
|
|
||||||
// Clean up
|
// Clean up
|
||||||
activeBoxes.delete(sessionKey);
|
activeBoxes.delete(sessionKey);
|
||||||
watcher.removeSession(sessionKey);
|
watcher.removeSession(sessionKey);
|
||||||
|
|||||||
Reference in New Issue
Block a user