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.
Files changed (56) hide show
  1. methodproof-0.4.4/.github/workflows/ci.yml +35 -0
  2. {methodproof-0.4.2 → methodproof-0.4.4}/PKG-INFO +1 -1
  3. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/__init__.py +1 -1
  4. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/cli.py +28 -5
  5. {methodproof-0.4.2 → methodproof-0.4.4}/pyproject.toml +1 -1
  6. methodproof-0.4.2/.github/workflows/ci.yml +0 -122
  7. {methodproof-0.4.2 → methodproof-0.4.4}/.gitignore +0 -0
  8. {methodproof-0.4.2 → methodproof-0.4.4}/CHANGELOG.md +0 -0
  9. {methodproof-0.4.2 → methodproof-0.4.4}/LICENSE +0 -0
  10. {methodproof-0.4.2 → methodproof-0.4.4}/README.md +0 -0
  11. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/__main__.py +0 -0
  12. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/__init__.py +0 -0
  13. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/base.py +0 -0
  14. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/music.py +0 -0
  15. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/terminal.py +0 -0
  16. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/agents/watcher.py +0 -0
  17. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/analysis.py +0 -0
  18. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/bridge.py +0 -0
  19. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/config.py +0 -0
  20. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/crypto.py +0 -0
  21. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/graph.py +0 -0
  22. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hook.py +0 -0
  23. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/__init__.py +0 -0
  24. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/claude_code.py +0 -0
  25. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/claude_code.sh +0 -0
  26. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/cline_hook.sh +0 -0
  27. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/codex_hook.sh +0 -0
  28. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/gemini_hook.sh +0 -0
  29. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/install.py +0 -0
  30. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/kiro_hook.sh +0 -0
  31. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/mcp_register.py +0 -0
  32. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/openclaw/HOOK.md +0 -0
  33. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/openclaw/handler.ts +0 -0
  34. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/openclaw_install.py +0 -0
  35. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/opencode_plugin.js +0 -0
  36. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/hooks/wrappers.py +0 -0
  37. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/integrity.py +0 -0
  38. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/live.py +0 -0
  39. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/mcp.py +0 -0
  40. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/proxy.py +0 -0
  41. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/proxy_daemon.py +0 -0
  42. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/repos.py +0 -0
  43. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/skills/methodproof/SKILL.md +0 -0
  44. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/store.py +0 -0
  45. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/sync.py +0 -0
  46. {methodproof-0.4.2 → methodproof-0.4.4}/methodproof/viewer.py +0 -0
  47. {methodproof-0.4.2 → methodproof-0.4.4}/test_windows_compat.py +0 -0
  48. {methodproof-0.4.2 → methodproof-0.4.4}/tests/__init__.py +0 -0
  49. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_analysis.py +0 -0
  50. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_graph.py +0 -0
  51. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_hooks.py +0 -0
  52. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_live.py +0 -0
  53. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_openclaw_hooks.py +0 -0
  54. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_store.py +0 -0
  55. {methodproof-0.4.2 → methodproof-0.4.4}/tests/test_wrappers.py +0 -0
  56. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: methodproof
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: See how you code. Capture and visualize your engineering process.
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -1,3 +1,3 @@
1
1
  """MethodProof — see how you code."""
2
2
 
3
- __version__ = "0.4.2"
3
+ __version__ = "0.4.4"
@@ -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 unsynced:
516
- print(f" Warning: {len(unsynced)} session(s) not pushed to platform.")
517
- answer = input("\n Remove all MethodProof data and hooks? [y/N]: ").strip().lower()
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
- shutil.rmtree(config.DIR)
576
- removed.append(str(config.DIR))
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,6 +1,6 @@
1
1
  [project]
2
2
  name = "methodproof"
3
- version = "0.4.2"
3
+ version = "0.4.4"
4
4
  description = "See how you code. Capture and visualize your engineering process."
5
5
  requires-python = ">=3.11"
6
6
  dependencies = ["watchdog>=4.0", "websocket-client>=1.7"]
@@ -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