git-oops 1.0.3__tar.gz → 1.0.3.post1__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.
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/PKG-INFO +3 -3
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/README.md +2 -2
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/__init__.py +2 -2
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/cli.py +6 -5
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops.egg-info/PKG-INFO +3 -3
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/pyproject.toml +1 -1
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/setup.py +1 -1
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/__init__.py +2 -2
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/cli.py +6 -5
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/tests/test_auto_updater.py +24 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/LICENSE +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/__main__.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/blackbox.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/circuit_breaker.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/consensus.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/engine.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/firewall.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/guardian.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/hardware.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/hooks.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/hud.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/local_llm.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/mcp_server.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/replay.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/reviewer.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/rules.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/salvage.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/sentinel.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/shadow.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/solver.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/squeezer.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/supply_chain.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/tester.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/ui.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/updater.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops/watchdog.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops.egg-info/SOURCES.txt +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops.egg-info/dependency_links.txt +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops.egg-info/entry_points.txt +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops.egg-info/requires.txt +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/git_oops.egg-info/top_level.txt +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/setup.cfg +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/blackbox.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/circuit_breaker.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/consensus.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/engine.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/firewall.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/guardian.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/hardware.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/hooks.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/hud.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/local_llm.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/mcp_server.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/replay.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/reviewer.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/rules.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/salvage.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/sentinel.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/shadow.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/solver.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/squeezer.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/supply_chain.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/tester.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/ui.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/updater.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/src/watchdog.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/tests/test_agent_harness.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/tests/test_oops.py +0 -0
- {git_oops-1.0.3 → git_oops-1.0.3.post1}/tests/test_v1_legend.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-oops
|
|
3
|
-
Version: 1.0.3
|
|
3
|
+
Version: 1.0.3.post1
|
|
4
4
|
Summary: The Dual-Mode Terminal Crash Fixer & Autonomous AI Agent Safety Harness (The Final Legend Edition).
|
|
5
5
|
Author: Hao
|
|
6
6
|
License-Expression: MIT
|
|
@@ -19,7 +19,7 @@ Dynamic: requires-python
|
|
|
19
19
|
|
|
20
20
|
<div align="center">
|
|
21
21
|
|
|
22
|
-
# ⚡ git-oops v1.0.3 (The Final Legend Edition)
|
|
22
|
+
# ⚡ git-oops v1.0.3.post1 (The Final Legend Edition)
|
|
23
23
|
|
|
24
24
|
### *The Zero-Step Autonomous AI Agent Safety Harness & Terminal Crash Interceptor.*
|
|
25
25
|
**Human Mode: Roasted by a Staff Engineer │ Agent Mode: The Headless Shield for Coding Agents**
|
|
@@ -27,7 +27,7 @@ Dynamic: requires-python
|
|
|
27
27
|

|
|
28
28
|
|
|
29
29
|
[](https://github.com/Hao610/git-oops/actions/workflows/ci.yml)
|
|
30
|
-
[](https://github.com/Hao610/git-oops/releases)
|
|
30
|
+
[](https://github.com/Hao610/git-oops/releases)
|
|
31
31
|
[](https://github.com/Hao610/git-oops)
|
|
32
32
|
[](https://pypi.org/project/git-oops/)
|
|
33
33
|
[](https://pypi.org/project/git-oops/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
# ⚡ git-oops v1.0.3 (The Final Legend Edition)
|
|
3
|
+
# ⚡ git-oops v1.0.3.post1 (The Final Legend Edition)
|
|
4
4
|
|
|
5
5
|
### *The Zero-Step Autonomous AI Agent Safety Harness & Terminal Crash Interceptor.*
|
|
6
6
|
**Human Mode: Roasted by a Staff Engineer │ Agent Mode: The Headless Shield for Coding Agents**
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|

|
|
9
9
|
|
|
10
10
|
[](https://github.com/Hao610/git-oops/actions/workflows/ci.yml)
|
|
11
|
-
[](https://github.com/Hao610/git-oops/releases)
|
|
11
|
+
[](https://github.com/Hao610/git-oops/releases)
|
|
12
12
|
[](https://github.com/Hao610/git-oops)
|
|
13
13
|
[](https://pypi.org/project/git-oops/)
|
|
14
14
|
[](https://pypi.org/project/git-oops/)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"""
|
|
2
2
|
git-oops: The Autonomous Terminal Crash Fixer & AI Agent Safety Harness.
|
|
3
|
-
Version 1.0.3 (The Final Legend Edition)
|
|
3
|
+
Version 1.0.3.post1 (The Final Legend Edition)
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
__version__ = "1.0.3"
|
|
6
|
+
__version__ = "1.0.3.post1"
|
|
7
7
|
|
|
8
8
|
from git_oops.hooks import ensure_auto_hooks
|
|
9
9
|
from git_oops.rules import trigger_ota_update_background
|
|
@@ -68,6 +68,7 @@ def main():
|
|
|
68
68
|
prog="git-oops",
|
|
69
69
|
description="Brutally honest terminal crash fixer with daily spend-protection circuit breaker."
|
|
70
70
|
)
|
|
71
|
+
parser.add_argument("-v", "--version", action="version", version="git-oops v1.0.3.post1 (The Final Legend Edition)")
|
|
71
72
|
parser.add_argument("-f", "--file", help="Path to the file that crashed", default=None)
|
|
72
73
|
parser.add_argument("-e", "--error", help="Error message or traceback string", default=None)
|
|
73
74
|
parser.add_argument("-b", "--budget", help="Daily API spend ceiling in USD (default: $1.00)", type=float, default=saved_cfg.get("daily_budget", 1.0))
|
|
@@ -75,11 +76,11 @@ def main():
|
|
|
75
76
|
parser.add_argument("--set-personality", help="Permanently save default roast persona", choices=["staff", "kernel", "chef", "passive_aggressive"])
|
|
76
77
|
parser.add_argument("--set-budget", help="Permanently save default daily spend budget in USD", type=float)
|
|
77
78
|
parser.add_argument("-y", "--yes", help="Auto-apply patch without interactive prompt", action="store_true")
|
|
78
|
-
parser.add_argument("--undo", help="Roll back the last applied patch on target file", default=None)
|
|
79
|
-
parser.add_argument("--run", help="Execute a command and auto-catch its crash (e.g.
|
|
80
|
-
parser.add_argument("--status", help="Show today's accumulated API spend", action="store_true")
|
|
81
|
-
parser.add_argument("--agent", "--json", dest="agent_mode", help="Headless Agent mode: emits machine-readable JSON without ANSI codes", action="store_true")
|
|
82
|
-
parser.add_argument("--mcp", help="Start git-oops as a native Model Context Protocol (MCP) server over stdio", action="store_true")
|
|
79
|
+
parser.add_argument("-u", "--undo", help="Roll back the last applied patch on target file", default=None)
|
|
80
|
+
parser.add_argument("-r", "--run", help="Execute a command and auto-catch its crash (e.g. -r 'python app.py')", default=None)
|
|
81
|
+
parser.add_argument("-s", "--status", help="Show today's accumulated API spend", action="store_true")
|
|
82
|
+
parser.add_argument("-a", "--agent", "--json", dest="agent_mode", help="Headless Agent mode: emits machine-readable JSON without ANSI codes", action="store_true")
|
|
83
|
+
parser.add_argument("-m", "--mcp", help="Start git-oops as a native Model Context Protocol (MCP) server over stdio", action="store_true")
|
|
83
84
|
parser.add_argument("--rewind", help="Flight Recorder: rewind codebase to a previous step ID", type=int, default=None)
|
|
84
85
|
parser.add_argument("--flight-log", help="Display recent blackbox flight recorder steps", action="store_true")
|
|
85
86
|
parser.add_argument("--shadow", help="Run repair verification inside an isolated temporary shadow workspace", action="store_true")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-oops
|
|
3
|
-
Version: 1.0.3
|
|
3
|
+
Version: 1.0.3.post1
|
|
4
4
|
Summary: The Dual-Mode Terminal Crash Fixer & Autonomous AI Agent Safety Harness (The Final Legend Edition).
|
|
5
5
|
Author: Hao
|
|
6
6
|
License-Expression: MIT
|
|
@@ -19,7 +19,7 @@ Dynamic: requires-python
|
|
|
19
19
|
|
|
20
20
|
<div align="center">
|
|
21
21
|
|
|
22
|
-
# ⚡ git-oops v1.0.3 (The Final Legend Edition)
|
|
22
|
+
# ⚡ git-oops v1.0.3.post1 (The Final Legend Edition)
|
|
23
23
|
|
|
24
24
|
### *The Zero-Step Autonomous AI Agent Safety Harness & Terminal Crash Interceptor.*
|
|
25
25
|
**Human Mode: Roasted by a Staff Engineer │ Agent Mode: The Headless Shield for Coding Agents**
|
|
@@ -27,7 +27,7 @@ Dynamic: requires-python
|
|
|
27
27
|

|
|
28
28
|
|
|
29
29
|
[](https://github.com/Hao610/git-oops/actions/workflows/ci.yml)
|
|
30
|
-
[](https://github.com/Hao610/git-oops/releases)
|
|
30
|
+
[](https://github.com/Hao610/git-oops/releases)
|
|
31
31
|
[](https://github.com/Hao610/git-oops)
|
|
32
32
|
[](https://pypi.org/project/git-oops/)
|
|
33
33
|
[](https://pypi.org/project/git-oops/)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "git-oops"
|
|
7
|
-
version = "1.0.3"
|
|
7
|
+
version = "1.0.3.post1"
|
|
8
8
|
description = "The Dual-Mode Terminal Crash Fixer & Autonomous AI Agent Safety Harness (The Final Legend Edition)."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Hao" }]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"""
|
|
2
2
|
git-oops: The Autonomous Terminal Crash Fixer & AI Agent Safety Harness.
|
|
3
|
-
Version 1.0.3 (The Final Legend Edition)
|
|
3
|
+
Version 1.0.3.post1 (The Final Legend Edition)
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
__version__ = "1.0.3"
|
|
6
|
+
__version__ = "1.0.3.post1"
|
|
7
7
|
|
|
8
8
|
from src.hooks import ensure_auto_hooks
|
|
9
9
|
from src.rules import trigger_ota_update_background
|
|
@@ -68,6 +68,7 @@ def main():
|
|
|
68
68
|
prog="git-oops",
|
|
69
69
|
description="Brutally honest terminal crash fixer with daily spend-protection circuit breaker."
|
|
70
70
|
)
|
|
71
|
+
parser.add_argument("-v", "--version", action="version", version="git-oops v1.0.3.post1 (The Final Legend Edition)")
|
|
71
72
|
parser.add_argument("-f", "--file", help="Path to the file that crashed", default=None)
|
|
72
73
|
parser.add_argument("-e", "--error", help="Error message or traceback string", default=None)
|
|
73
74
|
parser.add_argument("-b", "--budget", help="Daily API spend ceiling in USD (default: $1.00)", type=float, default=saved_cfg.get("daily_budget", 1.0))
|
|
@@ -75,11 +76,11 @@ def main():
|
|
|
75
76
|
parser.add_argument("--set-personality", help="Permanently save default roast persona", choices=["staff", "kernel", "chef", "passive_aggressive"])
|
|
76
77
|
parser.add_argument("--set-budget", help="Permanently save default daily spend budget in USD", type=float)
|
|
77
78
|
parser.add_argument("-y", "--yes", help="Auto-apply patch without interactive prompt", action="store_true")
|
|
78
|
-
parser.add_argument("--undo", help="Roll back the last applied patch on target file", default=None)
|
|
79
|
-
parser.add_argument("--run", help="Execute a command and auto-catch its crash (e.g.
|
|
80
|
-
parser.add_argument("--status", help="Show today's accumulated API spend", action="store_true")
|
|
81
|
-
parser.add_argument("--agent", "--json", dest="agent_mode", help="Headless Agent mode: emits machine-readable JSON without ANSI codes", action="store_true")
|
|
82
|
-
parser.add_argument("--mcp", help="Start git-oops as a native Model Context Protocol (MCP) server over stdio", action="store_true")
|
|
79
|
+
parser.add_argument("-u", "--undo", help="Roll back the last applied patch on target file", default=None)
|
|
80
|
+
parser.add_argument("-r", "--run", help="Execute a command and auto-catch its crash (e.g. -r 'python app.py')", default=None)
|
|
81
|
+
parser.add_argument("-s", "--status", help="Show today's accumulated API spend", action="store_true")
|
|
82
|
+
parser.add_argument("-a", "--agent", "--json", dest="agent_mode", help="Headless Agent mode: emits machine-readable JSON without ANSI codes", action="store_true")
|
|
83
|
+
parser.add_argument("-m", "--mcp", help="Start git-oops as a native Model Context Protocol (MCP) server over stdio", action="store_true")
|
|
83
84
|
parser.add_argument("--rewind", help="Flight Recorder: rewind codebase to a previous step ID", type=int, default=None)
|
|
84
85
|
parser.add_argument("--flight-log", help="Display recent blackbox flight recorder steps", action="store_true")
|
|
85
86
|
parser.add_argument("--shadow", help="Run repair verification inside an isolated temporary shadow workspace", action="store_true")
|
|
@@ -45,3 +45,27 @@ def test_background_self_upgrade_non_blocking():
|
|
|
45
45
|
trigger_background_self_upgrade()
|
|
46
46
|
# Verify process is still alive and responsive
|
|
47
47
|
assert True
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_cli_version_flag():
|
|
51
|
+
import subprocess
|
|
52
|
+
out = subprocess.check_output([sys.executable, "-m", "git_oops", "--version"], text=True)
|
|
53
|
+
assert "git-oops v1.0.3.post1" in out
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_cli_status_short_flag():
|
|
57
|
+
import subprocess
|
|
58
|
+
out = subprocess.check_output([sys.executable, "-m", "git_oops", "-s"], text=True)
|
|
59
|
+
assert "CIRCUIT BREAKER METRICS" in out
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def test_cli_short_flags_registered():
|
|
63
|
+
import subprocess
|
|
64
|
+
out = subprocess.check_output([sys.executable, "-m", "git_oops", "-h"], text=True)
|
|
65
|
+
assert "-u UNDO" in out or "-u" in out
|
|
66
|
+
assert "-r RUN" in out or "-r" in out
|
|
67
|
+
assert "-m" in out
|
|
68
|
+
assert "-a" in out
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|