dulus 0.2.35__tar.gz → 0.2.36__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. {dulus-0.2.35/dulus.egg-info → dulus-0.2.36}/PKG-INFO +1 -1
  2. {dulus-0.2.35 → dulus-0.2.36/dulus.egg-info}/PKG-INFO +1 -1
  3. {dulus-0.2.35 → dulus-0.2.36}/dulus.py +5 -2
  4. {dulus-0.2.35 → dulus-0.2.36}/pyproject.toml +1 -1
  5. {dulus-0.2.35 → dulus-0.2.36}/LICENSE +0 -0
  6. {dulus-0.2.35 → dulus-0.2.36}/MANIFEST.in +0 -0
  7. {dulus-0.2.35 → dulus-0.2.36}/README.md +0 -0
  8. {dulus-0.2.35 → dulus-0.2.36}/agent.py +0 -0
  9. {dulus-0.2.35 → dulus-0.2.36}/backend/__init__.py +0 -0
  10. {dulus-0.2.35 → dulus-0.2.36}/backend/compressor.py +0 -0
  11. {dulus-0.2.35 → dulus-0.2.36}/backend/context.py +0 -0
  12. {dulus-0.2.35 → dulus-0.2.36}/backend/githook.py +0 -0
  13. {dulus-0.2.35 → dulus-0.2.36}/backend/marketplace.py +0 -0
  14. {dulus-0.2.35 → dulus-0.2.36}/backend/mempalace_bridge.py +0 -0
  15. {dulus-0.2.35 → dulus-0.2.36}/backend/personas.py +0 -0
  16. {dulus-0.2.35 → dulus-0.2.36}/backend/plugins.py +0 -0
  17. {dulus-0.2.35 → dulus-0.2.36}/backend/server.py +0 -0
  18. {dulus-0.2.35 → dulus-0.2.36}/backend/tasks.py +0 -0
  19. {dulus-0.2.35 → dulus-0.2.36}/batch_api.py +0 -0
  20. {dulus-0.2.35 → dulus-0.2.36}/checkpoint/__init__.py +0 -0
  21. {dulus-0.2.35 → dulus-0.2.36}/checkpoint/hooks.py +0 -0
  22. {dulus-0.2.35 → dulus-0.2.36}/checkpoint/store.py +0 -0
  23. {dulus-0.2.35 → dulus-0.2.36}/checkpoint/types.py +0 -0
  24. {dulus-0.2.35 → dulus-0.2.36}/claude_code_watcher.py +0 -0
  25. {dulus-0.2.35 → dulus-0.2.36}/clipboard_utils.py +0 -0
  26. {dulus-0.2.35 → dulus-0.2.36}/cloudsave.py +0 -0
  27. {dulus-0.2.35 → dulus-0.2.36}/common.py +0 -0
  28. {dulus-0.2.35 → dulus-0.2.36}/compaction.py +0 -0
  29. {dulus-0.2.35 → dulus-0.2.36}/config.py +0 -0
  30. {dulus-0.2.35 → dulus-0.2.36}/context.py +0 -0
  31. {dulus-0.2.35 → dulus-0.2.36}/data/__init__.py +0 -0
  32. {dulus-0.2.35 → dulus-0.2.36}/data/active_persona.json +0 -0
  33. {dulus-0.2.35 → dulus-0.2.36}/data/context.json +0 -0
  34. {dulus-0.2.35 → dulus-0.2.36}/data/marketplace.json +0 -0
  35. {dulus-0.2.35 → dulus-0.2.36}/data/personas.json +0 -0
  36. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/__init__.py +0 -0
  37. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/composio/__init__.py +0 -0
  38. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/composio/composio_plugin/__init__.py +0 -0
  39. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
  40. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
  41. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/composio/plugin.json +0 -0
  42. {dulus-0.2.35 → dulus-0.2.36}/data/plugins/composio/plugin_tool.py +0 -0
  43. {dulus-0.2.35 → dulus-0.2.36}/data/tasks.json +0 -0
  44. {dulus-0.2.35 → dulus-0.2.36}/docs/README.md +0 -0
  45. {dulus-0.2.35 → dulus-0.2.36}/docs/__init__.py +0 -0
  46. {dulus-0.2.35 → dulus-0.2.36}/docs/api.html +0 -0
  47. {dulus-0.2.35 → dulus-0.2.36}/docs/architecture.md +0 -0
  48. {dulus-0.2.35 → dulus-0.2.36}/docs/azure-speech-template.json +0 -0
  49. {dulus-0.2.35 → dulus-0.2.36}/docs/dashboard/index.html +0 -0
  50. {dulus-0.2.35 → dulus-0.2.36}/docs/divider.svg +0 -0
  51. {dulus-0.2.35 → dulus-0.2.36}/docs/generate.py +0 -0
  52. {dulus-0.2.35 → dulus-0.2.36}/docs/hero.svg +0 -0
  53. {dulus-0.2.35 → dulus-0.2.36}/docs/index.html +0 -0
  54. {dulus-0.2.35 → dulus-0.2.36}/docs/news.md +0 -0
  55. {dulus-0.2.35 → dulus-0.2.36}/docs/nvidia-models.svg +0 -0
  56. {dulus-0.2.35 → dulus-0.2.36}/docs/particle-playground.html +0 -0
  57. {dulus-0.2.35 → dulus-0.2.36}/docs/personas/index.html +0 -0
  58. {dulus-0.2.35 → dulus-0.2.36}/docs/poetry-banner.png +0 -0
  59. {dulus-0.2.35 → dulus-0.2.36}/docs/preview.html +0 -0
  60. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-agents.svg +0 -0
  61. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-brainstorm.svg +0 -0
  62. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-bridges.svg +0 -0
  63. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-features.svg +0 -0
  64. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-freetier.svg +0 -0
  65. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-memory.svg +0 -0
  66. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-models.svg +0 -0
  67. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-perms.svg +0 -0
  68. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-plugins.svg +0 -0
  69. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-quickstart.svg +0 -0
  70. {dulus-0.2.35 → dulus-0.2.36}/docs/sec-ssj.svg +0 -0
  71. {dulus-0.2.35 → dulus-0.2.36}/docs/spinners.svg +0 -0
  72. {dulus-0.2.35 → dulus-0.2.36}/docs/split-pane.svg +0 -0
  73. {dulus-0.2.35 → dulus-0.2.36}/docs/terminal-boot.svg +0 -0
  74. {dulus-0.2.35 → dulus-0.2.36}/docs/uploads/particle-playground.html +0 -0
  75. {dulus-0.2.35 → dulus-0.2.36}/dulus.egg-info/SOURCES.txt +0 -0
  76. {dulus-0.2.35 → dulus-0.2.36}/dulus.egg-info/dependency_links.txt +0 -0
  77. {dulus-0.2.35 → dulus-0.2.36}/dulus.egg-info/entry_points.txt +0 -0
  78. {dulus-0.2.35 → dulus-0.2.36}/dulus.egg-info/requires.txt +0 -0
  79. {dulus-0.2.35 → dulus-0.2.36}/dulus.egg-info/top_level.txt +0 -0
  80. {dulus-0.2.35 → dulus-0.2.36}/dulus_gui.py +0 -0
  81. {dulus-0.2.35 → dulus-0.2.36}/dulus_mcp/__init__.py +0 -0
  82. {dulus-0.2.35 → dulus-0.2.36}/dulus_mcp/client.py +0 -0
  83. {dulus-0.2.35 → dulus-0.2.36}/dulus_mcp/config.py +0 -0
  84. {dulus-0.2.35 → dulus-0.2.36}/dulus_mcp/tools.py +0 -0
  85. {dulus-0.2.35 → dulus-0.2.36}/dulus_mcp/types.py +0 -0
  86. {dulus-0.2.35 → dulus-0.2.36}/gui/__init__.py +0 -0
  87. {dulus-0.2.35 → dulus-0.2.36}/gui/agent_bridge.py +0 -0
  88. {dulus-0.2.35 → dulus-0.2.36}/gui/chat_widget.py +0 -0
  89. {dulus-0.2.35 → dulus-0.2.36}/gui/main_window.py +0 -0
  90. {dulus-0.2.35 → dulus-0.2.36}/gui/personas.py +0 -0
  91. {dulus-0.2.35 → dulus-0.2.36}/gui/session_utils.py +0 -0
  92. {dulus-0.2.35 → dulus-0.2.36}/gui/settings_dialog.py +0 -0
  93. {dulus-0.2.35 → dulus-0.2.36}/gui/sidebar.py +0 -0
  94. {dulus-0.2.35 → dulus-0.2.36}/gui/tasks_view.py +0 -0
  95. {dulus-0.2.35 → dulus-0.2.36}/gui/themes.py +0 -0
  96. {dulus-0.2.35 → dulus-0.2.36}/gui/tool_panel.py +0 -0
  97. {dulus-0.2.35 → dulus-0.2.36}/input.py +0 -0
  98. {dulus-0.2.35 → dulus-0.2.36}/license_manager.py +0 -0
  99. {dulus-0.2.35 → dulus-0.2.36}/memory/__init__.py +0 -0
  100. {dulus-0.2.35 → dulus-0.2.36}/memory/audit.py +0 -0
  101. {dulus-0.2.35 → dulus-0.2.36}/memory/consolidator.py +0 -0
  102. {dulus-0.2.35 → dulus-0.2.36}/memory/context.py +0 -0
  103. {dulus-0.2.35 → dulus-0.2.36}/memory/offload.py +0 -0
  104. {dulus-0.2.35 → dulus-0.2.36}/memory/palace.py +0 -0
  105. {dulus-0.2.35 → dulus-0.2.36}/memory/scan.py +0 -0
  106. {dulus-0.2.35 → dulus-0.2.36}/memory/sessions.py +0 -0
  107. {dulus-0.2.35 → dulus-0.2.36}/memory/store.py +0 -0
  108. {dulus-0.2.35 → dulus-0.2.36}/memory/tools.py +0 -0
  109. {dulus-0.2.35 → dulus-0.2.36}/memory/types.py +0 -0
  110. {dulus-0.2.35 → dulus-0.2.36}/memory/vector_search.py +0 -0
  111. {dulus-0.2.35 → dulus-0.2.36}/multi_agent/__init__.py +0 -0
  112. {dulus-0.2.35 → dulus-0.2.36}/multi_agent/subagent.py +0 -0
  113. {dulus-0.2.35 → dulus-0.2.36}/multi_agent/tools.py +0 -0
  114. {dulus-0.2.35 → dulus-0.2.36}/offload_helper.py +0 -0
  115. {dulus-0.2.35 → dulus-0.2.36}/plugin/__init__.py +0 -0
  116. {dulus-0.2.35 → dulus-0.2.36}/plugin/autoadapter.py +0 -0
  117. {dulus-0.2.35 → dulus-0.2.36}/plugin/loader.py +0 -0
  118. {dulus-0.2.35 → dulus-0.2.36}/plugin/recommend.py +0 -0
  119. {dulus-0.2.35 → dulus-0.2.36}/plugin/store.py +0 -0
  120. {dulus-0.2.35 → dulus-0.2.36}/plugin/types.py +0 -0
  121. {dulus-0.2.35 → dulus-0.2.36}/providers.py +0 -0
  122. {dulus-0.2.35 → dulus-0.2.36}/setup.cfg +0 -0
  123. {dulus-0.2.35 → dulus-0.2.36}/skill/__init__.py +0 -0
  124. {dulus-0.2.35 → dulus-0.2.36}/skill/builtin.py +0 -0
  125. {dulus-0.2.35 → dulus-0.2.36}/skill/clawhub.py +0 -0
  126. {dulus-0.2.35 → dulus-0.2.36}/skill/executor.py +0 -0
  127. {dulus-0.2.35 → dulus-0.2.36}/skill/loader.py +0 -0
  128. {dulus-0.2.35 → dulus-0.2.36}/skill/tools.py +0 -0
  129. {dulus-0.2.35 → dulus-0.2.36}/skills.py +0 -0
  130. {dulus-0.2.35 → dulus-0.2.36}/spinner.py +0 -0
  131. {dulus-0.2.35 → dulus-0.2.36}/string_utils.py +0 -0
  132. {dulus-0.2.35 → dulus-0.2.36}/subagent.py +0 -0
  133. {dulus-0.2.35 → dulus-0.2.36}/task/__init__.py +0 -0
  134. {dulus-0.2.35 → dulus-0.2.36}/task/store.py +0 -0
  135. {dulus-0.2.35 → dulus-0.2.36}/task/tools.py +0 -0
  136. {dulus-0.2.35 → dulus-0.2.36}/task/types.py +0 -0
  137. {dulus-0.2.35 → dulus-0.2.36}/tests/test_checkpoint.py +0 -0
  138. {dulus-0.2.35 → dulus-0.2.36}/tests/test_compaction.py +0 -0
  139. {dulus-0.2.35 → dulus-0.2.36}/tests/test_diff_view.py +0 -0
  140. {dulus-0.2.35 → dulus-0.2.36}/tests/test_injection_fix.py +0 -0
  141. {dulus-0.2.35 → dulus-0.2.36}/tests/test_license.py +0 -0
  142. {dulus-0.2.35 → dulus-0.2.36}/tests/test_mcp.py +0 -0
  143. {dulus-0.2.35 → dulus-0.2.36}/tests/test_memory.py +0 -0
  144. {dulus-0.2.35 → dulus-0.2.36}/tests/test_plugin.py +0 -0
  145. {dulus-0.2.35 → dulus-0.2.36}/tests/test_skills.py +0 -0
  146. {dulus-0.2.35 → dulus-0.2.36}/tests/test_subagent.py +0 -0
  147. {dulus-0.2.35 → dulus-0.2.36}/tests/test_task.py +0 -0
  148. {dulus-0.2.35 → dulus-0.2.36}/tests/test_telegram_buffer.py +0 -0
  149. {dulus-0.2.35 → dulus-0.2.36}/tests/test_tool_registry.py +0 -0
  150. {dulus-0.2.35 → dulus-0.2.36}/tests/test_voice.py +0 -0
  151. {dulus-0.2.35 → dulus-0.2.36}/tmux_offloader.py +0 -0
  152. {dulus-0.2.35 → dulus-0.2.36}/tmux_tools.py +0 -0
  153. {dulus-0.2.35 → dulus-0.2.36}/tool_registry.py +0 -0
  154. {dulus-0.2.35 → dulus-0.2.36}/tools.py +0 -0
  155. {dulus-0.2.35 → dulus-0.2.36}/ui/__init__.py +0 -0
  156. {dulus-0.2.35 → dulus-0.2.36}/ui/input.py +0 -0
  157. {dulus-0.2.35 → dulus-0.2.36}/ui/render.py +0 -0
  158. {dulus-0.2.35 → dulus-0.2.36}/voice/__init__.py +0 -0
  159. {dulus-0.2.35 → dulus-0.2.36}/voice/keyterms.py +0 -0
  160. {dulus-0.2.35 → dulus-0.2.36}/voice/recorder.py +0 -0
  161. {dulus-0.2.35 → dulus-0.2.36}/voice/stt.py +0 -0
  162. {dulus-0.2.35 → dulus-0.2.36}/voice/tts.py +0 -0
  163. {dulus-0.2.35 → dulus-0.2.36}/webchat.py +0 -0
  164. {dulus-0.2.35 → dulus-0.2.36}/webchat_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.35
3
+ Version: 0.2.36
4
4
  Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
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: 0.2.35
3
+ Version: 0.2.36
4
4
  Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
5
5
  Author: KevRojo
6
6
  License: GPL-3.0
@@ -238,7 +238,7 @@ try:
238
238
  from importlib.metadata import version as _pkg_version
239
239
  VERSION = _pkg_version("dulus")
240
240
  except Exception:
241
- VERSION = "0.2.30" # dev fallback — keep in sync with pyproject.toml
241
+ VERSION = "0.2.36" # dev fallback — keep in sync with pyproject.toml
242
242
 
243
243
  # ── ANSI helpers (used even with rich for non-markdown output) ─────────────
244
244
  from common import C, clr, info, ok, warn, err, stream_thinking, print_tool_start, print_tool_end, sanitize_text
@@ -7674,7 +7674,10 @@ def setup_readline(history_file: Path):
7674
7674
  sys.stdout.write(f" {m}\n")
7675
7675
  sys.stdout.flush()
7676
7676
 
7677
- readline.set_completion_display_matches_hook(display_matches)
7677
+ try:
7678
+ readline.set_completion_display_matches_hook(display_matches)
7679
+ except AttributeError:
7680
+ pass # pyreadline3 on Windows doesn't support this hook
7678
7681
  readline.set_completer(completer)
7679
7682
  # Autosuggestion-feel: first Tab shows full match list (no beep), case-insensitive,
7680
7683
  # coloured prefix, and "/" anywhere triggers an implicit completion hint on Tab.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dulus"
7
- version = "0.2.35"
7
+ version = "0.2.36"
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"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes