Spaces:
Running
Running
Fix agent feedback response field mapping
Browse files- src/agent-session.ts +19 -6
src/agent-session.ts
CHANGED
|
@@ -145,18 +145,31 @@ export async function generateSessionFeedback(db: SupabaseClient, sessionId: str
|
|
| 145 |
body: JSON.stringify({ session_id: sessionId, player, actions }),
|
| 146 |
signal: AbortSignal.timeout(150000),
|
| 147 |
});
|
| 148 |
-
const payload = await response.json().catch(() => ({})) as {
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 152 |
if (error) throw new Error(`Unable to replace generated action feedback: ${error.message}`);
|
| 153 |
if (item.feedback.length) {
|
| 154 |
-
const inserted = await db.from("actions_feedbacks").insert(item.feedback.map((feedback) => ({ action_id:
|
| 155 |
if (inserted.error) throw new Error(`Unable to save generated action feedback: ${inserted.error.message}`);
|
| 156 |
}
|
| 157 |
}
|
| 158 |
const { error: clearError } = await db.from("sessions_feedbacks").delete().eq("session_id", sessionId);
|
| 159 |
if (clearError) throw new Error(`Unable to replace generated session feedback: ${clearError.message}`);
|
| 160 |
-
const { error: saveError } = await db.from("sessions_feedbacks").insert(
|
| 161 |
if (saveError) throw new Error(`Unable to save generated session feedback: ${saveError.message}`);
|
| 162 |
}
|
|
|
|
| 145 |
body: JSON.stringify({ session_id: sessionId, player, actions }),
|
| 146 |
signal: AbortSignal.timeout(150000),
|
| 147 |
});
|
| 148 |
+
const payload = await response.json().catch(() => ({})) as {
|
| 149 |
+
actions?: { action_id?: string; actionId?: string; feedback: string[] }[];
|
| 150 |
+
session_feedback?: string[];
|
| 151 |
+
sessionFeedback?: string[];
|
| 152 |
+
detail?: string;
|
| 153 |
+
};
|
| 154 |
+
const sessionFeedback = payload.session_feedback ?? payload.sessionFeedback;
|
| 155 |
+
const generatedActions = payload.actions?.map((item) => ({
|
| 156 |
+
actionId: item.action_id ?? item.actionId,
|
| 157 |
+
feedback: item.feedback,
|
| 158 |
+
}));
|
| 159 |
+
if (!response.ok || !generatedActions?.length || !sessionFeedback || generatedActions.some((item) => !item.actionId)) {
|
| 160 |
+
throw new Error(payload.detail ?? `Agent generation failed (${response.status})`);
|
| 161 |
+
}
|
| 162 |
+
for (const item of generatedActions) {
|
| 163 |
+
const actionId = item.actionId!;
|
| 164 |
+
const { error } = await db.from("actions_feedbacks").delete().eq("action_id", actionId);
|
| 165 |
if (error) throw new Error(`Unable to replace generated action feedback: ${error.message}`);
|
| 166 |
if (item.feedback.length) {
|
| 167 |
+
const inserted = await db.from("actions_feedbacks").insert(item.feedback.map((feedback) => ({ action_id: actionId, feedback })));
|
| 168 |
if (inserted.error) throw new Error(`Unable to save generated action feedback: ${inserted.error.message}`);
|
| 169 |
}
|
| 170 |
}
|
| 171 |
const { error: clearError } = await db.from("sessions_feedbacks").delete().eq("session_id", sessionId);
|
| 172 |
if (clearError) throw new Error(`Unable to replace generated session feedback: ${clearError.message}`);
|
| 173 |
+
const { error: saveError } = await db.from("sessions_feedbacks").insert(sessionFeedback.map((feedback) => ({ session_id: sessionId, feedback })));
|
| 174 |
if (saveError) throw new Error(`Unable to save generated session feedback: ${saveError.message}`);
|
| 175 |
}
|