fix: normalize Goosed reply payload and restart agent-run worker on release

Add id/created defaults for user_message, ensure metadata in agent-run
gateway before submit, and kickstart the agent-run worker after portal deploy
so queued page-generation runs use the latest runtime bundle.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-07-05 12:04:31 +08:00
parent cb7a446d3e
commit 1165ebf684
4 changed files with 18 additions and 4 deletions
+2 -1
View File
@@ -7,6 +7,7 @@ import {
persistSessionTranscriptFromSnapshot,
persistSessionTranscriptMessages,
} from './conversation-transcript-persist.mjs';
import { ensureGooseUserMessageMetadata } from './goose-message.mjs';
const DEFAULT_RUN_RETRY_DELAYS_MS = [1500, 5000, 15000];
const TERMINAL_STATUSES = new Set(['succeeded', 'failed']);
@@ -614,7 +615,7 @@ export function createAgentRunGateway({
row.user_id,
sessionId,
row.request_id,
userMessage,
ensureGooseUserMessageMetadata(userMessage),
{
toolMode: runOptions.toolMode,
forceDeepReasoning: runOptions.forceDeepReasoning,
+8 -3
View File
@@ -1,7 +1,8 @@
/**
* Goosed requires user_message.metadata.userVisible (and agentVisible) on /reply.
*/
import crypto from 'node:crypto';
/**
* Goosed requires user_message.metadata.userVisible/agentVisible and created on /reply.
*/
export function ensureGooseUserMessageMetadata(userMessage) {
if (!userMessage || typeof userMessage !== 'object' || Array.isArray(userMessage)) {
return userMessage;
@@ -12,8 +13,12 @@ export function ensureGooseUserMessageMetadata(userMessage) {
: {};
if (metadata.userVisible == null) metadata.userVisible = true;
if (metadata.agentVisible == null) metadata.agentVisible = true;
const created = Number(userMessage.created ?? 0) || Math.floor(Date.now() / 1000);
return {
...userMessage,
id: userMessage.id ?? crypto.randomUUID(),
role: userMessage.role ?? 'user',
created,
metadata,
};
}
+2
View File
@@ -9,6 +9,8 @@ test('ensureGooseUserMessageMetadata adds required visibility flags', () => {
});
assert.equal(normalized.metadata.userVisible, true);
assert.equal(normalized.metadata.agentVisible, true);
assert.equal(typeof normalized.created, 'number');
assert.ok(normalized.id);
});
test('ensureGooseUserMessageMetadata preserves existing metadata fields', () => {
+6
View File
@@ -539,6 +539,12 @@ if ! launchctl kickstart -k "${LAUNCHD_GUI}/${PORTAL_LABEL}" >/dev/null 2>&1; th
nohup "${APP_DIR}/scripts/run-memind-portal-prod.sh" >> "${HOME}/Library/Logs/memind-portal.log" 2>&1 &
fi
AGENT_RUN_WORKER_LABEL="${MEMIND_AGENT_RUN_WORKER_LABEL:-cn.tkmind.memind-agent-run-worker}"
if launchctl print "${LAUNCHD_GUI}/${AGENT_RUN_WORKER_LABEL}" >/dev/null 2>&1; then
say "重启 agent run worker"
launchctl kickstart -k "${LAUNCHD_GUI}/${AGENT_RUN_WORKER_LABEL}" >/dev/null 2>&1 || true
fi
say "健康检查"
for _ in $(seq 1 60); do
portal_code="$(curl -s -o /dev/null -w '%{http_code}' "${HEALTH_URL}" || true)"