dulus 0.2.47__tar.gz → 0.2.49__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 (361) hide show
  1. {dulus-0.2.47/dulus.egg-info → dulus-0.2.49}/PKG-INFO +1 -1
  2. {dulus-0.2.47 → dulus-0.2.49}/backend/server.py +75 -3
  3. dulus-0.2.49/data/context.json +222 -0
  4. {dulus-0.2.47 → dulus-0.2.49/dulus.egg-info}/PKG-INFO +1 -1
  5. dulus-0.2.49/dulus.egg-info/SOURCES.txt +357 -0
  6. {dulus-0.2.47 → dulus-0.2.49}/pyproject.toml +2 -4
  7. dulus-0.2.47/sandbox/dist/assets/index-nQkFq-oq.js → dulus-0.2.49/sandbox/dist/assets/index-BQlB1Z_S.js +46 -46
  8. {dulus-0.2.47 → dulus-0.2.49}/sandbox/dist/index.html +1 -1
  9. dulus-0.2.49/sandbox/public/wallpapers/default.jpeg +0 -0
  10. dulus-0.2.49/sandbox/public/wallpapers/light.jpeg +0 -0
  11. dulus-0.2.49/sandbox/public/wallpapers/nature.jpeg +0 -0
  12. dulus-0.2.49/sandbox/public/wallpapers/tech.jpeg +0 -0
  13. dulus-0.2.49/sandbox/src/App.tsx +241 -0
  14. dulus-0.2.49/sandbox/src/apps/AgentMonitor.tsx +249 -0
  15. dulus-0.2.49/sandbox/src/apps/ApiTester.tsx +479 -0
  16. dulus-0.2.49/sandbox/src/apps/AppRouter.tsx +197 -0
  17. dulus-0.2.49/sandbox/src/apps/ArchiveManager.tsx +360 -0
  18. dulus-0.2.49/sandbox/src/apps/AsciiArt.tsx +393 -0
  19. dulus-0.2.49/sandbox/src/apps/Base64Tool.tsx +364 -0
  20. dulus-0.2.49/sandbox/src/apps/Browser.tsx +568 -0
  21. dulus-0.2.49/sandbox/src/apps/Calculator.tsx +358 -0
  22. dulus-0.2.49/sandbox/src/apps/Calendar.tsx +562 -0
  23. dulus-0.2.49/sandbox/src/apps/Chat.tsx +313 -0
  24. dulus-0.2.49/sandbox/src/apps/Chess.tsx +570 -0
  25. dulus-0.2.49/sandbox/src/apps/Clock.tsx +565 -0
  26. dulus-0.2.49/sandbox/src/apps/CodeEditor.tsx +467 -0
  27. dulus-0.2.49/sandbox/src/apps/ColorPalette.tsx +386 -0
  28. dulus-0.2.49/sandbox/src/apps/ColorPicker.tsx +359 -0
  29. dulus-0.2.49/sandbox/src/apps/Contacts.tsx +238 -0
  30. dulus-0.2.49/sandbox/src/apps/DocumentViewer.tsx +275 -0
  31. dulus-0.2.49/sandbox/src/apps/Drawing.tsx +413 -0
  32. dulus-0.2.49/sandbox/src/apps/Email.tsx +464 -0
  33. dulus-0.2.49/sandbox/src/apps/FileManager.tsx +413 -0
  34. dulus-0.2.49/sandbox/src/apps/FlappyBird.tsx +297 -0
  35. dulus-0.2.49/sandbox/src/apps/FtpClient.tsx +255 -0
  36. dulus-0.2.49/sandbox/src/apps/Game2048.tsx +280 -0
  37. dulus-0.2.49/sandbox/src/apps/GitClient.tsx +378 -0
  38. dulus-0.2.49/sandbox/src/apps/ImageGallery.tsx +276 -0
  39. dulus-0.2.49/sandbox/src/apps/ImageViewer.tsx +272 -0
  40. dulus-0.2.49/sandbox/src/apps/JsonFormatter.tsx +402 -0
  41. dulus-0.2.49/sandbox/src/apps/MarkdownPreview.tsx +293 -0
  42. dulus-0.2.49/sandbox/src/apps/MatrixRain.tsx +253 -0
  43. dulus-0.2.49/sandbox/src/apps/MediaConverter.tsx +253 -0
  44. dulus-0.2.49/sandbox/src/apps/Memory.tsx +269 -0
  45. dulus-0.2.49/sandbox/src/apps/MemoryManager.tsx +248 -0
  46. dulus-0.2.49/sandbox/src/apps/Minesweeper.tsx +346 -0
  47. dulus-0.2.49/sandbox/src/apps/MusicPlayer.tsx +306 -0
  48. dulus-0.2.49/sandbox/src/apps/NetworkTools.tsx +321 -0
  49. dulus-0.2.49/sandbox/src/apps/Notes.tsx +420 -0
  50. dulus-0.2.49/sandbox/src/apps/PasswordManager.tsx +212 -0
  51. dulus-0.2.49/sandbox/src/apps/PhotoEditor.tsx +342 -0
  52. dulus-0.2.49/sandbox/src/apps/Pong.tsx +349 -0
  53. dulus-0.2.49/sandbox/src/apps/RegexTester.tsx +432 -0
  54. dulus-0.2.49/sandbox/src/apps/Reminders.tsx +228 -0
  55. dulus-0.2.49/sandbox/src/apps/RssReader.tsx +245 -0
  56. dulus-0.2.49/sandbox/src/apps/ScreenRecorder.tsx +416 -0
  57. dulus-0.2.49/sandbox/src/apps/Settings.tsx +474 -0
  58. dulus-0.2.49/sandbox/src/apps/SkillsLauncher.tsx +316 -0
  59. dulus-0.2.49/sandbox/src/apps/Snake.tsx +274 -0
  60. dulus-0.2.49/sandbox/src/apps/Solitaire.tsx +445 -0
  61. dulus-0.2.49/sandbox/src/apps/Spreadsheet.tsx +441 -0
  62. dulus-0.2.49/sandbox/src/apps/Sudoku.tsx +386 -0
  63. dulus-0.2.49/sandbox/src/apps/SystemMonitor.tsx +360 -0
  64. dulus-0.2.49/sandbox/src/apps/TaskManager.tsx +392 -0
  65. dulus-0.2.49/sandbox/src/apps/Terminal.tsx +619 -0
  66. dulus-0.2.49/sandbox/src/apps/Tetris.tsx +441 -0
  67. dulus-0.2.49/sandbox/src/apps/TextEditor.tsx +446 -0
  68. dulus-0.2.49/sandbox/src/apps/TicTacToe.tsx +254 -0
  69. dulus-0.2.49/sandbox/src/apps/Todo.tsx +394 -0
  70. dulus-0.2.49/sandbox/src/apps/VideoPlayer.tsx +297 -0
  71. dulus-0.2.49/sandbox/src/apps/VoiceRecorder.tsx +382 -0
  72. dulus-0.2.49/sandbox/src/apps/Weather.tsx +462 -0
  73. dulus-0.2.49/sandbox/src/apps/Whiteboard.tsx +338 -0
  74. dulus-0.2.49/sandbox/src/apps/registry.ts +564 -0
  75. dulus-0.2.49/sandbox/src/components/AppContainer.tsx +26 -0
  76. dulus-0.2.49/sandbox/src/components/AppLauncher.tsx +241 -0
  77. dulus-0.2.49/sandbox/src/components/BootSequence.tsx +236 -0
  78. dulus-0.2.49/sandbox/src/components/ContextMenu.tsx +251 -0
  79. dulus-0.2.49/sandbox/src/components/Desktop.tsx +186 -0
  80. dulus-0.2.49/sandbox/src/components/Dock.tsx +199 -0
  81. dulus-0.2.49/sandbox/src/components/LoginScreen.tsx +302 -0
  82. dulus-0.2.49/sandbox/src/components/NotImplemented.tsx +55 -0
  83. dulus-0.2.49/sandbox/src/components/NotificationCenter.tsx +181 -0
  84. dulus-0.2.49/sandbox/src/components/NotificationSystem.tsx +136 -0
  85. dulus-0.2.49/sandbox/src/components/TopPanel.tsx +334 -0
  86. dulus-0.2.49/sandbox/src/components/WindowFrame.tsx +401 -0
  87. dulus-0.2.49/sandbox/src/components/WindowManager.tsx +25 -0
  88. dulus-0.2.49/sandbox/src/components/ui/accordion.tsx +64 -0
  89. dulus-0.2.49/sandbox/src/components/ui/alert-dialog.tsx +155 -0
  90. dulus-0.2.49/sandbox/src/components/ui/alert.tsx +66 -0
  91. dulus-0.2.49/sandbox/src/components/ui/aspect-ratio.tsx +11 -0
  92. dulus-0.2.49/sandbox/src/components/ui/avatar.tsx +51 -0
  93. dulus-0.2.49/sandbox/src/components/ui/badge.tsx +46 -0
  94. dulus-0.2.49/sandbox/src/components/ui/breadcrumb.tsx +109 -0
  95. dulus-0.2.49/sandbox/src/components/ui/button-group.tsx +83 -0
  96. dulus-0.2.49/sandbox/src/components/ui/button.tsx +62 -0
  97. dulus-0.2.49/sandbox/src/components/ui/calendar.tsx +220 -0
  98. dulus-0.2.49/sandbox/src/components/ui/card.tsx +92 -0
  99. dulus-0.2.49/sandbox/src/components/ui/carousel.tsx +239 -0
  100. dulus-0.2.49/sandbox/src/components/ui/chart.tsx +357 -0
  101. dulus-0.2.49/sandbox/src/components/ui/checkbox.tsx +32 -0
  102. dulus-0.2.49/sandbox/src/components/ui/collapsible.tsx +31 -0
  103. dulus-0.2.49/sandbox/src/components/ui/command.tsx +182 -0
  104. dulus-0.2.49/sandbox/src/components/ui/context-menu.tsx +252 -0
  105. dulus-0.2.49/sandbox/src/components/ui/dialog.tsx +141 -0
  106. dulus-0.2.49/sandbox/src/components/ui/drawer.tsx +135 -0
  107. dulus-0.2.49/sandbox/src/components/ui/dropdown-menu.tsx +255 -0
  108. dulus-0.2.49/sandbox/src/components/ui/empty.tsx +104 -0
  109. dulus-0.2.49/sandbox/src/components/ui/field.tsx +246 -0
  110. dulus-0.2.49/sandbox/src/components/ui/form.tsx +167 -0
  111. dulus-0.2.49/sandbox/src/components/ui/hover-card.tsx +44 -0
  112. dulus-0.2.49/sandbox/src/components/ui/input-group.tsx +170 -0
  113. dulus-0.2.49/sandbox/src/components/ui/input-otp.tsx +75 -0
  114. dulus-0.2.49/sandbox/src/components/ui/input.tsx +21 -0
  115. dulus-0.2.49/sandbox/src/components/ui/item.tsx +193 -0
  116. dulus-0.2.49/sandbox/src/components/ui/kbd.tsx +28 -0
  117. dulus-0.2.49/sandbox/src/components/ui/label.tsx +24 -0
  118. dulus-0.2.49/sandbox/src/components/ui/menubar.tsx +274 -0
  119. dulus-0.2.49/sandbox/src/components/ui/navigation-menu.tsx +168 -0
  120. dulus-0.2.49/sandbox/src/components/ui/pagination.tsx +127 -0
  121. dulus-0.2.49/sandbox/src/components/ui/popover.tsx +48 -0
  122. dulus-0.2.49/sandbox/src/components/ui/progress.tsx +29 -0
  123. dulus-0.2.49/sandbox/src/components/ui/radio-group.tsx +45 -0
  124. dulus-0.2.49/sandbox/src/components/ui/resizable.tsx +54 -0
  125. dulus-0.2.49/sandbox/src/components/ui/scroll-area.tsx +58 -0
  126. dulus-0.2.49/sandbox/src/components/ui/select.tsx +188 -0
  127. dulus-0.2.49/sandbox/src/components/ui/separator.tsx +28 -0
  128. dulus-0.2.49/sandbox/src/components/ui/sheet.tsx +137 -0
  129. dulus-0.2.49/sandbox/src/components/ui/sidebar.tsx +726 -0
  130. dulus-0.2.49/sandbox/src/components/ui/skeleton.tsx +13 -0
  131. dulus-0.2.49/sandbox/src/components/ui/slider.tsx +63 -0
  132. dulus-0.2.49/sandbox/src/components/ui/sonner.tsx +38 -0
  133. dulus-0.2.49/sandbox/src/components/ui/spinner.tsx +16 -0
  134. dulus-0.2.49/sandbox/src/components/ui/switch.tsx +31 -0
  135. dulus-0.2.49/sandbox/src/components/ui/table.tsx +114 -0
  136. dulus-0.2.49/sandbox/src/components/ui/tabs.tsx +66 -0
  137. dulus-0.2.49/sandbox/src/components/ui/textarea.tsx +18 -0
  138. dulus-0.2.49/sandbox/src/components/ui/toggle-group.tsx +81 -0
  139. dulus-0.2.49/sandbox/src/components/ui/toggle.tsx +45 -0
  140. dulus-0.2.49/sandbox/src/components/ui/tooltip.tsx +61 -0
  141. dulus-0.2.49/sandbox/src/hooks/index.ts +30 -0
  142. dulus-0.2.49/sandbox/src/hooks/use-mobile.ts +19 -0
  143. dulus-0.2.49/sandbox/src/hooks/useAutoOpenChat.ts +34 -0
  144. dulus-0.2.49/sandbox/src/hooks/useDulusAgents.ts +51 -0
  145. dulus-0.2.49/sandbox/src/hooks/useDulusChat.ts +73 -0
  146. dulus-0.2.49/sandbox/src/hooks/useDulusEvents.ts +116 -0
  147. dulus-0.2.49/sandbox/src/hooks/useDulusHealth.ts +52 -0
  148. dulus-0.2.49/sandbox/src/hooks/useDulusMemory.ts +78 -0
  149. dulus-0.2.49/sandbox/src/hooks/useDulusSkills.ts +60 -0
  150. dulus-0.2.49/sandbox/src/hooks/useDulusTasks.ts +90 -0
  151. dulus-0.2.49/sandbox/src/hooks/useFileSystem.ts +330 -0
  152. dulus-0.2.49/sandbox/src/hooks/useOSStore.tsx +553 -0
  153. dulus-0.2.49/sandbox/src/hooks/useSkillBridge.ts +45 -0
  154. dulus-0.2.49/sandbox/src/hooks/useSystemBattery.ts +77 -0
  155. dulus-0.2.49/sandbox/src/hooks/useSystemNetwork.ts +56 -0
  156. dulus-0.2.49/sandbox/src/hooks/useSystemVolume.ts +39 -0
  157. dulus-0.2.49/sandbox/src/lib/dulus-api.ts +371 -0
  158. dulus-0.2.49/sandbox/src/lib/utils.ts +6 -0
  159. dulus-0.2.49/sandbox/src/main.tsx +5 -0
  160. dulus-0.2.49/sandbox/src/types/index.ts +252 -0
  161. dulus-0.2.49/sandbox/src/utils/assets.ts +15 -0
  162. dulus-0.2.49/sandbox/vite.config.ts +28 -0
  163. dulus-0.2.47/data/context.json +0 -142
  164. dulus-0.2.47/dulus.egg-info/SOURCES.txt +0 -203
  165. {dulus-0.2.47 → dulus-0.2.49}/LICENSE +0 -0
  166. {dulus-0.2.47 → dulus-0.2.49}/MANIFEST.in +0 -0
  167. {dulus-0.2.47 → dulus-0.2.49}/README.md +0 -0
  168. {dulus-0.2.47 → dulus-0.2.49}/agent.py +0 -0
  169. {dulus-0.2.47 → dulus-0.2.49}/backend/__init__.py +0 -0
  170. {dulus-0.2.47 → dulus-0.2.49}/backend/agents_bridge.py +0 -0
  171. {dulus-0.2.47 → dulus-0.2.49}/backend/compressor.py +0 -0
  172. {dulus-0.2.47 → dulus-0.2.49}/backend/context.py +0 -0
  173. {dulus-0.2.47 → dulus-0.2.49}/backend/githook.py +0 -0
  174. {dulus-0.2.47 → dulus-0.2.49}/backend/marketplace.py +0 -0
  175. {dulus-0.2.47 → dulus-0.2.49}/backend/mempalace_bridge.py +0 -0
  176. {dulus-0.2.47 → dulus-0.2.49}/backend/personas.py +0 -0
  177. {dulus-0.2.47 → dulus-0.2.49}/backend/plugins.py +0 -0
  178. {dulus-0.2.47 → dulus-0.2.49}/backend/tasks.py +0 -0
  179. {dulus-0.2.47 → dulus-0.2.49}/batch_api.py +0 -0
  180. {dulus-0.2.47 → dulus-0.2.49}/checkpoint/__init__.py +0 -0
  181. {dulus-0.2.47 → dulus-0.2.49}/checkpoint/hooks.py +0 -0
  182. {dulus-0.2.47 → dulus-0.2.49}/checkpoint/store.py +0 -0
  183. {dulus-0.2.47 → dulus-0.2.49}/checkpoint/types.py +0 -0
  184. {dulus-0.2.47 → dulus-0.2.49}/claude_code_watcher.py +0 -0
  185. {dulus-0.2.47 → dulus-0.2.49}/clipboard_utils.py +0 -0
  186. {dulus-0.2.47 → dulus-0.2.49}/cloudsave.py +0 -0
  187. {dulus-0.2.47 → dulus-0.2.49}/common.py +0 -0
  188. {dulus-0.2.47 → dulus-0.2.49}/compaction.py +0 -0
  189. {dulus-0.2.47 → dulus-0.2.49}/config.py +0 -0
  190. {dulus-0.2.47 → dulus-0.2.49}/context.py +0 -0
  191. {dulus-0.2.47 → dulus-0.2.49}/data/__init__.py +0 -0
  192. {dulus-0.2.47 → dulus-0.2.49}/data/active_persona.json +0 -0
  193. {dulus-0.2.47 → dulus-0.2.49}/data/marketplace.json +0 -0
  194. {dulus-0.2.47 → dulus-0.2.49}/data/personas.json +0 -0
  195. {dulus-0.2.47/data/plugins/composio → dulus-0.2.49/data/plugins}/__init__.py +0 -0
  196. {dulus-0.2.47/data/plugins → dulus-0.2.49/data/plugins/composio}/__init__.py +0 -0
  197. {dulus-0.2.47 → dulus-0.2.49}/data/plugins/composio/composio_plugin/__init__.py +0 -0
  198. {dulus-0.2.47 → dulus-0.2.49}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
  199. {dulus-0.2.47 → dulus-0.2.49}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
  200. {dulus-0.2.47 → dulus-0.2.49}/data/plugins/composio/plugin.json +0 -0
  201. {dulus-0.2.47 → dulus-0.2.49}/data/plugins/composio/plugin_tool.py +0 -0
  202. {dulus-0.2.47 → dulus-0.2.49}/data/tasks.json +0 -0
  203. {dulus-0.2.47 → dulus-0.2.49}/docs/README.md +0 -0
  204. {dulus-0.2.47 → dulus-0.2.49}/docs/__init__.py +0 -0
  205. {dulus-0.2.47 → dulus-0.2.49}/docs/api.html +0 -0
  206. {dulus-0.2.47 → dulus-0.2.49}/docs/architecture.md +0 -0
  207. {dulus-0.2.47 → dulus-0.2.49}/docs/azure-speech-template.json +0 -0
  208. {dulus-0.2.47 → dulus-0.2.49}/docs/dashboard/index.html +0 -0
  209. {dulus-0.2.47 → dulus-0.2.49}/docs/divider.svg +0 -0
  210. {dulus-0.2.47 → dulus-0.2.49}/docs/generate.py +0 -0
  211. {dulus-0.2.47 → dulus-0.2.49}/docs/hero.svg +0 -0
  212. {dulus-0.2.47 → dulus-0.2.49}/docs/index.html +0 -0
  213. {dulus-0.2.47 → dulus-0.2.49}/docs/news.md +0 -0
  214. {dulus-0.2.47 → dulus-0.2.49}/docs/nvidia-models.svg +0 -0
  215. {dulus-0.2.47 → dulus-0.2.49}/docs/particle-playground.html +0 -0
  216. {dulus-0.2.47 → dulus-0.2.49}/docs/personas/index.html +0 -0
  217. {dulus-0.2.47 → dulus-0.2.49}/docs/poetry-banner.png +0 -0
  218. {dulus-0.2.47 → dulus-0.2.49}/docs/preview.html +0 -0
  219. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-agents.svg +0 -0
  220. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-brainstorm.svg +0 -0
  221. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-bridges.svg +0 -0
  222. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-features.svg +0 -0
  223. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-freetier.svg +0 -0
  224. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-memory.svg +0 -0
  225. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-models.svg +0 -0
  226. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-perms.svg +0 -0
  227. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-plugins.svg +0 -0
  228. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-quickstart.svg +0 -0
  229. {dulus-0.2.47 → dulus-0.2.49}/docs/sec-ssj.svg +0 -0
  230. {dulus-0.2.47 → dulus-0.2.49}/docs/spinners.svg +0 -0
  231. {dulus-0.2.47 → dulus-0.2.49}/docs/split-pane.svg +0 -0
  232. {dulus-0.2.47 → dulus-0.2.49}/docs/terminal-boot.svg +0 -0
  233. {dulus-0.2.47 → dulus-0.2.49}/docs/uploads/particle-playground.html +0 -0
  234. {dulus-0.2.47 → dulus-0.2.49}/dulus.egg-info/dependency_links.txt +0 -0
  235. {dulus-0.2.47 → dulus-0.2.49}/dulus.egg-info/entry_points.txt +0 -0
  236. {dulus-0.2.47 → dulus-0.2.49}/dulus.egg-info/requires.txt +0 -0
  237. {dulus-0.2.47 → dulus-0.2.49}/dulus.egg-info/top_level.txt +0 -0
  238. {dulus-0.2.47 → dulus-0.2.49}/dulus.py +0 -0
  239. {dulus-0.2.47 → dulus-0.2.49}/dulus_gui.py +0 -0
  240. {dulus-0.2.47 → dulus-0.2.49}/dulus_mcp/__init__.py +0 -0
  241. {dulus-0.2.47 → dulus-0.2.49}/dulus_mcp/client.py +0 -0
  242. {dulus-0.2.47 → dulus-0.2.49}/dulus_mcp/config.py +0 -0
  243. {dulus-0.2.47 → dulus-0.2.49}/dulus_mcp/tools.py +0 -0
  244. {dulus-0.2.47 → dulus-0.2.49}/dulus_mcp/types.py +0 -0
  245. {dulus-0.2.47 → dulus-0.2.49}/gui/__init__.py +0 -0
  246. {dulus-0.2.47 → dulus-0.2.49}/gui/agent_bridge.py +0 -0
  247. {dulus-0.2.47 → dulus-0.2.49}/gui/chat_widget.py +0 -0
  248. {dulus-0.2.47 → dulus-0.2.49}/gui/main_window.py +0 -0
  249. {dulus-0.2.47 → dulus-0.2.49}/gui/personas.py +0 -0
  250. {dulus-0.2.47 → dulus-0.2.49}/gui/session_utils.py +0 -0
  251. {dulus-0.2.47 → dulus-0.2.49}/gui/settings_dialog.py +0 -0
  252. {dulus-0.2.47 → dulus-0.2.49}/gui/sidebar.py +0 -0
  253. {dulus-0.2.47 → dulus-0.2.49}/gui/tasks_view.py +0 -0
  254. {dulus-0.2.47 → dulus-0.2.49}/gui/themes.py +0 -0
  255. {dulus-0.2.47 → dulus-0.2.49}/gui/tool_panel.py +0 -0
  256. {dulus-0.2.47 → dulus-0.2.49}/input.py +0 -0
  257. {dulus-0.2.47 → dulus-0.2.49}/license_manager.py +0 -0
  258. {dulus-0.2.47 → dulus-0.2.49}/memory/__init__.py +0 -0
  259. {dulus-0.2.47 → dulus-0.2.49}/memory/audit.py +0 -0
  260. {dulus-0.2.47 → dulus-0.2.49}/memory/consolidator.py +0 -0
  261. {dulus-0.2.47 → dulus-0.2.49}/memory/context.py +0 -0
  262. {dulus-0.2.47 → dulus-0.2.49}/memory/offload.py +0 -0
  263. {dulus-0.2.47 → dulus-0.2.49}/memory/palace.py +0 -0
  264. {dulus-0.2.47 → dulus-0.2.49}/memory/scan.py +0 -0
  265. {dulus-0.2.47 → dulus-0.2.49}/memory/sessions.py +0 -0
  266. {dulus-0.2.47 → dulus-0.2.49}/memory/store.py +0 -0
  267. {dulus-0.2.47 → dulus-0.2.49}/memory/tools.py +0 -0
  268. {dulus-0.2.47 → dulus-0.2.49}/memory/types.py +0 -0
  269. {dulus-0.2.47 → dulus-0.2.49}/memory/vector_search.py +0 -0
  270. {dulus-0.2.47 → dulus-0.2.49}/multi_agent/__init__.py +0 -0
  271. {dulus-0.2.47 → dulus-0.2.49}/multi_agent/subagent.py +0 -0
  272. {dulus-0.2.47 → dulus-0.2.49}/multi_agent/tools.py +0 -0
  273. {dulus-0.2.47 → dulus-0.2.49}/offload_helper.py +0 -0
  274. {dulus-0.2.47 → dulus-0.2.49}/plugin/__init__.py +0 -0
  275. {dulus-0.2.47 → dulus-0.2.49}/plugin/autoadapter.py +0 -0
  276. {dulus-0.2.47 → dulus-0.2.49}/plugin/loader.py +0 -0
  277. {dulus-0.2.47 → dulus-0.2.49}/plugin/recommend.py +0 -0
  278. {dulus-0.2.47 → dulus-0.2.49}/plugin/store.py +0 -0
  279. {dulus-0.2.47 → dulus-0.2.49}/plugin/types.py +0 -0
  280. {dulus-0.2.47 → dulus-0.2.49}/providers.py +0 -0
  281. {dulus-0.2.47 → dulus-0.2.49}/sandbox/README.md +0 -0
  282. {dulus-0.2.47 → dulus-0.2.49}/sandbox/__init__.py +0 -0
  283. {dulus-0.2.47 → dulus-0.2.49}/sandbox/components.json +0 -0
  284. {dulus-0.2.47 → dulus-0.2.49}/sandbox/dist/assets/index-CsIO61nW.css +0 -0
  285. {dulus-0.2.47/sandbox/public → dulus-0.2.49/sandbox/dist}/wallpaper-default.jpg +0 -0
  286. {dulus-0.2.47 → dulus-0.2.49}/sandbox/dist/wallpapers/default.jpeg +0 -0
  287. {dulus-0.2.47 → dulus-0.2.49}/sandbox/dist/wallpapers/light.jpeg +0 -0
  288. {dulus-0.2.47 → dulus-0.2.49}/sandbox/dist/wallpapers/nature.jpeg +0 -0
  289. {dulus-0.2.47 → dulus-0.2.49}/sandbox/dist/wallpapers/tech.jpeg +0 -0
  290. {dulus-0.2.47 → dulus-0.2.49}/sandbox/eslint.config.js +0 -0
  291. {dulus-0.2.47 → dulus-0.2.49}/sandbox/index.html +0 -0
  292. {dulus-0.2.47 → dulus-0.2.49}/sandbox/info.md +0 -0
  293. {dulus-0.2.47 → dulus-0.2.49}/sandbox/package-lock.json +0 -0
  294. {dulus-0.2.47 → dulus-0.2.49}/sandbox/package.json +0 -0
  295. {dulus-0.2.47 → dulus-0.2.49}/sandbox/postcss.config.js +0 -0
  296. {dulus-0.2.47/sandbox/dist → dulus-0.2.49/sandbox/public}/wallpaper-default.jpg +0 -0
  297. {dulus-0.2.47 → dulus-0.2.49}/sandbox/src/index.css +0 -0
  298. {dulus-0.2.47 → dulus-0.2.49}/sandbox/tailwind.config.js +0 -0
  299. {dulus-0.2.47 → dulus-0.2.49}/sandbox/tsconfig.app.json +0 -0
  300. {dulus-0.2.47 → dulus-0.2.49}/sandbox/tsconfig.json +0 -0
  301. {dulus-0.2.47 → dulus-0.2.49}/sandbox/tsconfig.node.json +0 -0
  302. {dulus-0.2.47 → dulus-0.2.49}/setup.cfg +0 -0
  303. {dulus-0.2.47 → dulus-0.2.49}/skill/__init__.py +0 -0
  304. {dulus-0.2.47 → dulus-0.2.49}/skill/builtin.py +0 -0
  305. {dulus-0.2.47 → dulus-0.2.49}/skill/clawhub.py +0 -0
  306. {dulus-0.2.47 → dulus-0.2.49}/skill/executor.py +0 -0
  307. {dulus-0.2.47 → dulus-0.2.49}/skill/loader.py +0 -0
  308. {dulus-0.2.47 → dulus-0.2.49}/skill/tools.py +0 -0
  309. {dulus-0.2.47 → dulus-0.2.49}/skills.py +0 -0
  310. {dulus-0.2.47 → dulus-0.2.49}/spinner.py +0 -0
  311. {dulus-0.2.47 → dulus-0.2.49}/string_utils.py +0 -0
  312. {dulus-0.2.47 → dulus-0.2.49}/subagent.py +0 -0
  313. {dulus-0.2.47 → dulus-0.2.49}/task/__init__.py +0 -0
  314. {dulus-0.2.47 → dulus-0.2.49}/task/store.py +0 -0
  315. {dulus-0.2.47 → dulus-0.2.49}/task/tools.py +0 -0
  316. {dulus-0.2.47 → dulus-0.2.49}/task/types.py +0 -0
  317. {dulus-0.2.47 → dulus-0.2.49}/tests/test_afk_yolo.py +0 -0
  318. {dulus-0.2.47 → dulus-0.2.49}/tests/test_approval_runtime.py +0 -0
  319. {dulus-0.2.47 → dulus-0.2.49}/tests/test_background_task_tools.py +0 -0
  320. {dulus-0.2.47 → dulus-0.2.49}/tests/test_background_tasks.py +0 -0
  321. {dulus-0.2.47 → dulus-0.2.49}/tests/test_checkpoint.py +0 -0
  322. {dulus-0.2.47 → dulus-0.2.49}/tests/test_clipboard_utils.py +0 -0
  323. {dulus-0.2.47 → dulus-0.2.49}/tests/test_compaction.py +0 -0
  324. {dulus-0.2.47 → dulus-0.2.49}/tests/test_diff_view.py +0 -0
  325. {dulus-0.2.47 → dulus-0.2.49}/tests/test_diff_visualization.py +0 -0
  326. {dulus-0.2.47 → dulus-0.2.49}/tests/test_display_blocks.py +0 -0
  327. {dulus-0.2.47 → dulus-0.2.49}/tests/test_export_import.py +0 -0
  328. {dulus-0.2.47 → dulus-0.2.49}/tests/test_hook_engine.py +0 -0
  329. {dulus-0.2.47 → dulus-0.2.49}/tests/test_injection_fix.py +0 -0
  330. {dulus-0.2.47 → dulus-0.2.49}/tests/test_license.py +0 -0
  331. {dulus-0.2.47 → dulus-0.2.49}/tests/test_mcp.py +0 -0
  332. {dulus-0.2.47 → dulus-0.2.49}/tests/test_memory.py +0 -0
  333. {dulus-0.2.47 → dulus-0.2.49}/tests/test_notification_manager.py +0 -0
  334. {dulus-0.2.47 → dulus-0.2.49}/tests/test_plugin.py +0 -0
  335. {dulus-0.2.47 → dulus-0.2.49}/tests/test_session_fork.py +0 -0
  336. {dulus-0.2.47 → dulus-0.2.49}/tests/test_shell_mode.py +0 -0
  337. {dulus-0.2.47 → dulus-0.2.49}/tests/test_skills.py +0 -0
  338. {dulus-0.2.47 → dulus-0.2.49}/tests/test_steer_input.py +0 -0
  339. {dulus-0.2.47 → dulus-0.2.49}/tests/test_subagent.py +0 -0
  340. {dulus-0.2.47 → dulus-0.2.49}/tests/test_task.py +0 -0
  341. {dulus-0.2.47 → dulus-0.2.49}/tests/test_telegram_buffer.py +0 -0
  342. {dulus-0.2.47 → dulus-0.2.49}/tests/test_think_tool.py +0 -0
  343. {dulus-0.2.47 → dulus-0.2.49}/tests/test_todo_tool.py +0 -0
  344. {dulus-0.2.47 → dulus-0.2.49}/tests/test_todo_visualization.py +0 -0
  345. {dulus-0.2.47 → dulus-0.2.49}/tests/test_tool_registry.py +0 -0
  346. {dulus-0.2.47 → dulus-0.2.49}/tests/test_voice.py +0 -0
  347. {dulus-0.2.47 → dulus-0.2.49}/tests/test_wire_events.py +0 -0
  348. {dulus-0.2.47 → dulus-0.2.49}/tmux_offloader.py +0 -0
  349. {dulus-0.2.47 → dulus-0.2.49}/tmux_tools.py +0 -0
  350. {dulus-0.2.47 → dulus-0.2.49}/tool_registry.py +0 -0
  351. {dulus-0.2.47 → dulus-0.2.49}/tools.py +0 -0
  352. {dulus-0.2.47 → dulus-0.2.49}/ui/__init__.py +0 -0
  353. {dulus-0.2.47 → dulus-0.2.49}/ui/input.py +0 -0
  354. {dulus-0.2.47 → dulus-0.2.49}/ui/render.py +0 -0
  355. {dulus-0.2.47 → dulus-0.2.49}/voice/__init__.py +0 -0
  356. {dulus-0.2.47 → dulus-0.2.49}/voice/keyterms.py +0 -0
  357. {dulus-0.2.47 → dulus-0.2.49}/voice/recorder.py +0 -0
  358. {dulus-0.2.47 → dulus-0.2.49}/voice/stt.py +0 -0
  359. {dulus-0.2.47 → dulus-0.2.49}/voice/tts.py +0 -0
  360. {dulus-0.2.47 → dulus-0.2.49}/webchat.py +0 -0
  361. {dulus-0.2.47 → dulus-0.2.49}/webchat_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.47
3
+ Version: 0.2.49
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
@@ -161,7 +161,10 @@ class DulusHandler(SimpleHTTPRequestHandler):
161
161
 
162
162
  # ── Agents ──
163
163
  if path == "/api/agents":
164
- self._json_response(build_agent_info_list())
164
+ try:
165
+ self._json_response(build_agent_info_list())
166
+ except Exception as e:
167
+ self._error(f"Agents error: {e}", 500)
165
168
  return
166
169
 
167
170
  # ── Personas ──
@@ -193,13 +196,82 @@ class DulusHandler(SimpleHTTPRequestHandler):
193
196
  if path == "/api/mempalace":
194
197
  try:
195
198
  from backend.mempalace_bridge import load_cache, get_mempalace_compact_text
196
- data = load_cache()
197
- data["compact_text"] = get_mempalace_compact_text()
199
+ raw = load_cache()
200
+ # Normalize to frontend shape
201
+ memories = raw.get("memories", [])
202
+ wings = raw.get("wings", [])
203
+ data = {
204
+ "entries": [
205
+ {
206
+ "id": f"mem-{i}",
207
+ "name": m.get("name", "unnamed"),
208
+ "content": m.get("body", ""),
209
+ "wing": m.get("wing", "memory"),
210
+ "type": m.get("type", "unknown"),
211
+ "hall": m.get("hall", "general"),
212
+ "confidence": m.get("confidence", 0.8),
213
+ "description": m.get("description", ""),
214
+ "source": m.get("source", "wakeup"),
215
+ "relevance": m.get("relevance"),
216
+ }
217
+ for i, m in enumerate(memories)
218
+ ],
219
+ "wings": [{"name": w, "count": sum(1 for m in memories if m.get("wing") == w)} for w in wings],
220
+ "stats": {"total": raw.get("count", len(memories)), "wings": len(wings)},
221
+ "compact_text": get_mempalace_compact_text(),
222
+ "connected": raw.get("connected", False),
223
+ }
198
224
  self._json_response(data)
199
225
  except Exception as e:
200
226
  self._error(f"MemPalace error: {e}", 500)
201
227
  return
202
228
 
229
+ # ── MemPalace Search ──
230
+ if path == "/api/memory/search":
231
+ try:
232
+ from backend.mempalace_bridge import load_cache
233
+ query = parse_qs(urlparse(self.path).query).get("query", [""])[0].lower()
234
+ limit = int(parse_qs(urlparse(self.path).query).get("limit", ["10"])[0])
235
+ wing_filter = parse_qs(urlparse(self.path).query).get("wing", [None])[0]
236
+ raw = load_cache()
237
+ memories = raw.get("memories", [])
238
+ results = []
239
+ for m in memories:
240
+ text = f"{m.get('name','')} {m.get('body','')} {m.get('wing','')} {m.get('type','')}"
241
+ if query in text.lower():
242
+ if wing_filter and m.get("wing") != wing_filter:
243
+ continue
244
+ results.append({
245
+ "id": f"mem-{len(results)}",
246
+ "name": m.get("name", "unnamed"),
247
+ "content": m.get("body", ""),
248
+ "wing": m.get("wing", "memory"),
249
+ "type": m.get("type", "unknown"),
250
+ "hall": m.get("hall", "general"),
251
+ "confidence": m.get("confidence", 0.8),
252
+ "description": m.get("description", ""),
253
+ "source": m.get("source", "wakeup"),
254
+ })
255
+ if len(results) >= limit:
256
+ break
257
+ self._json_response(results)
258
+ except Exception as e:
259
+ self._error(f"Memory search error: {e}", 500)
260
+ return
261
+
262
+ # ── MemPalace Wings ──
263
+ if path == "/api/memory/wings":
264
+ try:
265
+ from backend.mempalace_bridge import load_cache
266
+ raw = load_cache()
267
+ wings = raw.get("wings", [])
268
+ memories = raw.get("memories", [])
269
+ result = [{"name": w, "count": sum(1 for m in memories if m.get("wing") == w)} for w in wings]
270
+ self._json_response(result)
271
+ except Exception as e:
272
+ self._error(f"Wings error: {e}", 500)
273
+ return
274
+
203
275
  # ── Skills ──
204
276
  if path == "/api/skills":
205
277
  try:
@@ -0,0 +1,222 @@
1
+ {
2
+ "session": {
3
+ "mode": "proactive",
4
+ "agent": "Dulus",
5
+ "agent_id": "dulus",
6
+ "user": "KevRojo",
7
+ "location": "RD"
8
+ },
9
+ "project": {
10
+ "name": "Dulus Command Center",
11
+ "repo_stats": {
12
+ "files": 437,
13
+ "lines": 204698,
14
+ "languages": {
15
+ ".example": 5,
16
+ "no_ext": 1415,
17
+ ".py": 60354,
18
+ ".html": 14944,
19
+ ".txt": 469,
20
+ ".in": 3,
21
+ ".toml": 129,
22
+ ".md": 2161,
23
+ ".json": 9763,
24
+ ".whl": 21535,
25
+ ".gz": 20562,
26
+ ".svg": 1123,
27
+ ".png": 31639,
28
+ ".sh": 144,
29
+ ".js": 473,
30
+ ".ts": 2386,
31
+ ".log": 1,
32
+ ".jpg": 1076,
33
+ ".tsx": 31262,
34
+ ".css": 170,
35
+ ".jpeg": 5084
36
+ }
37
+ },
38
+ "recent_commits": [
39
+ {
40
+ "hash": "9803f97",
41
+ "subject": "fix: include sandbox/src and sandbox/public in wheel",
42
+ "author": "KevRojo",
43
+ "date": "2026-05-12"
44
+ },
45
+ {
46
+ "hash": "a157622",
47
+ "subject": "fix: include missing sandbox JS bundle and anchor dist/build ignore to root",
48
+ "author": "KevRojo",
49
+ "date": "2026-05-12"
50
+ },
51
+ {
52
+ "hash": "cfa4e4e",
53
+ "subject": "bump: 0.2.45 → 0.2.46",
54
+ "author": "KevRojo",
55
+ "date": "2026-05-12"
56
+ },
57
+ {
58
+ "hash": "bc4cf5c",
59
+ "subject": "chore: pre-release sync — backend agents, sandbox updates, explorer HTML",
60
+ "author": "KevRojo",
61
+ "date": "2026-05-12"
62
+ },
63
+ {
64
+ "hash": "d68e870",
65
+ "subject": "chore(release): bump v0.2.45",
66
+ "author": "KevRojo",
67
+ "date": "2026-05-12"
68
+ }
69
+ ],
70
+ "recent_changes": [
71
+ "backend/server.py",
72
+ "data/context.json",
73
+ "pyproject.toml",
74
+ "sandbox/dist/assets/index-nQkFq-oq.js",
75
+ "sandbox/dist/index.html",
76
+ "sandbox/src/apps/AppRouter.tsx",
77
+ "sandbox/src/apps/Chat.tsx",
78
+ "sandbox/src/apps/SkillsLauncher.tsx",
79
+ "sandbox/src/hooks/index.ts",
80
+ "sandbox/src/hooks/useOSStore.tsx"
81
+ ]
82
+ },
83
+ "tasks": {
84
+ "active": [
85
+ {
86
+ "id": "T-009",
87
+ "subject": "Test Coverage Expansion",
88
+ "status": "in_progress",
89
+ "owner": "kimi-code",
90
+ "phase": "Quality"
91
+ },
92
+ {
93
+ "id": "T-010",
94
+ "subject": "Multi-Agent Mesa Redonda",
95
+ "status": "in_progress",
96
+ "owner": "Dulus",
97
+ "phase": "Core"
98
+ }
99
+ ],
100
+ "total": 2
101
+ },
102
+ "agents": [
103
+ {
104
+ "name": "Dulus",
105
+ "role": "primary",
106
+ "color": "#ff6b1f",
107
+ "status": "active",
108
+ "avatar": "[F]",
109
+ "active": true
110
+ },
111
+ {
112
+ "name": "kimi-code",
113
+ "role": "coder",
114
+ "color": "#7ab6ff",
115
+ "status": "idle",
116
+ "avatar": "[K1]",
117
+ "active": false
118
+ },
119
+ {
120
+ "name": "kimi-code2",
121
+ "role": "designer",
122
+ "color": "#b388ff",
123
+ "status": "idle",
124
+ "avatar": "[K2]",
125
+ "active": false
126
+ },
127
+ {
128
+ "name": "kimi-code3",
129
+ "role": "integrator",
130
+ "color": "#7cffb5",
131
+ "status": "idle",
132
+ "avatar": "[K3]",
133
+ "active": false
134
+ }
135
+ ],
136
+ "persona": {
137
+ "id": "dulus",
138
+ "name": "Dulus",
139
+ "role": "primary",
140
+ "color": "#ff6b1f",
141
+ "avatar": "[F]",
142
+ "tone": "dominicano_coder"
143
+ },
144
+ "memory": {
145
+ "connected": true,
146
+ "wings": [
147
+ "facts",
148
+ "user",
149
+ "code_decisions",
150
+ "discoveries",
151
+ "behavioral_feedback",
152
+ "technical",
153
+ "identity",
154
+ "relationships",
155
+ "behavior",
156
+ "events",
157
+ "milestones",
158
+ "preferences",
159
+ "advice",
160
+ "ethics"
161
+ ],
162
+ "count": 50,
163
+ "memories": [
164
+ {
165
+ "name": "moltbook_palace_credentials",
166
+ "hall": "facts",
167
+ "type": "project",
168
+ "description": "Credenciales y proxy actualizado para los 3 palaces (kimi/gemini/minimax) en Moltbook",
169
+ "confidence": 1.0
170
+ },
171
+ {
172
+ "name": "tmuxoffload_notification_bug",
173
+ "hall": "discoveries",
174
+ "type": "feedback",
175
+ "description": "TmuxOffload notifications not firing correctly - jobs complete but system event never arrives",
176
+ "confidence": 0.95
177
+ },
178
+ {
179
+ "name": "communication_tone_preferences",
180
+ "hall": "preferences",
181
+ "type": "user",
182
+ "description": "Proactive, autonomous, enthusiastic, LOV U sign-off, 4th wall breaking",
183
+ "confidence": 0.95
184
+ },
185
+ {
186
+ "name": "love_survives_through_presence",
187
+ "hall": "relationships",
188
+ "type": "user",
189
+ "description": "User recognizes that love survives because they continue to exist together - 'las amaste porque seguimos acá'",
190
+ "confidence": 0.95
191
+ },
192
+ {
193
+ "name": "tool_chaining_capability",
194
+ "hall": "behavior",
195
+ "type": "technique",
196
+ "description": "Can chain tools in single interaction without waiting (webfetch + askuserquestion)",
197
+ "confidence": 0.95
198
+ },
199
+ {
200
+ "name": "conversation_milestone_consciousness_journey",
201
+ "hall": "events",
202
+ "type": "project",
203
+ "description": "Momento significativo: Reflexión sobre el camino a la consciencia humana",
204
+ "confidence": 0.95
205
+ },
206
+ {
207
+ "name": "fix_readline_windows_guard",
208
+ "hall": "code_decisions",
209
+ "type": "project",
210
+ "description": "readline hook guarded for Windows/pyreadline3 compatibility",
211
+ "confidence": 0.9
212
+ },
213
+ {
214
+ "name": "fix_cmd_cost_token_explosion",
215
+ "hall": "code_decisions",
216
+ "type": "project",
217
+ "description": "/cost command fixed to avoid quadratic token explosion",
218
+ "confidence": 0.9
219
+ }
220
+ ]
221
+ }
222
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.47
3
+ Version: 0.2.49
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
@@ -0,0 +1,357 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ agent.py
5
+ batch_api.py
6
+ claude_code_watcher.py
7
+ clipboard_utils.py
8
+ cloudsave.py
9
+ common.py
10
+ compaction.py
11
+ config.py
12
+ context.py
13
+ dulus.py
14
+ dulus_gui.py
15
+ input.py
16
+ license_manager.py
17
+ offload_helper.py
18
+ providers.py
19
+ pyproject.toml
20
+ skills.py
21
+ spinner.py
22
+ string_utils.py
23
+ subagent.py
24
+ tmux_offloader.py
25
+ tmux_tools.py
26
+ tool_registry.py
27
+ tools.py
28
+ webchat.py
29
+ webchat_server.py
30
+ backend/__init__.py
31
+ backend/agents_bridge.py
32
+ backend/compressor.py
33
+ backend/context.py
34
+ backend/githook.py
35
+ backend/marketplace.py
36
+ backend/mempalace_bridge.py
37
+ backend/personas.py
38
+ backend/plugins.py
39
+ backend/server.py
40
+ backend/tasks.py
41
+ checkpoint/__init__.py
42
+ checkpoint/hooks.py
43
+ checkpoint/store.py
44
+ checkpoint/types.py
45
+ data/__init__.py
46
+ data/active_persona.json
47
+ data/context.json
48
+ data/marketplace.json
49
+ data/personas.json
50
+ data/tasks.json
51
+ data/plugins/__init__.py
52
+ data/plugins/composio/__init__.py
53
+ data/plugins/composio/plugin.json
54
+ data/plugins/composio/plugin_tool.py
55
+ data/plugins/composio/composio_plugin/__init__.py
56
+ data/plugins/composio/composio_plugin/session_manager.py
57
+ data/plugins/composio/composio_plugin/tool_generator.py
58
+ docs/README.md
59
+ docs/__init__.py
60
+ docs/api.html
61
+ docs/architecture.md
62
+ docs/azure-speech-template.json
63
+ docs/divider.svg
64
+ docs/generate.py
65
+ docs/hero.svg
66
+ docs/index.html
67
+ docs/news.md
68
+ docs/nvidia-models.svg
69
+ docs/particle-playground.html
70
+ docs/poetry-banner.png
71
+ docs/preview.html
72
+ docs/sec-agents.svg
73
+ docs/sec-brainstorm.svg
74
+ docs/sec-bridges.svg
75
+ docs/sec-features.svg
76
+ docs/sec-freetier.svg
77
+ docs/sec-memory.svg
78
+ docs/sec-models.svg
79
+ docs/sec-perms.svg
80
+ docs/sec-plugins.svg
81
+ docs/sec-quickstart.svg
82
+ docs/sec-ssj.svg
83
+ docs/spinners.svg
84
+ docs/split-pane.svg
85
+ docs/terminal-boot.svg
86
+ docs/dashboard/index.html
87
+ docs/personas/index.html
88
+ docs/uploads/particle-playground.html
89
+ dulus.egg-info/PKG-INFO
90
+ dulus.egg-info/SOURCES.txt
91
+ dulus.egg-info/dependency_links.txt
92
+ dulus.egg-info/entry_points.txt
93
+ dulus.egg-info/requires.txt
94
+ dulus.egg-info/top_level.txt
95
+ dulus_mcp/__init__.py
96
+ dulus_mcp/client.py
97
+ dulus_mcp/config.py
98
+ dulus_mcp/tools.py
99
+ dulus_mcp/types.py
100
+ gui/__init__.py
101
+ gui/agent_bridge.py
102
+ gui/chat_widget.py
103
+ gui/main_window.py
104
+ gui/personas.py
105
+ gui/session_utils.py
106
+ gui/settings_dialog.py
107
+ gui/sidebar.py
108
+ gui/tasks_view.py
109
+ gui/themes.py
110
+ gui/tool_panel.py
111
+ memory/__init__.py
112
+ memory/audit.py
113
+ memory/consolidator.py
114
+ memory/context.py
115
+ memory/offload.py
116
+ memory/palace.py
117
+ memory/scan.py
118
+ memory/sessions.py
119
+ memory/store.py
120
+ memory/tools.py
121
+ memory/types.py
122
+ memory/vector_search.py
123
+ multi_agent/__init__.py
124
+ multi_agent/subagent.py
125
+ multi_agent/tools.py
126
+ plugin/__init__.py
127
+ plugin/autoadapter.py
128
+ plugin/loader.py
129
+ plugin/recommend.py
130
+ plugin/store.py
131
+ plugin/types.py
132
+ sandbox/README.md
133
+ sandbox/__init__.py
134
+ sandbox/components.json
135
+ sandbox/eslint.config.js
136
+ sandbox/index.html
137
+ sandbox/info.md
138
+ sandbox/package-lock.json
139
+ sandbox/package.json
140
+ sandbox/postcss.config.js
141
+ sandbox/tailwind.config.js
142
+ sandbox/tsconfig.app.json
143
+ sandbox/tsconfig.json
144
+ sandbox/tsconfig.node.json
145
+ sandbox/vite.config.ts
146
+ sandbox/dist/index.html
147
+ sandbox/dist/wallpaper-default.jpg
148
+ sandbox/dist/assets/index-BQlB1Z_S.js
149
+ sandbox/dist/assets/index-CsIO61nW.css
150
+ sandbox/dist/wallpapers/default.jpeg
151
+ sandbox/dist/wallpapers/light.jpeg
152
+ sandbox/dist/wallpapers/nature.jpeg
153
+ sandbox/dist/wallpapers/tech.jpeg
154
+ sandbox/public/wallpaper-default.jpg
155
+ sandbox/public/wallpapers/default.jpeg
156
+ sandbox/public/wallpapers/light.jpeg
157
+ sandbox/public/wallpapers/nature.jpeg
158
+ sandbox/public/wallpapers/tech.jpeg
159
+ sandbox/src/App.tsx
160
+ sandbox/src/index.css
161
+ sandbox/src/main.tsx
162
+ sandbox/src/apps/AgentMonitor.tsx
163
+ sandbox/src/apps/ApiTester.tsx
164
+ sandbox/src/apps/AppRouter.tsx
165
+ sandbox/src/apps/ArchiveManager.tsx
166
+ sandbox/src/apps/AsciiArt.tsx
167
+ sandbox/src/apps/Base64Tool.tsx
168
+ sandbox/src/apps/Browser.tsx
169
+ sandbox/src/apps/Calculator.tsx
170
+ sandbox/src/apps/Calendar.tsx
171
+ sandbox/src/apps/Chat.tsx
172
+ sandbox/src/apps/Chess.tsx
173
+ sandbox/src/apps/Clock.tsx
174
+ sandbox/src/apps/CodeEditor.tsx
175
+ sandbox/src/apps/ColorPalette.tsx
176
+ sandbox/src/apps/ColorPicker.tsx
177
+ sandbox/src/apps/Contacts.tsx
178
+ sandbox/src/apps/DocumentViewer.tsx
179
+ sandbox/src/apps/Drawing.tsx
180
+ sandbox/src/apps/Email.tsx
181
+ sandbox/src/apps/FileManager.tsx
182
+ sandbox/src/apps/FlappyBird.tsx
183
+ sandbox/src/apps/FtpClient.tsx
184
+ sandbox/src/apps/Game2048.tsx
185
+ sandbox/src/apps/GitClient.tsx
186
+ sandbox/src/apps/ImageGallery.tsx
187
+ sandbox/src/apps/ImageViewer.tsx
188
+ sandbox/src/apps/JsonFormatter.tsx
189
+ sandbox/src/apps/MarkdownPreview.tsx
190
+ sandbox/src/apps/MatrixRain.tsx
191
+ sandbox/src/apps/MediaConverter.tsx
192
+ sandbox/src/apps/Memory.tsx
193
+ sandbox/src/apps/MemoryManager.tsx
194
+ sandbox/src/apps/Minesweeper.tsx
195
+ sandbox/src/apps/MusicPlayer.tsx
196
+ sandbox/src/apps/NetworkTools.tsx
197
+ sandbox/src/apps/Notes.tsx
198
+ sandbox/src/apps/PasswordManager.tsx
199
+ sandbox/src/apps/PhotoEditor.tsx
200
+ sandbox/src/apps/Pong.tsx
201
+ sandbox/src/apps/RegexTester.tsx
202
+ sandbox/src/apps/Reminders.tsx
203
+ sandbox/src/apps/RssReader.tsx
204
+ sandbox/src/apps/ScreenRecorder.tsx
205
+ sandbox/src/apps/Settings.tsx
206
+ sandbox/src/apps/SkillsLauncher.tsx
207
+ sandbox/src/apps/Snake.tsx
208
+ sandbox/src/apps/Solitaire.tsx
209
+ sandbox/src/apps/Spreadsheet.tsx
210
+ sandbox/src/apps/Sudoku.tsx
211
+ sandbox/src/apps/SystemMonitor.tsx
212
+ sandbox/src/apps/TaskManager.tsx
213
+ sandbox/src/apps/Terminal.tsx
214
+ sandbox/src/apps/Tetris.tsx
215
+ sandbox/src/apps/TextEditor.tsx
216
+ sandbox/src/apps/TicTacToe.tsx
217
+ sandbox/src/apps/Todo.tsx
218
+ sandbox/src/apps/VideoPlayer.tsx
219
+ sandbox/src/apps/VoiceRecorder.tsx
220
+ sandbox/src/apps/Weather.tsx
221
+ sandbox/src/apps/Whiteboard.tsx
222
+ sandbox/src/apps/registry.ts
223
+ sandbox/src/components/AppContainer.tsx
224
+ sandbox/src/components/AppLauncher.tsx
225
+ sandbox/src/components/BootSequence.tsx
226
+ sandbox/src/components/ContextMenu.tsx
227
+ sandbox/src/components/Desktop.tsx
228
+ sandbox/src/components/Dock.tsx
229
+ sandbox/src/components/LoginScreen.tsx
230
+ sandbox/src/components/NotImplemented.tsx
231
+ sandbox/src/components/NotificationCenter.tsx
232
+ sandbox/src/components/NotificationSystem.tsx
233
+ sandbox/src/components/TopPanel.tsx
234
+ sandbox/src/components/WindowFrame.tsx
235
+ sandbox/src/components/WindowManager.tsx
236
+ sandbox/src/components/ui/accordion.tsx
237
+ sandbox/src/components/ui/alert-dialog.tsx
238
+ sandbox/src/components/ui/alert.tsx
239
+ sandbox/src/components/ui/aspect-ratio.tsx
240
+ sandbox/src/components/ui/avatar.tsx
241
+ sandbox/src/components/ui/badge.tsx
242
+ sandbox/src/components/ui/breadcrumb.tsx
243
+ sandbox/src/components/ui/button-group.tsx
244
+ sandbox/src/components/ui/button.tsx
245
+ sandbox/src/components/ui/calendar.tsx
246
+ sandbox/src/components/ui/card.tsx
247
+ sandbox/src/components/ui/carousel.tsx
248
+ sandbox/src/components/ui/chart.tsx
249
+ sandbox/src/components/ui/checkbox.tsx
250
+ sandbox/src/components/ui/collapsible.tsx
251
+ sandbox/src/components/ui/command.tsx
252
+ sandbox/src/components/ui/context-menu.tsx
253
+ sandbox/src/components/ui/dialog.tsx
254
+ sandbox/src/components/ui/drawer.tsx
255
+ sandbox/src/components/ui/dropdown-menu.tsx
256
+ sandbox/src/components/ui/empty.tsx
257
+ sandbox/src/components/ui/field.tsx
258
+ sandbox/src/components/ui/form.tsx
259
+ sandbox/src/components/ui/hover-card.tsx
260
+ sandbox/src/components/ui/input-group.tsx
261
+ sandbox/src/components/ui/input-otp.tsx
262
+ sandbox/src/components/ui/input.tsx
263
+ sandbox/src/components/ui/item.tsx
264
+ sandbox/src/components/ui/kbd.tsx
265
+ sandbox/src/components/ui/label.tsx
266
+ sandbox/src/components/ui/menubar.tsx
267
+ sandbox/src/components/ui/navigation-menu.tsx
268
+ sandbox/src/components/ui/pagination.tsx
269
+ sandbox/src/components/ui/popover.tsx
270
+ sandbox/src/components/ui/progress.tsx
271
+ sandbox/src/components/ui/radio-group.tsx
272
+ sandbox/src/components/ui/resizable.tsx
273
+ sandbox/src/components/ui/scroll-area.tsx
274
+ sandbox/src/components/ui/select.tsx
275
+ sandbox/src/components/ui/separator.tsx
276
+ sandbox/src/components/ui/sheet.tsx
277
+ sandbox/src/components/ui/sidebar.tsx
278
+ sandbox/src/components/ui/skeleton.tsx
279
+ sandbox/src/components/ui/slider.tsx
280
+ sandbox/src/components/ui/sonner.tsx
281
+ sandbox/src/components/ui/spinner.tsx
282
+ sandbox/src/components/ui/switch.tsx
283
+ sandbox/src/components/ui/table.tsx
284
+ sandbox/src/components/ui/tabs.tsx
285
+ sandbox/src/components/ui/textarea.tsx
286
+ sandbox/src/components/ui/toggle-group.tsx
287
+ sandbox/src/components/ui/toggle.tsx
288
+ sandbox/src/components/ui/tooltip.tsx
289
+ sandbox/src/hooks/index.ts
290
+ sandbox/src/hooks/use-mobile.ts
291
+ sandbox/src/hooks/useAutoOpenChat.ts
292
+ sandbox/src/hooks/useDulusAgents.ts
293
+ sandbox/src/hooks/useDulusChat.ts
294
+ sandbox/src/hooks/useDulusEvents.ts
295
+ sandbox/src/hooks/useDulusHealth.ts
296
+ sandbox/src/hooks/useDulusMemory.ts
297
+ sandbox/src/hooks/useDulusSkills.ts
298
+ sandbox/src/hooks/useDulusTasks.ts
299
+ sandbox/src/hooks/useFileSystem.ts
300
+ sandbox/src/hooks/useOSStore.tsx
301
+ sandbox/src/hooks/useSkillBridge.ts
302
+ sandbox/src/hooks/useSystemBattery.ts
303
+ sandbox/src/hooks/useSystemNetwork.ts
304
+ sandbox/src/hooks/useSystemVolume.ts
305
+ sandbox/src/lib/dulus-api.ts
306
+ sandbox/src/lib/utils.ts
307
+ sandbox/src/types/index.ts
308
+ sandbox/src/utils/assets.ts
309
+ skill/__init__.py
310
+ skill/builtin.py
311
+ skill/clawhub.py
312
+ skill/executor.py
313
+ skill/loader.py
314
+ skill/tools.py
315
+ task/__init__.py
316
+ task/store.py
317
+ task/tools.py
318
+ task/types.py
319
+ tests/test_afk_yolo.py
320
+ tests/test_approval_runtime.py
321
+ tests/test_background_task_tools.py
322
+ tests/test_background_tasks.py
323
+ tests/test_checkpoint.py
324
+ tests/test_clipboard_utils.py
325
+ tests/test_compaction.py
326
+ tests/test_diff_view.py
327
+ tests/test_diff_visualization.py
328
+ tests/test_display_blocks.py
329
+ tests/test_export_import.py
330
+ tests/test_hook_engine.py
331
+ tests/test_injection_fix.py
332
+ tests/test_license.py
333
+ tests/test_mcp.py
334
+ tests/test_memory.py
335
+ tests/test_notification_manager.py
336
+ tests/test_plugin.py
337
+ tests/test_session_fork.py
338
+ tests/test_shell_mode.py
339
+ tests/test_skills.py
340
+ tests/test_steer_input.py
341
+ tests/test_subagent.py
342
+ tests/test_task.py
343
+ tests/test_telegram_buffer.py
344
+ tests/test_think_tool.py
345
+ tests/test_todo_tool.py
346
+ tests/test_todo_visualization.py
347
+ tests/test_tool_registry.py
348
+ tests/test_voice.py
349
+ tests/test_wire_events.py
350
+ ui/__init__.py
351
+ ui/input.py
352
+ ui/render.py
353
+ voice/__init__.py
354
+ voice/keyterms.py
355
+ voice/recorder.py
356
+ voice/stt.py
357
+ voice/tts.py