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.
- {micro_cc-0.2.2 → micro_cc-0.2.4}/PKG-INFO +1 -1
- {micro_cc-0.2.2 → micro_cc-0.2.4}/pyproject.toml +1 -1
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/start_live_.py +69 -41
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/PKG-INFO +1 -1
- {micro_cc-0.2.2 → micro_cc-0.2.4}/README.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/setup.cfg +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/_cookies.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/_md_convert.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/browser_manager.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/browser/simpletextbrowser.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/cache/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/cache/redis_cache.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/claude_loop_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/execute_tool.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/anthropic.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/litellm.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/ollama.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/models/schema.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/md_render_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/microcc-styles.tcss +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/screens/window_overlay_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/SKILL.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/github/SKILL.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/SKILL.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/editing.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/pptxgenjs.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/add_slide.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/clean.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/merge_runs.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/pack.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/soffice.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/unpack.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validate.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/base.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/docx.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/pptx.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/redlining.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/thumbnail.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/skill_loader.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/xlsx/SKILL.md +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tests/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tests/test_messages.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/bash_tool.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/browser_tool_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/computer_tool_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/file_tools_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/mcp_client_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/plan_tools_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/search_tool_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/skill_tools_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/vision_tools_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/tools/web_tools_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/__init__.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/annotate_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/claude_md_loader.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/file_watcher_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/helpers.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/msg_store_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/process_tracker.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/tokenization.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/tokenization_simple.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/utils/utils.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/web_.py +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/SOURCES.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/dependency_links.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/entry_points.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/requires.txt +0 -0
- {micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "micro-cc"
|
|
7
|
-
version = "0.2.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/DMMono-OFL.txt
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Gloock-OFL.txt
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Italiana-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-Light.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-Medium.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Jura-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Bold.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Italic.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-OFL.txt
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Lora-Regular.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-OFL.txt
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-OFL.txt
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/__init__.py
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/helpers/merge_runs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/__init__.py
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/base.py
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/docx.py
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/pptx.py
RENAMED
|
File without changes
|
{micro_cc-0.2.2 → micro_cc-0.2.4}/src/micro_cc/skills/pptx/scripts/office/validators/redlining.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|