dulus 3.10.0__tar.gz → 3.10.1__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.10.0/dulus.egg-info → dulus-3.10.1}/PKG-INFO +1 -1
- {dulus-3.10.0 → dulus-3.10.1/dulus.egg-info}/PKG-INFO +1 -1
- {dulus-3.10.0 → dulus-3.10.1}/dulus.egg-info/top_level.txt +0 -1
- {dulus-3.10.0 → dulus-3.10.1}/dulus.py +53 -8
- {dulus-3.10.0 → dulus-3.10.1}/pyproject.toml +1 -1
- {dulus-3.10.0 → dulus-3.10.1}/webchat_ui/__init__.py +1 -1
- {dulus-3.10.0 → dulus-3.10.1}/webchat_ui/app.js +1585 -1585
- {dulus-3.10.0 → dulus-3.10.1}/webchat_ui/index.html +349 -349
- {dulus-3.10.0 → dulus-3.10.1}/webchat_ui/style.css +1802 -1802
- {dulus-3.10.0 → dulus-3.10.1}/LICENSE +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/MANIFEST.in +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/README.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/agent.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/analytics.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/agents_bridge.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/compressor.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/context.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/githook.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/marketplace.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/mempalace_bridge.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/personas.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/plugins.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/server.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/backend/tasks.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/batch_api.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/checkpoint/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/checkpoint/hooks.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/checkpoint/store.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/checkpoint/types.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/claude_code_watcher.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/clipboard_utils.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/cloudsave.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/common.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/compaction.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/config.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/context.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/active_persona.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/marketplace.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/personas.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/composio/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/composio/composio_plugin/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/composio/plugin.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/plugins/composio/plugin_tool.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/data/tasks.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/API.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/BRAND_GUIDE.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/CHANGELOG.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/CONTRIBUTING.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/DEPLOYMENT.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/Dulus_AI_Whitepaper_(v2.0).pdf +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/FAQ.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/GETTING_STARTED.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/INVESTOR_BRIEF.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_AR.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_EN.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_ES.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_FR.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_JA.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_KO.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_PT.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_RU.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/README_ZH.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/SECURITY.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/api.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/architecture.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/azure-speech-template.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/dashboard/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/divider.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/dulus-bird.png +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/generate.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/hero.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/news.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/nvidia-models.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/particle-playground.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/personas/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/poetry-banner.png +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/preview.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-agents.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-brainstorm.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-bridges.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-features.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-freetier.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-memory.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-models.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-perms.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-plugins.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-quickstart.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/sec-ssj.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/spinners.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/split-pane.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/docs/terminal-boot.svg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus.egg-info/SOURCES.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus.egg-info/dependency_links.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus.egg-info/entry_points.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus.egg-info/requires.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_gui.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_gui_web.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/client.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/commands.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/config.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/hub.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_mcp/types.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/add_dir_manager.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/afk_mode.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/approval_runtime.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/background_tasks.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/clipboard_utils.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/diff_visualizer.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/export_import.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/hook_engine.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/notification_manager.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/session_fork.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/shell_mode.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/todo_visualizer.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/tree_ls.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/wire_events.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/dulus_tools/yolo_mode.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/governance.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/agent_bridge.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/chat_widget.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/App.tsx +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/THIRD_PARTY_NOTICES.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/dist/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/dist/standalone.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/index.tsx +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/metadata.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/package-lock.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/package.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/types.ts +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/utils.ts +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/vertex-ai-proxy-interceptor.js +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/dulus_orchestrator/vite.config.ts +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/main_window.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/personas.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/sandbox_server.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/session_utils.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/settings_dialog.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/sidebar.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/tasks_view.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/themes.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/gui/tool_panel.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/input.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/license_manager.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/audit.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/consolidator.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/context.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/offload.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/palace.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/scan.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/sessions.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/store.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/types.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/memory/vector_search.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/multi_agent/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/multi_agent/subagent.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/multi_agent/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/offload_helper.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/personality_config.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/plugin/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/plugin/autoadapter.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/plugin/loader.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/plugin/recommend.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/plugin/store.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/plugin/types.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/providers.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/README.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/components.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/assets/index-DE51D6wI.css +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/assets/index-DMCCNE9Y.js +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/wallpaper-default.jpg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/wallpapers/default.jpeg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/wallpapers/light.jpeg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/wallpapers/nature.jpeg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/dist/wallpapers/tech.jpeg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/eslint.config.js +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/index.html +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/info.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/package-lock.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/package.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/postcss.config.js +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/tailwind.config.js +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/tsconfig.app.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/tsconfig.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/tsconfig.node.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox/vite.config.ts +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/sandbox_bootstrap.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/setup.cfg +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/builtin.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/LICENSE-obsidian-skills +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/README.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/defuddle/SKILL.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/json-canvas/SKILL.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/json-canvas/references/EXAMPLES.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-bases/SKILL.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-cli/SKILL.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-markdown/SKILL.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-markdown/references/CALLOUTS.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-markdown/references/EMBEDS.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/obsidian-markdown/references/PROPERTIES.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/README.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/SKILL.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/addresses.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/advancedbackgroundchecks.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/beenverified.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/clustal.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/clustrmaps.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/cyberbackgroundchecks.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/familytreenow.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/fastpeoplesearch.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/intelius.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/mylife.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/nuwber.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/peekyou.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/peoplefinders.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/radaris.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/rehold.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/searchpeoplefree.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/socialcatfish.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/spokeo.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/thatsthem.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/truepeoplesearch.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/usphonebook.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/brokers/whitepages.json +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/legal/ccpa.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/legal/drop.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/legal/gdpr.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/methods.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/site-playbooks.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/references/state-machine.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/autopilot.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/badbool.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/brokers.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/cdp.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/config.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/crypto.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/dossier.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/email_modes.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/emailer.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/ledger.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/legal.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/paths.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/pdd.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/registry.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/report.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/scan.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/storage.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/tiers.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/scripts/vectors.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/templates/consent/authorization.md +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/templates/emails/ccpa-authorized-agent.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/templates/emails/ccpa-deletion.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/templates/emails/ccpa-indirect-deletion.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/templates/emails/gdpr-erasure.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/bundled/unbroker/templates/emails/generic-optout.txt +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/clawhub.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/executor.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/loader.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skill/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/skills.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/soul.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/spinner.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/string_utils.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/subagent.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/task/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/task/store.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/task/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/task/types.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_afk_yolo.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_approval_runtime.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_background_task_tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_background_tasks.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_checkpoint.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_clipboard_utils.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_compaction.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_diff_view.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_diff_visualization.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_display_blocks.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_export_import.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_hook_engine.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_injection_fix.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_license.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_mcp.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_memory.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_notification_manager.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_plugin.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_session_fork.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_shell_mode.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_skills.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_steer_input.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_subagent.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_task.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_telegram_buffer.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_think_tool.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_todo_tool.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_todo_visualization.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_tool_registry.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_tree_ls.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_voice.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tests/test_wire_events.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tmux_offloader.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tmux_tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tool_registry.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/ui/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/ui/input.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/ui/render.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/updater.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/audio_utils.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/keyterms.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/recorder.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/stt.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/tts.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/voice/wake_word.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/webbridge/__init__.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/webbridge/core.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/webbridge/tools.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/webchat.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/webchat_server.py +0 -0
- {dulus-3.10.0 → dulus-3.10.1}/welcome.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dulus
|
|
3
|
-
Version: 3.10.
|
|
3
|
+
Version: 3.10.1
|
|
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.10.
|
|
3
|
+
Version: 3.10.1
|
|
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
|
|
@@ -3016,9 +3016,11 @@ def cmd_harvest_kimi(_args: str, _state, config) -> bool:
|
|
|
3016
3016
|
def cmd_harvest_gemini(_args: str, _state, config) -> bool:
|
|
3017
3017
|
"""Harvest fresh session data from gemini.google.com using Playwright.
|
|
3018
3018
|
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3019
|
+
Runs Chrome headless by default (set DULUS_GEMINI_HEADLESS=0 to show
|
|
3020
|
+
the window). It navigates to gemini.google.com, auto-types and sends the
|
|
3021
|
+
word "DULUS" in the chat, then intercepts the internal API request to
|
|
3022
|
+
capture headers/cookies for the gemini-web provider.
|
|
3023
|
+
|
|
3022
3024
|
Data is saved to ~/.dulus/gemini_web.json for use by gemini-web.
|
|
3023
3025
|
"""
|
|
3024
3026
|
import pathlib, json as _json, time, os, re
|
|
@@ -3038,13 +3040,19 @@ def cmd_harvest_gemini(_args: str, _state, config) -> bool:
|
|
|
3038
3040
|
# Reutiliza el perfil de Gemini para no loguear cada vez
|
|
3039
3041
|
pw_profile = os.path.join(os.path.expanduser("~"), ".dulus", "playwright", "gemini-interceptor")
|
|
3040
3042
|
os.makedirs(pw_profile, exist_ok=True)
|
|
3043
|
+
|
|
3044
|
+
# Headless por defecto para que funcione en VMs/servidores sin display.
|
|
3045
|
+
# Si Google detecta headless y bloquea, el usuario puede forzar ventana visible.
|
|
3046
|
+
headless = os.getenv("DULUS_GEMINI_HEADLESS", "1").lower() not in ("0", "false", "no", "off")
|
|
3047
|
+
if not headless:
|
|
3048
|
+
info("DULUS_GEMINI_HEADLESS=0 — using visible Chrome window.")
|
|
3041
3049
|
|
|
3042
3050
|
try:
|
|
3043
3051
|
with sync_playwright() as p:
|
|
3044
3052
|
browser = p.chromium.launch_persistent_context(
|
|
3045
3053
|
user_data_dir=pw_profile,
|
|
3046
3054
|
channel="chrome",
|
|
3047
|
-
headless=
|
|
3055
|
+
headless=headless,
|
|
3048
3056
|
ignore_default_args=["--enable-automation"],
|
|
3049
3057
|
args=[
|
|
3050
3058
|
"--no-sandbox",
|
|
@@ -3086,10 +3094,47 @@ def cmd_harvest_gemini(_args: str, _state, config) -> bool:
|
|
|
3086
3094
|
except Exception:
|
|
3087
3095
|
pass
|
|
3088
3096
|
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3097
|
+
# Auto-send "DULUS" so headless servers / VMs don't need a human in the browser.
|
|
3098
|
+
info("Sending 'DULUS' to Gemini chat (headless auto-send)...")
|
|
3099
|
+
auto_send_ok = False
|
|
3100
|
+
try:
|
|
3101
|
+
page.wait_for_timeout(2500) # deja que cargue el UI
|
|
3102
|
+
input_selectors = [
|
|
3103
|
+
'textarea[placeholder*="Ask Gemini"]',
|
|
3104
|
+
'textarea[placeholder*="ask"]',
|
|
3105
|
+
'textarea[aria-label*="Chat"]',
|
|
3106
|
+
'textarea[aria-label*="Message"]',
|
|
3107
|
+
'div[contenteditable="true"][aria-label*="Chat"]',
|
|
3108
|
+
'div[contenteditable="true"]',
|
|
3109
|
+
'[data-test-id="chat-input"]',
|
|
3110
|
+
'textarea',
|
|
3111
|
+
]
|
|
3112
|
+
chat_input = None
|
|
3113
|
+
for sel in input_selectors:
|
|
3114
|
+
try:
|
|
3115
|
+
chat_input = page.wait_for_selector(sel, timeout=4000, state="visible")
|
|
3116
|
+
if chat_input and chat_input.is_visible():
|
|
3117
|
+
break
|
|
3118
|
+
except Exception:
|
|
3119
|
+
chat_input = None
|
|
3120
|
+
if chat_input:
|
|
3121
|
+
chat_input.fill("DULUS")
|
|
3122
|
+
page.wait_for_timeout(500)
|
|
3123
|
+
chat_input.press("Enter")
|
|
3124
|
+
page.wait_for_timeout(1500)
|
|
3125
|
+
auto_send_ok = True
|
|
3126
|
+
else:
|
|
3127
|
+
warn("No se encontró el input del chat de Gemini.")
|
|
3128
|
+
except Exception as e:
|
|
3129
|
+
warn(f"Auto-send falló: {e}")
|
|
3130
|
+
|
|
3131
|
+
if not auto_send_ok and not headless:
|
|
3132
|
+
warn("🚨 ACTION REQUIRED:")
|
|
3133
|
+
warn(" 1. Make sure you are logged in to Google.")
|
|
3134
|
+
warn(' 2. Type and SEND the exact word DULUS in the Gemini chat.')
|
|
3135
|
+
|
|
3136
|
+
if not auto_send_ok and headless:
|
|
3137
|
+
warn("Waiting for any existing interception (timeout 3 min)...")
|
|
3093
3138
|
|
|
3094
3139
|
timeout_limit = 180
|
|
3095
3140
|
start_t = time.time()
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dulus"
|
|
7
|
-
version = "3.10.
|
|
7
|
+
version = "3.10.1"
|
|
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"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"""Static WebChat UI assets bundled with the Dulus Python distribution."""
|
|
1
|
+
"""Static WebChat UI assets bundled with the Dulus Python distribution."""
|