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,
|
persistSessionTranscriptFromSnapshot,
|
||||||
persistSessionTranscriptMessages,
|
persistSessionTranscriptMessages,
|
||||||
} from './conversation-transcript-persist.mjs';
|
} from './conversation-transcript-persist.mjs';
|
||||||
|
import { ensureGooseUserMessageMetadata } from './goose-message.mjs';
|
||||||
|
|
||||||
const DEFAULT_RUN_RETRY_DELAYS_MS = [1500, 5000, 15000];
|
const DEFAULT_RUN_RETRY_DELAYS_MS = [1500, 5000, 15000];
|
||||||
const TERMINAL_STATUSES = new Set(['succeeded', 'failed']);
|
const TERMINAL_STATUSES = new Set(['succeeded', 'failed']);
|
||||||
@@ -614,7 +615,7 @@ export function createAgentRunGateway({
|
|||||||
row.user_id,
|
row.user_id,
|
||||||
sessionId,
|
sessionId,
|
||||||
row.request_id,
|
row.request_id,
|
||||||
userMessage,
|
ensureGooseUserMessageMetadata(userMessage),
|
||||||
{
|
{
|
||||||
toolMode: runOptions.toolMode,
|
toolMode: runOptions.toolMode,
|
||||||
forceDeepReasoning: runOptions.forceDeepReasoning,
|
forceDeepReasoning: runOptions.forceDeepReasoning,
|
||||||
|
|||||||
+8
-3
@@ -1,7 +1,8 @@
|
|||||||
/**
|
import crypto from 'node:crypto';
|
||||||
* Goosed requires user_message.metadata.userVisible (and agentVisible) on /reply.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Goosed requires user_message.metadata.userVisible/agentVisible and created on /reply.
|
||||||
|
*/
|
||||||
export function ensureGooseUserMessageMetadata(userMessage) {
|
export function ensureGooseUserMessageMetadata(userMessage) {
|
||||||
if (!userMessage || typeof userMessage !== 'object' || Array.isArray(userMessage)) {
|
if (!userMessage || typeof userMessage !== 'object' || Array.isArray(userMessage)) {
|
||||||
return userMessage;
|
return userMessage;
|
||||||
@@ -12,8 +13,12 @@ export function ensureGooseUserMessageMetadata(userMessage) {
|
|||||||
: {};
|
: {};
|
||||||
if (metadata.userVisible == null) metadata.userVisible = true;
|
if (metadata.userVisible == null) metadata.userVisible = true;
|
||||||
if (metadata.agentVisible == null) metadata.agentVisible = true;
|
if (metadata.agentVisible == null) metadata.agentVisible = true;
|
||||||
|
const created = Number(userMessage.created ?? 0) || Math.floor(Date.now() / 1000);
|
||||||
return {
|
return {
|
||||||
...userMessage,
|
...userMessage,
|
||||||
|
id: userMessage.id ?? crypto.randomUUID(),
|
||||||
|
role: userMessage.role ?? 'user',
|
||||||
|
created,
|
||||||
metadata,
|
metadata,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ test('ensureGooseUserMessageMetadata adds required visibility flags', () => {
|
|||||||
});
|
});
|
||||||
assert.equal(normalized.metadata.userVisible, true);
|
assert.equal(normalized.metadata.userVisible, true);
|
||||||
assert.equal(normalized.metadata.agentVisible, true);
|
assert.equal(normalized.metadata.agentVisible, true);
|
||||||
|
assert.equal(typeof normalized.created, 'number');
|
||||||
|
assert.ok(normalized.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('ensureGooseUserMessageMetadata preserves existing metadata fields', () => {
|
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 &
|
nohup "${APP_DIR}/scripts/run-memind-portal-prod.sh" >> "${HOME}/Library/Logs/memind-portal.log" 2>&1 &
|
||||||
fi
|
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 "健康检查"
|
say "健康检查"
|
||||||
for _ in $(seq 1 60); do
|
for _ in $(seq 1 60); do
|
||||||
portal_code="$(curl -s -o /dev/null -w '%{http_code}' "${HEALTH_URL}" || true)"
|
portal_code="$(curl -s -o /dev/null -w '%{http_code}' "${HEALTH_URL}" || true)"
|
||||||
|
|||||||
Reference in New Issue
Block a user