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:
@@ -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
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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)"
|
||||
|
||||
Reference in New Issue
Block a user