methodproof 0.4.2__tar.gz → 0.4.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.
- methodproof-0.4.4/.github/workflows/ci.yml +35 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/PKG-INFO +1 -1
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/__init__.py +1 -1
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/cli.py +28 -5
- {methodproof-0.4.2 → methodproof-0.4.4}/pyproject.toml +1 -1
- methodproof-0.4.2/.github/workflows/ci.yml +0 -122
- {methodproof-0.4.2 → methodproof-0.4.4}/.gitignore +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/CHANGELOG.md +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/LICENSE +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/README.md +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/__main__.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/__init__.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/base.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/music.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/terminal.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/watcher.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/analysis.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/bridge.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/config.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/crypto.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/graph.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hook.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/__init__.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/claude_code.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/claude_code.sh +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/cline_hook.sh +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/codex_hook.sh +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/gemini_hook.sh +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/install.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/kiro_hook.sh +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/mcp_register.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/openclaw/HOOK.md +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/openclaw/handler.ts +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/openclaw_install.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/opencode_plugin.js +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/wrappers.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/integrity.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/live.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/mcp.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/proxy.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/proxy_daemon.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/repos.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/skills/methodproof/SKILL.md +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/store.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/sync.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/viewer.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/test_windows_compat.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/__init__.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_analysis.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_graph.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_hooks.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_live.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_openclaw_hooks.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_store.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_wrappers.py +0 -0
- {methodproof-0.4.2 → methodproof-0.4.4}/uv.lock +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
tags: ["v*"]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
test:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- uses: astral-sh/setup-uv@v4
|
|
16
|
+
with: { version: "latest" }
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with: { python-version: "3.12" }
|
|
19
|
+
- run: uv sync --frozen
|
|
20
|
+
- run: uv run pytest tests/ -v --tb=short
|
|
21
|
+
|
|
22
|
+
publish:
|
|
23
|
+
needs: test
|
|
24
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
permissions:
|
|
27
|
+
id-token: write
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
- uses: astral-sh/setup-uv@v4
|
|
31
|
+
with: { version: "latest" }
|
|
32
|
+
- uses: actions/setup-python@v5
|
|
33
|
+
with: { python-version: "3.12" }
|
|
34
|
+
- run: uv build
|
|
35
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -26,6 +26,8 @@ import time
|
|
|
26
26
|
import uuid
|
|
27
27
|
from datetime import datetime, UTC
|
|
28
28
|
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
|
|
29
31
|
from methodproof import config, store, graph, hook, repos
|
|
30
32
|
|
|
31
33
|
PIDFILE = config.DIR / "methodproof.pid"
|
|
@@ -509,15 +511,20 @@ def cmd_uninstall(args: argparse.Namespace) -> None:
|
|
|
509
511
|
"""Remove all MethodProof hooks, data, and config."""
|
|
510
512
|
import shutil
|
|
511
513
|
|
|
514
|
+
keep_sessions = getattr(args, "keep_sessions", False)
|
|
515
|
+
|
|
512
516
|
if not args.force:
|
|
513
517
|
sessions = store.list_sessions()
|
|
514
518
|
unsynced = [s for s in sessions if not s["synced"]]
|
|
515
|
-
if
|
|
516
|
-
print(f"
|
|
517
|
-
answer = input("\n Remove all MethodProof
|
|
519
|
+
if sessions:
|
|
520
|
+
print(f" {len(sessions)} session(s) on disk ({len(unsynced)} not pushed).")
|
|
521
|
+
answer = input("\n Remove all MethodProof hooks and config? [y/N]: ").strip().lower()
|
|
518
522
|
if answer not in ("y", "yes"):
|
|
519
523
|
print(" Cancelled.")
|
|
520
524
|
return
|
|
525
|
+
if sessions and not keep_sessions:
|
|
526
|
+
keep = input(" Keep session data? [Y/n]: ").strip().lower()
|
|
527
|
+
keep_sessions = keep != "n"
|
|
521
528
|
|
|
522
529
|
removed = []
|
|
523
530
|
|
|
@@ -572,14 +579,29 @@ def cmd_uninstall(args: argparse.Namespace) -> None:
|
|
|
572
579
|
|
|
573
580
|
# Data directory
|
|
574
581
|
if config.DIR.exists():
|
|
575
|
-
|
|
576
|
-
|
|
582
|
+
if keep_sessions and config.DB_PATH.exists():
|
|
583
|
+
# Remove everything except the session database
|
|
584
|
+
for item in config.DIR.iterdir():
|
|
585
|
+
if item == config.DB_PATH:
|
|
586
|
+
continue
|
|
587
|
+
if item.is_dir():
|
|
588
|
+
shutil.rmtree(item)
|
|
589
|
+
else:
|
|
590
|
+
item.unlink()
|
|
591
|
+
removed.append(str(item))
|
|
592
|
+
removed.append(f"Kept: {config.DB_PATH}")
|
|
593
|
+
else:
|
|
594
|
+
shutil.rmtree(config.DIR)
|
|
595
|
+
removed.append(str(config.DIR))
|
|
577
596
|
|
|
578
597
|
if removed:
|
|
579
598
|
print("\n Removed:")
|
|
580
599
|
for r in removed:
|
|
581
600
|
print(f" {r}")
|
|
582
601
|
print("\n To remove the CLI itself: pip uninstall methodproof")
|
|
602
|
+
if keep_sessions:
|
|
603
|
+
print(f" Session data preserved at: {config.DB_PATH}")
|
|
604
|
+
print(" Re-install and run `mp init` to resume.")
|
|
583
605
|
print(" Restart your shell to clear hooks.\n")
|
|
584
606
|
|
|
585
607
|
|
|
@@ -1425,6 +1447,7 @@ def main() -> None:
|
|
|
1425
1447
|
rs.add_argument("--force", "-f", action="store_true", help="Skip confirmation")
|
|
1426
1448
|
un = sub.add_parser("uninstall", help="Remove all hooks, data, and config")
|
|
1427
1449
|
un.add_argument("--force", "-f", action="store_true", help="Skip confirmation")
|
|
1450
|
+
un.add_argument("--keep-sessions", action="store_true", help="Preserve session database")
|
|
1428
1451
|
ext = sub.add_parser("extension", help="Browser extension pairing and status")
|
|
1429
1452
|
ext_sub = ext.add_subparsers(dest="ext_cmd")
|
|
1430
1453
|
ext_sub.add_parser("pair", help="Pair extension to active session")
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
tags: ["v*"]
|
|
7
|
-
pull_request:
|
|
8
|
-
branches: [main]
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
test:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
- uses: astral-sh/setup-uv@v4
|
|
16
|
-
with: { version: "latest" }
|
|
17
|
-
- uses: actions/setup-python@v5
|
|
18
|
-
with: { python-version: "3.12" }
|
|
19
|
-
- run: uv sync --frozen
|
|
20
|
-
- run: uv run pytest tests/ -v --tb=short
|
|
21
|
-
|
|
22
|
-
publish:
|
|
23
|
-
needs: test
|
|
24
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
25
|
-
runs-on: ubuntu-latest
|
|
26
|
-
permissions:
|
|
27
|
-
id-token: write
|
|
28
|
-
steps:
|
|
29
|
-
- uses: actions/checkout@v4
|
|
30
|
-
- uses: astral-sh/setup-uv@v4
|
|
31
|
-
with: { version: "latest" }
|
|
32
|
-
- uses: actions/setup-python@v5
|
|
33
|
-
with: { python-version: "3.12" }
|
|
34
|
-
- run: uv build
|
|
35
|
-
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
36
|
-
|
|
37
|
-
update-homebrew:
|
|
38
|
-
needs: publish
|
|
39
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
40
|
-
runs-on: ubuntu-latest
|
|
41
|
-
steps:
|
|
42
|
-
- uses: actions/checkout@v4
|
|
43
|
-
|
|
44
|
-
- name: Extract version from tag
|
|
45
|
-
id: version
|
|
46
|
-
run: echo "version=${GITHUB_REF#refs/tags/v}" >> "$GITHUB_OUTPUT"
|
|
47
|
-
|
|
48
|
-
- name: Wait for PyPI availability
|
|
49
|
-
run: |
|
|
50
|
-
VERSION=${{ steps.version.outputs.version }}
|
|
51
|
-
for i in $(seq 1 30); do
|
|
52
|
-
URL="https://files.pythonhosted.org/packages/source/m/methodproof/methodproof-${VERSION}.tar.gz"
|
|
53
|
-
if curl -sfIL "$URL" > /dev/null 2>&1; then
|
|
54
|
-
echo "Package available on PyPI"
|
|
55
|
-
exit 0
|
|
56
|
-
fi
|
|
57
|
-
echo "Waiting for PyPI... ($i/30)"
|
|
58
|
-
sleep 10
|
|
59
|
-
done
|
|
60
|
-
echo "::error::Package not available on PyPI after 5 minutes"
|
|
61
|
-
exit 1
|
|
62
|
-
|
|
63
|
-
- name: Compute SHA256
|
|
64
|
-
id: sha
|
|
65
|
-
run: |
|
|
66
|
-
VERSION=${{ steps.version.outputs.version }}
|
|
67
|
-
URL="https://files.pythonhosted.org/packages/source/m/methodproof/methodproof-${VERSION}.tar.gz"
|
|
68
|
-
SHA=$(curl -sfL "$URL" | sha256sum | cut -d' ' -f1)
|
|
69
|
-
echo "sha256=$SHA" >> "$GITHUB_OUTPUT"
|
|
70
|
-
echo "url=$URL" >> "$GITHUB_OUTPUT"
|
|
71
|
-
|
|
72
|
-
- name: Update Homebrew formula
|
|
73
|
-
env:
|
|
74
|
-
TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
75
|
-
run: |
|
|
76
|
-
VERSION=${{ steps.version.outputs.version }}
|
|
77
|
-
SHA=${{ steps.sha.outputs.sha256 }}
|
|
78
|
-
URL=${{ steps.sha.outputs.url }}
|
|
79
|
-
|
|
80
|
-
git clone https://x-access-token:${TAP_TOKEN}@github.com/MethodProof/homebrew-tools.git /tmp/tap
|
|
81
|
-
cd /tmp/tap
|
|
82
|
-
|
|
83
|
-
cat > Formula/mp.rb << FORMULA
|
|
84
|
-
class Mp < Formula
|
|
85
|
-
include Language::Python::Virtualenv
|
|
86
|
-
|
|
87
|
-
desc "Capture and visualize your engineering process as a knowledge graph"
|
|
88
|
-
homepage "https://github.com/MethodProof/methodproof-cli"
|
|
89
|
-
url "${URL}"
|
|
90
|
-
sha256 "${SHA}"
|
|
91
|
-
license "Apache-2.0"
|
|
92
|
-
|
|
93
|
-
depends_on "python@3.13"
|
|
94
|
-
|
|
95
|
-
resource "watchdog" do
|
|
96
|
-
url "https://files.pythonhosted.org/packages/source/w/watchdog/watchdog-6.0.0.tar.gz"
|
|
97
|
-
sha256 "9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
resource "websocket-client" do
|
|
101
|
-
url "https://files.pythonhosted.org/packages/source/w/websocket-client/websocket_client-1.8.0.tar.gz"
|
|
102
|
-
sha256 "3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def install
|
|
106
|
-
virtualenv_install_with_resources
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
test do
|
|
110
|
-
assert_match "methodproof", shell_output("#{bin}/methodproof --help")
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
FORMULA
|
|
114
|
-
|
|
115
|
-
# Fix heredoc indentation
|
|
116
|
-
sed -i 's/^ //' Formula/mp.rb
|
|
117
|
-
|
|
118
|
-
git config user.name "github-actions[bot]"
|
|
119
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
120
|
-
git add Formula/mp.rb
|
|
121
|
-
git commit -m "update methodproof to ${VERSION}"
|
|
122
|
-
git push
|
|
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
|