dulus 3.14.3__tar.gz → 3.14.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 (388) hide show
  1. {dulus-3.14.3/dulus.egg-info → dulus-3.14.4}/PKG-INFO +2 -1
  2. {dulus-3.14.3 → dulus-3.14.4/dulus.egg-info}/PKG-INFO +2 -1
  3. {dulus-3.14.3 → dulus-3.14.4}/dulus.egg-info/requires.txt +1 -0
  4. {dulus-3.14.3 → dulus-3.14.4}/dulus.py +21 -2
  5. {dulus-3.14.3 → dulus-3.14.4}/pyproject.toml +6 -7
  6. {dulus-3.14.3 → dulus-3.14.4}/LICENSE +0 -0
  7. {dulus-3.14.3 → dulus-3.14.4}/MANIFEST.in +0 -0
  8. {dulus-3.14.3 → dulus-3.14.4}/README.md +0 -0
  9. {dulus-3.14.3 → dulus-3.14.4}/agent.py +0 -0
  10. {dulus-3.14.3 → dulus-3.14.4}/algolia_search.py +0 -0
  11. {dulus-3.14.3 → dulus-3.14.4}/analytics.py +0 -0
  12. {dulus-3.14.3 → dulus-3.14.4}/backend/__init__.py +0 -0
  13. {dulus-3.14.3 → dulus-3.14.4}/backend/agents_bridge.py +0 -0
  14. {dulus-3.14.3 → dulus-3.14.4}/backend/compressor.py +0 -0
  15. {dulus-3.14.3 → dulus-3.14.4}/backend/context.py +0 -0
  16. {dulus-3.14.3 → dulus-3.14.4}/backend/githook.py +0 -0
  17. {dulus-3.14.3 → dulus-3.14.4}/backend/marketplace.py +0 -0
  18. {dulus-3.14.3 → dulus-3.14.4}/backend/mempalace_bridge.py +0 -0
  19. {dulus-3.14.3 → dulus-3.14.4}/backend/paths.py +0 -0
  20. {dulus-3.14.3 → dulus-3.14.4}/backend/personas.py +0 -0
  21. {dulus-3.14.3 → dulus-3.14.4}/backend/plugins.py +0 -0
  22. {dulus-3.14.3 → dulus-3.14.4}/backend/server.py +0 -0
  23. {dulus-3.14.3 → dulus-3.14.4}/backend/tasks.py +0 -0
  24. {dulus-3.14.3 → dulus-3.14.4}/banners/__init__.py +0 -0
  25. {dulus-3.14.3 → dulus-3.14.4}/banners/banner_rotator.py +0 -0
  26. {dulus-3.14.3 → dulus-3.14.4}/banners/banners_dulus_ai.txt +0 -0
  27. {dulus-3.14.3 → dulus-3.14.4}/batch_api.py +0 -0
  28. {dulus-3.14.3 → dulus-3.14.4}/checkpoint/__init__.py +0 -0
  29. {dulus-3.14.3 → dulus-3.14.4}/checkpoint/hooks.py +0 -0
  30. {dulus-3.14.3 → dulus-3.14.4}/checkpoint/store.py +0 -0
  31. {dulus-3.14.3 → dulus-3.14.4}/checkpoint/types.py +0 -0
  32. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/__init__.py +0 -0
  33. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/__main__.py +0 -0
  34. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/ansi.py +0 -0
  35. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/assets/ascii/dulus_logo.txt +0 -0
  36. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/assets/ascii/eagle.txt +0 -0
  37. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/assets/ascii/terminal_art.txt +0 -0
  38. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/banners.py +0 -0
  39. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/demo.py +0 -0
  40. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/effects.py +0 -0
  41. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/effort_slider.py +0 -0
  42. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/progress.py +0 -0
  43. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/py.typed +0 -0
  44. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/spinners.py +0 -0
  45. {dulus-3.14.3 → dulus-3.14.4}/cli_animations/status.py +0 -0
  46. {dulus-3.14.3 → dulus-3.14.4}/clipboard_utils.py +0 -0
  47. {dulus-3.14.3 → dulus-3.14.4}/cloudsave.py +0 -0
  48. {dulus-3.14.3 → dulus-3.14.4}/common.py +0 -0
  49. {dulus-3.14.3 → dulus-3.14.4}/compaction.py +0 -0
  50. {dulus-3.14.3 → dulus-3.14.4}/config.py +0 -0
  51. {dulus-3.14.3 → dulus-3.14.4}/context.py +0 -0
  52. {dulus-3.14.3 → dulus-3.14.4}/data/__init__.py +0 -0
  53. {dulus-3.14.3 → dulus-3.14.4}/data/active_persona.json +0 -0
  54. {dulus-3.14.3 → dulus-3.14.4}/data/marketplace.json +0 -0
  55. {dulus-3.14.3 → dulus-3.14.4}/data/personas.json +0 -0
  56. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/__init__.py +0 -0
  57. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/composio/__init__.py +0 -0
  58. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/composio/composio_plugin/__init__.py +0 -0
  59. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
  60. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
  61. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/composio/plugin.json +0 -0
  62. {dulus-3.14.3 → dulus-3.14.4}/data/plugins/composio/plugin_tool.py +0 -0
  63. {dulus-3.14.3 → dulus-3.14.4}/data/tasks.json +0 -0
  64. {dulus-3.14.3 → dulus-3.14.4}/display_blocks.py +0 -0
  65. {dulus-3.14.3 → dulus-3.14.4}/docs/API.md +0 -0
  66. {dulus-3.14.3 → dulus-3.14.4}/docs/BRAND_GUIDE.md +0 -0
  67. {dulus-3.14.3 → dulus-3.14.4}/docs/CHANGELOG.md +0 -0
  68. {dulus-3.14.3 → dulus-3.14.4}/docs/CONTRIBUTING.md +0 -0
  69. {dulus-3.14.3 → dulus-3.14.4}/docs/DEPLOYMENT.md +0 -0
  70. {dulus-3.14.3 → dulus-3.14.4}/docs/FAQ.md +0 -0
  71. {dulus-3.14.3 → dulus-3.14.4}/docs/GETTING_STARTED.md +0 -0
  72. {dulus-3.14.3 → dulus-3.14.4}/docs/README.md +0 -0
  73. {dulus-3.14.3 → dulus-3.14.4}/docs/README_AR.md +0 -0
  74. {dulus-3.14.3 → dulus-3.14.4}/docs/README_EN.md +0 -0
  75. {dulus-3.14.3 → dulus-3.14.4}/docs/README_ES.md +0 -0
  76. {dulus-3.14.3 → dulus-3.14.4}/docs/README_FR.md +0 -0
  77. {dulus-3.14.3 → dulus-3.14.4}/docs/README_JA.md +0 -0
  78. {dulus-3.14.3 → dulus-3.14.4}/docs/README_KO.md +0 -0
  79. {dulus-3.14.3 → dulus-3.14.4}/docs/README_PT.md +0 -0
  80. {dulus-3.14.3 → dulus-3.14.4}/docs/README_RU.md +0 -0
  81. {dulus-3.14.3 → dulus-3.14.4}/docs/README_ZH.md +0 -0
  82. {dulus-3.14.3 → dulus-3.14.4}/docs/SECURITY.md +0 -0
  83. {dulus-3.14.3 → dulus-3.14.4}/docs/__init__.py +0 -0
  84. {dulus-3.14.3 → dulus-3.14.4}/docs/api.html +0 -0
  85. {dulus-3.14.3 → dulus-3.14.4}/docs/architecture.md +0 -0
  86. {dulus-3.14.3 → dulus-3.14.4}/docs/azure-speech-template.json +0 -0
  87. {dulus-3.14.3 → dulus-3.14.4}/docs/dashboard/index.html +0 -0
  88. {dulus-3.14.3 → dulus-3.14.4}/docs/divider.svg +0 -0
  89. {dulus-3.14.3 → dulus-3.14.4}/docs/dulus-bird.png +0 -0
  90. {dulus-3.14.3 → dulus-3.14.4}/docs/generate.py +0 -0
  91. {dulus-3.14.3 → dulus-3.14.4}/docs/index.html +0 -0
  92. {dulus-3.14.3 → dulus-3.14.4}/docs/news.md +0 -0
  93. {dulus-3.14.3 → dulus-3.14.4}/docs/nvidia-models.svg +0 -0
  94. {dulus-3.14.3 → dulus-3.14.4}/docs/particle-playground.html +0 -0
  95. {dulus-3.14.3 → dulus-3.14.4}/docs/personas/index.html +0 -0
  96. {dulus-3.14.3 → dulus-3.14.4}/docs/poetry-banner.png +0 -0
  97. {dulus-3.14.3 → dulus-3.14.4}/docs/preview.html +0 -0
  98. {dulus-3.14.3 → dulus-3.14.4}/docs/python-console.md +0 -0
  99. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/auto-adapter.png +0 -0
  100. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/dulus-os.png +0 -0
  101. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/hero.png +0 -0
  102. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/lookback_two_windows.png +0 -0
  103. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/pyc_heap.svg +0 -0
  104. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/pyc_receipts.svg +0 -0
  105. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/pyc_trap.svg +0 -0
  106. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/roundtable.png +0 -0
  107. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/task-board.png +0 -0
  108. {dulus-3.14.3 → dulus-3.14.4}/docs/readme/webchat.png +0 -0
  109. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-agents.svg +0 -0
  110. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-brainstorm.svg +0 -0
  111. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-bridges.svg +0 -0
  112. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-features.svg +0 -0
  113. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-freetier.svg +0 -0
  114. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-memory.svg +0 -0
  115. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-models.svg +0 -0
  116. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-perms.svg +0 -0
  117. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-plugins.svg +0 -0
  118. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-quickstart.svg +0 -0
  119. {dulus-3.14.3 → dulus-3.14.4}/docs/sec-ssj.svg +0 -0
  120. {dulus-3.14.3 → dulus-3.14.4}/docs/spinners.svg +0 -0
  121. {dulus-3.14.3 → dulus-3.14.4}/docs/split-pane.svg +0 -0
  122. {dulus-3.14.3 → dulus-3.14.4}/docs/terminal-boot.svg +0 -0
  123. {dulus-3.14.3 → dulus-3.14.4}/docs/termux-edge.md +0 -0
  124. {dulus-3.14.3 → dulus-3.14.4}/dulus.egg-info/SOURCES.txt +0 -0
  125. {dulus-3.14.3 → dulus-3.14.4}/dulus.egg-info/dependency_links.txt +0 -0
  126. {dulus-3.14.3 → dulus-3.14.4}/dulus.egg-info/entry_points.txt +0 -0
  127. {dulus-3.14.3 → dulus-3.14.4}/dulus.egg-info/top_level.txt +0 -0
  128. {dulus-3.14.3 → dulus-3.14.4}/dulus_account.py +0 -0
  129. {dulus-3.14.3 → dulus-3.14.4}/dulus_bar_client.py +0 -0
  130. {dulus-3.14.3 → dulus-3.14.4}/dulus_gui.py +0 -0
  131. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/__init__.py +0 -0
  132. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/client.py +0 -0
  133. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/commands.py +0 -0
  134. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/config.py +0 -0
  135. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/hub.py +0 -0
  136. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/tools.py +0 -0
  137. {dulus-3.14.3 → dulus-3.14.4}/dulus_mcp/types.py +0 -0
  138. {dulus-3.14.3 → dulus-3.14.4}/dulus_quick_menu.py +0 -0
  139. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/__init__.py +0 -0
  140. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/add_dir_manager.py +0 -0
  141. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/afk_mode.py +0 -0
  142. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/approval_runtime.py +0 -0
  143. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/background_tasks.py +0 -0
  144. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/clipboard_utils.py +0 -0
  145. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/diff_visualizer.py +0 -0
  146. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/export_import.py +0 -0
  147. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/hook_engine.py +0 -0
  148. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/isolate.py +0 -0
  149. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/notification_manager.py +0 -0
  150. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/session_fork.py +0 -0
  151. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/shell_mode.py +0 -0
  152. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/todo_visualizer.py +0 -0
  153. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/tree_ls.py +0 -0
  154. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/wire_events.py +0 -0
  155. {dulus-3.14.3 → dulus-3.14.4}/dulus_tools/yolo_mode.py +0 -0
  156. {dulus-3.14.3 → dulus-3.14.4}/file_filter.py +0 -0
  157. {dulus-3.14.3 → dulus-3.14.4}/fs_compass.py +0 -0
  158. {dulus-3.14.3 → dulus-3.14.4}/governance.py +0 -0
  159. {dulus-3.14.3 → dulus-3.14.4}/gui/__init__.py +0 -0
  160. {dulus-3.14.3 → dulus-3.14.4}/gui/agent_bridge.py +0 -0
  161. {dulus-3.14.3 → dulus-3.14.4}/gui/chat_widget.py +0 -0
  162. {dulus-3.14.3 → dulus-3.14.4}/gui/main_window.py +0 -0
  163. {dulus-3.14.3 → dulus-3.14.4}/gui/personas.py +0 -0
  164. {dulus-3.14.3 → dulus-3.14.4}/gui/sandbox_server.py +0 -0
  165. {dulus-3.14.3 → dulus-3.14.4}/gui/session_utils.py +0 -0
  166. {dulus-3.14.3 → dulus-3.14.4}/gui/settings_dialog.py +0 -0
  167. {dulus-3.14.3 → dulus-3.14.4}/gui/sidebar.py +0 -0
  168. {dulus-3.14.3 → dulus-3.14.4}/gui/tasks_view.py +0 -0
  169. {dulus-3.14.3 → dulus-3.14.4}/gui/themes.py +0 -0
  170. {dulus-3.14.3 → dulus-3.14.4}/gui/tool_panel.py +0 -0
  171. {dulus-3.14.3 → dulus-3.14.4}/input.py +0 -0
  172. {dulus-3.14.3 → dulus-3.14.4}/license_manager.py +0 -0
  173. {dulus-3.14.3 → dulus-3.14.4}/lookback.py +0 -0
  174. {dulus-3.14.3 → dulus-3.14.4}/memory/__init__.py +0 -0
  175. {dulus-3.14.3 → dulus-3.14.4}/memory/audit.py +0 -0
  176. {dulus-3.14.3 → dulus-3.14.4}/memory/consolidator.py +0 -0
  177. {dulus-3.14.3 → dulus-3.14.4}/memory/context.py +0 -0
  178. {dulus-3.14.3 → dulus-3.14.4}/memory/mempalace_bridge.py +0 -0
  179. {dulus-3.14.3 → dulus-3.14.4}/memory/offload.py +0 -0
  180. {dulus-3.14.3 → dulus-3.14.4}/memory/palace.py +0 -0
  181. {dulus-3.14.3 → dulus-3.14.4}/memory/scan.py +0 -0
  182. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/adaptation_guides.md +0 -0
  183. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/askuserquestion_after_numbered_list.md +0 -0
  184. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/background_jobs_no_extra_timers.md +0 -0
  185. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/cleverness_over_resources.md +0 -0
  186. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/corporate_tls_breaks_curl_cffi.md +0 -0
  187. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/hardened_rules.md +0 -0
  188. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/investigator_workflow_heuristic.md +0 -0
  189. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/native_code_over_sketchy_plugins.md +0 -0
  190. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/no_personal_info_in_code.md +0 -0
  191. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/searches_include_modified_date.md +0 -0
  192. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/tmux_send_keys_power_patterns.md +0 -0
  193. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/token_optimization_technique.md +0 -0
  194. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/tool_chaining_capability.md +0 -0
  195. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/insights/webbridge_evaluate_first_pattern.md +0 -0
  196. {dulus-3.14.3 → dulus-3.14.4}/memory/seeds/short_memory.md +0 -0
  197. {dulus-3.14.3 → dulus-3.14.4}/memory/sessions.py +0 -0
  198. {dulus-3.14.3 → dulus-3.14.4}/memory/store.py +0 -0
  199. {dulus-3.14.3 → dulus-3.14.4}/memory/tools.py +0 -0
  200. {dulus-3.14.3 → dulus-3.14.4}/memory/types.py +0 -0
  201. {dulus-3.14.3 → dulus-3.14.4}/memory/vector_search.py +0 -0
  202. {dulus-3.14.3 → dulus-3.14.4}/model_params.py +0 -0
  203. {dulus-3.14.3 → dulus-3.14.4}/multi_agent/__init__.py +0 -0
  204. {dulus-3.14.3 → dulus-3.14.4}/multi_agent/subagent.py +0 -0
  205. {dulus-3.14.3 → dulus-3.14.4}/multi_agent/tools.py +0 -0
  206. {dulus-3.14.3 → dulus-3.14.4}/paste_placeholders.py +0 -0
  207. {dulus-3.14.3 → dulus-3.14.4}/personality_config.py +0 -0
  208. {dulus-3.14.3 → dulus-3.14.4}/plugin/__init__.py +0 -0
  209. {dulus-3.14.3 → dulus-3.14.4}/plugin/autoadapter.py +0 -0
  210. {dulus-3.14.3 → dulus-3.14.4}/plugin/loader.py +0 -0
  211. {dulus-3.14.3 → dulus-3.14.4}/plugin/recommend.py +0 -0
  212. {dulus-3.14.3 → dulus-3.14.4}/plugin/store.py +0 -0
  213. {dulus-3.14.3 → dulus-3.14.4}/plugin/types.py +0 -0
  214. {dulus-3.14.3 → dulus-3.14.4}/profiles.py +0 -0
  215. {dulus-3.14.3 → dulus-3.14.4}/providers.py +0 -0
  216. {dulus-3.14.3 → dulus-3.14.4}/pyconsole.py +0 -0
  217. {dulus-3.14.3 → dulus-3.14.4}/sandbox/README.md +0 -0
  218. {dulus-3.14.3 → dulus-3.14.4}/sandbox/__init__.py +0 -0
  219. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/assets/index-DE51D6wI.css +0 -0
  220. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/assets/index-DMCCNE9Y.js +0 -0
  221. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/index.html +0 -0
  222. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/wallpaper-default.jpg +0 -0
  223. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/wallpapers/default.jpeg +0 -0
  224. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/wallpapers/light.jpeg +0 -0
  225. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/wallpapers/nature.jpeg +0 -0
  226. {dulus-3.14.3 → dulus-3.14.4}/sandbox/dist/wallpapers/tech.jpeg +0 -0
  227. {dulus-3.14.3 → dulus-3.14.4}/sandbox/info.md +0 -0
  228. {dulus-3.14.3 → dulus-3.14.4}/sandbox_bootstrap.py +0 -0
  229. {dulus-3.14.3 → dulus-3.14.4}/setup.cfg +0 -0
  230. {dulus-3.14.3 → dulus-3.14.4}/skill/__init__.py +0 -0
  231. {dulus-3.14.3 → dulus-3.14.4}/skill/builtin.py +0 -0
  232. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/LICENSE-obsidian-skills +0 -0
  233. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/README.md +0 -0
  234. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/defuddle/SKILL.md +0 -0
  235. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/json-canvas/SKILL.md +0 -0
  236. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/json-canvas/references/EXAMPLES.md +0 -0
  237. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-bases/SKILL.md +0 -0
  238. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -0
  239. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-cli/SKILL.md +0 -0
  240. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-markdown/SKILL.md +0 -0
  241. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-markdown/references/CALLOUTS.md +0 -0
  242. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-markdown/references/EMBEDS.md +0 -0
  243. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/obsidian-markdown/references/PROPERTIES.md +0 -0
  244. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/README.md +0 -0
  245. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/SKILL.md +0 -0
  246. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/addresses.json +0 -0
  247. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/advancedbackgroundchecks.json +0 -0
  248. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/beenverified.json +0 -0
  249. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/clustal.json +0 -0
  250. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/clustrmaps.json +0 -0
  251. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/cyberbackgroundchecks.json +0 -0
  252. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/familytreenow.json +0 -0
  253. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/fastpeoplesearch.json +0 -0
  254. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/intelius.json +0 -0
  255. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/mylife.json +0 -0
  256. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/nuwber.json +0 -0
  257. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/peekyou.json +0 -0
  258. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/peoplefinders.json +0 -0
  259. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/radaris.json +0 -0
  260. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/rehold.json +0 -0
  261. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/searchpeoplefree.json +0 -0
  262. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/socialcatfish.json +0 -0
  263. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/spokeo.json +0 -0
  264. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/thatsthem.json +0 -0
  265. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/truepeoplesearch.json +0 -0
  266. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/usphonebook.json +0 -0
  267. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/brokers/whitepages.json +0 -0
  268. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/legal/ccpa.md +0 -0
  269. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/legal/drop.md +0 -0
  270. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/legal/gdpr.md +0 -0
  271. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/methods.md +0 -0
  272. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/site-playbooks.md +0 -0
  273. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/references/state-machine.md +0 -0
  274. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/autopilot.py +0 -0
  275. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/badbool.py +0 -0
  276. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/brokers.py +0 -0
  277. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/cdp.py +0 -0
  278. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/config.py +0 -0
  279. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/crypto.py +0 -0
  280. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/dossier.py +0 -0
  281. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/email_modes.py +0 -0
  282. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/emailer.py +0 -0
  283. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/ledger.py +0 -0
  284. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/legal.py +0 -0
  285. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/paths.py +0 -0
  286. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/pdd.py +0 -0
  287. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/registry.py +0 -0
  288. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/report.py +0 -0
  289. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/scan.py +0 -0
  290. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/storage.py +0 -0
  291. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/tiers.py +0 -0
  292. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/scripts/vectors.py +0 -0
  293. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/templates/consent/authorization.md +0 -0
  294. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/templates/emails/ccpa-authorized-agent.txt +0 -0
  295. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/templates/emails/ccpa-deletion.txt +0 -0
  296. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/templates/emails/ccpa-indirect-deletion.txt +0 -0
  297. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/templates/emails/gdpr-erasure.txt +0 -0
  298. {dulus-3.14.3 → dulus-3.14.4}/skill/bundled/unbroker/templates/emails/generic-optout.txt +0 -0
  299. {dulus-3.14.3 → dulus-3.14.4}/skill/clawhub.py +0 -0
  300. {dulus-3.14.3 → dulus-3.14.4}/skill/executor.py +0 -0
  301. {dulus-3.14.3 → dulus-3.14.4}/skill/loader.py +0 -0
  302. {dulus-3.14.3 → dulus-3.14.4}/skill/tools.py +0 -0
  303. {dulus-3.14.3 → dulus-3.14.4}/skills.py +0 -0
  304. {dulus-3.14.3 → dulus-3.14.4}/soul.py +0 -0
  305. {dulus-3.14.3 → dulus-3.14.4}/spinner.py +0 -0
  306. {dulus-3.14.3 → dulus-3.14.4}/steer_input.py +0 -0
  307. {dulus-3.14.3 → dulus-3.14.4}/subagent.py +0 -0
  308. {dulus-3.14.3 → dulus-3.14.4}/task/__init__.py +0 -0
  309. {dulus-3.14.3 → dulus-3.14.4}/task/store.py +0 -0
  310. {dulus-3.14.3 → dulus-3.14.4}/task/tools.py +0 -0
  311. {dulus-3.14.3 → dulus-3.14.4}/task/types.py +0 -0
  312. {dulus-3.14.3 → dulus-3.14.4}/tests/test_afk_yolo.py +0 -0
  313. {dulus-3.14.3 → dulus-3.14.4}/tests/test_approval_runtime.py +0 -0
  314. {dulus-3.14.3 → dulus-3.14.4}/tests/test_background_task_tools.py +0 -0
  315. {dulus-3.14.3 → dulus-3.14.4}/tests/test_background_tasks.py +0 -0
  316. {dulus-3.14.3 → dulus-3.14.4}/tests/test_chatgpt_oauth.py +0 -0
  317. {dulus-3.14.3 → dulus-3.14.4}/tests/test_checkpoint.py +0 -0
  318. {dulus-3.14.3 → dulus-3.14.4}/tests/test_cli_animations_integration.py +0 -0
  319. {dulus-3.14.3 → dulus-3.14.4}/tests/test_clipboard_utils.py +0 -0
  320. {dulus-3.14.3 → dulus-3.14.4}/tests/test_compaction.py +0 -0
  321. {dulus-3.14.3 → dulus-3.14.4}/tests/test_composio_tool_generator.py +0 -0
  322. {dulus-3.14.3 → dulus-3.14.4}/tests/test_diff_view.py +0 -0
  323. {dulus-3.14.3 → dulus-3.14.4}/tests/test_diff_visualization.py +0 -0
  324. {dulus-3.14.3 → dulus-3.14.4}/tests/test_display_blocks.py +0 -0
  325. {dulus-3.14.3 → dulus-3.14.4}/tests/test_dulus_account.py +0 -0
  326. {dulus-3.14.3 → dulus-3.14.4}/tests/test_export_import.py +0 -0
  327. {dulus-3.14.3 → dulus-3.14.4}/tests/test_gold_memory_preload.py +0 -0
  328. {dulus-3.14.3 → dulus-3.14.4}/tests/test_grok_usage.py +0 -0
  329. {dulus-3.14.3 → dulus-3.14.4}/tests/test_hook_engine.py +0 -0
  330. {dulus-3.14.3 → dulus-3.14.4}/tests/test_injection_fix.py +0 -0
  331. {dulus-3.14.3 → dulus-3.14.4}/tests/test_json_protocol.py +0 -0
  332. {dulus-3.14.3 → dulus-3.14.4}/tests/test_license.py +0 -0
  333. {dulus-3.14.3 → dulus-3.14.4}/tests/test_lookback_cache.py +0 -0
  334. {dulus-3.14.3 → dulus-3.14.4}/tests/test_lookback_compact.py +0 -0
  335. {dulus-3.14.3 → dulus-3.14.4}/tests/test_mcp.py +0 -0
  336. {dulus-3.14.3 → dulus-3.14.4}/tests/test_mcp_algolia.py +0 -0
  337. {dulus-3.14.3 → dulus-3.14.4}/tests/test_memory.py +0 -0
  338. {dulus-3.14.3 → dulus-3.14.4}/tests/test_memory_home_resolution.py +0 -0
  339. {dulus-3.14.3 → dulus-3.14.4}/tests/test_notification_manager.py +0 -0
  340. {dulus-3.14.3 → dulus-3.14.4}/tests/test_plugin.py +0 -0
  341. {dulus-3.14.3 → dulus-3.14.4}/tests/test_profile_isolation.py +0 -0
  342. {dulus-3.14.3 → dulus-3.14.4}/tests/test_profile_plugin_scope.py +0 -0
  343. {dulus-3.14.3 → dulus-3.14.4}/tests/test_provider_errors.py +0 -0
  344. {dulus-3.14.3 → dulus-3.14.4}/tests/test_session_fork.py +0 -0
  345. {dulus-3.14.3 → dulus-3.14.4}/tests/test_shell_detection.py +0 -0
  346. {dulus-3.14.3 → dulus-3.14.4}/tests/test_shell_mode.py +0 -0
  347. {dulus-3.14.3 → dulus-3.14.4}/tests/test_skills.py +0 -0
  348. {dulus-3.14.3 → dulus-3.14.4}/tests/test_skillssh_algolia.py +0 -0
  349. {dulus-3.14.3 → dulus-3.14.4}/tests/test_steer_input.py +0 -0
  350. {dulus-3.14.3 → dulus-3.14.4}/tests/test_subagent.py +0 -0
  351. {dulus-3.14.3 → dulus-3.14.4}/tests/test_task.py +0 -0
  352. {dulus-3.14.3 → dulus-3.14.4}/tests/test_telegram_buffer.py +0 -0
  353. {dulus-3.14.3 → dulus-3.14.4}/tests/test_think_tool.py +0 -0
  354. {dulus-3.14.3 → dulus-3.14.4}/tests/test_todo_tool.py +0 -0
  355. {dulus-3.14.3 → dulus-3.14.4}/tests/test_todo_visualization.py +0 -0
  356. {dulus-3.14.3 → dulus-3.14.4}/tests/test_tool_registry.py +0 -0
  357. {dulus-3.14.3 → dulus-3.14.4}/tests/test_tree_ls.py +0 -0
  358. {dulus-3.14.3 → dulus-3.14.4}/tests/test_voice.py +0 -0
  359. {dulus-3.14.3 → dulus-3.14.4}/tests/test_webbridge_tabs.py +0 -0
  360. {dulus-3.14.3 → dulus-3.14.4}/tests/test_wire_events.py +0 -0
  361. {dulus-3.14.3 → dulus-3.14.4}/tmux_tools.py +0 -0
  362. {dulus-3.14.3 → dulus-3.14.4}/token_budget.py +0 -0
  363. {dulus-3.14.3 → dulus-3.14.4}/tool_registry.py +0 -0
  364. {dulus-3.14.3 → dulus-3.14.4}/tools.py +0 -0
  365. {dulus-3.14.3 → dulus-3.14.4}/tools_background.py +0 -0
  366. {dulus-3.14.3 → dulus-3.14.4}/tools_think.py +0 -0
  367. {dulus-3.14.3 → dulus-3.14.4}/tools_todo.py +0 -0
  368. {dulus-3.14.3 → dulus-3.14.4}/ui/__init__.py +0 -0
  369. {dulus-3.14.3 → dulus-3.14.4}/ui/input.py +0 -0
  370. {dulus-3.14.3 → dulus-3.14.4}/ui/render.py +0 -0
  371. {dulus-3.14.3 → dulus-3.14.4}/updater.py +0 -0
  372. {dulus-3.14.3 → dulus-3.14.4}/voice/__init__.py +0 -0
  373. {dulus-3.14.3 → dulus-3.14.4}/voice/audio_utils.py +0 -0
  374. {dulus-3.14.3 → dulus-3.14.4}/voice/keyterms.py +0 -0
  375. {dulus-3.14.3 → dulus-3.14.4}/voice/recorder.py +0 -0
  376. {dulus-3.14.3 → dulus-3.14.4}/voice/stt.py +0 -0
  377. {dulus-3.14.3 → dulus-3.14.4}/voice/tts.py +0 -0
  378. {dulus-3.14.3 → dulus-3.14.4}/voice/wake_word.py +0 -0
  379. {dulus-3.14.3 → dulus-3.14.4}/webbridge/__init__.py +0 -0
  380. {dulus-3.14.3 → dulus-3.14.4}/webbridge/core.py +0 -0
  381. {dulus-3.14.3 → dulus-3.14.4}/webbridge/tools.py +0 -0
  382. {dulus-3.14.3 → dulus-3.14.4}/webchat.py +0 -0
  383. {dulus-3.14.3 → dulus-3.14.4}/webchat_server.py +0 -0
  384. {dulus-3.14.3 → dulus-3.14.4}/webchat_ui/__init__.py +0 -0
  385. {dulus-3.14.3 → dulus-3.14.4}/webchat_ui/app.js +0 -0
  386. {dulus-3.14.3 → dulus-3.14.4}/webchat_ui/index.html +0 -0
  387. {dulus-3.14.3 → dulus-3.14.4}/webchat_ui/style.css +0 -0
  388. {dulus-3.14.3 → dulus-3.14.4}/welcome.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dulus
3
- Version: 3.14.3
3
+ Version: 3.14.4
4
4
  Summary: Provider-independent agent runtime for the terminal — cloud and local models, real tools, MCP, plugins, memory, sub-agents, and Dulus OS.
5
5
  Author-email: KevRojo <dev@dulus.ai>
6
6
  Maintainer-email: KevRojo <dev@dulus.ai>
@@ -66,6 +66,7 @@ Requires-Dist: uv>=0.4.0
66
66
  Requires-Dist: sse-starlette>=2.0.0
67
67
  Requires-Dist: starlette>=0.38.0
68
68
  Requires-Dist: posthog>=3.0.0
69
+ Requires-Dist: mempalace>=3.3.4
69
70
  Requires-Dist: sounddevice
70
71
  Requires-Dist: elevenlabs>=1.0.0
71
72
  Requires-Dist: playwright>=1.40.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: dulus
3
- Version: 3.14.3
3
+ Version: 3.14.4
4
4
  Summary: Provider-independent agent runtime for the terminal — cloud and local models, real tools, MCP, plugins, memory, sub-agents, and Dulus OS.
5
5
  Author-email: KevRojo <dev@dulus.ai>
6
6
  Maintainer-email: KevRojo <dev@dulus.ai>
@@ -66,6 +66,7 @@ Requires-Dist: uv>=0.4.0
66
66
  Requires-Dist: sse-starlette>=2.0.0
67
67
  Requires-Dist: starlette>=0.38.0
68
68
  Requires-Dist: posthog>=3.0.0
69
+ Requires-Dist: mempalace>=3.3.4
69
70
  Requires-Dist: sounddevice
70
71
  Requires-Dist: elevenlabs>=1.0.0
71
72
  Requires-Dist: playwright>=1.40.0
@@ -22,6 +22,7 @@ uv>=0.4.0
22
22
  sse-starlette>=2.0.0
23
23
  starlette>=0.38.0
24
24
  posthog>=3.0.0
25
+ mempalace>=3.3.4
25
26
  sounddevice
26
27
  elevenlabs>=1.0.0
27
28
  playwright>=1.40.0
@@ -396,7 +396,7 @@ try:
396
396
  from importlib.metadata import version as _pkg_version
397
397
  VERSION = _pkg_version("dulus")
398
398
  except Exception:
399
- VERSION = "3.14.3" # dev fallback — keep in sync with pyproject.toml
399
+ VERSION = "3.14.4" # dev fallback — keep in sync with pyproject.toml
400
400
 
401
401
  # ── Machine-readable protocol output (`--output json`) ─────────────────────
402
402
  # Dulus is increasingly run as a child process by another agent runtime (an
@@ -12997,7 +12997,26 @@ def repl(config: dict, initial_prompt: str | None = None):
12997
12997
  from mempalace.searcher import search_memories as _mp_search
12998
12998
  from mempalace.config import MempalaceConfig as _MPCfg
12999
12999
  _palace = _MPCfg().palace_path
13000
- _res = _mp_search(_q, _palace, n_results=3)
13000
+ # Hard timeout guard: chromadb can hang indefinitely on a
13001
+ # large/corrupt palace or a bad backend version, and a plain
13002
+ # try/except does NOT rescue a hang — it only catches raised
13003
+ # exceptions. Run the search on a worker thread and abandon it
13004
+ # if it doesn't answer fast, so a stuck palace can never freeze
13005
+ # the whole REPL. On timeout we fall through to local memory.
13006
+ # NOTE: deliberately NOT a `with` block — the executor's
13007
+ # __exit__ calls shutdown(wait=True), which would re-block the
13008
+ # turn until the stuck worker finishes, defeating the timeout.
13009
+ import concurrent.futures as _cf
13010
+ _MP_TIMEOUT_S = float(config.get("mem_palace_timeout", 3.0))
13011
+ _mp_ex = _cf.ThreadPoolExecutor(max_workers=1)
13012
+ _fut = _mp_ex.submit(_mp_search, _q, _palace, n_results=3)
13013
+ try:
13014
+ _res = _fut.result(timeout=_MP_TIMEOUT_S)
13015
+ except _cf.TimeoutError:
13016
+ _res = None
13017
+ _mp_log(f"mempalace search timed out after {_MP_TIMEOUT_S:.1f}s → falling back to local", "yellow")
13018
+ finally:
13019
+ _mp_ex.shutdown(wait=False)
13001
13020
  for _hit in (_res or {}).get("results", []):
13002
13021
  _meta = _hit.get("metadata") or {}
13003
13022
  _src = _meta.get("source_file") or _meta.get("name") or "palace"
@@ -10,7 +10,7 @@ build-backend = "setuptools.build_meta"
10
10
 
11
11
  [project]
12
12
  name = "dulus"
13
- version = "3.14.3"
13
+ version = "3.14.4"
14
14
  description = "Provider-independent agent runtime for the terminal — cloud and local models, real tools, MCP, plugins, memory, sub-agents, and Dulus OS."
15
15
  readme = "README.md"
16
16
  requires-python = ">=3.10"
@@ -116,12 +116,11 @@ dependencies = [
116
116
  # `pip install dulus[full]`, so shipping it here is the only way metrics
117
117
  # actually reach us from real installs.
118
118
  "posthog>=3.0.0",
119
- # Memory Palace — per-turn semantic memory injection. Pulls chromadb
120
- # (26 transitive deps incl. numpy + onnxruntime). Kept OPTIONAL because the
121
- # search path can hang the whole REPL on certain mempalace/chromadb versions
122
- # and the resolver backtracks hard on exotic targets. Opt in explicitly with
123
- # `pip install dulus[memory]` (or `dulus[full]`) when you want it.
124
- # NOTE: do NOT move this back into core — it froze dulus in 3.14.2.
119
+ # Memory Palace — per-turn semantic memory injection. Shipped in core on
120
+ # purpose: it's a first-class Dulus feature (mem_palace is ON by default)
121
+ # and the chromadb wheels resolve fine on regular targets. The per-turn
122
+ # search is now guarded so a slow/stuck backend can't freeze the REPL.
123
+ "mempalace>=3.3.4",
125
124
  # Voice I/O — mic capture + cloud TTS. On by default so `/voice` works out
126
125
  # of the box; silent no-op on headless boxes with no audio device.
127
126
  "sounddevice",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes