@yeaft/webchat-agent 0.1.437 → 0.1.439

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.
@@ -332,5 +332,12 @@ export async function handleMessage(msg) {
332
332
  case 'unify_reset':
333
333
  await resetUnifySession();
334
334
  break;
335
+
336
+ // Expert roles definition (for ExpertPanel detail view)
337
+ case 'get_expert_roles': {
338
+ const { getExpertRolesDefinition } = await import('../expert-roles.js');
339
+ sendToServer({ type: 'expert_roles_list', roles: getExpertRolesDefinition() });
340
+ break;
341
+ }
335
342
  }
336
343
  }
package/conversation.js CHANGED
@@ -719,7 +719,10 @@ export async function handleUserInput(msg) {
719
719
 
720
720
  // ★ Expert Panel: construct expert message if selections provided
721
721
  const expertSelections = msg.expertSelections;
722
- if (expertSelections?.length > 0) {
722
+ if (msg.expertMessage) {
723
+ // Custom expert role: frontend already built the full prompt
724
+ effectivePrompt = msg.expertMessage;
725
+ } else if (expertSelections?.length > 0) {
723
726
  const { buildExpertMessage } = await import('./expert-roles.js');
724
727
  const expertResult = buildExpertMessage(expertSelections, effectivePrompt, msg.language || 'zh-CN');
725
728
  effectivePrompt = expertResult.effectivePrompt;
package/expert-roles.js CHANGED
@@ -877,4 +877,40 @@ export function buildExpertMessage(selections, userText, language = 'zh-CN') {
877
877
  return buildMultiExpertMessage(selections, userText, isZh);
878
878
  }
879
879
 
880
+ /**
881
+ * Return the full EXPERT_ROLES definition (including prompt content)
882
+ * for the web debug/admin panel.
883
+ *
884
+ * Format per role:
885
+ * {
886
+ * name, messagePrefix, messagePrefixEn,
887
+ * actions: { [actionId]: { name, nameEn, messageTemplate, messageTemplateEn, defaultMessage, defaultMessageEn } }
888
+ * }
889
+ *
890
+ * @returns {Object.<string, object>}
891
+ */
892
+ export function getExpertRolesDefinition() {
893
+ const result = {};
894
+ for (const [roleId, roleDef] of Object.entries(EXPERT_ROLES)) {
895
+ const actions = {};
896
+ for (const [actionId, actionDef] of Object.entries(roleDef.actions)) {
897
+ actions[actionId] = {
898
+ name: actionDef.name,
899
+ nameEn: actionDef.nameEn,
900
+ messageTemplate: actionDef.messageTemplate,
901
+ messageTemplateEn: actionDef.messageTemplateEn,
902
+ defaultMessage: actionDef.defaultMessage,
903
+ defaultMessageEn: actionDef.defaultMessageEn,
904
+ };
905
+ }
906
+ result[roleId] = {
907
+ name: roleDef.name,
908
+ messagePrefix: roleDef.messagePrefix,
909
+ messagePrefixEn: roleDef.messagePrefixEn,
910
+ actions,
911
+ };
912
+ }
913
+ return result;
914
+ }
915
+
880
916
  export { EXPERT_ROLES };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeaft/webchat-agent",
3
- "version": "0.1.437",
3
+ "version": "0.1.439",
4
4
  "description": "Remote agent for Yeaft WebChat — connects worker machines to the central server",
5
5
  "main": "index.js",
6
6
  "type": "module",