methodproof 0.4.2__tar.gz → 0.4.3__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.3/.github/workflows/ci.yml +35 -0
  2. {methodproof-0.4.2 → methodproof-0.4.3}/PKG-INFO +1 -1
  3. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/__init__.py +1 -1
  4. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/cli.py +26 -5
  5. {methodproof-0.4.2 → methodproof-0.4.3}/pyproject.toml +1 -1
  6. methodproof-0.4.2/.github/workflows/ci.yml +0 -122
  7. {methodproof-0.4.2 → methodproof-0.4.3}/.gitignore +0 -0
  8. {methodproof-0.4.2 → methodproof-0.4.3}/CHANGELOG.md +0 -0
  9. {methodproof-0.4.2 → methodproof-0.4.3}/LICENSE +0 -0
  10. {methodproof-0.4.2 → methodproof-0.4.3}/README.md +0 -0
  11. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/__main__.py +0 -0
  12. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/agents/__init__.py +0 -0
  13. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/agents/base.py +0 -0
  14. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/agents/music.py +0 -0
  15. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/agents/terminal.py +0 -0
  16. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/agents/watcher.py +0 -0
  17. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/analysis.py +0 -0
  18. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/bridge.py +0 -0
  19. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/config.py +0 -0
  20. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/crypto.py +0 -0
  21. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/graph.py +0 -0
  22. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hook.py +0 -0
  23. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/__init__.py +0 -0
  24. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/claude_code.py +0 -0
  25. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/claude_code.sh +0 -0
  26. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/cline_hook.sh +0 -0
  27. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/codex_hook.sh +0 -0
  28. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/gemini_hook.sh +0 -0
  29. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/install.py +0 -0
  30. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/kiro_hook.sh +0 -0
  31. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/mcp_register.py +0 -0
  32. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/openclaw/HOOK.md +0 -0
  33. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/openclaw/handler.ts +0 -0
  34. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/openclaw_install.py +0 -0
  35. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/opencode_plugin.js +0 -0
  36. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/hooks/wrappers.py +0 -0
  37. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/integrity.py +0 -0
  38. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/live.py +0 -0
  39. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/mcp.py +0 -0
  40. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/proxy.py +0 -0
  41. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/proxy_daemon.py +0 -0
  42. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/repos.py +0 -0
  43. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/skills/methodproof/SKILL.md +0 -0
  44. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/store.py +0 -0
  45. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/sync.py +0 -0
  46. {methodproof-0.4.2 → methodproof-0.4.3}/methodproof/viewer.py +0 -0
  47. {methodproof-0.4.2 → methodproof-0.4.3}/test_windows_compat.py +0 -0
  48. {methodproof-0.4.2 → methodproof-0.4.3}/tests/__init__.py +0 -0
  49. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_analysis.py +0 -0
  50. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_graph.py +0 -0
  51. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_hooks.py +0 -0
  52. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_live.py +0 -0
  53. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_openclaw_hooks.py +0 -0
  54. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_store.py +0 -0
  55. {methodproof-0.4.2 → methodproof-0.4.3}/tests/test_wrappers.py +0 -0
  56. {methodproof-0.4.2 → methodproof-0.4.3}/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.3
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.3"
@@ -509,15 +509,20 @@ def cmd_uninstall(args: argparse.Namespace) -> None:
509
509
  """Remove all MethodProof hooks, data, and config."""
510
510
  import shutil
511
511
 
512
+ keep_sessions = getattr(args, "keep_sessions", False)
513
+
512
514
  if not args.force:
513
515
  sessions = store.list_sessions()
514
516
  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()
517
+ if sessions:
518
+ print(f" {len(sessions)} session(s) on disk ({len(unsynced)} not pushed).")
519
+ answer = input("\n Remove all MethodProof hooks and config? [y/N]: ").strip().lower()
518
520
  if answer not in ("y", "yes"):
519
521
  print(" Cancelled.")
520
522
  return
523
+ if sessions and not keep_sessions:
524
+ keep = input(" Keep session data? [Y/n]: ").strip().lower()
525
+ keep_sessions = keep != "n"
521
526
 
522
527
  removed = []
523
528
 
@@ -572,14 +577,29 @@ def cmd_uninstall(args: argparse.Namespace) -> None:
572
577
 
573
578
  # Data directory
574
579
  if config.DIR.exists():
575
- shutil.rmtree(config.DIR)
576
- removed.append(str(config.DIR))
580
+ if keep_sessions and config.DB_PATH.exists():
581
+ # Remove everything except the session database
582
+ for item in config.DIR.iterdir():
583
+ if item == config.DB_PATH:
584
+ continue
585
+ if item.is_dir():
586
+ shutil.rmtree(item)
587
+ else:
588
+ item.unlink()
589
+ removed.append(str(item))
590
+ removed.append(f"Kept: {config.DB_PATH}")
591
+ else:
592
+ shutil.rmtree(config.DIR)
593
+ removed.append(str(config.DIR))
577
594
 
578
595
  if removed:
579
596
  print("\n Removed:")
580
597
  for r in removed:
581
598
  print(f" {r}")
582
599
  print("\n To remove the CLI itself: pip uninstall methodproof")
600
+ if keep_sessions:
601
+ print(f" Session data preserved at: {config.DB_PATH}")
602
+ print(" Re-install and run `mp init` to resume.")
583
603
  print(" Restart your shell to clear hooks.\n")
584
604
 
585
605
 
@@ -1425,6 +1445,7 @@ def main() -> None:
1425
1445
  rs.add_argument("--force", "-f", action="store_true", help="Skip confirmation")
1426
1446
  un = sub.add_parser("uninstall", help="Remove all hooks, data, and config")
1427
1447
  un.add_argument("--force", "-f", action="store_true", help="Skip confirmation")
1448
+ un.add_argument("--keep-sessions", action="store_true", help="Preserve session database")
1428
1449
  ext = sub.add_parser("extension", help="Browser extension pairing and status")
1429
1450
  ext_sub = ext.add_subparsers(dest="ext_cmd")
1430
1451
  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.3"
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