dulus 0.2.54__tar.gz → 0.2.55__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.
- {dulus-0.2.54/dulus.egg-info → dulus-0.2.55}/PKG-INFO +1 -1
- {dulus-0.2.54 → dulus-0.2.55}/data/context.json +27 -25
- {dulus-0.2.54 → dulus-0.2.55/dulus.egg-info}/PKG-INFO +1 -1
- {dulus-0.2.54 → dulus-0.2.55}/input.py +17 -7
- {dulus-0.2.54 → dulus-0.2.55}/pyproject.toml +1 -1
- {dulus-0.2.54 → dulus-0.2.55}/voice/audio_utils.py +5 -2
- {dulus-0.2.54 → dulus-0.2.55}/voice/tts.py +4 -5
- {dulus-0.2.54 → dulus-0.2.55}/voice/wake_word.py +5 -2
- {dulus-0.2.54 → dulus-0.2.55}/LICENSE +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/MANIFEST.in +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/README.md +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/agent.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/agents_bridge.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/compressor.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/context.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/githook.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/marketplace.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/mempalace_bridge.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/personas.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/plugins.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/server.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/backend/tasks.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/batch_api.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/checkpoint/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/checkpoint/hooks.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/checkpoint/store.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/checkpoint/types.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/claude_code_watcher.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/clipboard_utils.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/cloudsave.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/common.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/compaction.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/config.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/context.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/active_persona.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/marketplace.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/personas.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/composio/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/composio/composio_plugin/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/composio/plugin.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/plugins/composio/plugin_tool.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/data/tasks.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/README.md +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/api.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/architecture.md +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/azure-speech-template.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/dashboard/index.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/divider.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/generate.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/hero.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/index.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/news.md +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/nvidia-models.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/particle-playground.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/personas/index.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/poetry-banner.png +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/preview.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-agents.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-brainstorm.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-bridges.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-features.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-freetier.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-memory.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-models.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-perms.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-plugins.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-quickstart.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/sec-ssj.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/spinners.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/split-pane.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/terminal-boot.svg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/docs/uploads/particle-playground.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus.egg-info/SOURCES.txt +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus.egg-info/dependency_links.txt +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus.egg-info/entry_points.txt +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus.egg-info/requires.txt +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus.egg-info/top_level.txt +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus_gui.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus_mcp/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus_mcp/client.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus_mcp/config.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus_mcp/tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/dulus_mcp/types.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/agent_bridge.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/chat_widget.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/main_window.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/personas.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/session_utils.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/settings_dialog.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/sidebar.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/tasks_view.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/themes.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/gui/tool_panel.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/license_manager.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/audit.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/consolidator.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/context.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/offload.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/palace.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/scan.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/sessions.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/store.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/types.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/memory/vector_search.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/multi_agent/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/multi_agent/subagent.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/multi_agent/tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/offload_helper.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/plugin/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/plugin/autoadapter.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/plugin/loader.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/plugin/recommend.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/plugin/store.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/plugin/types.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/providers.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/README.md +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/components.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/assets/index-DE51D6wI.css +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/assets/index-DMCCNE9Y.js +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/index.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/wallpaper-default.jpg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/wallpapers/default.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/wallpapers/light.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/wallpapers/nature.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/dist/wallpapers/tech.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/eslint.config.js +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/index.html +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/info.md +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/package-lock.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/package.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/postcss.config.js +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/public/wallpaper-default.jpg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/public/wallpapers/default.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/public/wallpapers/light.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/public/wallpapers/nature.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/public/wallpapers/tech.jpeg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/App.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/AgentMonitor.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ApiTester.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/AppRouter.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ArchiveManager.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/AsciiArt.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Base64Tool.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Browser.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Calculator.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Calendar.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Chat.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Chess.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Clock.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/CodeEditor.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ColorPalette.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ColorPicker.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Contacts.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/DocumentViewer.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Drawing.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Email.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/FileManager.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/FlappyBird.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/FtpClient.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Game2048.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/GitClient.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ImageGallery.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ImageViewer.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/JsonFormatter.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/MarkdownPreview.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/MatrixRain.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/MediaConverter.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Memory.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/MemoryManager.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Minesweeper.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/MusicPlayer.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/NetworkTools.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Notes.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/PasswordManager.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/PhotoEditor.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Pong.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/RegexTester.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Reminders.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/RssReader.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/ScreenRecorder.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Settings.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/SkillsLauncher.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Snake.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Solitaire.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Spreadsheet.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Sudoku.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/SystemMonitor.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/TaskManager.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Terminal.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Tetris.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/TextEditor.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/TicTacToe.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Todo.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/VideoPlayer.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/VoiceRecorder.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Weather.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/Whiteboard.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/apps/registry.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/AppContainer.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/AppLauncher.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/BootSequence.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ContextMenu.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/Desktop.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/Dock.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/LoginScreen.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/NotImplemented.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/NotificationCenter.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/NotificationSystem.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/TopPanel.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/WindowFrame.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/WindowManager.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/accordion.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/alert-dialog.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/alert.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/aspect-ratio.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/avatar.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/badge.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/breadcrumb.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/button-group.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/button.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/calendar.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/card.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/carousel.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/chart.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/checkbox.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/collapsible.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/command.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/context-menu.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/dialog.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/drawer.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/dropdown-menu.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/empty.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/field.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/form.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/hover-card.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/input-group.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/input-otp.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/input.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/item.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/kbd.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/label.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/menubar.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/navigation-menu.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/pagination.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/popover.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/progress.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/radio-group.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/resizable.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/scroll-area.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/select.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/separator.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/sheet.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/sidebar.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/skeleton.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/slider.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/sonner.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/spinner.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/switch.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/table.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/tabs.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/textarea.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/toggle-group.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/toggle.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/components/ui/tooltip.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/index.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/use-mobile.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useAutoOpenChat.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusAgents.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusChat.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusEvents.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusHealth.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusMemory.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusSkills.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useDulusTasks.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useFileSystem.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useOSStore.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useSkillBridge.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useSystemBattery.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useSystemNetwork.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/hooks/useSystemVolume.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/index.css +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/lib/dulus-api.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/lib/utils.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/main.tsx +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/types/index.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/src/utils/assets.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/tailwind.config.js +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/tsconfig.app.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/tsconfig.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/tsconfig.node.json +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/sandbox/vite.config.ts +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/setup.cfg +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skill/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skill/builtin.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skill/clawhub.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skill/executor.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skill/loader.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skill/tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/skills.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/spinner.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/string_utils.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/subagent.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/task/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/task/store.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/task/tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/task/types.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_afk_yolo.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_approval_runtime.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_background_task_tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_background_tasks.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_checkpoint.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_clipboard_utils.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_compaction.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_diff_view.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_diff_visualization.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_display_blocks.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_export_import.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_hook_engine.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_injection_fix.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_license.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_mcp.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_memory.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_notification_manager.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_plugin.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_session_fork.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_shell_mode.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_skills.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_steer_input.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_subagent.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_task.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_telegram_buffer.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_think_tool.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_todo_tool.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_todo_visualization.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_tool_registry.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_voice.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tests/test_wire_events.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tmux_offloader.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tmux_tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tool_registry.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/tools.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/ui/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/ui/input.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/ui/render.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/voice/__init__.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/voice/keyterms.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/voice/recorder.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/voice/stt.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/webchat.py +0 -0
- {dulus-0.2.54 → dulus-0.2.55}/webchat_server.py +0 -0
|
@@ -9,21 +9,22 @@
|
|
|
9
9
|
"project": {
|
|
10
10
|
"name": "Dulus Command Center",
|
|
11
11
|
"repo_stats": {
|
|
12
|
-
"files":
|
|
13
|
-
"lines":
|
|
12
|
+
"files": 439,
|
|
13
|
+
"lines": 206577,
|
|
14
14
|
"languages": {
|
|
15
15
|
".example": 5,
|
|
16
|
-
"no_ext":
|
|
17
|
-
".py":
|
|
16
|
+
"no_ext": 1471,
|
|
17
|
+
".py": 61567,
|
|
18
18
|
".html": 14944,
|
|
19
19
|
".in": 3,
|
|
20
20
|
".toml": 129,
|
|
21
|
-
".md":
|
|
22
|
-
".txt":
|
|
21
|
+
".md": 2170,
|
|
22
|
+
".txt": 473,
|
|
23
23
|
".lock": 1,
|
|
24
|
-
".json":
|
|
25
|
-
".
|
|
26
|
-
".
|
|
24
|
+
".json": 9515,
|
|
25
|
+
".TAG": 4,
|
|
26
|
+
".whl": 21792,
|
|
27
|
+
".gz": 21068,
|
|
27
28
|
".svg": 1123,
|
|
28
29
|
".png": 31639,
|
|
29
30
|
".sh": 144,
|
|
@@ -38,41 +39,42 @@
|
|
|
38
39
|
},
|
|
39
40
|
"recent_commits": [
|
|
40
41
|
{
|
|
41
|
-
"hash": "
|
|
42
|
-
"subject": "
|
|
42
|
+
"hash": "d9c870b",
|
|
43
|
+
"subject": "bump: 0.2.53 → 0.2.54",
|
|
43
44
|
"author": "KevRojo",
|
|
44
|
-
"date": "2026-05-
|
|
45
|
+
"date": "2026-05-13"
|
|
45
46
|
},
|
|
46
47
|
{
|
|
47
|
-
"hash": "
|
|
48
|
-
"subject": "
|
|
48
|
+
"hash": "3c7daf7",
|
|
49
|
+
"subject": "feat(voice): add wake word detection, audio utils, and voice module improvements",
|
|
49
50
|
"author": "KevRojo",
|
|
50
|
-
"date": "2026-05-
|
|
51
|
+
"date": "2026-05-13"
|
|
51
52
|
},
|
|
52
53
|
{
|
|
53
|
-
"hash": "
|
|
54
|
-
"subject": "
|
|
54
|
+
"hash": "14c4f42",
|
|
55
|
+
"subject": "bump: 0.2.53",
|
|
55
56
|
"author": "KevRojo",
|
|
56
57
|
"date": "2026-05-12"
|
|
57
58
|
},
|
|
58
59
|
{
|
|
59
|
-
"hash": "
|
|
60
|
-
"subject": "feat: skill
|
|
60
|
+
"hash": "979df03",
|
|
61
|
+
"subject": "feat: skill system overhaul — awesome-remote install, interactive use, descriptions",
|
|
61
62
|
"author": "KevRojo",
|
|
62
63
|
"date": "2026-05-12"
|
|
63
64
|
},
|
|
64
65
|
{
|
|
65
|
-
"hash": "
|
|
66
|
-
"subject": "
|
|
66
|
+
"hash": "39ee671",
|
|
67
|
+
"subject": "chore(release): bump v0.2.52",
|
|
67
68
|
"author": "KevRojo",
|
|
68
69
|
"date": "2026-05-12"
|
|
69
70
|
}
|
|
70
71
|
],
|
|
71
72
|
"recent_changes": [
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
73
|
+
"input.py",
|
|
74
|
+
"pyproject.toml",
|
|
75
|
+
"requirements.txt",
|
|
76
|
+
"voice/audio_utils.py",
|
|
77
|
+
"voice/tts.py"
|
|
76
78
|
]
|
|
77
79
|
},
|
|
78
80
|
"tasks": {
|
|
@@ -826,14 +826,22 @@ def read_line_split(prompt: str = "> ", history_path: Optional[Path] = None) ->
|
|
|
826
826
|
|
|
827
827
|
# Build layout: output on top, separator, recent-strip + input at bottom
|
|
828
828
|
def _get_toolbar_text():
|
|
829
|
+
# Get base text from provider
|
|
830
|
+
base_text = ""
|
|
829
831
|
provider = _toolbar_provider
|
|
830
|
-
if provider
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
832
|
+
if provider:
|
|
833
|
+
try:
|
|
834
|
+
base_text = str(provider())
|
|
835
|
+
except Exception:
|
|
836
|
+
pass
|
|
837
|
+
|
|
838
|
+
# Combine with background status (e.g. wake energy bar)
|
|
839
|
+
global _toolbar_status
|
|
840
|
+
status = _toolbar_status or ""
|
|
841
|
+
|
|
842
|
+
# Format: [Base] [Status]
|
|
843
|
+
combined = f" {base_text} {status}".strip()
|
|
844
|
+
return ANSI(combined) if combined else ""
|
|
837
845
|
|
|
838
846
|
toolbar_window = ConditionalContainer(
|
|
839
847
|
content=Window(
|
|
@@ -1037,6 +1045,8 @@ def safe_print_notification(text: str, end: str = "\n", flush: bool = False) ->
|
|
|
1037
1045
|
|
|
1038
1046
|
def _schedule():
|
|
1039
1047
|
try:
|
|
1048
|
+
# run_in_terminal temporarily suspends the UI bar,
|
|
1049
|
+
# prints our text, then restores the bar.
|
|
1040
1050
|
task = run_in_terminal(_target)
|
|
1041
1051
|
if asyncio.iscoroutine(task):
|
|
1042
1052
|
_split_app.create_background_task(task)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dulus"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.55"
|
|
8
8
|
description = "Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -30,8 +30,11 @@ def beep(frequency: int = 1000, duration: int = 150) -> None:
|
|
|
30
30
|
except Exception:
|
|
31
31
|
pass
|
|
32
32
|
else:
|
|
33
|
+
# On Linux/WSL, we only write \a if we are in a TTY that supports it,
|
|
34
|
+
# otherwise it shows up as ^G.
|
|
33
35
|
try:
|
|
34
|
-
sys.stdout.
|
|
35
|
-
|
|
36
|
+
if sys.stdout.isatty():
|
|
37
|
+
sys.stdout.write("\a")
|
|
38
|
+
sys.stdout.flush()
|
|
36
39
|
except Exception:
|
|
37
40
|
pass
|
|
@@ -498,6 +498,7 @@ def _say_edge_tts(text: str, lang: str = "es") -> bool:
|
|
|
498
498
|
# ── pyttsx3 ───────────────────────────────────────────────────────────────
|
|
499
499
|
|
|
500
500
|
def _say_pyttsx3(text: str, rate: Optional[int] = None) -> bool:
|
|
501
|
+
global _pyttsx3_engine
|
|
501
502
|
try:
|
|
502
503
|
engine = _get_pyttsx3_engine()
|
|
503
504
|
if rate:
|
|
@@ -505,11 +506,9 @@ def _say_pyttsx3(text: str, rate: Optional[int] = None) -> bool:
|
|
|
505
506
|
engine.say(text)
|
|
506
507
|
engine.runAndWait()
|
|
507
508
|
return True
|
|
508
|
-
except ImportError:
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
print(f" [pyttsx3] Error: {e}")
|
|
512
|
-
global _pyttsx3_engine
|
|
509
|
+
except (ImportError, Exception) as e:
|
|
510
|
+
if not isinstance(e, ImportError):
|
|
511
|
+
print(f" [pyttsx3] Error: {e}")
|
|
513
512
|
_pyttsx3_engine = None
|
|
514
513
|
return False
|
|
515
514
|
|
|
@@ -285,10 +285,13 @@ class WakeWordListener:
|
|
|
285
285
|
import input as _dulus_input
|
|
286
286
|
_bar = " ▁▂▃▄▅▆▇█"
|
|
287
287
|
_lvl = min(int(rms * 8 / 0.08), 8)
|
|
288
|
-
|
|
288
|
+
# Cyan "Listening..." + Mic icon + Energy bar
|
|
289
|
+
_txt = f"\x1b[36mListening...\x1b[0m 🎙️ {_bar[_lvl]}"
|
|
289
290
|
# Try both toolbar and terminal fallback
|
|
290
291
|
_dulus_input.set_toolbar_status(_txt)
|
|
291
|
-
|
|
292
|
+
# Only print to terminal if we don't have a split app toolbar
|
|
293
|
+
if not getattr(_dulus_input, "_split_app", None):
|
|
294
|
+
_dulus_input.safe_print_notification(f"\r {_txt} ", end="", flush=True)
|
|
292
295
|
except Exception:
|
|
293
296
|
pass
|
|
294
297
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|