@amaster.ai/components-templates 1.4.11 → 1.6.0
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/README.md +12 -8
- package/components/ai-assistant/amaster.config.json +3 -0
- package/components/ai-assistant/package.json +3 -3
- package/components/ai-assistant/template/components/chat-assistant-message.tsx +1 -1
- package/components/ai-assistant/template/components/chat-banner.tsx +1 -1
- package/components/ai-assistant/template/components/chat-display-mode-switcher.tsx +6 -6
- package/components/ai-assistant/template/components/chat-floating-button.tsx +4 -5
- package/components/ai-assistant/template/components/chat-floating-card.tsx +3 -3
- package/components/ai-assistant/template/components/chat-header.tsx +5 -5
- package/components/ai-assistant/template/components/chat-input.tsx +21 -22
- package/components/ai-assistant/template/components/chat-messages.tsx +10 -2
- package/components/ai-assistant/template/components/chat-recommends.tsx +12 -14
- package/components/ai-assistant/template/components/chat-user-message.tsx +1 -1
- package/components/ai-assistant/template/components/ui-renderer.tsx +1 -1
- package/components/ai-assistant/template/components/voice-input.tsx +1 -1
- package/components/ai-assistant/template/hooks/useVoiceInput.ts +18 -20
- package/components/ai-assistant/template/inline-ai-assistant.tsx +1 -1
- package/components/ai-assistant-taro/amaster.config.json +3 -0
- package/components/ai-assistant-taro/package.json +94 -0
- package/components/ai-assistant-taro/template/components/ChatAssistantMessage.tsx +154 -0
- package/components/ai-assistant-taro/template/components/ChatHeader.tsx +27 -0
- package/components/ai-assistant-taro/template/components/ChatInput.tsx +204 -0
- package/components/ai-assistant-taro/template/components/ChatMessages.tsx +126 -0
- package/components/ai-assistant-taro/template/components/ChatUserMessage.tsx +25 -0
- package/components/ai-assistant-taro/template/components/VoiceInput.tsx +169 -0
- package/components/ai-assistant-taro/template/components/markdown.tsx +156 -0
- package/components/ai-assistant-taro/template/hooks/useConversation.ts +787 -0
- package/components/ai-assistant-taro/template/hooks/useSafeArea.ts +20 -0
- package/components/ai-assistant-taro/template/hooks/useVoiceInput.ts +204 -0
- package/components/ai-assistant-taro/template/i18n.ts +157 -0
- package/components/ai-assistant-taro/template/index.config.ts +10 -0
- package/components/ai-assistant-taro/template/index.tsx +83 -0
- package/components/ai-assistant-taro/template/types.ts +58 -0
- package/package.json +5 -2
- package/packages/cli/dist/index.js +14 -3
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/components/ai-assistant/example.md +0 -34
- package/components/ai-assistant/others.md +0 -16
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Taro from "@tarojs/taro";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
|
|
4
|
+
export const useSafeArea = () => {
|
|
5
|
+
const [safeAreaInsets, setSafeAreaInsets] = useState({ top: 0, bottom: 0 });
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
try {
|
|
8
|
+
const systemInfo = Taro.getWindowInfo();
|
|
9
|
+
setSafeAreaInsets({
|
|
10
|
+
top: systemInfo.safeArea?.top || 0,
|
|
11
|
+
bottom:
|
|
12
|
+
systemInfo.screenHeight -
|
|
13
|
+
(systemInfo.safeArea?.bottom || systemInfo.screenHeight),
|
|
14
|
+
});
|
|
15
|
+
} catch (error) {
|
|
16
|
+
console.warn("Failed to get system info:", error);
|
|
17
|
+
}
|
|
18
|
+
}, []);
|
|
19
|
+
return safeAreaInsets;
|
|
20
|
+
};
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import type { ASRHttpClient } from "@amaster.ai/client/*";
|
|
2
|
+
import Taro from "@tarojs/taro";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { client } from "@/lib/client";
|
|
5
|
+
|
|
6
|
+
export type VoiceInputStatus = "idle" | "recording" | "recognizing";
|
|
7
|
+
|
|
8
|
+
const arrayBufferToBase64 = (buffer: ArrayBuffer): string => {
|
|
9
|
+
return Taro.arrayBufferToBase64(buffer);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
interface RecorderOptions {
|
|
13
|
+
onStart?: () => void;
|
|
14
|
+
onStop?: (base64: string) => void;
|
|
15
|
+
onError?: (error: Error) => void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface Recorder {
|
|
19
|
+
start(): Promise<void>;
|
|
20
|
+
stop(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function createTaroRecorder(props?: RecorderOptions): Promise<Recorder> {
|
|
24
|
+
let isClosing = false;
|
|
25
|
+
let closed = false;
|
|
26
|
+
let recorderManager: Taro.RecorderManager | null = null;
|
|
27
|
+
let status = "idle";
|
|
28
|
+
|
|
29
|
+
const cleanup = () => {
|
|
30
|
+
if (isClosing) return;
|
|
31
|
+
isClosing = true;
|
|
32
|
+
if (recorderManager) {
|
|
33
|
+
try {
|
|
34
|
+
recorderManager.stop();
|
|
35
|
+
} catch {}
|
|
36
|
+
recorderManager = null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
isClosing = false;
|
|
40
|
+
closed = true;
|
|
41
|
+
console.trace("[ASR-HTTP] Cleanup recorder, status:", status);
|
|
42
|
+
status = "idle";
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const onError = (error: Error) => {
|
|
46
|
+
console.error("[ASR-HTTP] Recorder error:", error);
|
|
47
|
+
props?.onError?.(error);
|
|
48
|
+
cleanup();
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const onStop = (res) => {
|
|
52
|
+
if (!res.tempFilePath) {
|
|
53
|
+
onError(new Error('NO_AVAILABLE_AUDIO'));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
if (!closed) {
|
|
59
|
+
const fs = Taro.getFileSystemManager();
|
|
60
|
+
const fileData = fs.readFileSync(res.tempFilePath) as ArrayBuffer;
|
|
61
|
+
props?.onStop?.(arrayBufferToBase64(fileData));
|
|
62
|
+
}
|
|
63
|
+
} catch (err) {
|
|
64
|
+
onError(new Error('READ_FILE_ERROR'));
|
|
65
|
+
} finally {
|
|
66
|
+
cleanup();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const start = async (): Promise<void> => {
|
|
71
|
+
if (status !== "idle") {
|
|
72
|
+
console.warn("[ASR-HTTP] Already in progress, status:", status);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
console.log("[ASR-HTTP] Starting recording...", status);
|
|
77
|
+
|
|
78
|
+
try {
|
|
79
|
+
isClosing = false;
|
|
80
|
+
status = "recording";
|
|
81
|
+
recorderManager = Taro.getRecorderManager();
|
|
82
|
+
|
|
83
|
+
if (
|
|
84
|
+
!recorderManager ||
|
|
85
|
+
!recorderManager.onStart ||
|
|
86
|
+
!recorderManager.onStop
|
|
87
|
+
) {
|
|
88
|
+
console.error("[ASR-HTTP] Recorder not available");
|
|
89
|
+
onError(new Error('ENV_NOT_SUPPORT'));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
recorderManager.onStart(() => {
|
|
94
|
+
props?.onStart?.();
|
|
95
|
+
});
|
|
96
|
+
recorderManager.onStop(onStop);
|
|
97
|
+
recorderManager.onInterruptionEnd(onStop);
|
|
98
|
+
recorderManager.onError((err) => {
|
|
99
|
+
console.error("[ASR-HTTP] Recorder error event:", err);
|
|
100
|
+
onError(new Error(err.errMsg || "RECORDING_ERROR"));
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
// Start recording - directly record as WAV
|
|
105
|
+
recorderManager.start({
|
|
106
|
+
duration: 60000,
|
|
107
|
+
sampleRate: 16000,
|
|
108
|
+
numberOfChannels: 1,
|
|
109
|
+
encodeBitRate: 64000,
|
|
110
|
+
format: "wav",
|
|
111
|
+
});
|
|
112
|
+
} catch (error) {
|
|
113
|
+
onError(error);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const stop = async () => {
|
|
118
|
+
if (status === "recording" && recorderManager) {
|
|
119
|
+
try {
|
|
120
|
+
recorderManager.stop();
|
|
121
|
+
} catch (err) {
|
|
122
|
+
onError(err);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
return {
|
|
128
|
+
start,
|
|
129
|
+
stop,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const getLocale = () => {
|
|
134
|
+
try {
|
|
135
|
+
const systemInfo = Taro.getAppBaseInfo();
|
|
136
|
+
const lang = systemInfo.language || "zh-CN";
|
|
137
|
+
return lang.startsWith("zh") ? "zh" : "en";
|
|
138
|
+
} catch {
|
|
139
|
+
return "zh";
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export const useVoiceInput = (
|
|
144
|
+
options: {
|
|
145
|
+
onResult?: (text: string) => void;
|
|
146
|
+
onError?: (error: string) => void;
|
|
147
|
+
onStatusChange?: (status: VoiceInputStatus) => void;
|
|
148
|
+
} = {},
|
|
149
|
+
) => {
|
|
150
|
+
const [status, setStatus] = useState<VoiceInputStatus>("idle");
|
|
151
|
+
const asrClientRef = useRef<ASRHttpClient | null>(null);
|
|
152
|
+
|
|
153
|
+
const startRecording = async () => {
|
|
154
|
+
setStatus("recording");
|
|
155
|
+
if (!asrClientRef.current) {
|
|
156
|
+
asrClientRef.current = client.asrHttp({
|
|
157
|
+
language: getLocale(),
|
|
158
|
+
createRecorder: createTaroRecorder,
|
|
159
|
+
onStatusChange(newStatus) {
|
|
160
|
+
setStatus(newStatus);
|
|
161
|
+
options.onStatusChange?.(newStatus);
|
|
162
|
+
},
|
|
163
|
+
onResult(text) {
|
|
164
|
+
options.onResult?.(text);
|
|
165
|
+
},
|
|
166
|
+
onRecordingStop() {
|
|
167
|
+
setStatus("idle");
|
|
168
|
+
options.onStatusChange?.("idle");
|
|
169
|
+
},
|
|
170
|
+
onError(err) {
|
|
171
|
+
err.message && options.onError?.(err.message);
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (asrClientRef.current) {
|
|
176
|
+
asrClientRef.current.startRecording();
|
|
177
|
+
} else {
|
|
178
|
+
options.onError?.("CREATE_ASR_CLIENT_ERROR");
|
|
179
|
+
setStatus("idle");
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const stopRecording = async () => {
|
|
184
|
+
if (asrClientRef.current) {
|
|
185
|
+
await asrClientRef.current.stopRecording();
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
return () => {
|
|
191
|
+
if (asrClientRef.current) {
|
|
192
|
+
asrClientRef.current.stopRecording();
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}, []);
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
status,
|
|
199
|
+
startRecording,
|
|
200
|
+
stopRecording,
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
export default useVoiceInput;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import Taro from "@tarojs/taro";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
|
|
4
|
+
type Locale = "zh-CN" | "en-US";
|
|
5
|
+
|
|
6
|
+
interface I18nStrings {
|
|
7
|
+
// Header
|
|
8
|
+
title: string;
|
|
9
|
+
online: string;
|
|
10
|
+
// Messages
|
|
11
|
+
greeting: string;
|
|
12
|
+
thinking: string;
|
|
13
|
+
thinkResult: string;
|
|
14
|
+
noResponse: string;
|
|
15
|
+
errorMessage: string;
|
|
16
|
+
// Tool status
|
|
17
|
+
toolCompleted: string;
|
|
18
|
+
toolFailed: string;
|
|
19
|
+
toolPending: string;
|
|
20
|
+
toolRunning: string;
|
|
21
|
+
// Input
|
|
22
|
+
inputPlaceholder: string;
|
|
23
|
+
sendHint: string;
|
|
24
|
+
// Toast
|
|
25
|
+
conversationReset: string;
|
|
26
|
+
conversationCancelled: string;
|
|
27
|
+
newConversation: string;
|
|
28
|
+
sendFailed: string;
|
|
29
|
+
unknownTool: string;
|
|
30
|
+
loading: string;
|
|
31
|
+
// History loading
|
|
32
|
+
loadingHistory: string;
|
|
33
|
+
loadMore: string;
|
|
34
|
+
noMoreHistory: string;
|
|
35
|
+
conversationDivider: string;
|
|
36
|
+
// Stop generating
|
|
37
|
+
stopGenerating: string;
|
|
38
|
+
cancelled: string;
|
|
39
|
+
// Default recommended questions
|
|
40
|
+
defaultRecommendedQuestions: string[];
|
|
41
|
+
VoiceInputStatus: Record<string, string>;
|
|
42
|
+
voiceInputError: Record<string, string>;
|
|
43
|
+
send: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const i18n: Record<Locale, I18nStrings> = {
|
|
47
|
+
"zh-CN": {
|
|
48
|
+
title: "AI 助手",
|
|
49
|
+
online: "在线",
|
|
50
|
+
greeting: "你好!我是智能助手,有什么可以帮助你的吗?",
|
|
51
|
+
thinking: "思考中...",
|
|
52
|
+
noResponse: "收到您的消息了,但我暂时无法生成回复。",
|
|
53
|
+
errorMessage: "抱歉,我遇到了一些问题,请稍后再试。",
|
|
54
|
+
toolCompleted: "已完成",
|
|
55
|
+
toolFailed: "失败",
|
|
56
|
+
toolPending: "等待中...",
|
|
57
|
+
toolRunning: "执行中...",
|
|
58
|
+
inputPlaceholder: "输入消息...",
|
|
59
|
+
sendHint: "以上内容均由AI生成,仅供参考",
|
|
60
|
+
conversationReset: "对话已重置",
|
|
61
|
+
conversationCancelled: "对话已取消",
|
|
62
|
+
newConversation: "新对话",
|
|
63
|
+
sendFailed: "发送消息失败,请重试",
|
|
64
|
+
loading: "加载中",
|
|
65
|
+
thinkResult: "思考过程",
|
|
66
|
+
unknownTool: "未知工具",
|
|
67
|
+
loadingHistory: "正在加载历史消息...",
|
|
68
|
+
loadMore: "下拉加载更多",
|
|
69
|
+
noMoreHistory: "没有更多历史消息了",
|
|
70
|
+
conversationDivider: "以下为新对话",
|
|
71
|
+
stopGenerating: "停止生成",
|
|
72
|
+
cancelled: "用户主动停止",
|
|
73
|
+
defaultRecommendedQuestions: [
|
|
74
|
+
"你都有哪些技能?",
|
|
75
|
+
"今天北京天气如何?",
|
|
76
|
+
"如何使用这个系统?",
|
|
77
|
+
],
|
|
78
|
+
VoiceInputStatus: {
|
|
79
|
+
connecting: "连接中...",
|
|
80
|
+
recording: "录音中...\n松开识别",
|
|
81
|
+
recognizing: "识别中...",
|
|
82
|
+
},
|
|
83
|
+
voiceInputError: {
|
|
84
|
+
ENV_NOT_SUPPORT: "请在真机使用此功能",
|
|
85
|
+
CREATE_ASR_CLIENT_ERROR: "启动录音失败",
|
|
86
|
+
NO_AVAILABLE_AUDIO: "无可用录音文件",
|
|
87
|
+
RECORDING_ERROR: "录音发生错误",
|
|
88
|
+
READ_FILE_ERROR: "读取录音失败",
|
|
89
|
+
MIC_PERMISSION_DENIED: "请允许使用麦克风",
|
|
90
|
+
},
|
|
91
|
+
send: "发送",
|
|
92
|
+
},
|
|
93
|
+
"en-US": {
|
|
94
|
+
title: "AI Assistant",
|
|
95
|
+
online: "Online",
|
|
96
|
+
greeting: "Hello! I'm your AI assistant. How can I help you today?",
|
|
97
|
+
thinking: "Thinking...",
|
|
98
|
+
thinkResult: "Thought process",
|
|
99
|
+
noResponse:
|
|
100
|
+
"Message received, but I cannot generate a response at the moment.",
|
|
101
|
+
errorMessage: "Sorry, I encountered an issue. Please try again later.",
|
|
102
|
+
toolCompleted: "Completed",
|
|
103
|
+
toolFailed: "Failed",
|
|
104
|
+
toolPending: "Pending...",
|
|
105
|
+
toolRunning: "Running...",
|
|
106
|
+
inputPlaceholder: "Type a message...",
|
|
107
|
+
sendHint: "The above content is generated by AI and is for reference only",
|
|
108
|
+
conversationReset: "Conversation reset",
|
|
109
|
+
conversationCancelled: "Conversation cancelled",
|
|
110
|
+
newConversation: "New Chat",
|
|
111
|
+
sendFailed: "Failed to send message, please retry",
|
|
112
|
+
unknownTool: "Unknown tool",
|
|
113
|
+
loading: "Loading",
|
|
114
|
+
loadingHistory: "Loading history...",
|
|
115
|
+
loadMore: "Pull down to load more",
|
|
116
|
+
noMoreHistory: "No more history messages",
|
|
117
|
+
conversationDivider: "New conversation below",
|
|
118
|
+
stopGenerating: "Stop generating",
|
|
119
|
+
cancelled: "Cancelled by user",
|
|
120
|
+
defaultRecommendedQuestions: [
|
|
121
|
+
"What skills do you have?",
|
|
122
|
+
"What's the weather like in Beijing today?",
|
|
123
|
+
"How do I use this system?",
|
|
124
|
+
],
|
|
125
|
+
VoiceInputStatus: {
|
|
126
|
+
connecting: "connecting...",
|
|
127
|
+
recording: "recording...",
|
|
128
|
+
recognizing: "recognizing...",
|
|
129
|
+
},
|
|
130
|
+
voiceInputError: {
|
|
131
|
+
ENV_NOT_SUPPORT: "Env not supported",
|
|
132
|
+
CREATE_ASR_CLIENT_ERROR: "Failed to create ASR client",
|
|
133
|
+
NO_AVAILABLE_AUDIO: "No available audio recording",
|
|
134
|
+
RECORDING_ERROR: "An error occurred during recording",
|
|
135
|
+
READ_FILE_ERROR: "Failed to read the audio file",
|
|
136
|
+
MIC_PERMISSION_DENIED: "Please allow microphone permissions",
|
|
137
|
+
},
|
|
138
|
+
send: "Send",
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/** Get current locale from system or default to zh-CN */
|
|
143
|
+
const getLocale = (): Locale => {
|
|
144
|
+
try {
|
|
145
|
+
const systemInfo = Taro.getAppBaseInfo();
|
|
146
|
+
const lang = systemInfo.language || "zh-CN";
|
|
147
|
+
return lang.startsWith("en") ? "en-US" : "zh-CN";
|
|
148
|
+
} catch {
|
|
149
|
+
return "zh-CN";
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
export const useAiAssistantI18n = (localeProp?: Locale) => {
|
|
154
|
+
const locale = localeProp || getLocale();
|
|
155
|
+
const t = useMemo(() => i18n[locale], [locale]);
|
|
156
|
+
return { t, locale };
|
|
157
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="@tarojs/taro" />
|
|
2
|
+
|
|
3
|
+
export default definePageConfig({
|
|
4
|
+
navigationBarTitleText: 'AI 助手',
|
|
5
|
+
navigationBarBackgroundColor: '#ffffff',
|
|
6
|
+
navigationBarTextStyle: 'black',
|
|
7
|
+
backgroundColor: '#F9FAFB',
|
|
8
|
+
// Hide default navigation bar to use custom header
|
|
9
|
+
navigationStyle: 'custom'
|
|
10
|
+
})
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { View } from "@tarojs/components";
|
|
2
|
+
import type React from "react";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { ChatHeader } from "./components/ChatHeader";
|
|
5
|
+
import { ChatInput } from "./components/ChatInput";
|
|
6
|
+
import { ChatMessages } from "./components/ChatMessages";
|
|
7
|
+
import { useConversationProcessor } from "./hooks/useConversation";
|
|
8
|
+
import { useAiAssistantI18n } from "./i18n";
|
|
9
|
+
import type { AIAssistantProps } from "./types";
|
|
10
|
+
|
|
11
|
+
const AIAssistantInner: React.FC<AIAssistantProps> = (props) => {
|
|
12
|
+
const [inputValue, setInputValue] = useState("");
|
|
13
|
+
const { t } = useAiAssistantI18n();
|
|
14
|
+
const greeting = props.welcome || t.greeting;
|
|
15
|
+
const recommendedQuestions =
|
|
16
|
+
props.recommendedQuestions || t.defaultRecommendedQuestions;
|
|
17
|
+
|
|
18
|
+
const {
|
|
19
|
+
starting,
|
|
20
|
+
conversations,
|
|
21
|
+
isLoading,
|
|
22
|
+
isLoadingHistory,
|
|
23
|
+
historyState,
|
|
24
|
+
sendMessage,
|
|
25
|
+
startNewConversation,
|
|
26
|
+
loadMoreHistory,
|
|
27
|
+
resetConversation,
|
|
28
|
+
cancelChat,
|
|
29
|
+
} = useConversationProcessor();
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
!starting && conversations.length === 0 && resetConversation(greeting);
|
|
33
|
+
}, [starting, conversations.length, greeting, resetConversation]);
|
|
34
|
+
|
|
35
|
+
const handleSendMessage = async () => {
|
|
36
|
+
if (!inputValue.trim() || isLoading) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setInputValue("");
|
|
40
|
+
await sendMessage(inputValue.trim());
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const handleQuestionClick = (question: string) => {
|
|
44
|
+
if (isLoading) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
sendMessage(question);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<View className="flex flex-col h-screen bg-primary/10">
|
|
52
|
+
<ChatHeader />
|
|
53
|
+
|
|
54
|
+
<ChatMessages
|
|
55
|
+
conversations={conversations}
|
|
56
|
+
isLoading={isLoading}
|
|
57
|
+
isLoadingHistory={isLoadingHistory}
|
|
58
|
+
hasMoreHistory={historyState.hasMore}
|
|
59
|
+
onLoadMore={!starting ? undefined : loadMoreHistory}
|
|
60
|
+
/>
|
|
61
|
+
|
|
62
|
+
<ChatInput
|
|
63
|
+
conversations={conversations}
|
|
64
|
+
isLoading={isLoading}
|
|
65
|
+
starting={starting}
|
|
66
|
+
inputValue={inputValue}
|
|
67
|
+
onInputChange={setInputValue}
|
|
68
|
+
onInputAppend={(text) => setInputValue((prev) => prev + text)}
|
|
69
|
+
onSendMessage={handleSendMessage}
|
|
70
|
+
onNewConversation={startNewConversation}
|
|
71
|
+
onCancel={cancelChat}
|
|
72
|
+
recommendedQuestions={recommendedQuestions}
|
|
73
|
+
onQuestionClick={handleQuestionClick}
|
|
74
|
+
/>
|
|
75
|
+
</View>
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const AIAssistantPage: React.FC<AIAssistantProps> = (props) => {
|
|
80
|
+
return <AIAssistantInner {...props} />;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export default AIAssistantPage;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type Role = "user" | "assistant" | "system";
|
|
2
|
+
|
|
3
|
+
interface BaseMessage {
|
|
4
|
+
messageId: string;
|
|
5
|
+
role?: Role;
|
|
6
|
+
kind: string; // 'message' | 'status-update' | 'text-content' 等
|
|
7
|
+
timestamp?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface TextMessage extends BaseMessage {
|
|
11
|
+
kind: "text-content" | "message";
|
|
12
|
+
content: string; // 最终拼接后的文本
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ErrorMessage extends BaseMessage {
|
|
16
|
+
kind: "error";
|
|
17
|
+
content: string; // 错误信息文本
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ThoughtMessage extends BaseMessage {
|
|
21
|
+
kind: "thought";
|
|
22
|
+
thought: string; // 逐步累积的 thinking 内容
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ToolMessage extends BaseMessage {
|
|
26
|
+
kind: "tool";
|
|
27
|
+
toolName?: string;
|
|
28
|
+
toolStatus?: string;
|
|
29
|
+
toolDescription?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type MessagesItem =
|
|
33
|
+
| TextMessage
|
|
34
|
+
| ThoughtMessage
|
|
35
|
+
| ToolMessage
|
|
36
|
+
| BaseMessage;
|
|
37
|
+
|
|
38
|
+
export interface Conversation {
|
|
39
|
+
taskId: string;
|
|
40
|
+
status: "submitted" | "working" | "completed" | "error";
|
|
41
|
+
messages: MessagesItem[];
|
|
42
|
+
lastUpdated: string;
|
|
43
|
+
historyId?: string;
|
|
44
|
+
system?: {
|
|
45
|
+
level: "newConversation";
|
|
46
|
+
content?: string;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface Position {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface AIAssistantProps {
|
|
56
|
+
welcome?: string;
|
|
57
|
+
recommendedQuestions?: string[];
|
|
58
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/components-templates",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Amaster component templates collection",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -31,7 +31,10 @@
|
|
|
31
31
|
"version:major": "npm version major",
|
|
32
32
|
"sync:ai-assistant": "cp -rf ../template/src/components/ai-assistant/ ./components/ai-assistant/template/",
|
|
33
33
|
"sync:package-json": "cp ../template/package.json ./components/ai-assistant/package.json",
|
|
34
|
-
"sync": "npm run sync:ai-assistant && npm run sync:package-json"
|
|
34
|
+
"sync": "npm run sync:ai-assistant && npm run sync:package-json",
|
|
35
|
+
"sync:taro:ai-assistant": "cp -rf ../template-taro/src/pages/ai-assistant/ ./components/ai-assistant-taro/template/",
|
|
36
|
+
"sync:taro:package-json": "cp ../template-taro/package.json ./components/ai-assistant-taro/package.json",
|
|
37
|
+
"sync:taro": "npm run sync:taro:ai-assistant && npm run sync:taro:package-json"
|
|
35
38
|
},
|
|
36
39
|
"keywords": [
|
|
37
40
|
"amaster",
|
|
@@ -37,6 +37,14 @@ async function getComponentConfig(componentName) {
|
|
|
37
37
|
}
|
|
38
38
|
return await fs.readJson(configPath);
|
|
39
39
|
}
|
|
40
|
+
async function getAmasterConfig(componentName) {
|
|
41
|
+
const componentsDir = getComponentsDir();
|
|
42
|
+
const configPath = path.join(componentsDir, componentName, "amaster.config.json");
|
|
43
|
+
if (!fs.existsSync(configPath)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return await fs.readJson(configPath);
|
|
47
|
+
}
|
|
40
48
|
function detectPackageManager(targetDir) {
|
|
41
49
|
if (fs.existsSync(path.join(targetDir, "pnpm-lock.yaml"))) {
|
|
42
50
|
return "pnpm";
|
|
@@ -283,9 +291,10 @@ cli
|
|
|
283
291
|
}
|
|
284
292
|
const { component, subPath } = parseComponentRef(selectedRef);
|
|
285
293
|
const config = await getComponentConfig(component);
|
|
294
|
+
const amasterConfig = await getAmasterConfig(component);
|
|
286
295
|
const defaultTargetDir = subPath
|
|
287
296
|
? "src/components"
|
|
288
|
-
: config?.template?.targetDir || `src/components/${component}`;
|
|
297
|
+
: amasterConfig?.targetDir || config?.template?.targetDir || `src/components/${component}`;
|
|
289
298
|
let targetDir;
|
|
290
299
|
if (options.dir) {
|
|
291
300
|
targetDir = options.dir;
|
|
@@ -324,6 +333,7 @@ cli
|
|
|
324
333
|
.command("info <component>", "Show component template information")
|
|
325
334
|
.action(async (component) => {
|
|
326
335
|
const config = await getComponentConfig(component);
|
|
336
|
+
const amasterConfig = await getAmasterConfig(component);
|
|
327
337
|
if (!config) {
|
|
328
338
|
console.log(chalk.red(`Component '${component}' not found.`));
|
|
329
339
|
process.exit(1);
|
|
@@ -332,8 +342,9 @@ cli
|
|
|
332
342
|
console.log(chalk.gray("━".repeat(40)));
|
|
333
343
|
console.log(chalk.white(`Version: ${config.version || "1.0.0"}`));
|
|
334
344
|
console.log(chalk.white(`Description: ${config.description || "No description"}`));
|
|
335
|
-
|
|
336
|
-
|
|
345
|
+
const targetDir = amasterConfig?.targetDir || config.template?.targetDir;
|
|
346
|
+
if (targetDir) {
|
|
347
|
+
console.log(chalk.white(`Default target: ${targetDir}`));
|
|
337
348
|
}
|
|
338
349
|
console.log(chalk.yellow("\nAvailable paths:"));
|
|
339
350
|
const componentsDir = getComponentsDir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|