@mazees/mark 5.0.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/LICENSE +29 -0
- package/README.md +209 -0
- package/bin/mark.js +27 -0
- package/out/renderer/assets/icon-DHo2CYph.svg +1 -0
- package/out/renderer/assets/index-G2fADWO-.js +4768 -0
- package/out/renderer/assets/index-f3mVse3c.css +1 -0
- package/out/renderer/assets/music-cover-CG4vi3kZ.png +0 -0
- package/out/renderer/assets/poppins-devanagari-400-normal-CJDn6rn8.woff2 +0 -0
- package/out/renderer/assets/poppins-devanagari-400-normal-CqVvlrh5.woff +0 -0
- package/out/renderer/assets/poppins-devanagari-500-normal-BIdkeU1p.woff2 +0 -0
- package/out/renderer/assets/poppins-devanagari-500-normal-DMPDjHtT.woff +0 -0
- package/out/renderer/assets/poppins-devanagari-600-normal-ClASKHrr.woff +0 -0
- package/out/renderer/assets/poppins-devanagari-600-normal-STEjXBNN.woff2 +0 -0
- package/out/renderer/assets/poppins-devanagari-700-normal-O-jipLrW.woff2 +0 -0
- package/out/renderer/assets/poppins-devanagari-700-normal-fHs-vx92.woff +0 -0
- package/out/renderer/assets/poppins-latin-400-normal-BOb3E3N0.woff +0 -0
- package/out/renderer/assets/poppins-latin-400-normal-cpxAROuN.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-500-normal-C8OXljZJ.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-500-normal-DGXqpDMm.woff +0 -0
- package/out/renderer/assets/poppins-latin-600-normal-BJdTmd5m.woff +0 -0
- package/out/renderer/assets/poppins-latin-600-normal-zEkxB9Mr.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-700-normal-BVuQR_eA.woff +0 -0
- package/out/renderer/assets/poppins-latin-700-normal-Qrb0O0WB.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-ext-400-normal-DaBSavcJ.woff +0 -0
- package/out/renderer/assets/poppins-latin-ext-400-normal-by3JarPu.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-ext-500-normal-CK-6C4Hw.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-ext-500-normal-CgAe2rWW.woff +0 -0
- package/out/renderer/assets/poppins-latin-ext-600-normal-CAhIAdZj.woff2 +0 -0
- package/out/renderer/assets/poppins-latin-ext-600-normal-Df5ffKXP.woff +0 -0
- package/out/renderer/assets/poppins-latin-ext-700-normal-DctTR6Tg.woff +0 -0
- package/out/renderer/assets/poppins-latin-ext-700-normal-cby-RkWa.woff2 +0 -0
- package/out/renderer/favicon.ico +0 -0
- package/out/renderer/icon-256.png +0 -0
- package/out/renderer/icon.svg +1 -0
- package/out/renderer/index.html +25 -0
- package/out/renderer/manifest.json +25 -0
- package/out/renderer/robot-simulator.html +1640 -0
- package/package.json +106 -0
- package/src/cli/index.js +332 -0
- package/src/cli/monitor.js +413 -0
- package/src/cli/theme.js +347 -0
- package/src/launcher/MarkTray.cs +227 -0
- package/src/main/browser-agent.js +1132 -0
- package/src/main/git-service.js +90 -0
- package/src/main/google/google-calendar.js +69 -0
- package/src/main/google/google-drive.js +263 -0
- package/src/main/google/google-gmail.js +131 -0
- package/src/main/google/google-service.js +241 -0
- package/src/main/node-tools.js +23 -0
- package/src/main/pc-agent-scripts/mouse-locker.ps1 +76 -0
- package/src/main/pc-agent-scripts/ocr-region.ps1 +185 -0
- package/src/main/pc-agent-scripts/pc-daemon.ps1 +726 -0
- package/src/main/pc-agent-scripts/pc-overlay.ps1 +253 -0
- package/src/main/pc-agent-scripts/pick-folder.ps1 +33 -0
- package/src/main/pc-agent-scripts/read-ui.ps1 +181 -0
- package/src/main/pc-agent-scripts/take-screenshot.ps1 +24 -0
- package/src/main/pc-agent-scripts/win-action.ps1 +380 -0
- package/src/main/plugins/plugin-loader.js +306 -0
- package/src/main/skills/skill-manager.js +265 -0
- package/src/main/syntax-validator.js +455 -0
- package/src/main/task-daemon.js +117 -0
- package/src/main/telegram/telegram-service.js +835 -0
- package/src/main/tools/browser-tools.js +516 -0
- package/src/main/tools/file-tools.js +1126 -0
- package/src/main/tools/git-tools.js +79 -0
- package/src/main/tools/google-tools.js +566 -0
- package/src/main/tools/index.js +36 -0
- package/src/main/tools/media-tools.js +42 -0
- package/src/main/tools/system-tools.js +295 -0
- package/src/main/tools/task-tools.js +73 -0
- package/src/main/tools/telegram-tools.js +101 -0
- package/src/renderer/index.html +24 -0
- package/src/renderer/public/favicon.ico +0 -0
- package/src/renderer/public/icon-256.png +0 -0
- package/src/renderer/public/icon.svg +1 -0
- package/src/renderer/public/manifest.json +25 -0
- package/src/renderer/public/robot-simulator.html +1640 -0
- package/src/renderer/src/App.jsx +304 -0
- package/src/renderer/src/api/ai/awareness.js +294 -0
- package/src/renderer/src/api/ai/chatSummarizer.js +79 -0
- package/src/renderer/src/api/ai/contextCompactor.js +129 -0
- package/src/renderer/src/api/ai/contextManager.js +1130 -0
- package/src/renderer/src/api/ai/core.js +167 -0
- package/src/renderer/src/api/ai/index.js +4 -0
- package/src/renderer/src/api/ai/memoryGroomer.js +101 -0
- package/src/renderer/src/api/ai/persona.js +115 -0
- package/src/renderer/src/api/ai/planning.js +317 -0
- package/src/renderer/src/api/ai/relationship.js +177 -0
- package/src/renderer/src/api/ai/skillSynthesizer.js +168 -0
- package/src/renderer/src/api/ai/tools.js +167 -0
- package/src/renderer/src/api/ai/utils.js +359 -0
- package/src/renderer/src/api/db.js +1013 -0
- package/src/renderer/src/api/oramaStore.js +592 -0
- package/src/renderer/src/api/ragPipeline.js +87 -0
- package/src/renderer/src/api/subagent/subagentExecutor.js +780 -0
- package/src/renderer/src/api/subagent/subagentPrompt.js +44 -0
- package/src/renderer/src/api/subagent/subagentStore.js +173 -0
- package/src/renderer/src/api/taskExecutor.js +18 -0
- package/src/renderer/src/api/taskStore.js +315 -0
- package/src/renderer/src/api/tools/core-tools.js +707 -0
- package/src/renderer/src/api/tools/index.js +151 -0
- package/src/renderer/src/api/turnPairMigrator.js +200 -0
- package/src/renderer/src/api/vectorMemory.js +136 -0
- package/src/renderer/src/api/wakeWord.js +101 -0
- package/src/renderer/src/api/web-bridge.js +885 -0
- package/src/renderer/src/api/webSpeech.js +178 -0
- package/src/renderer/src/api/workspaceRag.js +76 -0
- package/src/renderer/src/assets/electron.svg +10 -0
- package/src/renderer/src/assets/icon.svg +1 -0
- package/src/renderer/src/assets/main.css +589 -0
- package/src/renderer/src/assets/music-cover.png +0 -0
- package/src/renderer/src/assets/wavy-lines.svg +25 -0
- package/src/renderer/src/components/Chat/ApprovalBubble.jsx +127 -0
- package/src/renderer/src/components/Chat/CodeBlock.jsx +83 -0
- package/src/renderer/src/components/Chat/DurableTaskBubble.jsx +455 -0
- package/src/renderer/src/components/Chat/FileDiffModal.jsx +328 -0
- package/src/renderer/src/components/Chat/GeminiWidgets.jsx +82 -0
- package/src/renderer/src/components/Chat/MemoryFooterBubble.jsx +34 -0
- package/src/renderer/src/components/Chat/MessageBubble.jsx +459 -0
- package/src/renderer/src/components/Chat/PluginExecutionBubble.jsx +41 -0
- package/src/renderer/src/components/Chat/ThinkingBubble.jsx +316 -0
- package/src/renderer/src/components/Chat/YoutubeSearchBubble.jsx +43 -0
- package/src/renderer/src/components/Chat/YoutubeSummaryBubble.jsx +40 -0
- package/src/renderer/src/components/Chat/index.js +11 -0
- package/src/renderer/src/components/ChatList.jsx +434 -0
- package/src/renderer/src/components/GlobalCameraManager.jsx +67 -0
- package/src/renderer/src/components/Versions.jsx +15 -0
- package/src/renderer/src/components/YoutubeMusicPlayer.jsx +375 -0
- package/src/renderer/src/components/camera/CameraPreview.jsx +236 -0
- package/src/renderer/src/components/config/AiEngineSection.jsx +363 -0
- package/src/renderer/src/components/config/CameraSection.jsx +100 -0
- package/src/renderer/src/components/config/PermissionsSection.jsx +130 -0
- package/src/renderer/src/components/config/ShortcutSection.jsx +102 -0
- package/src/renderer/src/components/config/VoiceSection.jsx +110 -0
- package/src/renderer/src/components/config/index.js +5 -0
- package/src/renderer/src/components/core/Avatar.jsx +2197 -0
- package/src/renderer/src/components/core/ConfirmModal.jsx +80 -0
- package/src/renderer/src/components/core/DraggableHoloCard.jsx +125 -0
- package/src/renderer/src/components/core/FloatingMenu.jsx +272 -0
- package/src/renderer/src/components/core/HoloCard.jsx +64 -0
- package/src/renderer/src/components/core/InputBar.jsx +1346 -0
- package/src/renderer/src/components/core/ProcessPanel.jsx +216 -0
- package/src/renderer/src/components/core/ResponseArea.jsx +149 -0
- package/src/renderer/src/components/core/StatusIndicator.jsx +59 -0
- package/src/renderer/src/components/core/ThoughtNeuralFlow.jsx +168 -0
- package/src/renderer/src/components/core/ToolClustersDeck.jsx +210 -0
- package/src/renderer/src/components/core/native-skills.js +43 -0
- package/src/renderer/src/components/neural-core/EmotionalCortexLobe.jsx +359 -0
- package/src/renderer/src/components/neural-core/NodeDissectionModal.jsx +57 -0
- package/src/renderer/src/components/neural-core/ProceduralMatrixLobe.jsx +193 -0
- package/src/renderer/src/components/neural-core/ProceduralSkillModal.jsx +53 -0
- package/src/renderer/src/components/neural-core/ResetAiModal.jsx +198 -0
- package/src/renderer/src/components/neural-core/SynapticMemoryLobe.jsx +204 -0
- package/src/renderer/src/components/neural-core/traitMeta.js +102 -0
- package/src/renderer/src/components/subagent/AgentChatFeed.jsx +603 -0
- package/src/renderer/src/components/subagent/AgentInspector.jsx +224 -0
- package/src/renderer/src/components/subagent/AgentSidebar.jsx +216 -0
- package/src/renderer/src/components/subagent/SubagentIntercom.jsx +572 -0
- package/src/renderer/src/components/subagent/SubagentTopologyMap.jsx +423 -0
- package/src/renderer/src/contexts/ApprovalContext.jsx +425 -0
- package/src/renderer/src/contexts/ChatContext.jsx +61 -0
- package/src/renderer/src/contexts/YoutubeMusicContext.jsx +333 -0
- package/src/renderer/src/data/faqData.js +202 -0
- package/src/renderer/src/hooks/agent/executeAgentTool.js +895 -0
- package/src/renderer/src/hooks/agent/index.js +4 -0
- package/src/renderer/src/hooks/agent/useMarkMusic.js +75 -0
- package/src/renderer/src/hooks/agent/useMarkPlan.js +2739 -0
- package/src/renderer/src/hooks/agent/useMarkState.js +173 -0
- package/src/renderer/src/hooks/agent/useMarkYoutube.js +82 -0
- package/src/renderer/src/hooks/agent/useRelationalGrowth.js +201 -0
- package/src/renderer/src/hooks/telegram/useTelegramBot.js +63 -0
- package/src/renderer/src/hooks/useAwareness.js +289 -0
- package/src/renderer/src/hooks/useChatArchiver.js +52 -0
- package/src/renderer/src/hooks/useConfirm.jsx +68 -0
- package/src/renderer/src/hooks/useMarkAgent.js +454 -0
- package/src/renderer/src/hooks/useMemoryGroomer.js +152 -0
- package/src/renderer/src/hooks/useVAD.js +511 -0
- package/src/renderer/src/hooks/useWebSpeechWakeWord.js +122 -0
- package/src/renderer/src/main.jsx +12 -0
- package/src/renderer/src/pages/ChatStudio.jsx +922 -0
- package/src/renderer/src/pages/Configuration.jsx +360 -0
- package/src/renderer/src/pages/GoogleWorkspace.jsx +293 -0
- package/src/renderer/src/pages/Guidebook.jsx +917 -0
- package/src/renderer/src/pages/Knowledge.jsx +241 -0
- package/src/renderer/src/pages/MarkHome.jsx +491 -0
- package/src/renderer/src/pages/NeuralCore.jsx +786 -0
- package/src/renderer/src/pages/Plugins.jsx +630 -0
- package/src/renderer/src/pages/SkillEditor.jsx +380 -0
- package/src/renderer/src/pages/Skills.jsx +219 -0
- package/src/renderer/src/pages/Subagents.jsx +342 -0
- package/src/renderer/src/pages/TelegramBot.jsx +343 -0
- package/src/renderer/src/utils/chatContentParser.js +203 -0
- package/src/renderer/src/utils/toolClusters.js +201 -0
- package/src/server/bin/sha3_wasm_bg.wasm +0 -0
- package/src/server/config-manager.js +57 -0
- package/src/server/index.js +195 -0
- package/src/server/launcher.js +87 -0
- package/src/server/memory/db-store.js +758 -0
- package/src/server/memory/orama-store.js +177 -0
- package/src/server/memory/vector-engine.js +109 -0
- package/src/server/routes/ai.routes.js +280 -0
- package/src/server/routes/awareness.routes.js +62 -0
- package/src/server/routes/chat.routes.js +61 -0
- package/src/server/routes/config.routes.js +41 -0
- package/src/server/routes/index.js +35 -0
- package/src/server/routes/integrations.routes.js +116 -0
- package/src/server/routes/memory.routes.js +256 -0
- package/src/server/routes/plugins.routes.js +72 -0
- package/src/server/routes/skills.routes.js +139 -0
- package/src/server/routes/subagents.routes.js +70 -0
- package/src/server/routes/tasks.routes.js +175 -0
- package/src/server/routes/workspace.routes.js +127 -0
- package/src/server/services/ai/ai-utils.js +161 -0
- package/src/server/services/ai/openai-provider.js +757 -0
- package/src/server/services/ai/web-provider.js +729 -0
- package/src/server/services/ai-bridge.js +46 -0
- package/src/server/services/deepseek-web.js +956 -0
- package/src/server/services/gemini-web.js +170 -0
- package/src/server/services/notification-service.js +91 -0
- package/src/server/services/updater.js +125 -0
- package/src/server/tools/awareness-tracker.js +292 -0
- package/src/server/tools/group-tools.js +1164 -0
- package/src/server/tools/media-tools.js +244 -0
- package/src/server/tools/pc-agent.js +327 -0
- package/src/server/tools/screen-service.js +51 -0
- package/src/server/ws-hub.js +168 -0
- package/src/shared/parsers/mark-tag-parser.js +275 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
|
|
3
|
+
export const ShortcutSection = ({ config, setConfig }) => {
|
|
4
|
+
const [isRecordingShortcut, setIsRecordingShortcut] = useState(false)
|
|
5
|
+
|
|
6
|
+
const handleShortcutRecorderKeyDown = (e) => {
|
|
7
|
+
e.preventDefault()
|
|
8
|
+
e.stopPropagation()
|
|
9
|
+
|
|
10
|
+
if (['Control', 'Alt', 'Shift', 'Meta'].includes(e.key)) return
|
|
11
|
+
|
|
12
|
+
const modifiers = []
|
|
13
|
+
if (e.ctrlKey || e.metaKey) modifiers.push('CommandOrControl')
|
|
14
|
+
if (e.altKey) modifiers.push('Alt')
|
|
15
|
+
if (e.shiftKey) modifiers.push('Shift')
|
|
16
|
+
|
|
17
|
+
let keyName = e.key.toUpperCase()
|
|
18
|
+
if (e.code === 'Space' || keyName === ' ') keyName = 'Space'
|
|
19
|
+
|
|
20
|
+
const fullShortcut = [...modifiers, keyName].join('+')
|
|
21
|
+
|
|
22
|
+
setConfig((prev) => {
|
|
23
|
+
const updated = { ...prev, shortcutKey: fullShortcut }
|
|
24
|
+
window.dispatchEvent(new CustomEvent('config-updated', { detail: updated }))
|
|
25
|
+
if (window.api && window.api.syncConfig) window.api.syncConfig(updated)
|
|
26
|
+
return updated
|
|
27
|
+
})
|
|
28
|
+
setIsRecordingShortcut(false)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const PRESET_SHORTCUTS = [
|
|
32
|
+
'CommandOrControl+Alt+M',
|
|
33
|
+
'CommandOrControl+Shift+Space',
|
|
34
|
+
'Alt+Space',
|
|
35
|
+
'CommandOrControl+Space',
|
|
36
|
+
'F9'
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<section id="tour-shortcut" className="space-y-5 p-2 -mx-2 rounded-lg">
|
|
41
|
+
<h2 className="text-base font-bold uppercase tracking-wider opacity-70">
|
|
42
|
+
Global Shortcut Key
|
|
43
|
+
</h2>
|
|
44
|
+
|
|
45
|
+
<div className="space-y-1.5">
|
|
46
|
+
<div className="flex justify-between items-end">
|
|
47
|
+
<p className="text-sm font-semibold">Tombol Panggilan Cepat</p>
|
|
48
|
+
<span className="text-[10px] font-mono opacity-50">Aktif Lintas Aplikasi</span>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div className="relative w-full">
|
|
52
|
+
<input
|
|
53
|
+
type="text"
|
|
54
|
+
readOnly
|
|
55
|
+
onFocus={() => setIsRecordingShortcut(true)}
|
|
56
|
+
onBlur={() => setIsRecordingShortcut(false)}
|
|
57
|
+
onKeyDown={handleShortcutRecorderKeyDown}
|
|
58
|
+
value={
|
|
59
|
+
isRecordingShortcut
|
|
60
|
+
? 'Tekan kombinasi tombol di keyboard...'
|
|
61
|
+
: (config.shortcutKey || 'CommandOrControl+Alt+M').replace(
|
|
62
|
+
/CommandOrControl|Control/g,
|
|
63
|
+
'Ctrl'
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
className={`input input-bordered w-full font-mono text-sm cursor-pointer select-none ${
|
|
67
|
+
isRecordingShortcut
|
|
68
|
+
? 'input-primary border-2 animate-pulse bg-primary/10 text-primary font-bold'
|
|
69
|
+
: 'hover:border-primary/60'
|
|
70
|
+
}`}
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
<div className="flex flex-wrap gap-1.5 mt-2">
|
|
75
|
+
<span className="text-xs opacity-60 w-full mb-1">Preset Cepat:</span>
|
|
76
|
+
{PRESET_SHORTCUTS.map((preset) => (
|
|
77
|
+
<button
|
|
78
|
+
key={preset}
|
|
79
|
+
type="button"
|
|
80
|
+
onClick={() => {
|
|
81
|
+
setConfig((prev) => {
|
|
82
|
+
const updated = { ...prev, shortcutKey: preset }
|
|
83
|
+
window.dispatchEvent(new CustomEvent('config-updated', { detail: updated }))
|
|
84
|
+
if (window.api && window.api.syncConfig) window.api.syncConfig(updated)
|
|
85
|
+
return updated
|
|
86
|
+
})
|
|
87
|
+
}}
|
|
88
|
+
className={`btn btn-xs ${config.shortcutKey === preset ? 'btn-primary' : 'btn-ghost border-base-content/20'} font-mono`}
|
|
89
|
+
>
|
|
90
|
+
{preset.replace('CommandOrControl', 'Ctrl')}
|
|
91
|
+
</button>
|
|
92
|
+
))}
|
|
93
|
+
</div>
|
|
94
|
+
<span className="text-[11px] opacity-60 block mt-1">
|
|
95
|
+
Cukup <b>klik kotak input di atas</b> lalu tekan kombinasi tombol di keyboard kamu
|
|
96
|
+
(misal: <code>Ctrl+Alt+A</code>, <code>Alt+Space</code>, <code>F9</code>).
|
|
97
|
+
Shortcut langsung aktif seketika di OS!
|
|
98
|
+
</span>
|
|
99
|
+
</div>
|
|
100
|
+
</section>
|
|
101
|
+
)
|
|
102
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export const VoiceSection = ({ config, setConfig }) => {
|
|
2
|
+
const handleCustomWakeWordsChange = (e) =>
|
|
3
|
+
setConfig((prev) => ({ ...prev, customWakeWords: e.target.value }))
|
|
4
|
+
|
|
5
|
+
const handleSpeechLanguageChange = (e) =>
|
|
6
|
+
setConfig((prev) => ({ ...prev, speechLanguage: e.target.value }))
|
|
7
|
+
|
|
8
|
+
const openSoundSettings = async () => {
|
|
9
|
+
if (window.api && window.api.osOpen) {
|
|
10
|
+
try {
|
|
11
|
+
await window.api.osOpen('ms-settings:sound')
|
|
12
|
+
} catch (_) {
|
|
13
|
+
if (window.api.executeNativeTool) {
|
|
14
|
+
await window.api.executeNativeTool('run-powershell', 'start ms-settings:sound')
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
} else if (window.api && window.api.executeNativeTool) {
|
|
18
|
+
await window.api.executeNativeTool('run-powershell', 'start ms-settings:sound')
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<div id="tour-tts" className="space-y-6 p-2 -mx-2 rounded-lg">
|
|
24
|
+
<h2 className="text-base font-bold uppercase tracking-wider opacity-70 mb-5">
|
|
25
|
+
Audio & Voice Engine
|
|
26
|
+
</h2>
|
|
27
|
+
|
|
28
|
+
{/* Custom Wake Words Input */}
|
|
29
|
+
<div id="tour-wakeword" className="space-y-2">
|
|
30
|
+
<div className="flex justify-between items-end">
|
|
31
|
+
<p className="text-sm font-semibold">Kata Pemicu Kustom (Custom Wake Words)</p>
|
|
32
|
+
<span className="text-[10px] opacity-50">Fitur Bawaan Aktif</span>
|
|
33
|
+
</div>
|
|
34
|
+
<input
|
|
35
|
+
type="text"
|
|
36
|
+
placeholder="Contoh: Jarvis, Komputer, Bro"
|
|
37
|
+
className="input input-bordered w-full"
|
|
38
|
+
value={config.customWakeWords || ''}
|
|
39
|
+
onChange={handleCustomWakeWordsChange}
|
|
40
|
+
/>
|
|
41
|
+
<p className="text-xs opacity-50">
|
|
42
|
+
Pola bawaan seperti <strong>"Hey Mark"</strong>, <strong>"Halo Mark"</strong>, dan{' '}
|
|
43
|
+
<strong>"Mark"</strong> sudah aktif otomatis di latar belakang. Masukkan kata atau
|
|
44
|
+
nama panggilan tambahan di atas (pisahkan dengan koma).
|
|
45
|
+
</p>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
{/* Speech Recognition Language */}
|
|
49
|
+
<div className="space-y-1.5">
|
|
50
|
+
<p className="text-sm font-semibold">Bahasa Input Suara</p>
|
|
51
|
+
<select
|
|
52
|
+
className="select select-bordered w-full"
|
|
53
|
+
value={config.speechLanguage || 'id-ID'}
|
|
54
|
+
onChange={handleSpeechLanguageChange}
|
|
55
|
+
>
|
|
56
|
+
<option value="id-ID">Bahasa Indonesia (id-ID)</option>
|
|
57
|
+
<option value="en-US">English - United States (en-US)</option>
|
|
58
|
+
<option value="jv-ID">Bahasa Jawa (jv-ID)</option>
|
|
59
|
+
<option value="su-ID">Bahasa Sunda (su-ID)</option>
|
|
60
|
+
</select>
|
|
61
|
+
<p className="text-xs opacity-40">
|
|
62
|
+
Pilih bahasa utama yang kamu gunakan saat berbicara dengan Mark.
|
|
63
|
+
</p>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
{/* Microphone Information & OS Shortcut */}
|
|
67
|
+
<div className="space-y-2.5 p-3.5 bg-base-200/50 rounded-xl border border-white/5">
|
|
68
|
+
<div className="flex items-center justify-between">
|
|
69
|
+
<div className="flex items-center gap-2">
|
|
70
|
+
<span className="w-2 h-2 rounded-full bg-success animate-pulse"></span>
|
|
71
|
+
<p className="text-sm font-semibold">Perangkat Mikrofon</p>
|
|
72
|
+
</div>
|
|
73
|
+
<button
|
|
74
|
+
type="button"
|
|
75
|
+
onClick={openSoundSettings}
|
|
76
|
+
className="btn btn-xs btn-primary gap-1.5 shadow-sm"
|
|
77
|
+
title="Buka Pengaturan Suara Windows untuk memilih Mikrofon Utama"
|
|
78
|
+
>
|
|
79
|
+
<svg
|
|
80
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
81
|
+
width="12"
|
|
82
|
+
height="12"
|
|
83
|
+
viewBox="0 0 24 24"
|
|
84
|
+
fill="none"
|
|
85
|
+
stroke="currentColor"
|
|
86
|
+
strokeWidth="2"
|
|
87
|
+
strokeLinecap="round"
|
|
88
|
+
strokeLinejoin="round"
|
|
89
|
+
>
|
|
90
|
+
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
|
91
|
+
<polyline points="15 3 21 3 21 9" />
|
|
92
|
+
<line x1="10" y1="14" x2="21" y2="3" />
|
|
93
|
+
</svg>
|
|
94
|
+
<span>Ganti Mikrofon di Windows</span>
|
|
95
|
+
</button>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
<p className="font-medium text-xs text-white/90">
|
|
99
|
+
Mark otomatis menggunakan{' '}
|
|
100
|
+
<strong>mikrofon utama (default) laptop atau PC kamu</strong>.
|
|
101
|
+
</p>
|
|
102
|
+
<p className="text-xs opacity-50">
|
|
103
|
+
Kalau kamu punya mikrofon eksternal (seperti headset atau mic USB) dan ingin
|
|
104
|
+
menggunakannya, klik tombol <em>"Ganti Mikrofon di Windows"</em> di atas lalu
|
|
105
|
+
pilih mikrofon tersebut sebagai perangkat utama.
|
|
106
|
+
</p>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
)
|
|
110
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { AiEngineSection } from './AiEngineSection'
|
|
2
|
+
export { CameraSection, ConfigCameraPreview } from './CameraSection'
|
|
3
|
+
export { ShortcutSection } from './ShortcutSection'
|
|
4
|
+
export { VoiceSection } from './VoiceSection'
|
|
5
|
+
export { PermissionsSection } from './PermissionsSection'
|