neuro-simulator 0.5.4__tar.gz → 0.6.0__tar.gz
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.
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/PKG-INFO +1 -2
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/package-lock.json +95 -2
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/package.json +4 -1
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/App.vue +20 -11
- neuro_simulator-0.6.0/dashboard/src/components/config/FieldRenderer.vue +294 -0
- neuro_simulator-0.6.0/dashboard/src/locales/en.json +52 -0
- neuro_simulator-0.6.0/dashboard/src/locales/zh.json +52 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/main.ts +18 -1
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/ConfigView.vue +31 -8
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/pyproject.toml +1 -2
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/llm.py +23 -19
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/core.py +10 -10
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/llm.py +22 -19
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/generator.py +3 -3
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/manager.py +10 -8
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/cli.py +7 -12
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/agent_factory.py +9 -18
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/application.py +59 -56
- neuro_simulator-0.6.0/server/neuro_simulator/core/config.py +113 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/path_manager.py +7 -7
- neuro_simulator-0.6.0/server/neuro_simulator/services/audio.py +106 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/services/builtin.py +3 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/services/stream.py +1 -1
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/queue.py +2 -2
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/requirements.txt +1 -1
- neuro_simulator-0.5.4/dashboard/src/components/config/FieldRenderer.vue +0 -129
- neuro_simulator-0.5.4/docs/working_dir_example/config.yaml.example +0 -117
- neuro_simulator-0.5.4/server/neuro_simulator/config.yaml.example +0 -117
- neuro_simulator-0.5.4/server/neuro_simulator/core/config.py +0 -326
- neuro_simulator-0.5.4/server/neuro_simulator/services/audio.py +0 -98
- neuro_simulator-0.5.4/server/neuro_simulator/services/letta.py +0 -254
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/.github/workflows/release.yml +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/.gitignore +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/LICENSE +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/README.md +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/README.md +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/index.html +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/package-lock.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/package.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/avatar.webp +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/background.webp +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/background_old.webp +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/banner.jpeg +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/channel_points.png +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/error.mp3 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/favicon.ico +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/causten.woff2 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/comic.woff2 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/first-coffee.woff2 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/noto-sans-sc.woff2 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/neuro_start.mp4 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/neurosama.png +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/sc_pink.png +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/sc_purple.png +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/sub_badge.svg +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/user_avatar.jpg +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/core/appInitializer.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/core/layoutManager.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/core/singletonManager.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/javascript/tooltip.js +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/javascript/viewers.js +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/main.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/apiClient.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/audioPlayer.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/bilibiliService.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/websocketClient.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/stream/neuroAvatar.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/stream/videoPlayer.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/style.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/base.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/chat.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/header.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/offline.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/responsive.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/settings.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/stream-info.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/stream.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/tooltip.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/types/common.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/chatDisplay.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/chatSidebar.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/liveIndicator.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/muteButton.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/neuroCaption.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/settingsModal.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/streamInfoDisplay.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/streamTimer.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/userInput.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/utils/wakeLockManager.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/vite-env.d.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/.cargo/config.toml +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/Cargo.lock +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/Cargo.toml +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/build.rs +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/capabilities/migrated.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/icons/icon.ico +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/icons/icon.png +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/src/lib.rs +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/src/main.rs +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/tauri.conf.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/tsconfig.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/vite.config.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/e2e/tsconfig.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/e2e/vue.spec.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/env.d.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/eslint.config.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/index.html +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/playwright.config.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/public/favicon.ico +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/public/first-coffee.woff2 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/base.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/fonts.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/logo.svg +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/main.css +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/ContextTab.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/LogsTab.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/MemoryTab.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/ToolsTab.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/common/ConfirmDialog.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/router/index.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/agent.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/config.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/connection.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/counter.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/logs.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/stream.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/tools.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/ui.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/AgentView.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/ChatBotView.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/ControlView.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/HomeView.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/LogsView.vue +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.app.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.node.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.vitest.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/vite.config.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/vitest.config.ts +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/assets/start.gif +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/letta_agents_example/LETTA_CLOUD_ONLY_neuro-sama.af +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/letta_agents_example/README.md +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/letta_agents_example/sys_prompt_for_sleeptime.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memories/core_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memories/init_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memories/temp_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memory_manager/history.jsonl +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memory_manager/memory_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memory_manager/tools.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/neuro/history.jsonl +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/neuro/neuro_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/neuro/tools.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/!!!NO-CHANGE-WILL-BE-SAVED-AFTER-RESTART!!! +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/add_temp_memory.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/add_to_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/base.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/create_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/delete_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/get_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/get_core_memory_blocks.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/model_spin.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/model_zoom.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/remove_from_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/speak.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/update_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/assets/neuro_start.mp4 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/chatbot/chatbot_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/chatbot/tools.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memories/core_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memories/init_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memories/temp_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memory_agent/memory_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memory_agent/tools.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/nickname_gen/data/adjectives.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/nickname_gen/data/nouns.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/nickname_gen/data/special_users.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/tools/builtin_tools/add_temp_memory.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/tools/builtin_tools/post_chat_message.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/hatch_build.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/README.md +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/WEBSOCKET_API.md +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/core.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/chat_history.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/core_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/init_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/manager.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/temp_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/neuro_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/add_temp_memory.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/add_to_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/base.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/create_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/delete_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/get_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/get_core_memory_blocks.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/manager.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/model_spin.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/model_zoom.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/remove_from_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/speak.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/update_core_memory_block.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/api/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/api/system.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/assets/neuro_start.mp4 +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/core_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/init_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/manager.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/temp_memory.json +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/data/adjectives.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/data/nouns.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/data/special_users.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/prompts/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/prompts/chatbot_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/prompts/memory_prompt.txt +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/add_temp_memory.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/base.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/post_chat_message.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/agent_interface.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/services/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/__init__.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/logging.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/process.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/state.py +0 -0
- {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/websocket.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: neuro_simulator
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.6.0
|
4
4
|
Summary: Neuro Simulator Server
|
5
5
|
Project-URL: Homepage, https://github.com/Moha-Master/neuro-simulator
|
6
6
|
Project-URL: Repository, https://github.com/Moha-Master/neuro-simulator
|
@@ -22,7 +22,6 @@ Requires-Dist: azure-cognitiveservices-speech
|
|
22
22
|
Requires-Dist: fastapi
|
23
23
|
Requires-Dist: google-genai
|
24
24
|
Requires-Dist: jinja2
|
25
|
-
Requires-Dist: letta-client
|
26
25
|
Requires-Dist: mutagen
|
27
26
|
Requires-Dist: openai
|
28
27
|
Requires-Dist: pydantic
|
@@ -1,16 +1,18 @@
|
|
1
1
|
{
|
2
2
|
"name": "neuro-simulator-dashboard",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.6.0",
|
4
4
|
"lockfileVersion": 3,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "neuro-simulator-dashboard",
|
9
|
-
"version": "0.
|
9
|
+
"version": "0.6.0",
|
10
10
|
"dependencies": {
|
11
11
|
"@mdi/font": "^7.4.47",
|
12
12
|
"pinia": "^3.0.3",
|
13
|
+
"uuid": "^9.0.1",
|
13
14
|
"vue": "^3.5.18",
|
15
|
+
"vue-i18n": "^11.1.12",
|
14
16
|
"vue-router": "^4.5.1",
|
15
17
|
"vuetify": "^3.10.3"
|
16
18
|
},
|
@@ -19,6 +21,7 @@
|
|
19
21
|
"@tsconfig/node22": "^22.0.2",
|
20
22
|
"@types/jsdom": "^21.1.7",
|
21
23
|
"@types/node": "^22.16.5",
|
24
|
+
"@types/uuid": "^9.0.8",
|
22
25
|
"@vitejs/plugin-vue": "^6.0.1",
|
23
26
|
"@vitest/eslint-plugin": "^1.3.4",
|
24
27
|
"@vue/eslint-config-prettier": "^10.2.0",
|
@@ -1336,6 +1339,50 @@
|
|
1336
1339
|
"url": "https://github.com/sponsors/nzakas"
|
1337
1340
|
}
|
1338
1341
|
},
|
1342
|
+
"node_modules/@intlify/core-base": {
|
1343
|
+
"version": "11.1.12",
|
1344
|
+
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.1.12.tgz",
|
1345
|
+
"integrity": "sha512-whh0trqRsSqVLNEUCwU59pyJZYpU8AmSWl8M3Jz2Mv5ESPP6kFh4juas2NpZ1iCvy7GlNRffUD1xr84gceimjg==",
|
1346
|
+
"license": "MIT",
|
1347
|
+
"dependencies": {
|
1348
|
+
"@intlify/message-compiler": "11.1.12",
|
1349
|
+
"@intlify/shared": "11.1.12"
|
1350
|
+
},
|
1351
|
+
"engines": {
|
1352
|
+
"node": ">= 16"
|
1353
|
+
},
|
1354
|
+
"funding": {
|
1355
|
+
"url": "https://github.com/sponsors/kazupon"
|
1356
|
+
}
|
1357
|
+
},
|
1358
|
+
"node_modules/@intlify/message-compiler": {
|
1359
|
+
"version": "11.1.12",
|
1360
|
+
"resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.1.12.tgz",
|
1361
|
+
"integrity": "sha512-Fv9iQSJoJaXl4ZGkOCN1LDM3trzze0AS2zRz2EHLiwenwL6t0Ki9KySYlyr27yVOj5aVz0e55JePO+kELIvfdQ==",
|
1362
|
+
"license": "MIT",
|
1363
|
+
"dependencies": {
|
1364
|
+
"@intlify/shared": "11.1.12",
|
1365
|
+
"source-map-js": "^1.0.2"
|
1366
|
+
},
|
1367
|
+
"engines": {
|
1368
|
+
"node": ">= 16"
|
1369
|
+
},
|
1370
|
+
"funding": {
|
1371
|
+
"url": "https://github.com/sponsors/kazupon"
|
1372
|
+
}
|
1373
|
+
},
|
1374
|
+
"node_modules/@intlify/shared": {
|
1375
|
+
"version": "11.1.12",
|
1376
|
+
"resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.1.12.tgz",
|
1377
|
+
"integrity": "sha512-Om86EjuQtA69hdNj3GQec9ZC0L0vPSAnXzB3gP/gyJ7+mA7t06d9aOAiqMZ+xEOsumGP4eEBlfl8zF2LOTzf2A==",
|
1378
|
+
"license": "MIT",
|
1379
|
+
"engines": {
|
1380
|
+
"node": ">= 16"
|
1381
|
+
},
|
1382
|
+
"funding": {
|
1383
|
+
"url": "https://github.com/sponsors/kazupon"
|
1384
|
+
}
|
1385
|
+
},
|
1339
1386
|
"node_modules/@isaacs/cliui": {
|
1340
1387
|
"version": "8.0.2",
|
1341
1388
|
"resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz",
|
@@ -1903,6 +1950,13 @@
|
|
1903
1950
|
"dev": true,
|
1904
1951
|
"license": "MIT"
|
1905
1952
|
},
|
1953
|
+
"node_modules/@types/uuid": {
|
1954
|
+
"version": "9.0.8",
|
1955
|
+
"resolved": "https://registry.npmmirror.com/@types/uuid/-/uuid-9.0.8.tgz",
|
1956
|
+
"integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
|
1957
|
+
"dev": true,
|
1958
|
+
"license": "MIT"
|
1959
|
+
},
|
1906
1960
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
1907
1961
|
"version": "8.44.1",
|
1908
1962
|
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.44.1.tgz",
|
@@ -6073,6 +6127,19 @@
|
|
6073
6127
|
"dev": true,
|
6074
6128
|
"license": "MIT"
|
6075
6129
|
},
|
6130
|
+
"node_modules/uuid": {
|
6131
|
+
"version": "9.0.1",
|
6132
|
+
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz",
|
6133
|
+
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
6134
|
+
"funding": [
|
6135
|
+
"https://github.com/sponsors/broofa",
|
6136
|
+
"https://github.com/sponsors/ctavan"
|
6137
|
+
],
|
6138
|
+
"license": "MIT",
|
6139
|
+
"bin": {
|
6140
|
+
"uuid": "dist/bin/uuid"
|
6141
|
+
}
|
6142
|
+
},
|
6076
6143
|
"node_modules/vite": {
|
6077
6144
|
"version": "7.1.7",
|
6078
6145
|
"resolved": "https://registry.npmmirror.com/vite/-/vite-7.1.7.tgz",
|
@@ -6520,6 +6587,32 @@
|
|
6520
6587
|
"url": "https://opencollective.com/eslint"
|
6521
6588
|
}
|
6522
6589
|
},
|
6590
|
+
"node_modules/vue-i18n": {
|
6591
|
+
"version": "11.1.12",
|
6592
|
+
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.1.12.tgz",
|
6593
|
+
"integrity": "sha512-BnstPj3KLHLrsqbVU2UOrPmr0+Mv11bsUZG0PyCOzsawCivk8W00GMXHeVUWIDOgNaScCuZah47CZFE+Wnl8mw==",
|
6594
|
+
"license": "MIT",
|
6595
|
+
"dependencies": {
|
6596
|
+
"@intlify/core-base": "11.1.12",
|
6597
|
+
"@intlify/shared": "11.1.12",
|
6598
|
+
"@vue/devtools-api": "^6.5.0"
|
6599
|
+
},
|
6600
|
+
"engines": {
|
6601
|
+
"node": ">= 16"
|
6602
|
+
},
|
6603
|
+
"funding": {
|
6604
|
+
"url": "https://github.com/sponsors/kazupon"
|
6605
|
+
},
|
6606
|
+
"peerDependencies": {
|
6607
|
+
"vue": "^3.0.0"
|
6608
|
+
}
|
6609
|
+
},
|
6610
|
+
"node_modules/vue-i18n/node_modules/@vue/devtools-api": {
|
6611
|
+
"version": "6.6.4",
|
6612
|
+
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
|
6613
|
+
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
|
6614
|
+
"license": "MIT"
|
6615
|
+
},
|
6523
6616
|
"node_modules/vue-router": {
|
6524
6617
|
"version": "4.5.1",
|
6525
6618
|
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neuro-simulator-dashboard",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.6.0",
|
4
4
|
"private": true,
|
5
5
|
"type": "module",
|
6
6
|
"engines": {
|
@@ -20,7 +20,9 @@
|
|
20
20
|
"dependencies": {
|
21
21
|
"@mdi/font": "^7.4.47",
|
22
22
|
"pinia": "^3.0.3",
|
23
|
+
"uuid": "^9.0.1",
|
23
24
|
"vue": "^3.5.18",
|
25
|
+
"vue-i18n": "^11.1.12",
|
24
26
|
"vue-router": "^4.5.1",
|
25
27
|
"vuetify": "^3.10.3"
|
26
28
|
},
|
@@ -29,6 +31,7 @@
|
|
29
31
|
"@tsconfig/node22": "^22.0.2",
|
30
32
|
"@types/jsdom": "^21.1.7",
|
31
33
|
"@types/node": "^22.16.5",
|
34
|
+
"@types/uuid": "^9.0.8",
|
32
35
|
"@vitejs/plugin-vue": "^6.0.1",
|
33
36
|
"@vitest/eslint-plugin": "^1.3.4",
|
34
37
|
"@vue/eslint-config-prettier": "^10.2.0",
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
<template>
|
2
3
|
<v-app>
|
3
4
|
<v-app-bar app>
|
@@ -6,6 +7,11 @@
|
|
6
7
|
|
7
8
|
<v-spacer></v-spacer>
|
8
9
|
|
10
|
+
<v-btn-toggle v-model="locale" rounded="0" variant="outlined" density="compact" mandatory class="mr-4">
|
11
|
+
<v-btn value="en">EN</v-btn>
|
12
|
+
<v-btn value="zh">ZH</v-btn>
|
13
|
+
</v-btn-toggle>
|
14
|
+
|
9
15
|
<v-chip
|
10
16
|
:color="statusColor"
|
11
17
|
text-color="white"
|
@@ -23,7 +29,7 @@
|
|
23
29
|
<template v-slot:prepend>
|
24
30
|
<v-icon>{{ item.icon }}</v-icon>
|
25
31
|
</template>
|
26
|
-
<v-list-item-title>{{ item.title }}</v-list-item-title>
|
32
|
+
<v-list-item-title>{{ t(item.title) }}</v-list-item-title>
|
27
33
|
</v-list-item>
|
28
34
|
</v-list>
|
29
35
|
|
@@ -45,11 +51,11 @@
|
|
45
51
|
<!-- Disconnection Dialog -->
|
46
52
|
<v-dialog v-model="connectionStore.wasUnexpectedlyDisconnected" persistent max-width="400">
|
47
53
|
<v-card>
|
48
|
-
<v-card-title class="text-h5"
|
49
|
-
<v-card-text
|
54
|
+
<v-card-title class="text-h5">{{ t('Connection Lost') }}</v-card-title>
|
55
|
+
<v-card-text>{{ t('The connection to the backend was unexpectedly lost. Please reconnect.') }}</v-card-text>
|
50
56
|
<v-card-actions>
|
51
57
|
<v-spacer></v-spacer>
|
52
|
-
<v-btn color="primary" variant="flat" @click="handleReconnectRedirect"
|
58
|
+
<v-btn color="primary" variant="flat" @click="handleReconnectRedirect">{{ t('Go to Connection Page') }}</v-btn>
|
53
59
|
</v-card-actions>
|
54
60
|
</v-card>
|
55
61
|
</v-dialog>
|
@@ -60,18 +66,21 @@
|
|
60
66
|
|
61
67
|
<script setup lang="ts">
|
62
68
|
import { ref, onMounted, computed } from 'vue';
|
69
|
+
import { useI18n } from 'vue-i18n';
|
63
70
|
import { useConnectionStore } from '@/stores/connection';
|
64
71
|
import { useConfigStore } from '@/stores/config';
|
65
72
|
import { useRouter } from 'vue-router';
|
66
73
|
import ConfirmDialog from '@/components/common/ConfirmDialog.vue';
|
67
74
|
|
75
|
+
const { t, locale } = useI18n();
|
76
|
+
|
68
77
|
const drawer = ref(true); // Sidebar is open by default
|
69
78
|
|
70
79
|
const allNavItems = [
|
71
|
-
{ title: '
|
72
|
-
{ title: '
|
73
|
-
{ title: '
|
74
|
-
{ title: '
|
80
|
+
{ title: 'Connection', icon: 'mdi-connection', to: '/' },
|
81
|
+
{ title: 'Control', icon: 'mdi-gamepad-variant', to: '/control' },
|
82
|
+
{ title: 'Configuration', icon: 'mdi-cog', to: '/config' },
|
83
|
+
{ title: 'Logs', icon: 'mdi-file-document-outline', to: '/logs' },
|
75
84
|
{ title: 'Agent', icon: 'mdi-robot', to: '/agent', name: 'agent' },
|
76
85
|
{ title: 'ChatBot', icon: 'mdi-forum', to: '/chatbot' },
|
77
86
|
];
|
@@ -90,8 +99,8 @@ const visibleNavItems = computed(() => {
|
|
90
99
|
|
91
100
|
const statusColor = computed(() => {
|
92
101
|
const status = connectionStore.statusText;
|
93
|
-
if (status === '已连接') return 'success';
|
94
|
-
if (status === '连接中...') return 'warning';
|
102
|
+
if (status === '已连接' || status === 'Connected') return 'success';
|
103
|
+
if (status === '连接中...' || status === 'Connecting...') return 'warning';
|
95
104
|
return 'error';
|
96
105
|
});
|
97
106
|
|
@@ -123,4 +132,4 @@ onMounted(async () => {
|
|
123
132
|
color: #8A8A8A; /* A light grey color */
|
124
133
|
text-align: center;
|
125
134
|
}
|
126
|
-
</style>
|
135
|
+
</style>
|
@@ -0,0 +1,294 @@
|
|
1
|
+
<template>
|
2
|
+
<div class="mb-6">
|
3
|
+
<!-- Provider ID (disabled) -->
|
4
|
+
<v-text-field
|
5
|
+
v-if="propKey === 'provider_id'"
|
6
|
+
v-model="modelValue"
|
7
|
+
:label="t(propSchema.title || propKey)"
|
8
|
+
:hint="propSchema.description"
|
9
|
+
persistent-hint
|
10
|
+
variant="outlined"
|
11
|
+
density="compact"
|
12
|
+
disabled
|
13
|
+
></v-text-field>
|
14
|
+
|
15
|
+
<!-- Number/Integer Fields -->
|
16
|
+
<v-text-field
|
17
|
+
v-else-if="isType('integer') || isType('number')"
|
18
|
+
v-model.number="modelValue"
|
19
|
+
:label="t(propSchema.title || propKey)"
|
20
|
+
:hint="propSchema.description"
|
21
|
+
type="number"
|
22
|
+
persistent-hint
|
23
|
+
variant="outlined"
|
24
|
+
density="compact"
|
25
|
+
></v-text-field>
|
26
|
+
|
27
|
+
<!-- Password Field -->
|
28
|
+
<v-text-field
|
29
|
+
v-else-if="isType('string') && propSchema.format === 'password'"
|
30
|
+
v-model="modelValue"
|
31
|
+
:label="t(propSchema.title || propKey)"
|
32
|
+
:hint="propSchema.description"
|
33
|
+
type="password"
|
34
|
+
persistent-hint
|
35
|
+
variant="outlined"
|
36
|
+
density="compact"
|
37
|
+
></v-text-field>
|
38
|
+
|
39
|
+
<!-- Text Area -->
|
40
|
+
<v-textarea
|
41
|
+
v-else-if="isType('string') && propSchema.format === 'text-area'"
|
42
|
+
v-model="modelValue"
|
43
|
+
:label="t(propSchema.title || propKey)"
|
44
|
+
:hint="propSchema.description"
|
45
|
+
persistent-hint
|
46
|
+
variant="outlined"
|
47
|
+
></v-textarea>
|
48
|
+
|
49
|
+
<!-- Regular Text Field -->
|
50
|
+
<v-text-field
|
51
|
+
v-else-if="isType('string') && !propSchema.enum && !isProviderId"
|
52
|
+
v-model="modelValue"
|
53
|
+
:label="t(propSchema.title || propKey)"
|
54
|
+
:hint="propSchema.description"
|
55
|
+
persistent-hint
|
56
|
+
variant="outlined"
|
57
|
+
density="compact"
|
58
|
+
></v-text-field>
|
59
|
+
|
60
|
+
<!-- Boolean Switch -->
|
61
|
+
<v-switch
|
62
|
+
v-if="isType('boolean')"
|
63
|
+
v-model="modelValue"
|
64
|
+
:label="t(propSchema.title || propKey)"
|
65
|
+
:hint="propSchema.description"
|
66
|
+
persistent-hint
|
67
|
+
color="primary"
|
68
|
+
inset
|
69
|
+
></v-switch>
|
70
|
+
|
71
|
+
<!-- Enum Select Dropdown -->
|
72
|
+
<v-select
|
73
|
+
v-if="propSchema.enum"
|
74
|
+
v-model="modelValue"
|
75
|
+
:items="propSchema.enum"
|
76
|
+
:label="t(propSchema.title || propKey)"
|
77
|
+
:hint="propSchema.description"
|
78
|
+
persistent-hint
|
79
|
+
variant="outlined"
|
80
|
+
density="compact"
|
81
|
+
></v-select>
|
82
|
+
|
83
|
+
<!-- Provider ID Select Dropdown -->
|
84
|
+
<v-select
|
85
|
+
v-if="isProviderId"
|
86
|
+
v-model="modelValue"
|
87
|
+
:items="providerItems"
|
88
|
+
item-title="display_name"
|
89
|
+
item-value="provider_id"
|
90
|
+
:label="t(propSchema.title || propKey)"
|
91
|
+
:hint="propSchema.description"
|
92
|
+
persistent-hint
|
93
|
+
variant="outlined"
|
94
|
+
density="compact"
|
95
|
+
clearable
|
96
|
+
></v-select>
|
97
|
+
|
98
|
+
<!-- Array of Objects Renderer -->
|
99
|
+
<div v-else-if="isObjectArray">
|
100
|
+
|
101
|
+
<v-card v-for="(item, index) in modelValue" :key="item.provider_id || index" class="mb-4" variant="outlined">
|
102
|
+
<v-card-title class="d-flex justify-space-between align-center text-body-1">
|
103
|
+
<span>{{ item.display_name || t('Item') + ' ' + (index + 1) }}</span>
|
104
|
+
<div>
|
105
|
+
<v-btn icon="mdi-pencil" size="small" variant="text" @click="openEditDialog(item, index)"></v-btn>
|
106
|
+
<v-btn icon="mdi-delete" size="small" variant="text" @click="deleteItem(index)"></v-btn>
|
107
|
+
</div>
|
108
|
+
</v-card-title>
|
109
|
+
<v-card-text v-if="item.provider_type || item.model_name">
|
110
|
+
<p v-if="item.provider_type" class="text-body-2">{{ t('Provider Type') }}: {{ item.provider_type }}</p>
|
111
|
+
<p v-if="item.model_name" class="text-body-2">{{ t('Model Name') }}: {{ item.model_name }}</p>
|
112
|
+
</v-card-text>
|
113
|
+
</v-card>
|
114
|
+
<v-btn color="primary" @click="openAddDialog" block>{{ t('Add') }} {{ t(itemSchema.title || 'Item') }}</v-btn>
|
115
|
+
|
116
|
+
<!-- Dialog for Add/Edit -->
|
117
|
+
<v-dialog v-model="dialog" max-width="800px" persistent>
|
118
|
+
<v-card :title="t(isEditing ? 'Edit' : 'Add') + ' ' + t(itemSchema.title || 'Item')">
|
119
|
+
<v-card-text>
|
120
|
+
<div v-for="key in Object.keys(itemSchema.properties || {})" :key="key">
|
121
|
+
<FieldRenderer
|
122
|
+
:group-key="null"
|
123
|
+
:prop-key="key"
|
124
|
+
:prop-schema="itemSchema.properties[key]"
|
125
|
+
:is-in-dialog="true"
|
126
|
+
:dialog-data="editableItem"
|
127
|
+
/>
|
128
|
+
</div>
|
129
|
+
</v-card-text>
|
130
|
+
<v-card-actions>
|
131
|
+
<v-spacer></v-spacer>
|
132
|
+
<v-btn text @click="dialog = false">{{ t('Cancel') }}</v-btn>
|
133
|
+
<v-btn color="primary" @click="saveItem">{{ t('Save') }}</v-btn>
|
134
|
+
</v-card-actions>
|
135
|
+
</v-card>
|
136
|
+
</v-dialog>
|
137
|
+
</div>
|
138
|
+
|
139
|
+
<!-- Array Combobox for simple arrays -->
|
140
|
+
<v-combobox
|
141
|
+
v-else-if="isType('array')"
|
142
|
+
v-model="modelValue"
|
143
|
+
:label="t(propSchema.title || propKey)"
|
144
|
+
:hint="propSchema.description"
|
145
|
+
persistent-hint
|
146
|
+
chips
|
147
|
+
multiple
|
148
|
+
closable-chips
|
149
|
+
variant="outlined"
|
150
|
+
density="compact"
|
151
|
+
></v-combobox>
|
152
|
+
|
153
|
+
</div>
|
154
|
+
</template>
|
155
|
+
|
156
|
+
<script setup lang="ts">
|
157
|
+
import { computed, ref, reactive, defineAsyncComponent } from 'vue';
|
158
|
+
import { useI18n } from 'vue-i18n';
|
159
|
+
import { useConfigStore } from '@/stores/config';
|
160
|
+
import { v4 as uuidv4 } from 'uuid';
|
161
|
+
|
162
|
+
const { t } = useI18n();
|
163
|
+
|
164
|
+
// Using defineAsyncComponent to avoid circular reference
|
165
|
+
const FieldRenderer = defineAsyncComponent(() => import('@/components/config/FieldRenderer.vue'));
|
166
|
+
|
167
|
+
const props = defineProps<{
|
168
|
+
groupKey: string | null,
|
169
|
+
propKey: string,
|
170
|
+
propSchema: any,
|
171
|
+
isInDialog?: boolean,
|
172
|
+
dialogData?: any
|
173
|
+
}>();
|
174
|
+
|
175
|
+
const configStore = useConfigStore();
|
176
|
+
|
177
|
+
// --- Type Checkers ---
|
178
|
+
function isType(type: string): boolean {
|
179
|
+
if (props.propSchema.type === type) return true;
|
180
|
+
if (Array.isArray(props.propSchema.anyOf)) {
|
181
|
+
return props.propSchema.anyOf.some((t: any) => t.type === type);
|
182
|
+
}
|
183
|
+
return false;
|
184
|
+
}
|
185
|
+
|
186
|
+
const isObjectArray = computed(() => {
|
187
|
+
if (!isType('array') || !props.propSchema.items) return false;
|
188
|
+
// An array of objects can be defined inline or with a $ref
|
189
|
+
return props.propSchema.items.type === 'object' || !!props.propSchema.items.$ref;
|
190
|
+
});
|
191
|
+
|
192
|
+
const itemSchema = computed(() => {
|
193
|
+
if (!isObjectArray.value) return {};
|
194
|
+
const items = props.propSchema.items;
|
195
|
+
if (items.$ref) {
|
196
|
+
const refName = items.$ref.split('/').pop();
|
197
|
+
return configStore.schema.$defs?.[refName] || {};
|
198
|
+
}
|
199
|
+
return items;
|
200
|
+
});
|
201
|
+
|
202
|
+
const isProviderId = computed(() => {
|
203
|
+
return props.propKey.endsWith('_provider_id');
|
204
|
+
});
|
205
|
+
|
206
|
+
// --- Provider ID Dropdown Logic ---
|
207
|
+
const providerItems = computed(() => {
|
208
|
+
if (props.propKey === 'llm_provider_id') {
|
209
|
+
return configStore.config.llm_providers || [];
|
210
|
+
}
|
211
|
+
if (props.propKey === 'tts_provider_id') {
|
212
|
+
return configStore.config.tts_providers || [];
|
213
|
+
}
|
214
|
+
return [];
|
215
|
+
});
|
216
|
+
|
217
|
+
// --- Main Model Value ---
|
218
|
+
const modelValue = computed({
|
219
|
+
get() {
|
220
|
+
if (props.isInDialog) {
|
221
|
+
return props.dialogData?.[props.propKey];
|
222
|
+
}
|
223
|
+
if (props.groupKey) {
|
224
|
+
return configStore.config[props.groupKey]?.[props.propKey];
|
225
|
+
}
|
226
|
+
return configStore.config[props.propKey];
|
227
|
+
},
|
228
|
+
set(newValue) {
|
229
|
+
if (props.isInDialog) {
|
230
|
+
if (props.dialogData) {
|
231
|
+
props.dialogData[props.propKey] = newValue;
|
232
|
+
}
|
233
|
+
return;
|
234
|
+
}
|
235
|
+
if (props.groupKey) {
|
236
|
+
if (!configStore.config[props.groupKey]) {
|
237
|
+
configStore.config[props.groupKey] = {};
|
238
|
+
}
|
239
|
+
configStore.config[props.groupKey][props.propKey] = newValue;
|
240
|
+
} else {
|
241
|
+
configStore.config[props.propKey] = newValue;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
});
|
245
|
+
|
246
|
+
// --- Object Array CRUD Logic ---
|
247
|
+
const dialog = ref(false);
|
248
|
+
const isEditing = ref(false);
|
249
|
+
const editableItem = reactive<any>({});
|
250
|
+
const editingIndex = ref(-1);
|
251
|
+
|
252
|
+
function openAddDialog() {
|
253
|
+
isEditing.value = false;
|
254
|
+
Object.keys(editableItem).forEach(key => delete editableItem[key]); // Clear reactive object
|
255
|
+
|
256
|
+
const properties = itemSchema.value.properties || {};
|
257
|
+
for (const key in properties) {
|
258
|
+
editableItem[key] = properties[key].default ?? null;
|
259
|
+
}
|
260
|
+
|
261
|
+
// Generate structured provider ID
|
262
|
+
const providerType = editableItem.provider_type || itemSchema.value.properties?.provider_type?.enum?.[0] || 'unknown';
|
263
|
+
const prefix = props.propKey === 'llm_providers' ? 'llm' : 'tts';
|
264
|
+
editableItem.provider_id = `${prefix}-${providerType}-${uuidv4()}`;
|
265
|
+
|
266
|
+
dialog.value = true;
|
267
|
+
}
|
268
|
+
|
269
|
+
function openEditDialog(item: any, index: number) {
|
270
|
+
isEditing.value = true;
|
271
|
+
editingIndex.value = index;
|
272
|
+
Object.keys(editableItem).forEach(key => delete editableItem[key]);
|
273
|
+
Object.assign(editableItem, JSON.parse(JSON.stringify(item))); // Deep copy
|
274
|
+
dialog.value = true;
|
275
|
+
}
|
276
|
+
|
277
|
+
function saveItem() {
|
278
|
+
const list = modelValue.value || [];
|
279
|
+
if (isEditing.value) {
|
280
|
+
list[editingIndex.value] = JSON.parse(JSON.stringify(editableItem));
|
281
|
+
} else {
|
282
|
+
list.push(JSON.parse(JSON.stringify(editableItem)));
|
283
|
+
}
|
284
|
+
modelValue.value = list;
|
285
|
+
dialog.value = false;
|
286
|
+
}
|
287
|
+
|
288
|
+
function deleteItem(index: number) {
|
289
|
+
const list = modelValue.value || [];
|
290
|
+
list.splice(index, 1);
|
291
|
+
modelValue.value = list;
|
292
|
+
}
|
293
|
+
|
294
|
+
</script>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
{
|
2
|
+
"LLM Providers": "LLM Providers",
|
3
|
+
"TTS Providers": "TTS Providers",
|
4
|
+
"Neuro": "Neuro",
|
5
|
+
"Chatbot": "Chatbot",
|
6
|
+
"Stream": "Stream",
|
7
|
+
"Server": "Server",
|
8
|
+
"Provider ID": "Provider ID",
|
9
|
+
"Display Name": "Display Name",
|
10
|
+
"Provider Type": "Provider Type",
|
11
|
+
"API Key": "API Key",
|
12
|
+
"Base URL": "Base URL",
|
13
|
+
"Model Name": "Model Name",
|
14
|
+
"Region": "Region",
|
15
|
+
"LLM Provider ID": "LLM Provider ID",
|
16
|
+
"TTS Provider ID": "TTS Provider ID",
|
17
|
+
"Input Chat Sample Size": "Input Chat Sample Size",
|
18
|
+
"Post-Speech Cooldown (sec)": "Post-Speech Cooldown (sec)",
|
19
|
+
"Initial Greeting": "Initial Greeting",
|
20
|
+
"Neuro Input Queue Max Size": "Neuro Input Queue Max Size",
|
21
|
+
"Enable Dynamic Pool": "Enable Dynamic Pool",
|
22
|
+
"Dynamic Pool Size": "Dynamic Pool Size",
|
23
|
+
"Generation Interval (sec)": "Generation Interval (sec)",
|
24
|
+
"Chats per Batch": "Chats per Batch",
|
25
|
+
"Streamer Nickname": "Streamer Nickname",
|
26
|
+
"Stream Title": "Stream Title",
|
27
|
+
"Stream Category": "Stream Category",
|
28
|
+
"Stream Tags": "Stream Tags",
|
29
|
+
"Host": "Host",
|
30
|
+
"Port": "Port",
|
31
|
+
"Panel Password": "Panel Password",
|
32
|
+
"Client Origins": "Client Origins",
|
33
|
+
"Audience Chat Buffer Max Size": "Audience Chat Buffer Max Size",
|
34
|
+
"Initial Chat Backlog Limit": "Initial Chat Backlog Limit",
|
35
|
+
"Add Item": "Add Item",
|
36
|
+
"Edit Item": "Edit Item",
|
37
|
+
"Item": "Item",
|
38
|
+
"Save": "Save",
|
39
|
+
"Cancel": "Cancel",
|
40
|
+
"Add": "Add",
|
41
|
+
"Edit": "Edit",
|
42
|
+
"Loading configuration...": "Loading configuration...",
|
43
|
+
"Save Configuration": "Save Configuration",
|
44
|
+
"Connection": "Connection",
|
45
|
+
"Control": "Control",
|
46
|
+
"Configuration": "Configuration",
|
47
|
+
"Logs": "Logs",
|
48
|
+
"Agent": "Agent",
|
49
|
+
"Connection Lost": "Connection Lost",
|
50
|
+
"The connection to the backend was unexpectedly lost. Please reconnect.": "The connection to the backend was unexpectedly lost. Please reconnect.",
|
51
|
+
"Go to Connection Page": "Go to Connection Page"
|
52
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
{
|
2
|
+
"LLM Providers": "LLM 服务商",
|
3
|
+
"TTS Providers": "TTS 服务商",
|
4
|
+
"Neuro": "Neuro",
|
5
|
+
"Chatbot": "聊天机器人",
|
6
|
+
"Stream": "直播",
|
7
|
+
"Server": "服务器",
|
8
|
+
"Provider ID": "服务商 ID",
|
9
|
+
"Display Name": "显示名称",
|
10
|
+
"Provider Type": "服务商类型",
|
11
|
+
"API Key": "API 密钥",
|
12
|
+
"Base URL": "基础 URL",
|
13
|
+
"Model Name": "模型名称",
|
14
|
+
"Region": "区域",
|
15
|
+
"LLM Provider ID": "LLM 服务商 ID",
|
16
|
+
"TTS Provider ID": "TTS 服务商 ID",
|
17
|
+
"Input Chat Sample Size": "输入聊天采样大小",
|
18
|
+
"Post-Speech Cooldown (sec)": "语音后冷却 (秒)",
|
19
|
+
"Initial Greeting": "初始问候语",
|
20
|
+
"Neuro Input Queue Max Size": "Neuro 输入队列最大长度",
|
21
|
+
"Enable Dynamic Pool": "启用动态池",
|
22
|
+
"Dynamic Pool Size": "动态池大小",
|
23
|
+
"Generation Interval (sec)": "生成间隔 (秒)",
|
24
|
+
"Chats per Batch": "每批次聊天数",
|
25
|
+
"Streamer Nickname": "主播昵称",
|
26
|
+
"Stream Title": "直播标题",
|
27
|
+
"Stream Category": "直播分类",
|
28
|
+
"Stream Tags": "直播标签",
|
29
|
+
"Host": "主机",
|
30
|
+
"Port": "端口",
|
31
|
+
"Panel Password": "面板密码",
|
32
|
+
"Client Origins": "客户端源",
|
33
|
+
"Audience Chat Buffer Max Size": "观众聊天缓冲区最大长度",
|
34
|
+
"Initial Chat Backlog Limit": "初始聊天记录限制",
|
35
|
+
"Add Item": "添加项目",
|
36
|
+
"Edit Item": "编辑项目",
|
37
|
+
"Item": "项目",
|
38
|
+
"Save": "保存",
|
39
|
+
"Cancel": "取消",
|
40
|
+
"Add": "添加",
|
41
|
+
"Edit": "编辑",
|
42
|
+
"Loading configuration...": "正在加载配置...",
|
43
|
+
"Save Configuration": "保存配置",
|
44
|
+
"Connection": "连接",
|
45
|
+
"Control": "控制",
|
46
|
+
"Configuration": "配置",
|
47
|
+
"Logs": "日志",
|
48
|
+
"Agent": "Agent",
|
49
|
+
"Connection Lost": "连接已断开",
|
50
|
+
"The connection to the backend was unexpectedly lost. Please reconnect.": "与后端的连接已意外断开,请重新连接。",
|
51
|
+
"Go to Connection Page": "返回连接页面"
|
52
|
+
}
|