dulus 3.9.4__tar.gz → 3.9.5__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-3.9.4/dulus.egg-info → dulus-3.9.5}/PKG-INFO +1 -1
- {dulus-3.9.4 → dulus-3.9.5/dulus.egg-info}/PKG-INFO +1 -1
- {dulus-3.9.4 → dulus-3.9.5}/pyproject.toml +1 -1
- {dulus-3.9.4 → dulus-3.9.5}/voice/tts.py +30 -1
- {dulus-3.9.4 → dulus-3.9.5}/LICENSE +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/MANIFEST.in +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/README.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/agent.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/analytics.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/agents_bridge.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/compressor.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/context.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/githook.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/marketplace.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/mempalace_bridge.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/personas.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/plugins.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/server.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/backend/tasks.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/batch_api.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/checkpoint/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/checkpoint/hooks.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/checkpoint/store.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/checkpoint/types.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/claude_code_watcher.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/clipboard_utils.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/cloudsave.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/common.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/compaction.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/config.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/context.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/active_persona.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/marketplace.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/personas.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/composio/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/composio/composio_plugin/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/composio/plugin.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/plugins/composio/plugin_tool.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/data/tasks.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/API.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/BRAND_GUIDE.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/CHANGELOG.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/CONTRIBUTING.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/DEPLOYMENT.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/Dulus_AI_Whitepaper_(v2.0).pdf +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/FAQ.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/GETTING_STARTED.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/INVESTOR_BRIEF.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_AR.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_EN.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_ES.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_FR.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_JA.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_KO.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_PT.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_RU.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/README_ZH.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/SECURITY.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/api.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/architecture.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/azure-speech-template.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/dashboard/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/divider.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/dulus-bird.png +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/generate.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/hero.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/news.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/nvidia-models.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/particle-playground.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/personas/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/poetry-banner.png +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/preview.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-agents.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-brainstorm.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-bridges.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-features.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-freetier.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-memory.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-models.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-perms.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-plugins.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-quickstart.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/sec-ssj.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/spinners.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/split-pane.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/docs/terminal-boot.svg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus.egg-info/SOURCES.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus.egg-info/dependency_links.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus.egg-info/entry_points.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus.egg-info/requires.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus.egg-info/top_level.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_gui.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_gui_web.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/client.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/commands.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/config.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/hub.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_mcp/types.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/add_dir_manager.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/afk_mode.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/approval_runtime.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/background_tasks.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/clipboard_utils.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/diff_visualizer.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/export_import.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/hook_engine.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/notification_manager.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/session_fork.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/shell_mode.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/todo_visualizer.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/tree_ls.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/wire_events.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/dulus_tools/yolo_mode.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/governance.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/agent_bridge.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/chat_widget.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/App.tsx +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/THIRD_PARTY_NOTICES.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/dist/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/dist/standalone.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/index.tsx +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/metadata.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/package-lock.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/package.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/types.ts +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/utils.ts +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/vertex-ai-proxy-interceptor.js +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/dulus_orchestrator/vite.config.ts +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/main_window.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/personas.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/sandbox_server.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/session_utils.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/settings_dialog.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/sidebar.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/tasks_view.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/themes.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/gui/tool_panel.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/input.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/license_manager.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/audit.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/consolidator.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/context.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/offload.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/palace.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/scan.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/sessions.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/store.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/types.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/memory/vector_search.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/multi_agent/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/multi_agent/subagent.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/multi_agent/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/offload_helper.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/personality_config.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/plugin/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/plugin/autoadapter.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/plugin/loader.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/plugin/recommend.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/plugin/store.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/plugin/types.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/providers.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/README.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/components.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/assets/index-DE51D6wI.css +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/assets/index-DMCCNE9Y.js +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/wallpaper-default.jpg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/wallpapers/default.jpeg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/wallpapers/light.jpeg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/wallpapers/nature.jpeg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/dist/wallpapers/tech.jpeg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/eslint.config.js +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/index.html +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/info.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/package-lock.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/package.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/postcss.config.js +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/tailwind.config.js +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/tsconfig.app.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/tsconfig.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/tsconfig.node.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox/vite.config.ts +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/sandbox_bootstrap.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/setup.cfg +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/builtin.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/LICENSE-obsidian-skills +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/README.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/defuddle/SKILL.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/json-canvas/SKILL.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/json-canvas/references/EXAMPLES.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-bases/SKILL.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-cli/SKILL.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-markdown/SKILL.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-markdown/references/CALLOUTS.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-markdown/references/EMBEDS.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/obsidian-markdown/references/PROPERTIES.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/README.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/SKILL.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/addresses.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/advancedbackgroundchecks.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/beenverified.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/clustal.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/clustrmaps.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/cyberbackgroundchecks.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/familytreenow.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/fastpeoplesearch.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/intelius.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/mylife.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/nuwber.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/peekyou.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/peoplefinders.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/radaris.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/rehold.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/searchpeoplefree.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/socialcatfish.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/spokeo.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/thatsthem.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/truepeoplesearch.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/usphonebook.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/brokers/whitepages.json +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/legal/ccpa.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/legal/drop.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/legal/gdpr.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/methods.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/site-playbooks.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/references/state-machine.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/autopilot.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/badbool.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/brokers.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/cdp.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/config.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/crypto.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/dossier.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/email_modes.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/emailer.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/ledger.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/legal.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/paths.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/pdd.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/registry.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/report.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/scan.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/storage.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/tiers.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/scripts/vectors.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/templates/consent/authorization.md +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/templates/emails/ccpa-authorized-agent.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/templates/emails/ccpa-deletion.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/templates/emails/ccpa-indirect-deletion.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/templates/emails/gdpr-erasure.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/bundled/unbroker/templates/emails/generic-optout.txt +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/clawhub.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/executor.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/loader.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skill/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/skills.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/soul.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/spinner.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/string_utils.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/subagent.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/task/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/task/store.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/task/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/task/types.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_afk_yolo.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_approval_runtime.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_background_task_tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_background_tasks.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_checkpoint.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_clipboard_utils.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_compaction.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_diff_view.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_diff_visualization.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_display_blocks.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_export_import.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_hook_engine.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_injection_fix.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_license.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_mcp.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_memory.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_notification_manager.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_plugin.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_session_fork.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_shell_mode.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_skills.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_steer_input.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_subagent.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_task.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_telegram_buffer.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_think_tool.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_todo_tool.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_todo_visualization.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_tool_registry.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_tree_ls.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_voice.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tests/test_wire_events.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tmux_offloader.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tmux_tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tool_registry.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/ui/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/ui/input.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/ui/render.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/updater.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/voice/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/voice/audio_utils.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/voice/keyterms.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/voice/recorder.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/voice/stt.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/voice/wake_word.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/webbridge/__init__.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/webbridge/core.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/webbridge/tools.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/webchat.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/webchat_server.py +0 -0
- {dulus-3.9.4 → dulus-3.9.5}/welcome.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dulus
|
|
3
|
-
Version: 3.9.
|
|
3
|
+
Version: 3.9.5
|
|
4
4
|
Summary: Use IA as an agent without an API key. $0. Harvest your browser session for Gemini (guest, no login), Claude.ai, Claude Code, Kimi.com, Qwen, DeepSeek — drive them like an API, no per-token billing. Plus LiteLLM (100+ paid providers), local models via Ollama, /lang in 34 languages, Mesa Redonda, voice, OCR, MemPalace, embedded sandbox OS.
|
|
5
5
|
Author: KevRojo
|
|
6
6
|
License: GPL-3.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dulus
|
|
3
|
-
Version: 3.9.
|
|
3
|
+
Version: 3.9.5
|
|
4
4
|
Summary: Use IA as an agent without an API key. $0. Harvest your browser session for Gemini (guest, no login), Claude.ai, Claude Code, Kimi.com, Qwen, DeepSeek — drive them like an API, no per-token billing. Plus LiteLLM (100+ paid providers), local models via Ollama, /lang in 34 languages, Mesa Redonda, voice, OCR, MemPalace, embedded sandbox OS.
|
|
5
5
|
Author: KevRojo
|
|
6
6
|
License: GPL-3.0
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dulus"
|
|
7
|
-
version = "3.9.
|
|
7
|
+
version = "3.9.5"
|
|
8
8
|
description = "Use IA as an agent without an API key. $0. Harvest your browser session for Gemini (guest, no login), Claude.ai, Claude Code, Kimi.com, Qwen, DeepSeek — drive them like an API, no per-token billing. Plus LiteLLM (100+ paid providers), local models via Ollama, /lang in 34 languages, Mesa Redonda, voice, OCR, MemPalace, embedded sandbox OS."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -33,16 +33,45 @@ _stop_event = threading.Event()
|
|
|
33
33
|
_say_lock = threading.Lock()
|
|
34
34
|
|
|
35
35
|
def _watch_for_cancel() -> None:
|
|
36
|
-
"""Background thread: set _stop_event if user presses 'c'.
|
|
36
|
+
"""Background thread: set _stop_event if user presses 'c'.
|
|
37
|
+
|
|
38
|
+
Two detection paths, because one alone is unreliable:
|
|
39
|
+
1. msvcrt.kbhit() — only sees keys when the raw console owns stdin.
|
|
40
|
+
When prompt_toolkit (the fancy REPL input) is active, IT consumes
|
|
41
|
+
the keystroke first and msvcrt never sees the 'c' — which is why
|
|
42
|
+
cancel "sometimes didn't work" and you had to wait out the audio.
|
|
43
|
+
2. GetAsyncKeyState(VK 'C') — reads the PHYSICAL key state straight
|
|
44
|
+
from the OS, regardless of who owns stdin. Edge-detected (up→down)
|
|
45
|
+
so a held key doesn't retrigger.
|
|
46
|
+
Also sleeps 30ms per iteration — the old loop busy-spun at 100% CPU.
|
|
47
|
+
"""
|
|
37
48
|
try:
|
|
38
49
|
import msvcrt
|
|
50
|
+
try:
|
|
51
|
+
import ctypes
|
|
52
|
+
_user32 = ctypes.windll.user32
|
|
53
|
+
except Exception:
|
|
54
|
+
_user32 = None
|
|
55
|
+
VK_C = 0x43
|
|
56
|
+
was_down = bool(_user32 and (_user32.GetAsyncKeyState(VK_C) & 0x8000))
|
|
39
57
|
while not _stop_event.is_set():
|
|
58
|
+
# Path 1: classic console read (works when no prompt is active).
|
|
40
59
|
if msvcrt.kbhit():
|
|
41
60
|
ch = msvcrt.getwch()
|
|
42
61
|
if ch.lower() == 'c':
|
|
43
62
|
_stop_event.set()
|
|
44
63
|
print("\n ⏹ TTS stopped.", flush=True)
|
|
45
64
|
return
|
|
65
|
+
# Path 2: physical key state — catches the press even when
|
|
66
|
+
# prompt_toolkit swallowed the stdin byte.
|
|
67
|
+
if _user32 is not None:
|
|
68
|
+
is_down = bool(_user32.GetAsyncKeyState(VK_C) & 0x8000)
|
|
69
|
+
if is_down and not was_down:
|
|
70
|
+
_stop_event.set()
|
|
71
|
+
print("\n ⏹ TTS stopped.", flush=True)
|
|
72
|
+
return
|
|
73
|
+
was_down = is_down
|
|
74
|
+
time.sleep(0.03)
|
|
46
75
|
except Exception:
|
|
47
76
|
pass
|
|
48
77
|
|
|
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
|
|
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
|