fo-core 2.0.0b2__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 (331) hide show
  1. fo_core-2.0.0b2/LICENSE +21 -0
  2. fo_core-2.0.0b2/PKG-INFO +274 -0
  3. fo_core-2.0.0b2/README.md +155 -0
  4. fo_core-2.0.0b2/pyproject.toml +454 -0
  5. fo_core-2.0.0b2/setup.cfg +4 -0
  6. fo_core-2.0.0b2/src/cli/__init__.py +65 -0
  7. fo_core-2.0.0b2/src/cli/analytics.py +391 -0
  8. fo_core-2.0.0b2/src/cli/autotag_v2.py +252 -0
  9. fo_core-2.0.0b2/src/cli/benchmark.py +1352 -0
  10. fo_core-2.0.0b2/src/cli/completion.py +54 -0
  11. fo_core-2.0.0b2/src/cli/config_cli.py +102 -0
  12. fo_core-2.0.0b2/src/cli/copilot.py +99 -0
  13. fo_core-2.0.0b2/src/cli/daemon.py +236 -0
  14. fo_core-2.0.0b2/src/cli/dedupe_renderer.py +465 -0
  15. fo_core-2.0.0b2/src/cli/dedupe_v2.py +385 -0
  16. fo_core-2.0.0b2/src/cli/doctor.py +460 -0
  17. fo_core-2.0.0b2/src/cli/interactive.py +107 -0
  18. fo_core-2.0.0b2/src/cli/lazy.py +173 -0
  19. fo_core-2.0.0b2/src/cli/main.py +452 -0
  20. fo_core-2.0.0b2/src/cli/models_cli.py +52 -0
  21. fo_core-2.0.0b2/src/cli/organize.py +260 -0
  22. fo_core-2.0.0b2/src/cli/path_validation.py +147 -0
  23. fo_core-2.0.0b2/src/cli/profile.py +520 -0
  24. fo_core-2.0.0b2/src/cli/rules.py +292 -0
  25. fo_core-2.0.0b2/src/cli/setup.py +261 -0
  26. fo_core-2.0.0b2/src/cli/state.py +47 -0
  27. fo_core-2.0.0b2/src/cli/suggest.py +244 -0
  28. fo_core-2.0.0b2/src/cli/undo_history.py +319 -0
  29. fo_core-2.0.0b2/src/cli/undo_recover.py +149 -0
  30. fo_core-2.0.0b2/src/cli/undo_redo.py +269 -0
  31. fo_core-2.0.0b2/src/cli/update.py +98 -0
  32. fo_core-2.0.0b2/src/cli/utilities.py +463 -0
  33. fo_core-2.0.0b2/src/config/__init__.py +18 -0
  34. fo_core-2.0.0b2/src/config/manager.py +488 -0
  35. fo_core-2.0.0b2/src/config/migrations.py +218 -0
  36. fo_core-2.0.0b2/src/config/path_manager.py +157 -0
  37. fo_core-2.0.0b2/src/config/path_migration.py +112 -0
  38. fo_core-2.0.0b2/src/config/provider_env.py +362 -0
  39. fo_core-2.0.0b2/src/config/schema.py +113 -0
  40. fo_core-2.0.0b2/src/core/__init__.py +28 -0
  41. fo_core-2.0.0b2/src/core/backend_detector.py +267 -0
  42. fo_core-2.0.0b2/src/core/dispatcher.py +404 -0
  43. fo_core-2.0.0b2/src/core/display.py +99 -0
  44. fo_core-2.0.0b2/src/core/file_ops.py +206 -0
  45. fo_core-2.0.0b2/src/core/hardware_profile.py +317 -0
  46. fo_core-2.0.0b2/src/core/initializer.py +117 -0
  47. fo_core-2.0.0b2/src/core/organizer.py +669 -0
  48. fo_core-2.0.0b2/src/core/path_guard.py +202 -0
  49. fo_core-2.0.0b2/src/core/setup_wizard.py +373 -0
  50. fo_core-2.0.0b2/src/core/types.py +124 -0
  51. fo_core-2.0.0b2/src/daemon/__init__.py +20 -0
  52. fo_core-2.0.0b2/src/daemon/config.py +59 -0
  53. fo_core-2.0.0b2/src/daemon/pid.py +446 -0
  54. fo_core-2.0.0b2/src/daemon/scheduler.py +197 -0
  55. fo_core-2.0.0b2/src/daemon/service.py +524 -0
  56. fo_core-2.0.0b2/src/events/__init__.py +82 -0
  57. fo_core-2.0.0b2/src/events/audit.py +286 -0
  58. fo_core-2.0.0b2/src/events/config.py +46 -0
  59. fo_core-2.0.0b2/src/events/consumer.py +260 -0
  60. fo_core-2.0.0b2/src/events/discovery.py +266 -0
  61. fo_core-2.0.0b2/src/events/health.py +275 -0
  62. fo_core-2.0.0b2/src/events/middleware.py +464 -0
  63. fo_core-2.0.0b2/src/events/monitor.py +251 -0
  64. fo_core-2.0.0b2/src/events/publisher.py +179 -0
  65. fo_core-2.0.0b2/src/events/pubsub.py +301 -0
  66. fo_core-2.0.0b2/src/events/replay.py +322 -0
  67. fo_core-2.0.0b2/src/events/service_bus.py +374 -0
  68. fo_core-2.0.0b2/src/events/stream.py +432 -0
  69. fo_core-2.0.0b2/src/events/subscription.py +285 -0
  70. fo_core-2.0.0b2/src/events/types.py +134 -0
  71. fo_core-2.0.0b2/src/fo_core.egg-info/PKG-INFO +274 -0
  72. fo_core-2.0.0b2/src/fo_core.egg-info/SOURCES.txt +329 -0
  73. fo_core-2.0.0b2/src/fo_core.egg-info/dependency_links.txt +1 -0
  74. fo_core-2.0.0b2/src/fo_core.egg-info/entry_points.txt +2 -0
  75. fo_core-2.0.0b2/src/fo_core.egg-info/requires.txt +111 -0
  76. fo_core-2.0.0b2/src/fo_core.egg-info/top_level.txt +18 -0
  77. fo_core-2.0.0b2/src/history/__init__.py +30 -0
  78. fo_core-2.0.0b2/src/history/cleanup.py +425 -0
  79. fo_core-2.0.0b2/src/history/database.py +464 -0
  80. fo_core-2.0.0b2/src/history/export.py +347 -0
  81. fo_core-2.0.0b2/src/history/models.py +306 -0
  82. fo_core-2.0.0b2/src/history/tracker.py +370 -0
  83. fo_core-2.0.0b2/src/history/transaction.py +307 -0
  84. fo_core-2.0.0b2/src/integrations/__init__.py +25 -0
  85. fo_core-2.0.0b2/src/integrations/base.py +73 -0
  86. fo_core-2.0.0b2/src/integrations/browser.py +68 -0
  87. fo_core-2.0.0b2/src/integrations/manager.py +109 -0
  88. fo_core-2.0.0b2/src/integrations/obsidian.py +141 -0
  89. fo_core-2.0.0b2/src/integrations/vscode.py +96 -0
  90. fo_core-2.0.0b2/src/integrations/workflow.py +108 -0
  91. fo_core-2.0.0b2/src/interfaces/__init__.py +43 -0
  92. fo_core-2.0.0b2/src/interfaces/intelligence.py +63 -0
  93. fo_core-2.0.0b2/src/interfaces/model.py +75 -0
  94. fo_core-2.0.0b2/src/interfaces/pipeline.py +116 -0
  95. fo_core-2.0.0b2/src/interfaces/processor.py +71 -0
  96. fo_core-2.0.0b2/src/interfaces/search.py +97 -0
  97. fo_core-2.0.0b2/src/interfaces/storage.py +77 -0
  98. fo_core-2.0.0b2/src/methodologies/__init__.py +3 -0
  99. fo_core-2.0.0b2/src/methodologies/johnny_decimal/__init__.py +147 -0
  100. fo_core-2.0.0b2/src/methodologies/johnny_decimal/adapters.py +392 -0
  101. fo_core-2.0.0b2/src/methodologies/johnny_decimal/categories.py +491 -0
  102. fo_core-2.0.0b2/src/methodologies/johnny_decimal/compatibility.py +426 -0
  103. fo_core-2.0.0b2/src/methodologies/johnny_decimal/config.py +417 -0
  104. fo_core-2.0.0b2/src/methodologies/johnny_decimal/migrator.py +448 -0
  105. fo_core-2.0.0b2/src/methodologies/johnny_decimal/numbering.py +526 -0
  106. fo_core-2.0.0b2/src/methodologies/johnny_decimal/scanner.py +363 -0
  107. fo_core-2.0.0b2/src/methodologies/johnny_decimal/system.py +574 -0
  108. fo_core-2.0.0b2/src/methodologies/johnny_decimal/transformer.py +360 -0
  109. fo_core-2.0.0b2/src/methodologies/johnny_decimal/validator.py +349 -0
  110. fo_core-2.0.0b2/src/methodologies/para/__init__.py +59 -0
  111. fo_core-2.0.0b2/src/methodologies/para/ai/__init__.py +59 -0
  112. fo_core-2.0.0b2/src/methodologies/para/ai/feature_extractor.py +540 -0
  113. fo_core-2.0.0b2/src/methodologies/para/ai/feedback.py +549 -0
  114. fo_core-2.0.0b2/src/methodologies/para/ai/file_mover.py +492 -0
  115. fo_core-2.0.0b2/src/methodologies/para/ai/suggestion_engine.py +620 -0
  116. fo_core-2.0.0b2/src/methodologies/para/categories.py +379 -0
  117. fo_core-2.0.0b2/src/methodologies/para/config.py +351 -0
  118. fo_core-2.0.0b2/src/methodologies/para/default_config.yaml +123 -0
  119. fo_core-2.0.0b2/src/methodologies/para/detection/__init__.py +27 -0
  120. fo_core-2.0.0b2/src/methodologies/para/detection/heuristics.py +1170 -0
  121. fo_core-2.0.0b2/src/methodologies/para/folder_generator.py +267 -0
  122. fo_core-2.0.0b2/src/methodologies/para/folder_mapper.py +382 -0
  123. fo_core-2.0.0b2/src/methodologies/para/migration_manager.py +725 -0
  124. fo_core-2.0.0b2/src/methodologies/para/rules/__init__.py +37 -0
  125. fo_core-2.0.0b2/src/methodologies/para/rules/engine.py +585 -0
  126. fo_core-2.0.0b2/src/models/__init__.py +60 -0
  127. fo_core-2.0.0b2/src/models/_claude_client.py +76 -0
  128. fo_core-2.0.0b2/src/models/_claude_response.py +56 -0
  129. fo_core-2.0.0b2/src/models/_llama_cpp_helpers.py +53 -0
  130. fo_core-2.0.0b2/src/models/_ollama_response.py +90 -0
  131. fo_core-2.0.0b2/src/models/_openai_client.py +81 -0
  132. fo_core-2.0.0b2/src/models/_openai_response.py +35 -0
  133. fo_core-2.0.0b2/src/models/_vision_helpers.py +90 -0
  134. fo_core-2.0.0b2/src/models/analytics.py +263 -0
  135. fo_core-2.0.0b2/src/models/audio_model.py +154 -0
  136. fo_core-2.0.0b2/src/models/audio_registry.py +51 -0
  137. fo_core-2.0.0b2/src/models/audio_transcriber.py +462 -0
  138. fo_core-2.0.0b2/src/models/base.py +256 -0
  139. fo_core-2.0.0b2/src/models/claude_text_model.py +174 -0
  140. fo_core-2.0.0b2/src/models/claude_vision_model.py +279 -0
  141. fo_core-2.0.0b2/src/models/llama_cpp_text_model.py +243 -0
  142. fo_core-2.0.0b2/src/models/mlx_text_model.py +237 -0
  143. fo_core-2.0.0b2/src/models/model_manager.py +335 -0
  144. fo_core-2.0.0b2/src/models/openai_text_model.py +183 -0
  145. fo_core-2.0.0b2/src/models/openai_vision_model.py +255 -0
  146. fo_core-2.0.0b2/src/models/provider_factory.py +56 -0
  147. fo_core-2.0.0b2/src/models/provider_registry.py +302 -0
  148. fo_core-2.0.0b2/src/models/registry.py +74 -0
  149. fo_core-2.0.0b2/src/models/suggestion_types.py +171 -0
  150. fo_core-2.0.0b2/src/models/text_model.py +367 -0
  151. fo_core-2.0.0b2/src/models/text_registry.py +49 -0
  152. fo_core-2.0.0b2/src/models/vision_model.py +336 -0
  153. fo_core-2.0.0b2/src/models/vision_registry.py +51 -0
  154. fo_core-2.0.0b2/src/optimization/__init__.py +58 -0
  155. fo_core-2.0.0b2/src/optimization/batch_sizer.py +275 -0
  156. fo_core-2.0.0b2/src/optimization/buffer_pool.py +218 -0
  157. fo_core-2.0.0b2/src/optimization/connection_pool.py +240 -0
  158. fo_core-2.0.0b2/src/optimization/database.py +491 -0
  159. fo_core-2.0.0b2/src/optimization/lazy_loader.py +206 -0
  160. fo_core-2.0.0b2/src/optimization/leak_detector.py +219 -0
  161. fo_core-2.0.0b2/src/optimization/memory_limiter.py +207 -0
  162. fo_core-2.0.0b2/src/optimization/memory_profiler.py +286 -0
  163. fo_core-2.0.0b2/src/optimization/model_cache.py +284 -0
  164. fo_core-2.0.0b2/src/optimization/query_cache.py +226 -0
  165. fo_core-2.0.0b2/src/optimization/resource_monitor.py +290 -0
  166. fo_core-2.0.0b2/src/optimization/warmup.py +208 -0
  167. fo_core-2.0.0b2/src/parallel/__init__.py +45 -0
  168. fo_core-2.0.0b2/src/parallel/checkpoint.py +262 -0
  169. fo_core-2.0.0b2/src/parallel/config.py +61 -0
  170. fo_core-2.0.0b2/src/parallel/executor.py +66 -0
  171. fo_core-2.0.0b2/src/parallel/models.py +158 -0
  172. fo_core-2.0.0b2/src/parallel/persistence.py +163 -0
  173. fo_core-2.0.0b2/src/parallel/priority_queue.py +191 -0
  174. fo_core-2.0.0b2/src/parallel/processor.py +554 -0
  175. fo_core-2.0.0b2/src/parallel/resource_manager.py +196 -0
  176. fo_core-2.0.0b2/src/parallel/result.py +86 -0
  177. fo_core-2.0.0b2/src/parallel/resume.py +279 -0
  178. fo_core-2.0.0b2/src/parallel/scheduler.py +117 -0
  179. fo_core-2.0.0b2/src/parallel/throttle.py +155 -0
  180. fo_core-2.0.0b2/src/pipeline/__init__.py +24 -0
  181. fo_core-2.0.0b2/src/pipeline/config.py +145 -0
  182. fo_core-2.0.0b2/src/pipeline/orchestrator.py +744 -0
  183. fo_core-2.0.0b2/src/pipeline/processor_pool.py +198 -0
  184. fo_core-2.0.0b2/src/pipeline/resource_aware_executor.py +406 -0
  185. fo_core-2.0.0b2/src/pipeline/router.py +217 -0
  186. fo_core-2.0.0b2/src/pipeline/stages/__init__.py +25 -0
  187. fo_core-2.0.0b2/src/pipeline/stages/analyzer.py +86 -0
  188. fo_core-2.0.0b2/src/pipeline/stages/postprocessor.py +153 -0
  189. fo_core-2.0.0b2/src/pipeline/stages/preprocessor.py +79 -0
  190. fo_core-2.0.0b2/src/pipeline/stages/writer.py +114 -0
  191. fo_core-2.0.0b2/src/services/__init__.py +47 -0
  192. fo_core-2.0.0b2/src/services/analytics/__init__.py +17 -0
  193. fo_core-2.0.0b2/src/services/analytics/analytics_service.py +425 -0
  194. fo_core-2.0.0b2/src/services/analytics/metrics_calculator.py +131 -0
  195. fo_core-2.0.0b2/src/services/analytics/storage_analyzer.py +287 -0
  196. fo_core-2.0.0b2/src/services/analyzer.py +165 -0
  197. fo_core-2.0.0b2/src/services/audio/__init__.py +58 -0
  198. fo_core-2.0.0b2/src/services/audio/classifier.py +541 -0
  199. fo_core-2.0.0b2/src/services/audio/content_analyzer.py +274 -0
  200. fo_core-2.0.0b2/src/services/audio/data/content_analyzer_lexicon.json +405 -0
  201. fo_core-2.0.0b2/src/services/audio/lexicons.py +191 -0
  202. fo_core-2.0.0b2/src/services/audio/metadata_extractor.py +391 -0
  203. fo_core-2.0.0b2/src/services/audio/organizer.py +404 -0
  204. fo_core-2.0.0b2/src/services/audio/preprocessor.py +378 -0
  205. fo_core-2.0.0b2/src/services/audio/transcriber.py +343 -0
  206. fo_core-2.0.0b2/src/services/audio/utils.py +384 -0
  207. fo_core-2.0.0b2/src/services/auto_tagging/__init__.py +92 -0
  208. fo_core-2.0.0b2/src/services/auto_tagging/content_analyzer.py +467 -0
  209. fo_core-2.0.0b2/src/services/auto_tagging/tag_learning.py +500 -0
  210. fo_core-2.0.0b2/src/services/auto_tagging/tag_recommender.py +406 -0
  211. fo_core-2.0.0b2/src/services/copilot/__init__.py +31 -0
  212. fo_core-2.0.0b2/src/services/copilot/conversation.py +156 -0
  213. fo_core-2.0.0b2/src/services/copilot/engine.py +262 -0
  214. fo_core-2.0.0b2/src/services/copilot/executor.py +460 -0
  215. fo_core-2.0.0b2/src/services/copilot/intent_parser.py +301 -0
  216. fo_core-2.0.0b2/src/services/copilot/models.py +118 -0
  217. fo_core-2.0.0b2/src/services/copilot/rules/__init__.py +26 -0
  218. fo_core-2.0.0b2/src/services/copilot/rules/models.py +202 -0
  219. fo_core-2.0.0b2/src/services/copilot/rules/preview.py +253 -0
  220. fo_core-2.0.0b2/src/services/copilot/rules/rule_manager.py +209 -0
  221. fo_core-2.0.0b2/src/services/deduplication/__init__.py +70 -0
  222. fo_core-2.0.0b2/src/services/deduplication/backup.py +419 -0
  223. fo_core-2.0.0b2/src/services/deduplication/detector.py +308 -0
  224. fo_core-2.0.0b2/src/services/deduplication/document_dedup.py +163 -0
  225. fo_core-2.0.0b2/src/services/deduplication/embedder.py +366 -0
  226. fo_core-2.0.0b2/src/services/deduplication/extractor.py +517 -0
  227. fo_core-2.0.0b2/src/services/deduplication/hasher.py +209 -0
  228. fo_core-2.0.0b2/src/services/deduplication/image_dedup.py +493 -0
  229. fo_core-2.0.0b2/src/services/deduplication/image_utils.py +573 -0
  230. fo_core-2.0.0b2/src/services/deduplication/index.py +207 -0
  231. fo_core-2.0.0b2/src/services/deduplication/quality.py +441 -0
  232. fo_core-2.0.0b2/src/services/deduplication/reporter.py +153 -0
  233. fo_core-2.0.0b2/src/services/deduplication/semantic.py +332 -0
  234. fo_core-2.0.0b2/src/services/deduplication/viewer.py +683 -0
  235. fo_core-2.0.0b2/src/services/intelligence/__init__.py +104 -0
  236. fo_core-2.0.0b2/src/services/intelligence/confidence.py +530 -0
  237. fo_core-2.0.0b2/src/services/intelligence/conflict_resolver.py +412 -0
  238. fo_core-2.0.0b2/src/services/intelligence/directory_prefs.py +251 -0
  239. fo_core-2.0.0b2/src/services/intelligence/feedback_processor.py +445 -0
  240. fo_core-2.0.0b2/src/services/intelligence/folder_learner.py +337 -0
  241. fo_core-2.0.0b2/src/services/intelligence/naming_analyzer.py +457 -0
  242. fo_core-2.0.0b2/src/services/intelligence/pattern_extractor.py +495 -0
  243. fo_core-2.0.0b2/src/services/intelligence/pattern_learner.py +409 -0
  244. fo_core-2.0.0b2/src/services/intelligence/preference_database.py +591 -0
  245. fo_core-2.0.0b2/src/services/intelligence/preference_storage.py +727 -0
  246. fo_core-2.0.0b2/src/services/intelligence/preference_store.py +592 -0
  247. fo_core-2.0.0b2/src/services/intelligence/preference_tracker.py +466 -0
  248. fo_core-2.0.0b2/src/services/intelligence/profile_exporter.py +337 -0
  249. fo_core-2.0.0b2/src/services/intelligence/profile_importer.py +532 -0
  250. fo_core-2.0.0b2/src/services/intelligence/profile_manager.py +499 -0
  251. fo_core-2.0.0b2/src/services/intelligence/profile_merger.py +497 -0
  252. fo_core-2.0.0b2/src/services/intelligence/profile_migrator.py +482 -0
  253. fo_core-2.0.0b2/src/services/intelligence/scoring.py +412 -0
  254. fo_core-2.0.0b2/src/services/intelligence/template_manager.py +556 -0
  255. fo_core-2.0.0b2/src/services/misplacement_detector.py +491 -0
  256. fo_core-2.0.0b2/src/services/pattern_analyzer.py +453 -0
  257. fo_core-2.0.0b2/src/services/search/__init__.py +18 -0
  258. fo_core-2.0.0b2/src/services/search/bm25_index.py +138 -0
  259. fo_core-2.0.0b2/src/services/search/embedding_cache.py +265 -0
  260. fo_core-2.0.0b2/src/services/search/hybrid_retriever.py +347 -0
  261. fo_core-2.0.0b2/src/services/search/vector_index.py +126 -0
  262. fo_core-2.0.0b2/src/services/smart_suggestions.py +525 -0
  263. fo_core-2.0.0b2/src/services/suggestion_feedback.py +401 -0
  264. fo_core-2.0.0b2/src/services/text_processor.py +558 -0
  265. fo_core-2.0.0b2/src/services/video/__init__.py +25 -0
  266. fo_core-2.0.0b2/src/services/video/metadata_extractor.py +291 -0
  267. fo_core-2.0.0b2/src/services/video/organizer.py +171 -0
  268. fo_core-2.0.0b2/src/services/video/scene_detector.py +426 -0
  269. fo_core-2.0.0b2/src/services/vision_processor.py +584 -0
  270. fo_core-2.0.0b2/src/undo/__init__.py +26 -0
  271. fo_core-2.0.0b2/src/undo/_journal.py +29 -0
  272. fo_core-2.0.0b2/src/undo/durable_move.py +1551 -0
  273. fo_core-2.0.0b2/src/undo/models.py +125 -0
  274. fo_core-2.0.0b2/src/undo/rollback.py +680 -0
  275. fo_core-2.0.0b2/src/undo/trash_gc.py +541 -0
  276. fo_core-2.0.0b2/src/undo/undo_manager.py +454 -0
  277. fo_core-2.0.0b2/src/undo/validator.py +580 -0
  278. fo_core-2.0.0b2/src/undo/viewer.py +384 -0
  279. fo_core-2.0.0b2/src/updater/__init__.py +34 -0
  280. fo_core-2.0.0b2/src/updater/background.py +43 -0
  281. fo_core-2.0.0b2/src/updater/checker.py +231 -0
  282. fo_core-2.0.0b2/src/updater/installer.py +413 -0
  283. fo_core-2.0.0b2/src/updater/manager.py +165 -0
  284. fo_core-2.0.0b2/src/updater/sidecar_updater.py +285 -0
  285. fo_core-2.0.0b2/src/updater/state.py +100 -0
  286. fo_core-2.0.0b2/src/utils/__init__.py +15 -0
  287. fo_core-2.0.0b2/src/utils/atomic_io.py +36 -0
  288. fo_core-2.0.0b2/src/utils/atomic_write.py +331 -0
  289. fo_core-2.0.0b2/src/utils/chart_generator.py +150 -0
  290. fo_core-2.0.0b2/src/utils/cli_errors.py +55 -0
  291. fo_core-2.0.0b2/src/utils/epub_enhanced.py +770 -0
  292. fo_core-2.0.0b2/src/utils/file_readers.py +62 -0
  293. fo_core-2.0.0b2/src/utils/log_redact.py +474 -0
  294. fo_core-2.0.0b2/src/utils/readers/__init__.py +379 -0
  295. fo_core-2.0.0b2/src/utils/readers/_base.py +71 -0
  296. fo_core-2.0.0b2/src/utils/readers/archives.py +413 -0
  297. fo_core-2.0.0b2/src/utils/readers/cad.py +564 -0
  298. fo_core-2.0.0b2/src/utils/readers/documents.py +429 -0
  299. fo_core-2.0.0b2/src/utils/readers/ebook.py +119 -0
  300. fo_core-2.0.0b2/src/utils/readers/scientific.py +321 -0
  301. fo_core-2.0.0b2/src/utils/safedir.py +579 -0
  302. fo_core-2.0.0b2/src/utils/text_processing.py +344 -0
  303. fo_core-2.0.0b2/src/watcher/__init__.py +21 -0
  304. fo_core-2.0.0b2/src/watcher/config.py +137 -0
  305. fo_core-2.0.0b2/src/watcher/handler.py +494 -0
  306. fo_core-2.0.0b2/src/watcher/monitor.py +331 -0
  307. fo_core-2.0.0b2/src/watcher/queue.py +219 -0
  308. fo_core-2.0.0b2/tests/test_audio_model.py +189 -0
  309. fo_core-2.0.0b2/tests/test_cli_analytics_integration.py +35 -0
  310. fo_core-2.0.0b2/tests/test_cli_config_integration.py +184 -0
  311. fo_core-2.0.0b2/tests/test_cli_daemon.py +206 -0
  312. fo_core-2.0.0b2/tests/test_cli_dedupe_v2.py +168 -0
  313. fo_core-2.0.0b2/tests/test_cli_interactive.py +200 -0
  314. fo_core-2.0.0b2/tests/test_cli_main.py +330 -0
  315. fo_core-2.0.0b2/tests/test_cli_model_integration.py +78 -0
  316. fo_core-2.0.0b2/tests/test_cli_suggest.py +238 -0
  317. fo_core-2.0.0b2/tests/test_cli_undo_redo_integration.py +114 -0
  318. fo_core-2.0.0b2/tests/test_compatibility.py +585 -0
  319. fo_core-2.0.0b2/tests/test_config_manager.py +784 -0
  320. fo_core-2.0.0b2/tests/test_config_schema.py +163 -0
  321. fo_core-2.0.0b2/tests/test_copilot_engine.py +288 -0
  322. fo_core-2.0.0b2/tests/test_copilot_rules.py +349 -0
  323. fo_core-2.0.0b2/tests/test_helpers.py +136 -0
  324. fo_core-2.0.0b2/tests/test_organizer_audio_transcription.py +617 -0
  325. fo_core-2.0.0b2/tests/test_organizer_integration.py +159 -0
  326. fo_core-2.0.0b2/tests/test_test_helpers.py +221 -0
  327. fo_core-2.0.0b2/tests/test_timestamp_safety.py +89 -0
  328. fo_core-2.0.0b2/tests/test_update_background.py +91 -0
  329. fo_core-2.0.0b2/tests/test_update_state.py +48 -0
  330. fo_core-2.0.0b2/tests/test_updater.py +370 -0
  331. fo_core-2.0.0b2/tests/test_version.py +235 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Yanhao Qiu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,274 @@
1
+ Metadata-Version: 2.4
2
+ Name: fo-core
3
+ Version: 2.0.0b2
4
+ Summary: Streamlined CLI file organizer powered by local AI (Ollama)
5
+ Author-email: fo-core Team <noreply@example.com>
6
+ License: MIT OR Apache-2.0
7
+ Project-URL: Homepage, https://github.com/curdriceaurora/fo-core
8
+ Project-URL: Repository, https://github.com/curdriceaurora/fo-core
9
+ Project-URL: Issues, https://github.com/curdriceaurora/fo-core/issues
10
+ Keywords: file-management,ai,organization,local-llm,privacy
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: End Users/Desktop
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Desktop Environment :: File Managers
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: ollama>=0.1.0
24
+ Requires-Dist: Pillow~=12.2
25
+ Requires-Dist: PyMuPDF~=1.23
26
+ Requires-Dist: python-docx~=1.0
27
+ Requires-Dist: openpyxl~=3.1
28
+ Requires-Dist: python-pptx<2,>=0.6.0
29
+ Requires-Dist: ebooklib<1,>=0.20
30
+ Requires-Dist: beautifulsoup4~=4.12
31
+ Requires-Dist: lxml~=6.1
32
+ Requires-Dist: defusedxml<1,>=0.7.1
33
+ Requires-Dist: mutagen~=1.47
34
+ Requires-Dist: snowballstemmer>=2.2.0
35
+ Requires-Dist: striprtf<1,>=0.0.26
36
+ Requires-Dist: tinytag~=2.2
37
+ Requires-Dist: py7zr<2,>=0.20.0
38
+ Requires-Dist: pypdf~=6.10
39
+ Requires-Dist: rarfile~=4.1
40
+ Requires-Dist: typer[all]~=0.12
41
+ Requires-Dist: rich~=13.0
42
+ Requires-Dist: Pygments>=2.20.0
43
+ Requires-Dist: sqlalchemy~=2.0
44
+ Requires-Dist: alembic~=1.13
45
+ Requires-Dist: Mako>=1.3.11
46
+ Requires-Dist: pyyaml~=6.0
47
+ Requires-Dist: platformdirs~=4.9
48
+ Requires-Dist: pydantic~=2.5
49
+ Requires-Dist: pydantic-settings~=2.1
50
+ Requires-Dist: python-dotenv~=1.0
51
+ Requires-Dist: click~=8.1
52
+ Requires-Dist: watchdog~=3.0
53
+ Requires-Dist: psutil<7,>=6.1
54
+ Requires-Dist: loguru<1,>=0.7.0
55
+ Requires-Dist: httpx~=0.27
56
+ Provides-Extra: dev
57
+ Requires-Dist: pytest~=9.0; extra == "dev"
58
+ Requires-Dist: pytest-asyncio>=1.0; extra == "dev"
59
+ Requires-Dist: pytest-cov~=4.1; extra == "dev"
60
+ Requires-Dist: pytest-mock~=3.12; extra == "dev"
61
+ Requires-Dist: pytest-timeout<2.4.0,>=2.2.0; extra == "dev"
62
+ Requires-Dist: pytest-xdist~=3.5; extra == "dev"
63
+ Requires-Dist: pytest-randomly~=3.15; extra == "dev"
64
+ Requires-Dist: mypy!=1.20.2,~=1.8; extra == "dev"
65
+ Requires-Dist: types-PyYAML~=6.0; extra == "dev"
66
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
67
+ Requires-Dist: black~=26.3; extra == "dev"
68
+ Requires-Dist: isort~=8.0; extra == "dev"
69
+ Requires-Dist: pre-commit~=3.6; extra == "dev"
70
+ Requires-Dist: codespell~=2.2; extra == "dev"
71
+ Requires-Dist: faker~=40.12; extra == "dev"
72
+ Requires-Dist: pytest-benchmark~=4.0; extra == "dev"
73
+ Requires-Dist: interrogate~=1.5; extra == "dev"
74
+ Requires-Dist: pymarkdownlnt>=0.9.25; extra == "dev"
75
+ Requires-Dist: deptry>=0.16.0; extra == "dev"
76
+ Requires-Dist: diff-cover~=7.0; extra == "dev"
77
+ Provides-Extra: cloud
78
+ Requires-Dist: openai~=2.31; extra == "cloud"
79
+ Provides-Extra: llama
80
+ Requires-Dist: llama-cpp-python>=0.2.0; extra == "llama"
81
+ Provides-Extra: mlx
82
+ Requires-Dist: mlx-lm<1,>=0.0.19; platform_system == "Darwin" and extra == "mlx"
83
+ Provides-Extra: claude
84
+ Requires-Dist: anthropic>=0.20.0; extra == "claude"
85
+ Provides-Extra: media
86
+ Requires-Dist: faster-whisper~=1.0; extra == "media"
87
+ Requires-Dist: torch~=2.1; extra == "media"
88
+ Requires-Dist: pydub<1,>=0.25.0; extra == "media"
89
+ Requires-Dist: opencv-python~=4.8; extra == "media"
90
+ Requires-Dist: scenedetect[opencv]<1,>=0.6.0; extra == "media"
91
+ Provides-Extra: dedup-text
92
+ Requires-Dist: numpy<3,>=1.24; extra == "dedup-text"
93
+ Requires-Dist: scikit-learn<1.9,>=1.4; extra == "dedup-text"
94
+ Provides-Extra: dedup-image
95
+ Requires-Dist: fo-core[dedup-text]; extra == "dedup-image"
96
+ Requires-Dist: imagededup<1,>=0.3.0; extra == "dedup-image"
97
+ Requires-Dist: torch~=2.1; extra == "dedup-image"
98
+ Provides-Extra: scientific
99
+ Requires-Dist: h5py~=3.10; extra == "scientific"
100
+ Requires-Dist: netCDF4~=1.6; extra == "scientific"
101
+ Requires-Dist: scipy~=1.11; extra == "scientific"
102
+ Provides-Extra: cad
103
+ Requires-Dist: ezdxf~=1.1; extra == "cad"
104
+ Provides-Extra: build
105
+ Requires-Dist: pyinstaller~=6.0; extra == "build"
106
+ Provides-Extra: docs
107
+ Requires-Dist: mkdocs~=1.5; extra == "docs"
108
+ Requires-Dist: mkdocs-material~=9.5; extra == "docs"
109
+ Requires-Dist: pymdown-extensions~=10.21; extra == "docs"
110
+ Requires-Dist: mkdocs-minify-plugin>=0.8.0; extra == "docs"
111
+ Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "docs"
112
+ Provides-Extra: search
113
+ Requires-Dist: numpy<3,>=1.24; extra == "search"
114
+ Requires-Dist: rank-bm25>=0.2.0; extra == "search"
115
+ Requires-Dist: scikit-learn<1.9,>=1.4; extra == "search"
116
+ Provides-Extra: all
117
+ Requires-Dist: fo-core[build,cad,claude,cloud,dedup-image,dedup-text,dev,llama,media,mlx,scientific,search]; extra == "all"
118
+ Dynamic: license-file
119
+
120
+ # fo-core
121
+
122
+ > Local AI file organizer. Point it at a directory — it categorizes and moves your files using a model running on your own machine. **Local by default**: Ollama runs on-device, no API key required. Cloud providers are optional extras.
123
+
124
+ [![CI](https://github.com/curdriceaurora/fo-core/actions/workflows/ci.yml/badge.svg)](https://github.com/curdriceaurora/fo-core/actions/workflows/ci.yml)
125
+ [![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue)](LICENSE)
126
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
127
+ [![Version](https://img.shields.io/badge/version-2.0.0--beta.1-blue)](CHANGELOG.md)
128
+
129
+ ---
130
+
131
+ ## Prerequisites
132
+
133
+ 1. **Python 3.11 or later** — check with `python3 --version`
134
+ 2. **Ollama** — install from [ollama.ai](https://ollama.ai), then start it:
135
+
136
+ ```bash
137
+ ollama serve
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Install
143
+
144
+ ```bash
145
+ pip install fo-core
146
+ ```
147
+
148
+ Then pull the default AI models (first-time only, ~4 GB total):
149
+
150
+ ```bash
151
+ ollama pull qwen2.5:3b-instruct-q4_K_M
152
+ ollama pull qwen2.5vl:7b-q4_K_M
153
+ ```
154
+
155
+ Verify optional deps for your files:
156
+
157
+ ```bash
158
+ fo doctor ~/Downloads
159
+ ```
160
+
161
+ ---
162
+
163
+ ## Quick Start
164
+
165
+ ```bash
166
+ # Preview what would happen — no files are moved
167
+ fo organize ~/Downloads ~/Organized --dry-run
168
+
169
+ # Run it for real
170
+ fo organize ~/Downloads ~/Organized
171
+
172
+ # Changed your mind?
173
+ fo undo
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Commands
179
+
180
+ | Command | What it does |
181
+ |---------|--------------|
182
+ | `fo organize [SRC] [DEST]` | Organize files using AI categorization |
183
+ | `fo preview [SRC]` | Dry-run preview without moving files |
184
+ | `fo search [QUERY]` | Full-text search across files |
185
+ | `fo analyze [DIR]` | File statistics and analysis |
186
+ | `fo dedupe` | Find and remove duplicate files |
187
+ | `fo suggest` | AI-powered organization suggestions |
188
+ | `fo autotag` | Auto-tag files based on content |
189
+ | `fo copilot` | Natural-language assistant |
190
+ | `fo rules` | Manage organization rules (YAML) |
191
+ | `fo config show\|list\|edit` | View or update configuration |
192
+ | `fo doctor [DIR]` | Scan a directory and recommend optional deps |
193
+ | `fo daemon start\|stop` | Background file watcher |
194
+ | `fo undo / redo / history` | Operation history and rollback |
195
+ | `fo model` | Select or inspect AI models |
196
+ | `fo benchmark` | Performance benchmarks |
197
+ | `fo setup` | Interactive setup wizard |
198
+
199
+ Full flag documentation: [docs/cli-reference.md](docs/cli-reference.md)
200
+
201
+ ---
202
+
203
+ ## AI Providers
204
+
205
+ **Default**: Ollama — runs entirely on your machine, no API key needed.
206
+
207
+ Cloud providers are optional extras:
208
+
209
+ | Provider | Install | Works with |
210
+ |----------|---------|------------|
211
+ | OpenAI-compatible | `pip install "fo-core[cloud]"` | OpenAI, LM Studio, vLLM, Groq |
212
+ | Anthropic Claude | `pip install "fo-core[claude]"` | Claude text + vision models |
213
+ | llama.cpp | `pip install "fo-core[llama]"` | GGUF models — no Ollama required |
214
+ | MLX (Apple Silicon) | `pip install "fo-core[mlx]"` | MLX-optimized local models |
215
+
216
+ ---
217
+
218
+ ## Optional Feature Packs
219
+
220
+ Core file types (PDF, DOCX, XLSX, PPTX, EPUB, ZIP) work out of the box. RAR also works but requires a system-level `unrar` or `unar` binary. Install extras for additional capabilities:
221
+
222
+ | Pack | Install | Adds |
223
+ |------|---------|------|
224
+ | `media` | `pip install "fo-core[media]"` | Audio transcription (faster-whisper) + video scene detection. Use `fo organize --transcribe-audio` for content-aware audio categorization, or verify the install with `fo benchmark run --suite audio --transcribe-smoke`. |
225
+ | `dedup-text` | `pip install "fo-core[dedup-text]"` | TF-IDF/cosine text deduplication |
226
+ | `dedup-image` | `pip install "fo-core[dedup-image]"` | Image similarity deduplication |
227
+ | `scientific` | `pip install "fo-core[scientific]"` | HDF5, NetCDF, MATLAB formats |
228
+ | `cad` | `pip install "fo-core[cad]"` | DXF/DWG CAD files |
229
+ | `search` | `pip install "fo-core[search]"` | BM25 + vector search |
230
+ | `all` | `pip install "fo-core[all]"` | All of the above |
231
+
232
+ ---
233
+
234
+ ## Configuration
235
+
236
+ Config lives in `~/.config/fo/config.yaml`. Override the location with the `FO_CONFIG` environment variable.
237
+
238
+ ```bash
239
+ fo config show # view all settings
240
+ fo config edit --text-model qwen2.5:3b-instruct-q4_K_M # change text model
241
+ fo config edit --device auto # change device
242
+ ```
243
+
244
+ Full configuration reference: [docs/CONFIGURATION.md](docs/CONFIGURATION.md)
245
+
246
+ ---
247
+
248
+ ## Documentation
249
+
250
+ | Doc | Contents |
251
+ |-----|----------|
252
+ | [Getting Started](docs/getting-started.md) | Installation options, first run, platform notes |
253
+ | [CLI Reference](docs/cli-reference.md) | Every command and flag |
254
+ | [Configuration](docs/CONFIGURATION.md) | All config keys explained |
255
+ | [FAQ](docs/faq.md) | Common questions and troubleshooting |
256
+ | [Troubleshooting](docs/troubleshooting.md) | Diagnosing connection and model issues |
257
+
258
+ ---
259
+
260
+ ## Contributing / Development
261
+
262
+ See [DEVELOPER.md](DEVELOPER.md) for architecture, local setup, testing, and contribution guidelines.
263
+
264
+ ---
265
+
266
+ ## Releases
267
+
268
+ Currently `2.0.0-beta.1`. The acceptance criteria that were required for this
269
+ promotion and the contract with public pre-release testers are documented in
270
+ [docs/release/beta-criteria.md](docs/release/beta-criteria.md).
271
+
272
+ ## License
273
+
274
+ MIT OR Apache-2.0
@@ -0,0 +1,155 @@
1
+ # fo-core
2
+
3
+ > Local AI file organizer. Point it at a directory — it categorizes and moves your files using a model running on your own machine. **Local by default**: Ollama runs on-device, no API key required. Cloud providers are optional extras.
4
+
5
+ [![CI](https://github.com/curdriceaurora/fo-core/actions/workflows/ci.yml/badge.svg)](https://github.com/curdriceaurora/fo-core/actions/workflows/ci.yml)
6
+ [![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue)](LICENSE)
7
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
8
+ [![Version](https://img.shields.io/badge/version-2.0.0--beta.1-blue)](CHANGELOG.md)
9
+
10
+ ---
11
+
12
+ ## Prerequisites
13
+
14
+ 1. **Python 3.11 or later** — check with `python3 --version`
15
+ 2. **Ollama** — install from [ollama.ai](https://ollama.ai), then start it:
16
+
17
+ ```bash
18
+ ollama serve
19
+ ```
20
+
21
+ ---
22
+
23
+ ## Install
24
+
25
+ ```bash
26
+ pip install fo-core
27
+ ```
28
+
29
+ Then pull the default AI models (first-time only, ~4 GB total):
30
+
31
+ ```bash
32
+ ollama pull qwen2.5:3b-instruct-q4_K_M
33
+ ollama pull qwen2.5vl:7b-q4_K_M
34
+ ```
35
+
36
+ Verify optional deps for your files:
37
+
38
+ ```bash
39
+ fo doctor ~/Downloads
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Quick Start
45
+
46
+ ```bash
47
+ # Preview what would happen — no files are moved
48
+ fo organize ~/Downloads ~/Organized --dry-run
49
+
50
+ # Run it for real
51
+ fo organize ~/Downloads ~/Organized
52
+
53
+ # Changed your mind?
54
+ fo undo
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Commands
60
+
61
+ | Command | What it does |
62
+ |---------|--------------|
63
+ | `fo organize [SRC] [DEST]` | Organize files using AI categorization |
64
+ | `fo preview [SRC]` | Dry-run preview without moving files |
65
+ | `fo search [QUERY]` | Full-text search across files |
66
+ | `fo analyze [DIR]` | File statistics and analysis |
67
+ | `fo dedupe` | Find and remove duplicate files |
68
+ | `fo suggest` | AI-powered organization suggestions |
69
+ | `fo autotag` | Auto-tag files based on content |
70
+ | `fo copilot` | Natural-language assistant |
71
+ | `fo rules` | Manage organization rules (YAML) |
72
+ | `fo config show\|list\|edit` | View or update configuration |
73
+ | `fo doctor [DIR]` | Scan a directory and recommend optional deps |
74
+ | `fo daemon start\|stop` | Background file watcher |
75
+ | `fo undo / redo / history` | Operation history and rollback |
76
+ | `fo model` | Select or inspect AI models |
77
+ | `fo benchmark` | Performance benchmarks |
78
+ | `fo setup` | Interactive setup wizard |
79
+
80
+ Full flag documentation: [docs/cli-reference.md](docs/cli-reference.md)
81
+
82
+ ---
83
+
84
+ ## AI Providers
85
+
86
+ **Default**: Ollama — runs entirely on your machine, no API key needed.
87
+
88
+ Cloud providers are optional extras:
89
+
90
+ | Provider | Install | Works with |
91
+ |----------|---------|------------|
92
+ | OpenAI-compatible | `pip install "fo-core[cloud]"` | OpenAI, LM Studio, vLLM, Groq |
93
+ | Anthropic Claude | `pip install "fo-core[claude]"` | Claude text + vision models |
94
+ | llama.cpp | `pip install "fo-core[llama]"` | GGUF models — no Ollama required |
95
+ | MLX (Apple Silicon) | `pip install "fo-core[mlx]"` | MLX-optimized local models |
96
+
97
+ ---
98
+
99
+ ## Optional Feature Packs
100
+
101
+ Core file types (PDF, DOCX, XLSX, PPTX, EPUB, ZIP) work out of the box. RAR also works but requires a system-level `unrar` or `unar` binary. Install extras for additional capabilities:
102
+
103
+ | Pack | Install | Adds |
104
+ |------|---------|------|
105
+ | `media` | `pip install "fo-core[media]"` | Audio transcription (faster-whisper) + video scene detection. Use `fo organize --transcribe-audio` for content-aware audio categorization, or verify the install with `fo benchmark run --suite audio --transcribe-smoke`. |
106
+ | `dedup-text` | `pip install "fo-core[dedup-text]"` | TF-IDF/cosine text deduplication |
107
+ | `dedup-image` | `pip install "fo-core[dedup-image]"` | Image similarity deduplication |
108
+ | `scientific` | `pip install "fo-core[scientific]"` | HDF5, NetCDF, MATLAB formats |
109
+ | `cad` | `pip install "fo-core[cad]"` | DXF/DWG CAD files |
110
+ | `search` | `pip install "fo-core[search]"` | BM25 + vector search |
111
+ | `all` | `pip install "fo-core[all]"` | All of the above |
112
+
113
+ ---
114
+
115
+ ## Configuration
116
+
117
+ Config lives in `~/.config/fo/config.yaml`. Override the location with the `FO_CONFIG` environment variable.
118
+
119
+ ```bash
120
+ fo config show # view all settings
121
+ fo config edit --text-model qwen2.5:3b-instruct-q4_K_M # change text model
122
+ fo config edit --device auto # change device
123
+ ```
124
+
125
+ Full configuration reference: [docs/CONFIGURATION.md](docs/CONFIGURATION.md)
126
+
127
+ ---
128
+
129
+ ## Documentation
130
+
131
+ | Doc | Contents |
132
+ |-----|----------|
133
+ | [Getting Started](docs/getting-started.md) | Installation options, first run, platform notes |
134
+ | [CLI Reference](docs/cli-reference.md) | Every command and flag |
135
+ | [Configuration](docs/CONFIGURATION.md) | All config keys explained |
136
+ | [FAQ](docs/faq.md) | Common questions and troubleshooting |
137
+ | [Troubleshooting](docs/troubleshooting.md) | Diagnosing connection and model issues |
138
+
139
+ ---
140
+
141
+ ## Contributing / Development
142
+
143
+ See [DEVELOPER.md](DEVELOPER.md) for architecture, local setup, testing, and contribution guidelines.
144
+
145
+ ---
146
+
147
+ ## Releases
148
+
149
+ Currently `2.0.0-beta.1`. The acceptance criteria that were required for this
150
+ promotion and the contract with public pre-release testers are documented in
151
+ [docs/release/beta-criteria.md](docs/release/beta-criteria.md).
152
+
153
+ ## License
154
+
155
+ MIT OR Apache-2.0