micro-cc 0.2.2__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. {micro_cc-0.2.2 → micro_cc-0.2.4}/PKG-INFO +1 -1
  2. {micro_cc-0.2.2 → micro_cc-0.2.4}/pyproject.toml +1 -1
  3. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/start_live_.py +69 -41
  4. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/PKG-INFO +1 -1
  5. {micro_cc-0.2.2 → micro_cc-0.2.4}/README.md +0 -0
  6. {micro_cc-0.2.2 → micro_cc-0.2.4}/setup.cfg +0 -0
  7. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/__init__.py +0 -0
  8. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/__init__.py +0 -0
  9. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/_cookies.py +0 -0
  10. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/_md_convert.py +0 -0
  11. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/browser_manager.py +0 -0
  12. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/simpletextbrowser.py +0 -0
  13. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/cache/__init__.py +0 -0
  14. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/cache/redis_cache.py +0 -0
  15. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/claude_loop_.py +0 -0
  16. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/execute_tool.py +0 -0
  17. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/__init__.py +0 -0
  18. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/anthropic.py +0 -0
  19. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/litellm.py +0 -0
  20. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/ollama.py +0 -0
  21. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/schema.py +0 -0
  22. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/__init__.py +0 -0
  23. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/md_render_.py +0 -0
  24. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/microcc-styles.tcss +0 -0
  25. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/window_overlay_.py +0 -0
  26. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/SKILL.md +0 -0
  27. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -0
  28. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  29. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  30. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -0
  31. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  32. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -0
  33. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  34. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  35. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -0
  36. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  37. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  38. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  39. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -0
  40. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  41. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -0
  42. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  43. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -0
  44. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  45. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  46. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -0
  47. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  48. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -0
  49. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  50. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  51. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -0
  52. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  53. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  54. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  55. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  56. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  57. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  58. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  59. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  60. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -0
  61. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  62. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  63. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  64. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -0
  65. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  66. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  67. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -0
  68. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  69. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  70. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  71. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -0
  72. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -0
  73. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  74. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  75. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  76. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  77. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -0
  78. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  79. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  80. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -0
  81. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  82. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -0
  83. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  84. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  85. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -0
  86. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  87. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  88. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -0
  89. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -0
  90. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  91. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  92. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -0
  93. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  94. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -0
  95. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  96. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  97. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -0
  98. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  99. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -0
  100. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  101. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  102. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  103. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  104. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -0
  105. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  106. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -0
  107. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  108. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/github/SKILL.md +0 -0
  109. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/SKILL.md +0 -0
  110. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/editing.md +0 -0
  111. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/pptxgenjs.md +0 -0
  112. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/__init__.py +0 -0
  113. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/add_slide.py +0 -0
  114. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/clean.py +0 -0
  115. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  116. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/merge_runs.py +0 -0
  117. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -0
  118. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/pack.py +0 -0
  119. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/soffice.py +0 -0
  120. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/unpack.py +0 -0
  121. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validate.py +0 -0
  122. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/__init__.py +0 -0
  123. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/base.py +0 -0
  124. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/docx.py +0 -0
  125. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/pptx.py +0 -0
  126. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/redlining.py +0 -0
  127. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/thumbnail.py +0 -0
  128. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/skill_loader.py +0 -0
  129. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/xlsx/SKILL.md +0 -0
  130. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tests/__init__.py +0 -0
  131. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tests/test_messages.py +0 -0
  132. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/__init__.py +0 -0
  133. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/bash_tool.py +0 -0
  134. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/browser_tool_.py +0 -0
  135. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/computer_tool_.py +0 -0
  136. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/file_tools_.py +0 -0
  137. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/mcp_client_.py +0 -0
  138. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/plan_tools_.py +0 -0
  139. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/search_tool_.py +0 -0
  140. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/skill_tools_.py +0 -0
  141. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/vision_tools_.py +0 -0
  142. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/web_tools_.py +0 -0
  143. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/__init__.py +0 -0
  144. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/annotate_.py +0 -0
  145. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/claude_md_loader.py +0 -0
  146. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/file_watcher_.py +0 -0
  147. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/helpers.py +0 -0
  148. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/msg_store_.py +0 -0
  149. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/process_tracker.py +0 -0
  150. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/tokenization.py +0 -0
  151. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/tokenization_simple.py +0 -0
  152. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/utils.py +0 -0
  153. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/web_.py +0 -0
  154. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/SOURCES.txt +0 -0
  155. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/dependency_links.txt +0 -0
  156. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/entry_points.txt +0 -0
  157. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/requires.txt +0 -0
  158. {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micro-cc
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Harness that gives frontier models full system access — shell, filesystem, browser, MCP — running directly on the metal.
5
5
  Author: George Salapa
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "micro-cc"
7
- version = "0.2.02"
7
+ version = "0.2.04"
8
8
  description = "Harness that gives frontier models full system access — shell, filesystem, browser, MCP — running directly on the metal."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -1,7 +1,9 @@
1
1
  import asyncio
2
2
  import os
3
3
  import re
4
+ import subprocess
4
5
  import sys
6
+ import platform
5
7
  from micro_cc.claude_loop_ import claude_loop
6
8
  from micro_cc.utils.msg_store_ import load_msgs, rewind_msgs, summarize_and_trim, store_msgs, erase_msgs, erase_summary
7
9
  from micro_cc.utils.tokenization_simple import token_stats
@@ -20,12 +22,58 @@ from textual.widgets import LoadingIndicator
20
22
  from textual.widgets import OptionList
21
23
  from collections import deque
22
24
 
25
+ # --------------- sleep inhibitor ---------------
26
+ # macOS: caffeinate -i (prevent idle sleep)
27
+ # Windows: SetThreadExecutionState (prevent idle sleep)
28
+ # Linux: systemd-inhibit (prevent idle sleep)
29
+
30
+ def _inhibit_sleep():
31
+ """Start preventing system idle sleep. Returns a handle to pass to _allow_sleep()."""
32
+ _sys = platform.system()
33
+ if _sys == "Darwin":
34
+ return subprocess.Popen(["caffeinate", "-i"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
35
+ elif _sys == "Windows":
36
+ try:
37
+ import ctypes
38
+ ES_CONTINUOUS = 0x80000000
39
+ ES_SYSTEM_REQUIRED = 0x00000001
40
+ ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED)
41
+ except Exception:
42
+ pass
43
+ return "windows"
44
+ elif _sys == "Linux":
45
+ try:
46
+ return subprocess.Popen(
47
+ ["systemd-inhibit", "--what=idle", "--who=micro-cc", "--why=AI streaming", "sleep", "infinity"],
48
+ stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
49
+ )
50
+ except FileNotFoundError:
51
+ return None
52
+ return None
53
+
54
+ def _allow_sleep(handle):
55
+ """Release the sleep inhibition."""
56
+ if handle is None:
57
+ return
58
+ if isinstance(handle, subprocess.Popen):
59
+ handle.terminate()
60
+ handle.wait()
61
+ elif handle == "windows":
62
+ try:
63
+ import ctypes
64
+ ES_CONTINUOUS = 0x80000000
65
+ ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS)
66
+ except Exception:
67
+ pass
68
+
23
69
  class PromptInput(TextArea):
24
70
  """Multiline input: Enter submits, Shift+Enter inserts newline."""
25
71
 
26
72
  _paste_store = {}
27
73
  _paste_id = 0
28
74
  _PASTE_THRESH = 200
75
+ SLASH_COMMANDS = ["/clear", "/copy", "/exit", "/model", "/rewind"]
76
+ BRACKETS = {"(": ")", "[": "]", "{": "}", '"': '"', "'": "'"}
29
77
 
30
78
  def _handle_paste(self, text):
31
79
  """Intercept large pastes with a placeholder, pass short ones through."""
@@ -42,11 +90,30 @@ class PromptInput(TextArea):
42
90
  event.prevent_default()
43
91
  self._handle_paste(event.text)
44
92
 
93
+ def update_suggestion(self):
94
+ text = self.text
95
+ if text.startswith("/") and "\n" not in text:
96
+ matches = [c for c in self.SLASH_COMMANDS if c.startswith(text)]
97
+ if matches:
98
+ self.suggestion = matches[0][len(text) :]
99
+ return
100
+ self.suggestion = ""
101
+
45
102
  async def _on_key(self, event):
46
103
  if event.key in ("shift+enter", "ctrl+j"):
47
104
  event.prevent_default()
48
105
  self.insert("\n")
49
106
  return
107
+ if event.key == "tab":
108
+ if self.suggestion:
109
+ self.insert(self.suggestion)
110
+ event.prevent_default()
111
+ event.stop()
112
+ return
113
+ if event.character in self.BRACKETS:
114
+ self.insert(event.character + self.BRACKETS[event.character])
115
+ self.move_cursor_relative(columns=-1)
116
+ event.prevent_default()
50
117
  if event.key == "enter":
51
118
  event.prevent_default()
52
119
  self.post_message(self.Submitted(self))
@@ -159,23 +226,6 @@ class MicroApp(App):
159
226
  prompt.focus()
160
227
  prompt._handle_paste(event.text)
161
228
 
162
- SLASH_COMMANDS = ["/clear", "/copy", "/exit", "/model", "/rewind"]
163
-
164
- def on_text_area_changed(self, event):
165
- text = event.text_area.text.strip()
166
- slash_picker = self.query_one("#slash-picker")
167
-
168
- if text.startswith("/") and "\n" not in text:
169
- matches = [c for c in self.SLASH_COMMANDS if c.startswith(text)]
170
- if matches:
171
- slash_picker.clear_options()
172
- for c in matches:
173
- slash_picker.add_option(c)
174
- slash_picker.display = True
175
- slash_picker.focus()
176
- return
177
- slash_picker.display = False
178
-
179
229
  def get_rewind_options(self, messages):
180
230
  """Last 10 user messages for the rewind picker, oldest-first, 80-char labels."""
181
231
  options = []
@@ -196,7 +246,6 @@ class MicroApp(App):
196
246
  yield LoadingIndicator(id="loader")
197
247
  yield OptionList(*MicroApp.MODEL_OPTIONS, id="model-picker")
198
248
  yield OptionList(id="rewind-picker")
199
- yield OptionList(id="slash-picker")
200
249
  yield PromptInput(id="prompt")
201
250
  yield Static("", id="statusbar")
202
251
 
@@ -543,14 +592,6 @@ class MicroApp(App):
543
592
  self._refresh_status()
544
593
  self.query_one(PromptInput).focus()
545
594
 
546
- elif picker_id == "slash-picker":
547
- slash_cmd = str(event.option.prompt)
548
- prompt = self.query_one(PromptInput)
549
- prompt.clear()
550
- prompt.insert(slash_cmd + " ")
551
- prompt.focus()
552
- self.query_one("#slash-picker").display = False
553
-
554
595
  elif picker_id == "rewind-picker":
555
596
  content_prefix = str(event.option.prompt)
556
597
  self.query_one("#rewind-picker").display = False
@@ -613,6 +654,7 @@ class MicroApp(App):
613
654
  tool_call_rows = {} # tool_id → MessageRow
614
655
  approval_rows = {} # tool_id → MessageRow
615
656
 
657
+ sleep_handle = _inhibit_sleep()
616
658
  try:
617
659
  async for event in claude_loop(
618
660
  query=query,
@@ -624,19 +666,6 @@ class MicroApp(App):
624
666
  ):
625
667
  etype = event.get("type")
626
668
 
627
- ## TODO
628
- # We need to implement a check and if claude_loop is active
629
- # we have to prevent macOs going sleeping
630
- # example:
631
- # useEffect(() => {
632
- # if (isLoading && !isWaitingForApproval && !isShowingLocalJSXCommand) {
633
- # startPreventSleep();
634
- # return () => stopPreventSleep();
635
- # }
636
- # }, [isLoading, isWaitingForApproval, isShowingLocalJSXCommand]);
637
- # const sessionStatus: TabStatusKind = isWaitingForApproval || isShowingLocalJSXCommand ? 'waiting' : isLoading ? 'busy' : 'idle';
638
- # const waitingFor = sessionStatus !== 'waiting' ? undefined : toolUseConfirmQueue.length > 0 ? `approve ${toolUseConfirmQueue[0]!.tool.name}` : pendingWorkerRequest ? 'worker request' : pendingSandboxRequest ? 'sandbox request' : isShowingLocalJSXCommand ? 'dialog open' : 'input needed';
639
-
640
669
  # Persist only when msgs actually changed
641
670
  if etype in ("tool_call", "tool_result", "final_text", "done", "error"):
642
671
  store_msgs(self._project_dir, self._loop_msgs)
@@ -706,12 +735,10 @@ class MicroApp(App):
706
735
  await container.mount(row)
707
736
  self._scroll_to_bottom()
708
737
 
709
- self.query_one(PromptInput).disabled = False
710
738
  self.query_one(PromptInput).focus()
711
739
  self._pending_approval = asyncio.Event()
712
740
  self._approval_result = None
713
741
  await self._pending_approval.wait()
714
- self.query_one(PromptInput).disabled = True
715
742
 
716
743
  approval["approved"] = self._approval_result
717
744
  if tool_id in approval_rows:
@@ -752,6 +779,7 @@ class MicroApp(App):
752
779
  await container.mount(MessageRow(err))
753
780
  self._scroll_to_bottom()
754
781
  finally:
782
+ _allow_sleep(sleep_handle)
755
783
  self._pending_approval = None
756
784
  self._finalize_streaming()
757
785
  self.query_one("#loader").display = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micro-cc
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Harness that gives frontier models full system access — shell, filesystem, browser, MCP — running directly on the metal.
5
5
  Author: George Salapa
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes