clay-server 2.27.0-beta.7 → 2.27.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/project-debate.js +21 -12
- package/lib/public/app.js +1 -5
- package/lib/public/modules/debate.js +21 -4
- package/package.json +1 -1
package/lib/project-debate.js
CHANGED
|
@@ -534,6 +534,8 @@ function attachDebate(ctx) {
|
|
|
534
534
|
ctx.sm.switchSession(setupSession.localId, null, ctx.hydrateImageRefs);
|
|
535
535
|
debate.setupSessionId = setupSession.localId;
|
|
536
536
|
debate.setupStartedAt = setupSession.loop.startedAt;
|
|
537
|
+
// Share debate state with setup session so confirm_brief works from either
|
|
538
|
+
setupSession._debate = debate;
|
|
537
539
|
|
|
538
540
|
// Build DM conversation context for the moderator
|
|
539
541
|
var dmContext = msg.dmContext || "";
|
|
@@ -719,6 +721,13 @@ function attachDebate(ctx) {
|
|
|
719
721
|
ctx.send({ type: "mention_processing", mateId: mateId, active: active });
|
|
720
722
|
}
|
|
721
723
|
|
|
724
|
+
// Persist a debate message to session history and send to clients
|
|
725
|
+
function debateSendAndRecord(session, msg) {
|
|
726
|
+
session.history.push(msg);
|
|
727
|
+
ctx.sm.appendToSessionFile(session, msg);
|
|
728
|
+
ctx.sendToSession(session.localId, msg);
|
|
729
|
+
}
|
|
730
|
+
|
|
722
731
|
// --- Live debate ---
|
|
723
732
|
|
|
724
733
|
function startDebateLive(session) {
|
|
@@ -769,7 +778,7 @@ function attachDebate(ctx) {
|
|
|
769
778
|
|
|
770
779
|
// Signal moderator's first turn
|
|
771
780
|
debateMateProcessing(debate.moderatorId, true);
|
|
772
|
-
|
|
781
|
+
debateSendAndRecord(debateSession, {
|
|
773
782
|
type: "debate_turn",
|
|
774
783
|
mateId: debate.moderatorId,
|
|
775
784
|
mateName: moderatorProfile.name,
|
|
@@ -796,7 +805,7 @@ function attachDebate(ctx) {
|
|
|
796
805
|
},
|
|
797
806
|
onDelta: function (delta) {
|
|
798
807
|
if (debateSession._debate && debateSession._debate.phase !== "ended") {
|
|
799
|
-
|
|
808
|
+
debateSendAndRecord(debateSession, { type: "debate_stream", mateId: debate.moderatorId, mateName: moderatorProfile.name, delta: delta });
|
|
800
809
|
}
|
|
801
810
|
},
|
|
802
811
|
onDone: function (fullText) {
|
|
@@ -904,7 +913,7 @@ function attachDebate(ctx) {
|
|
|
904
913
|
|
|
905
914
|
// Notify clients of new turn
|
|
906
915
|
debateMateProcessing(mateId, true);
|
|
907
|
-
|
|
916
|
+
debateSendAndRecord(session, {
|
|
908
917
|
type: "debate_turn",
|
|
909
918
|
mateId: mateId,
|
|
910
919
|
mateName: profile.name,
|
|
@@ -924,7 +933,7 @@ function attachDebate(ctx) {
|
|
|
924
933
|
onDelta: function (delta) {
|
|
925
934
|
if (session._debate && session._debate.phase !== "ended") {
|
|
926
935
|
debate._currentTurnText += delta;
|
|
927
|
-
|
|
936
|
+
debateSendAndRecord(session, { type: "debate_stream", mateId: mateId, mateName: profile.name, delta: delta });
|
|
928
937
|
}
|
|
929
938
|
},
|
|
930
939
|
onDone: function (fullText) {
|
|
@@ -1069,7 +1078,7 @@ function attachDebate(ctx) {
|
|
|
1069
1078
|
|
|
1070
1079
|
// Notify clients of moderator turn
|
|
1071
1080
|
debateMateProcessing(debate.moderatorId, true);
|
|
1072
|
-
|
|
1081
|
+
debateSendAndRecord(session, {
|
|
1073
1082
|
type: "debate_turn",
|
|
1074
1083
|
mateId: debate.moderatorId,
|
|
1075
1084
|
mateName: moderatorProfile.name,
|
|
@@ -1099,7 +1108,7 @@ function attachDebate(ctx) {
|
|
|
1099
1108
|
},
|
|
1100
1109
|
onDelta: function (delta) {
|
|
1101
1110
|
if (session._debate && session._debate.phase !== "ended") {
|
|
1102
|
-
|
|
1111
|
+
debateSendAndRecord(session, { type: "debate_stream", mateId: debate.moderatorId, mateName: moderatorProfile.name, delta: delta });
|
|
1103
1112
|
}
|
|
1104
1113
|
},
|
|
1105
1114
|
onDone: function (fullText) {
|
|
@@ -1166,7 +1175,7 @@ function attachDebate(ctx) {
|
|
|
1166
1175
|
debate.turnInProgress = true;
|
|
1167
1176
|
var moderatorProfile = ctx.getMateProfile(debate.mateCtx, debate.moderatorId);
|
|
1168
1177
|
|
|
1169
|
-
|
|
1178
|
+
debateSendAndRecord(session, {
|
|
1170
1179
|
type: "debate_turn",
|
|
1171
1180
|
mateId: debate.moderatorId,
|
|
1172
1181
|
mateName: moderatorProfile.name,
|
|
@@ -1205,7 +1214,7 @@ function attachDebate(ctx) {
|
|
|
1205
1214
|
debate.turnInProgress = true;
|
|
1206
1215
|
var moderatorProfile = ctx.getMateProfile(debate.mateCtx, debate.moderatorId);
|
|
1207
1216
|
|
|
1208
|
-
|
|
1217
|
+
debateSendAndRecord(session, {
|
|
1209
1218
|
type: "debate_turn",
|
|
1210
1219
|
mateId: debate.moderatorId,
|
|
1211
1220
|
mateName: moderatorProfile.name,
|
|
@@ -1236,7 +1245,7 @@ function attachDebate(ctx) {
|
|
|
1236
1245
|
},
|
|
1237
1246
|
onDelta: function (delta) {
|
|
1238
1247
|
if (session._debate && session._debate.phase !== "ended") {
|
|
1239
|
-
|
|
1248
|
+
debateSendAndRecord(session, { type: "debate_stream", mateId: debate.moderatorId, mateName: moderatorProfile.name, delta: delta });
|
|
1240
1249
|
}
|
|
1241
1250
|
},
|
|
1242
1251
|
onDone: function (fullText) {
|
|
@@ -1285,7 +1294,7 @@ function attachDebate(ctx) {
|
|
|
1285
1294
|
var moderatorProfile = ctx.getMateProfile(debate.mateCtx, debate.moderatorId);
|
|
1286
1295
|
|
|
1287
1296
|
debateMateProcessing(debate.moderatorId, true);
|
|
1288
|
-
|
|
1297
|
+
debateSendAndRecord(session, {
|
|
1289
1298
|
type: "debate_turn",
|
|
1290
1299
|
mateId: debate.moderatorId,
|
|
1291
1300
|
mateName: moderatorProfile.name,
|
|
@@ -1475,7 +1484,7 @@ function attachDebate(ctx) {
|
|
|
1475
1484
|
|
|
1476
1485
|
debate.turnInProgress = true;
|
|
1477
1486
|
debateMateProcessing(debate.moderatorId, true);
|
|
1478
|
-
|
|
1487
|
+
debateSendAndRecord(session, {
|
|
1479
1488
|
type: "debate_turn",
|
|
1480
1489
|
mateId: debate.moderatorId,
|
|
1481
1490
|
mateName: moderatorProfile.name,
|
|
@@ -1523,7 +1532,7 @@ function attachDebate(ctx) {
|
|
|
1523
1532
|
},
|
|
1524
1533
|
onDelta: function (delta) {
|
|
1525
1534
|
if (session._debate && session._debate.phase !== "ended") {
|
|
1526
|
-
|
|
1535
|
+
debateSendAndRecord(session, { type: "debate_stream", mateId: debate.moderatorId, mateName: moderatorProfile.name, delta: delta });
|
|
1527
1536
|
}
|
|
1528
1537
|
},
|
|
1529
1538
|
onDone: function (fullText) {
|
package/lib/public/app.js
CHANGED
|
@@ -5518,11 +5518,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
5518
5518
|
|
|
5519
5519
|
case "debate_turn_done":
|
|
5520
5520
|
if (msg.round) updateDebateRound(msg.round);
|
|
5521
|
-
|
|
5522
|
-
renderDebateTurnDone(msg);
|
|
5523
|
-
} else {
|
|
5524
|
-
handleDebateTurnDone(msg);
|
|
5525
|
-
}
|
|
5521
|
+
handleDebateTurnDone(msg);
|
|
5526
5522
|
break;
|
|
5527
5523
|
|
|
5528
5524
|
case "debate_hand_raised":
|
|
@@ -1225,16 +1225,33 @@ function renderDebateBriefCard(msg, resolved) {
|
|
|
1225
1225
|
topicHtml += '<div class="debate-brief-context">' + escapeHtml(msg.context) + '</div>';
|
|
1226
1226
|
}
|
|
1227
1227
|
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1228
|
+
// Resolve mate avatars from matesList
|
|
1229
|
+
var mates = ctx.matesList ? ctx.matesList() : [];
|
|
1230
|
+
var mateMap = {};
|
|
1231
|
+
for (var mi = 0; mi < mates.length; mi++) {
|
|
1232
|
+
mateMap[mates[mi].id] = mates[mi];
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
var modMate = msg.moderatorId ? mateMap[msg.moderatorId] : null;
|
|
1236
|
+
var modAvatarSrc = modMate ? mateAvatarUrl(modMate, 24) : "";
|
|
1237
|
+
topicHtml += '<div class="debate-brief-moderator" style="display:flex;align-items:center;gap:8px;">' +
|
|
1238
|
+
iconHtml("mic") + ' <strong>Moderator:</strong> ';
|
|
1239
|
+
if (modAvatarSrc) {
|
|
1240
|
+
topicHtml += '<img src="' + escapeHtml(modAvatarSrc) + '" width="24" height="24" style="border-radius:50%;flex-shrink:0;">';
|
|
1241
|
+
}
|
|
1242
|
+
topicHtml += escapeHtml(msg.moderatorName || "Unknown") + '</div>';
|
|
1231
1243
|
|
|
1232
1244
|
topicHtml += '<div class="debate-brief-panelists-label">' + iconHtml("users") + ' <strong>Panelists:</strong></div>';
|
|
1233
1245
|
topicHtml += '<div class="debate-brief-panelists">';
|
|
1234
1246
|
if (msg.panelists) {
|
|
1235
1247
|
for (var i = 0; i < msg.panelists.length; i++) {
|
|
1236
1248
|
var p = msg.panelists[i];
|
|
1237
|
-
|
|
1249
|
+
var mate = p.mateId ? mateMap[p.mateId] : null;
|
|
1250
|
+
var avatarSrc = mate ? mateAvatarUrl(mate, 24) : "";
|
|
1251
|
+
topicHtml += '<div class="debate-brief-panelist" style="display:flex;align-items:center;gap:8px;">';
|
|
1252
|
+
if (avatarSrc) {
|
|
1253
|
+
topicHtml += '<img src="' + escapeHtml(avatarSrc) + '" width="24" height="24" style="border-radius:50%;flex-shrink:0;">';
|
|
1254
|
+
}
|
|
1238
1255
|
topicHtml += '<span class="debate-brief-panelist-name">' + escapeHtml(p.name || "Unknown") + '</span>';
|
|
1239
1256
|
if (p.role) {
|
|
1240
1257
|
topicHtml += '<span class="debate-brief-panelist-role">' + escapeHtml(p.role) + '</span>';
|