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.
Files changed (234) hide show
  1. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/PKG-INFO +1 -2
  2. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/package-lock.json +95 -2
  3. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/package.json +4 -1
  4. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/App.vue +20 -11
  5. neuro_simulator-0.6.0/dashboard/src/components/config/FieldRenderer.vue +294 -0
  6. neuro_simulator-0.6.0/dashboard/src/locales/en.json +52 -0
  7. neuro_simulator-0.6.0/dashboard/src/locales/zh.json +52 -0
  8. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/main.ts +18 -1
  9. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/ConfigView.vue +31 -8
  10. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/pyproject.toml +1 -2
  11. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/llm.py +23 -19
  12. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/core.py +10 -10
  13. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/llm.py +22 -19
  14. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/generator.py +3 -3
  15. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/manager.py +10 -8
  16. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/cli.py +7 -12
  17. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/agent_factory.py +9 -18
  18. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/application.py +59 -56
  19. neuro_simulator-0.6.0/server/neuro_simulator/core/config.py +113 -0
  20. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/path_manager.py +7 -7
  21. neuro_simulator-0.6.0/server/neuro_simulator/services/audio.py +106 -0
  22. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/services/builtin.py +3 -0
  23. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/services/stream.py +1 -1
  24. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/queue.py +2 -2
  25. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/requirements.txt +1 -1
  26. neuro_simulator-0.5.4/dashboard/src/components/config/FieldRenderer.vue +0 -129
  27. neuro_simulator-0.5.4/docs/working_dir_example/config.yaml.example +0 -117
  28. neuro_simulator-0.5.4/server/neuro_simulator/config.yaml.example +0 -117
  29. neuro_simulator-0.5.4/server/neuro_simulator/core/config.py +0 -326
  30. neuro_simulator-0.5.4/server/neuro_simulator/services/audio.py +0 -98
  31. neuro_simulator-0.5.4/server/neuro_simulator/services/letta.py +0 -254
  32. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/.github/workflows/release.yml +0 -0
  33. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/.gitignore +0 -0
  34. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/LICENSE +0 -0
  35. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/README.md +0 -0
  36. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/README.md +0 -0
  37. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/index.html +0 -0
  38. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/package-lock.json +0 -0
  39. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/package.json +0 -0
  40. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/avatar.webp +0 -0
  41. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/background.webp +0 -0
  42. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/background_old.webp +0 -0
  43. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/banner.jpeg +0 -0
  44. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/channel_points.png +0 -0
  45. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/error.mp3 +0 -0
  46. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/favicon.ico +0 -0
  47. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/causten.woff2 +0 -0
  48. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/comic.woff2 +0 -0
  49. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/first-coffee.woff2 +0 -0
  50. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/fonts/noto-sans-sc.woff2 +0 -0
  51. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/neuro_start.mp4 +0 -0
  52. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/neurosama.png +0 -0
  53. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/sc_pink.png +0 -0
  54. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/sc_purple.png +0 -0
  55. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/sub_badge.svg +0 -0
  56. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/public/user_avatar.jpg +0 -0
  57. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/core/appInitializer.ts +0 -0
  58. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/core/layoutManager.ts +0 -0
  59. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/core/singletonManager.ts +0 -0
  60. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/javascript/tooltip.js +0 -0
  61. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/javascript/viewers.js +0 -0
  62. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/main.ts +0 -0
  63. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/apiClient.ts +0 -0
  64. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/audioPlayer.ts +0 -0
  65. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/bilibiliService.ts +0 -0
  66. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/services/websocketClient.ts +0 -0
  67. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/stream/neuroAvatar.ts +0 -0
  68. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/stream/videoPlayer.ts +0 -0
  69. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/style.css +0 -0
  70. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/base.css +0 -0
  71. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/chat.css +0 -0
  72. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/header.css +0 -0
  73. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/offline.css +0 -0
  74. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/responsive.css +0 -0
  75. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/settings.css +0 -0
  76. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/stream-info.css +0 -0
  77. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/stream.css +0 -0
  78. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/styles/tooltip.css +0 -0
  79. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/types/common.ts +0 -0
  80. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/chatDisplay.ts +0 -0
  81. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/chatSidebar.ts +0 -0
  82. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/liveIndicator.ts +0 -0
  83. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/muteButton.ts +0 -0
  84. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/neuroCaption.ts +0 -0
  85. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/settingsModal.ts +0 -0
  86. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/streamInfoDisplay.ts +0 -0
  87. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/streamTimer.ts +0 -0
  88. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/ui/userInput.ts +0 -0
  89. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/utils/wakeLockManager.ts +0 -0
  90. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src/vite-env.d.ts +0 -0
  91. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/.cargo/config.toml +0 -0
  92. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/Cargo.lock +0 -0
  93. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/Cargo.toml +0 -0
  94. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/build.rs +0 -0
  95. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/capabilities/migrated.json +0 -0
  96. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/icons/icon.ico +0 -0
  97. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/icons/icon.png +0 -0
  98. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/src/lib.rs +0 -0
  99. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/src/main.rs +0 -0
  100. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/src-tauri/tauri.conf.json +0 -0
  101. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/tsconfig.json +0 -0
  102. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/client/vite.config.ts +0 -0
  103. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/e2e/tsconfig.json +0 -0
  104. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/e2e/vue.spec.ts +0 -0
  105. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/env.d.ts +0 -0
  106. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/eslint.config.ts +0 -0
  107. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/index.html +0 -0
  108. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/playwright.config.ts +0 -0
  109. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/public/favicon.ico +0 -0
  110. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/public/first-coffee.woff2 +0 -0
  111. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/base.css +0 -0
  112. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/fonts.css +0 -0
  113. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/logo.svg +0 -0
  114. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/assets/main.css +0 -0
  115. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/ContextTab.vue +0 -0
  116. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/LogsTab.vue +0 -0
  117. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/MemoryTab.vue +0 -0
  118. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/agent/ToolsTab.vue +0 -0
  119. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/components/common/ConfirmDialog.vue +0 -0
  120. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/router/index.ts +0 -0
  121. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/agent.ts +0 -0
  122. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/config.ts +0 -0
  123. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/connection.ts +0 -0
  124. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/counter.ts +0 -0
  125. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/logs.ts +0 -0
  126. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/stream.ts +0 -0
  127. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/tools.ts +0 -0
  128. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/stores/ui.ts +0 -0
  129. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/AgentView.vue +0 -0
  130. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/ChatBotView.vue +0 -0
  131. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/ControlView.vue +0 -0
  132. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/HomeView.vue +0 -0
  133. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/src/views/LogsView.vue +0 -0
  134. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.app.json +0 -0
  135. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.json +0 -0
  136. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.node.json +0 -0
  137. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/tsconfig.vitest.json +0 -0
  138. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/vite.config.ts +0 -0
  139. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/dashboard/vitest.config.ts +0 -0
  140. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/assets/start.gif +0 -0
  141. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/letta_agents_example/LETTA_CLOUD_ONLY_neuro-sama.af +0 -0
  142. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/letta_agents_example/README.md +0 -0
  143. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/letta_agents_example/sys_prompt_for_sleeptime.txt +0 -0
  144. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memories/core_memory.json +0 -0
  145. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memories/init_memory.json +0 -0
  146. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memories/temp_memory.json +0 -0
  147. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memory_manager/history.jsonl +0 -0
  148. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memory_manager/memory_prompt.txt +0 -0
  149. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/memory_manager/tools.json +0 -0
  150. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/neuro/history.jsonl +0 -0
  151. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/neuro/neuro_prompt.txt +0 -0
  152. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/neuro/tools.json +0 -0
  153. {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
  154. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/add_temp_memory.py +0 -0
  155. {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
  156. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/base.py +0 -0
  157. {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
  158. {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
  159. {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
  160. {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
  161. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/model_spin.py +0 -0
  162. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/model_zoom.py +0 -0
  163. {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
  164. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/agents/tools/builtin_tools/speak.py +0 -0
  165. {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
  166. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/assets/neuro_start.mp4 +0 -0
  167. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/chatbot/chatbot_prompt.txt +0 -0
  168. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/chatbot/tools.json +0 -0
  169. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memories/core_memory.json +0 -0
  170. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memories/init_memory.json +0 -0
  171. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memories/temp_memory.json +0 -0
  172. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memory_agent/memory_prompt.txt +0 -0
  173. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/memory_agent/tools.json +0 -0
  174. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/nickname_gen/data/adjectives.txt +0 -0
  175. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/nickname_gen/data/nouns.txt +0 -0
  176. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/nickname_gen/data/special_users.txt +0 -0
  177. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/tools/builtin_tools/add_temp_memory.py +0 -0
  178. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/docs/working_dir_example/chatbot/tools/builtin_tools/post_chat_message.py +0 -0
  179. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/hatch_build.py +0 -0
  180. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/README.md +0 -0
  181. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/WEBSOCKET_API.md +0 -0
  182. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/__init__.py +0 -0
  183. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/__init__.py +0 -0
  184. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/core.py +0 -0
  185. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/__init__.py +0 -0
  186. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/chat_history.json +0 -0
  187. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/core_memory.json +0 -0
  188. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/init_memory.json +0 -0
  189. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/manager.py +0 -0
  190. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory/temp_memory.json +0 -0
  191. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/memory_prompt.txt +0 -0
  192. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/neuro_prompt.txt +0 -0
  193. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/__init__.py +0 -0
  194. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/add_temp_memory.py +0 -0
  195. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/add_to_core_memory_block.py +0 -0
  196. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/base.py +0 -0
  197. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/create_core_memory_block.py +0 -0
  198. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/delete_core_memory_block.py +0 -0
  199. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/get_core_memory_block.py +0 -0
  200. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/get_core_memory_blocks.py +0 -0
  201. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/manager.py +0 -0
  202. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/model_spin.py +0 -0
  203. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/model_zoom.py +0 -0
  204. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/remove_from_core_memory_block.py +0 -0
  205. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/speak.py +0 -0
  206. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/agent/tools/update_core_memory_block.py +0 -0
  207. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/api/__init__.py +0 -0
  208. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/api/system.py +0 -0
  209. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/assets/neuro_start.mp4 +0 -0
  210. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/__init__.py +0 -0
  211. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/__init__.py +0 -0
  212. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/core_memory.json +0 -0
  213. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/init_memory.json +0 -0
  214. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/manager.py +0 -0
  215. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/memory/temp_memory.json +0 -0
  216. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/__init__.py +0 -0
  217. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/data/adjectives.txt +0 -0
  218. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/data/nouns.txt +0 -0
  219. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/nickname_gen/data/special_users.txt +0 -0
  220. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/prompts/__init__.py +0 -0
  221. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/prompts/chatbot_prompt.txt +0 -0
  222. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/prompts/memory_prompt.txt +0 -0
  223. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/__init__.py +0 -0
  224. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/add_temp_memory.py +0 -0
  225. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/base.py +0 -0
  226. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/chatbot/tools/post_chat_message.py +0 -0
  227. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/__init__.py +0 -0
  228. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/core/agent_interface.py +0 -0
  229. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/services/__init__.py +0 -0
  230. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/__init__.py +0 -0
  231. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/logging.py +0 -0
  232. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/process.py +0 -0
  233. {neuro_simulator-0.5.4 → neuro_simulator-0.6.0}/server/neuro_simulator/utils/state.py +0 -0
  234. {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.5.4
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.5.4",
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.5.4",
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.5.4",
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">连接已断开</v-card-title>
49
- <v-card-text>与后端的连接已意外断开,请重新连接。</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">返回连接页面</v-btn>
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: '连接', icon: 'mdi-connection', to: '/' },
72
- { title: '控制', icon: 'mdi-gamepad-variant', to: '/control' },
73
- { title: '配置', icon: 'mdi-cog', to: '/config' },
74
- { title: '日志', icon: 'mdi-file-document-outline', to: '/logs' },
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
+ }