dulus 0.2.3__tar.gz → 0.2.4__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 (156) hide show
  1. {dulus-0.2.3/dulus.egg-info → dulus-0.2.4}/PKG-INFO +1 -1
  2. {dulus-0.2.3 → dulus-0.2.4}/claude_code_watcher.py +2 -1
  3. {dulus-0.2.3 → dulus-0.2.4/dulus.egg-info}/PKG-INFO +1 -1
  4. {dulus-0.2.3 → dulus-0.2.4}/providers.py +3 -2
  5. {dulus-0.2.3 → dulus-0.2.4}/pyproject.toml +1 -1
  6. {dulus-0.2.3 → dulus-0.2.4}/LICENSE +0 -0
  7. {dulus-0.2.3 → dulus-0.2.4}/MANIFEST.in +0 -0
  8. {dulus-0.2.3 → dulus-0.2.4}/README.md +0 -0
  9. {dulus-0.2.3 → dulus-0.2.4}/agent.py +0 -0
  10. {dulus-0.2.3 → dulus-0.2.4}/backend/__init__.py +0 -0
  11. {dulus-0.2.3 → dulus-0.2.4}/backend/compressor.py +0 -0
  12. {dulus-0.2.3 → dulus-0.2.4}/backend/context.py +0 -0
  13. {dulus-0.2.3 → dulus-0.2.4}/backend/githook.py +0 -0
  14. {dulus-0.2.3 → dulus-0.2.4}/backend/marketplace.py +0 -0
  15. {dulus-0.2.3 → dulus-0.2.4}/backend/mempalace_bridge.py +0 -0
  16. {dulus-0.2.3 → dulus-0.2.4}/backend/personas.py +0 -0
  17. {dulus-0.2.3 → dulus-0.2.4}/backend/plugins.py +0 -0
  18. {dulus-0.2.3 → dulus-0.2.4}/backend/server.py +0 -0
  19. {dulus-0.2.3 → dulus-0.2.4}/backend/tasks.py +0 -0
  20. {dulus-0.2.3 → dulus-0.2.4}/batch_api.py +0 -0
  21. {dulus-0.2.3 → dulus-0.2.4}/checkpoint/__init__.py +0 -0
  22. {dulus-0.2.3 → dulus-0.2.4}/checkpoint/hooks.py +0 -0
  23. {dulus-0.2.3 → dulus-0.2.4}/checkpoint/store.py +0 -0
  24. {dulus-0.2.3 → dulus-0.2.4}/checkpoint/types.py +0 -0
  25. {dulus-0.2.3 → dulus-0.2.4}/clipboard_utils.py +0 -0
  26. {dulus-0.2.3 → dulus-0.2.4}/cloudsave.py +0 -0
  27. {dulus-0.2.3 → dulus-0.2.4}/common.py +0 -0
  28. {dulus-0.2.3 → dulus-0.2.4}/compaction.py +0 -0
  29. {dulus-0.2.3 → dulus-0.2.4}/config.py +0 -0
  30. {dulus-0.2.3 → dulus-0.2.4}/context.py +0 -0
  31. {dulus-0.2.3 → dulus-0.2.4}/data/__init__.py +0 -0
  32. {dulus-0.2.3 → dulus-0.2.4}/data/active_persona.json +0 -0
  33. {dulus-0.2.3 → dulus-0.2.4}/data/context.json +0 -0
  34. {dulus-0.2.3 → dulus-0.2.4}/data/marketplace.json +0 -0
  35. {dulus-0.2.3 → dulus-0.2.4}/data/personas.json +0 -0
  36. {dulus-0.2.3 → dulus-0.2.4}/data/tasks.json +0 -0
  37. {dulus-0.2.3 → dulus-0.2.4}/docs/README.md +0 -0
  38. {dulus-0.2.3 → dulus-0.2.4}/docs/__init__.py +0 -0
  39. {dulus-0.2.3 → dulus-0.2.4}/docs/api.html +0 -0
  40. {dulus-0.2.3 → dulus-0.2.4}/docs/architecture.md +0 -0
  41. {dulus-0.2.3 → dulus-0.2.4}/docs/azure-speech-template.json +0 -0
  42. {dulus-0.2.3 → dulus-0.2.4}/docs/dashboard/index.html +0 -0
  43. {dulus-0.2.3 → dulus-0.2.4}/docs/divider.svg +0 -0
  44. {dulus-0.2.3 → dulus-0.2.4}/docs/generate.py +0 -0
  45. {dulus-0.2.3 → dulus-0.2.4}/docs/hero.svg +0 -0
  46. {dulus-0.2.3 → dulus-0.2.4}/docs/index.html +0 -0
  47. {dulus-0.2.3 → dulus-0.2.4}/docs/news.md +0 -0
  48. {dulus-0.2.3 → dulus-0.2.4}/docs/nvidia-models.svg +0 -0
  49. {dulus-0.2.3 → dulus-0.2.4}/docs/particle-playground.html +0 -0
  50. {dulus-0.2.3 → dulus-0.2.4}/docs/personas/index.html +0 -0
  51. {dulus-0.2.3 → dulus-0.2.4}/docs/preview.html +0 -0
  52. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-agents.svg +0 -0
  53. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-brainstorm.svg +0 -0
  54. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-bridges.svg +0 -0
  55. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-features.svg +0 -0
  56. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-freetier.svg +0 -0
  57. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-memory.svg +0 -0
  58. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-models.svg +0 -0
  59. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-perms.svg +0 -0
  60. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-plugins.svg +0 -0
  61. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-quickstart.svg +0 -0
  62. {dulus-0.2.3 → dulus-0.2.4}/docs/sec-ssj.svg +0 -0
  63. {dulus-0.2.3 → dulus-0.2.4}/docs/spinners.svg +0 -0
  64. {dulus-0.2.3 → dulus-0.2.4}/docs/split-pane.svg +0 -0
  65. {dulus-0.2.3 → dulus-0.2.4}/docs/terminal-boot.svg +0 -0
  66. {dulus-0.2.3 → dulus-0.2.4}/docs/uploads/particle-playground.html +0 -0
  67. {dulus-0.2.3 → dulus-0.2.4}/dulus.egg-info/SOURCES.txt +0 -0
  68. {dulus-0.2.3 → dulus-0.2.4}/dulus.egg-info/dependency_links.txt +0 -0
  69. {dulus-0.2.3 → dulus-0.2.4}/dulus.egg-info/entry_points.txt +0 -0
  70. {dulus-0.2.3 → dulus-0.2.4}/dulus.egg-info/requires.txt +0 -0
  71. {dulus-0.2.3 → dulus-0.2.4}/dulus.egg-info/top_level.txt +0 -0
  72. {dulus-0.2.3 → dulus-0.2.4}/dulus.py +0 -0
  73. {dulus-0.2.3 → dulus-0.2.4}/dulus_gui.py +0 -0
  74. {dulus-0.2.3 → dulus-0.2.4}/dulus_mcp/__init__.py +0 -0
  75. {dulus-0.2.3 → dulus-0.2.4}/dulus_mcp/client.py +0 -0
  76. {dulus-0.2.3 → dulus-0.2.4}/dulus_mcp/config.py +0 -0
  77. {dulus-0.2.3 → dulus-0.2.4}/dulus_mcp/tools.py +0 -0
  78. {dulus-0.2.3 → dulus-0.2.4}/dulus_mcp/types.py +0 -0
  79. {dulus-0.2.3 → dulus-0.2.4}/gui/__init__.py +0 -0
  80. {dulus-0.2.3 → dulus-0.2.4}/gui/agent_bridge.py +0 -0
  81. {dulus-0.2.3 → dulus-0.2.4}/gui/chat_widget.py +0 -0
  82. {dulus-0.2.3 → dulus-0.2.4}/gui/main_window.py +0 -0
  83. {dulus-0.2.3 → dulus-0.2.4}/gui/personas.py +0 -0
  84. {dulus-0.2.3 → dulus-0.2.4}/gui/session_utils.py +0 -0
  85. {dulus-0.2.3 → dulus-0.2.4}/gui/settings_dialog.py +0 -0
  86. {dulus-0.2.3 → dulus-0.2.4}/gui/sidebar.py +0 -0
  87. {dulus-0.2.3 → dulus-0.2.4}/gui/tasks_view.py +0 -0
  88. {dulus-0.2.3 → dulus-0.2.4}/gui/themes.py +0 -0
  89. {dulus-0.2.3 → dulus-0.2.4}/gui/tool_panel.py +0 -0
  90. {dulus-0.2.3 → dulus-0.2.4}/input.py +0 -0
  91. {dulus-0.2.3 → dulus-0.2.4}/license_manager.py +0 -0
  92. {dulus-0.2.3 → dulus-0.2.4}/memory/__init__.py +0 -0
  93. {dulus-0.2.3 → dulus-0.2.4}/memory/audit.py +0 -0
  94. {dulus-0.2.3 → dulus-0.2.4}/memory/consolidator.py +0 -0
  95. {dulus-0.2.3 → dulus-0.2.4}/memory/context.py +0 -0
  96. {dulus-0.2.3 → dulus-0.2.4}/memory/offload.py +0 -0
  97. {dulus-0.2.3 → dulus-0.2.4}/memory/palace.py +0 -0
  98. {dulus-0.2.3 → dulus-0.2.4}/memory/scan.py +0 -0
  99. {dulus-0.2.3 → dulus-0.2.4}/memory/sessions.py +0 -0
  100. {dulus-0.2.3 → dulus-0.2.4}/memory/store.py +0 -0
  101. {dulus-0.2.3 → dulus-0.2.4}/memory/tools.py +0 -0
  102. {dulus-0.2.3 → dulus-0.2.4}/memory/types.py +0 -0
  103. {dulus-0.2.3 → dulus-0.2.4}/memory/vector_search.py +0 -0
  104. {dulus-0.2.3 → dulus-0.2.4}/multi_agent/__init__.py +0 -0
  105. {dulus-0.2.3 → dulus-0.2.4}/multi_agent/subagent.py +0 -0
  106. {dulus-0.2.3 → dulus-0.2.4}/multi_agent/tools.py +0 -0
  107. {dulus-0.2.3 → dulus-0.2.4}/offload_helper.py +0 -0
  108. {dulus-0.2.3 → dulus-0.2.4}/plugin/__init__.py +0 -0
  109. {dulus-0.2.3 → dulus-0.2.4}/plugin/autoadapter.py +0 -0
  110. {dulus-0.2.3 → dulus-0.2.4}/plugin/loader.py +0 -0
  111. {dulus-0.2.3 → dulus-0.2.4}/plugin/recommend.py +0 -0
  112. {dulus-0.2.3 → dulus-0.2.4}/plugin/store.py +0 -0
  113. {dulus-0.2.3 → dulus-0.2.4}/plugin/types.py +0 -0
  114. {dulus-0.2.3 → dulus-0.2.4}/setup.cfg +0 -0
  115. {dulus-0.2.3 → dulus-0.2.4}/skill/__init__.py +0 -0
  116. {dulus-0.2.3 → dulus-0.2.4}/skill/builtin.py +0 -0
  117. {dulus-0.2.3 → dulus-0.2.4}/skill/clawhub.py +0 -0
  118. {dulus-0.2.3 → dulus-0.2.4}/skill/executor.py +0 -0
  119. {dulus-0.2.3 → dulus-0.2.4}/skill/loader.py +0 -0
  120. {dulus-0.2.3 → dulus-0.2.4}/skill/tools.py +0 -0
  121. {dulus-0.2.3 → dulus-0.2.4}/skills.py +0 -0
  122. {dulus-0.2.3 → dulus-0.2.4}/spinner.py +0 -0
  123. {dulus-0.2.3 → dulus-0.2.4}/string_utils.py +0 -0
  124. {dulus-0.2.3 → dulus-0.2.4}/subagent.py +0 -0
  125. {dulus-0.2.3 → dulus-0.2.4}/task/__init__.py +0 -0
  126. {dulus-0.2.3 → dulus-0.2.4}/task/store.py +0 -0
  127. {dulus-0.2.3 → dulus-0.2.4}/task/tools.py +0 -0
  128. {dulus-0.2.3 → dulus-0.2.4}/task/types.py +0 -0
  129. {dulus-0.2.3 → dulus-0.2.4}/tests/test_checkpoint.py +0 -0
  130. {dulus-0.2.3 → dulus-0.2.4}/tests/test_compaction.py +0 -0
  131. {dulus-0.2.3 → dulus-0.2.4}/tests/test_diff_view.py +0 -0
  132. {dulus-0.2.3 → dulus-0.2.4}/tests/test_injection_fix.py +0 -0
  133. {dulus-0.2.3 → dulus-0.2.4}/tests/test_license.py +0 -0
  134. {dulus-0.2.3 → dulus-0.2.4}/tests/test_mcp.py +0 -0
  135. {dulus-0.2.3 → dulus-0.2.4}/tests/test_memory.py +0 -0
  136. {dulus-0.2.3 → dulus-0.2.4}/tests/test_plugin.py +0 -0
  137. {dulus-0.2.3 → dulus-0.2.4}/tests/test_skills.py +0 -0
  138. {dulus-0.2.3 → dulus-0.2.4}/tests/test_subagent.py +0 -0
  139. {dulus-0.2.3 → dulus-0.2.4}/tests/test_task.py +0 -0
  140. {dulus-0.2.3 → dulus-0.2.4}/tests/test_telegram_buffer.py +0 -0
  141. {dulus-0.2.3 → dulus-0.2.4}/tests/test_tool_registry.py +0 -0
  142. {dulus-0.2.3 → dulus-0.2.4}/tests/test_voice.py +0 -0
  143. {dulus-0.2.3 → dulus-0.2.4}/tmux_offloader.py +0 -0
  144. {dulus-0.2.3 → dulus-0.2.4}/tmux_tools.py +0 -0
  145. {dulus-0.2.3 → dulus-0.2.4}/tool_registry.py +0 -0
  146. {dulus-0.2.3 → dulus-0.2.4}/tools.py +0 -0
  147. {dulus-0.2.3 → dulus-0.2.4}/ui/__init__.py +0 -0
  148. {dulus-0.2.3 → dulus-0.2.4}/ui/input.py +0 -0
  149. {dulus-0.2.3 → dulus-0.2.4}/ui/render.py +0 -0
  150. {dulus-0.2.3 → dulus-0.2.4}/voice/__init__.py +0 -0
  151. {dulus-0.2.3 → dulus-0.2.4}/voice/keyterms.py +0 -0
  152. {dulus-0.2.3 → dulus-0.2.4}/voice/recorder.py +0 -0
  153. {dulus-0.2.3 → dulus-0.2.4}/voice/stt.py +0 -0
  154. {dulus-0.2.3 → dulus-0.2.4}/voice/tts.py +0 -0
  155. {dulus-0.2.3 → dulus-0.2.4}/webchat.py +0 -0
  156. {dulus-0.2.3 → dulus-0.2.4}/webchat_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.3
3
+ Version: 0.2.4
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: MIT
@@ -23,7 +23,8 @@ import argparse
23
23
  from pathlib import Path
24
24
 
25
25
 
26
- SESSION_DIR = Path.home() / ".claude" / "projects" / "C--Users-Admin-Desktop-DULUSV2"
26
+ _CWD_SLUG = str(Path.cwd()).replace(":", "-").replace("\\", "-").replace("/", "-")
27
+ SESSION_DIR = Path.home() / ".claude" / "projects" / _CWD_SLUG
27
28
 
28
29
  # How long to wait (seconds) with no new assistant entries before flushing
29
30
  # the accumulated turn as complete.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.3
3
+ Version: 0.2.4
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: MIT
@@ -1065,7 +1065,8 @@ def stream_claude_code(
1065
1065
  import subprocess as _sp
1066
1066
  from pathlib import Path as _Path
1067
1067
 
1068
- _session_dir = _Path.home() / ".claude" / "projects" / "C--Users-Admin-Desktop-DULUSV2"
1068
+ _cwd_slug = str(_Path.cwd()).replace(":", "-").replace("\\", "-").replace("/", "-")
1069
+ _session_dir = _Path.home() / ".claude" / "projects" / _cwd_slug
1069
1070
  _jsonl_files = sorted(_session_dir.glob("*.jsonl"), key=lambda f: f.stat().st_mtime, reverse=True)
1070
1071
  _jsonl_path = _jsonl_files[0] if _jsonl_files else None
1071
1072
 
@@ -1125,7 +1126,7 @@ def stream_claude_code(
1125
1126
 
1126
1127
  # ── Poll JSONL for new assistant entry ────────────────────────────────────
1127
1128
  if not _jsonl_path:
1128
- msg = "[claude-code] No JSONL session file found in ~/.claude/projects/C--Users-Admin-Desktop-DULUSV2"
1129
+ msg = f"[claude-code] No JSONL session file found in {_session_dir}"
1129
1130
  yield TextChunk(msg)
1130
1131
  yield AssistantTurn(msg, [], 0, 0, error=True)
1131
1132
  return
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dulus"
7
- version = "0.2.3"
7
+ version = "0.2.4"
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
File without changes
File without changes