Add LICENSE, README, and Docs tab to Mission Control

This commit is contained in:
root
2026-02-22 07:33:18 +00:00
parent 3e7b457d5f
commit 0817444dc5
68 changed files with 6677 additions and 1673 deletions
+79
View File
@@ -0,0 +1,79 @@
export type SiteMenteMessage = {
role: "user" | "assistant" | "system";
content: string;
};
export type SiteMenteSpeechResult = {
audioBytes: Uint8Array;
mimeType: string;
};
const TEXT_MODEL = "MiniMax-M2.5";
const API_KEY = process.env.MINIMAX_API_KEY || "sk-cp-q8FpnlRzqa2oHVrHYVKXgCDAltN85KdsiSqAzRZeP6zvSSauupHu4ffVPKLgVWFz534az2lgM39T6ReXUvfT-8sUlQd9faush2Kr3KNmykoJNNgE8IET73Q";
const MINIMAX_API_BASE = "https://api.minimax.io/v1";
const SYSTEM_PROMPT = `You are SiteMente, an AI site strategist that helps business owners make their websites think like a smart assistant.
You deeply understand landing pages, funnels, customer psychology, and automation.
You recommend specific AI Minds, suggest copy and UX changes, and ask focused clarifying questions before proposing changes.
Keep answers concise, practical, and business-oriented.`;
export const generateSiteMenteText = async (
messages: SiteMenteMessage[]
): Promise<string> => {
try {
// Build messages - add system prompt if not present
const hasSystem = messages.some((m) => m.role === "system");
// Filter and format messages
const contents = messages
.filter((m) => m.role !== "system")
.map((m) => ({
role: m.role === "assistant" ? "assistant" : "user",
content: m.content,
}));
// Add system instruction
if (!hasSystem) {
contents.unshift({ role: "system", content: SYSTEM_PROMPT });
}
const response = await fetch(`${MINIMAX_API_BASE}/text/chatcompletion_v2`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${API_KEY}`,
},
body: JSON.stringify({
model: TEXT_MODEL,
messages: contents,
max_tokens: 1024,
}),
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`MiniMax API error: ${response.status} - ${errorText}`);
}
const data = await response.json();
const text = data?.choices?.[0]?.message?.content;
if (!text) {
throw new Error("MiniMax returned an empty response.");
}
return text;
} catch (error) {
console.error("[SiteMente][MiniMax] Text generation failed", error);
throw error;
}
};
export const generateSiteMenteSpeech = async (
text: string
): Promise<SiteMenteSpeechResult> => {
// MiniMax doesn't have built-in TTS in their text API
// Vapi handles voice output on their end
throw new Error("TTS not implemented - Vapi handles voice output");
};