MCPcopy Create free account
hub / github.com/astercloud/aster / sendMessage

Function sendMessage

ui/src/composables/useChat.ts:87–225  ·  view source on GitHub ↗
(content: string)

Source from the content-addressed store, hash-verified

85
86 // 发送消息
87 const sendMessage = async (content: string) => {
88 console.log("📤 sendMessage called with:", content);
89 console.log("📊 isDemoMode:", isDemoMode);
90 console.log("📊 wsConnected:", wsConnected.value);
91 console.log("📊 ws instance:", getInstance());
92
93 if (!content.trim()) return;
94
95 // 添加用户消息
96 const userMessage: TextMessage = {
97 id: generateId("msg"),
98 type: "text",
99 role: "user",
100 content: { text: content },
101 createdAt: Date.now(),
102 status: "pending",
103 };
104 chatStore.messages.push(userMessage);
105 console.log("✅ User message added to messages array");
106
107 // 创建 AI 响应占位(使用 reactive 确保响应式)
108 const assistantMessage: TextMessage = reactive({
109 id: generateId("msg"),
110 type: "text",
111 role: "assistant",
112 content: { text: "" },
113 createdAt: Date.now(),
114 }) as TextMessage;
115 chatStore.messages.push(assistantMessage);
116 chatStore.setActiveMessage(assistantMessage.id);
117 console.log("✅ Assistant message placeholder added");
118
119 chatStore.isTyping = true;
120 agent.value.status = "thinking";
121 userMessage.status = "sent";
122 currentInput.value = "";
123
124 try {
125 if (isDemoMode) {
126 await new Promise((resolve) => setTimeout(resolve, config.demoDelay ?? 800));
127 assistantMessage.content.text = pickDemoResponse(content);
128 assistantMessage.status = "sent";
129 chatStore.isTyping = false;
130 agent.value.status = "idle";
131 } else {
132 const ws = getInstance();
133 console.log("🔍 Checking WebSocket availability:", {
134 "ws exists": !!ws,
135 isConnected: wsConnected.value,
136 "ws type": ws?.constructor?.name,
137 });
138
139 // 使用 WebSocket 进行流式对话
140 if (ws && wsConnected.value) {
141 console.log("✅ Using WebSocket for chat");
142
143 // 监听 WebSocket 消息
144 const unsubscribe = ws.onMessage((message: any) => {

Callers 1

retryMessageFunction · 0.70

Calls 7

generateIdFunction · 0.90
getInstanceFunction · 0.85
logMethod · 0.80
onMessageMethod · 0.80
pickDemoResponseFunction · 0.70
handleAgentEventFunction · 0.70
sendMethod · 0.45

Tested by

no test coverage detected