methodproof 0.7.1__tar.gz → 0.7.2__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.7.1 → methodproof-0.7.2}/PKG-INFO +1 -1
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/__init__.py +1 -1
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/cli.py +25 -1
- {methodproof-0.7.1 → methodproof-0.7.2}/pyproject.toml +1 -1
- {methodproof-0.7.1 → methodproof-0.7.2}/.github/workflows/ci.yml +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/.gitignore +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/CHANGELOG.md +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/LICENSE +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/README.md +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/__main__.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/_daemon.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/agents/__init__.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/agents/base.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/agents/music.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/agents/terminal.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/agents/watcher.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/analysis.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/binding.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/bip39.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/bridge.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/config.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/crypto.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/e2e.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/graph.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hook.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/__init__.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/claude_code.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/claude_code.sh +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/cline_hook.sh +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/codex_hook.sh +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/gemini_hook.sh +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/install.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/kiro_hook.sh +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/mcp_register.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/openclaw/HOOK.md +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/openclaw/handler.ts +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/openclaw_install.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/opencode_plugin.js +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/hooks/wrappers.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/integrity.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/kdf.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/keychain.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/live.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/lock.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/mcp.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/migrate_db.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/proxy.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/proxy_daemon.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/repos.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/skills/methodproof/SKILL.md +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/store.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/sync.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/viewer.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/methodproof/wordlist.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/test_windows_compat.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/__init__.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_analysis.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_graph.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_hooks.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_live.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_openclaw_hooks.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_security.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_store.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/tests/test_wrappers.py +0 -0
- {methodproof-0.7.1 → methodproof-0.7.2}/uv.lock +0 -0
|
@@ -1251,6 +1251,21 @@ def cmd_log(args: argparse.Namespace) -> None:
|
|
|
1251
1251
|
print(f" {s['id'][:8]} {dt} {dur} {s['total_events']} events{suffix}")
|
|
1252
1252
|
|
|
1253
1253
|
|
|
1254
|
+
def cmd_logout(args: argparse.Namespace) -> None:
|
|
1255
|
+
"""Clear login credentials only. Keeps consent, sessions, and hooks."""
|
|
1256
|
+
cfg = config.load()
|
|
1257
|
+
if not cfg.get("token"):
|
|
1258
|
+
print("Not logged in.")
|
|
1259
|
+
return
|
|
1260
|
+
old_email = cfg.get("email", "")
|
|
1261
|
+
old_account = cfg.get("account_id", "")[:8]
|
|
1262
|
+
for key in ("token", "refresh_token", "email", "account_id", "last_auth_at"):
|
|
1263
|
+
cfg[key] = config._DEFAULTS.get(key, "")
|
|
1264
|
+
config.save(cfg)
|
|
1265
|
+
label = old_email or old_account or "account"
|
|
1266
|
+
print(f"Logged out ({label}). Run `mp login` to sign in again.")
|
|
1267
|
+
|
|
1268
|
+
|
|
1254
1269
|
def cmd_login(args: argparse.Namespace) -> None:
|
|
1255
1270
|
import webbrowser
|
|
1256
1271
|
from methodproof.sync import _request
|
|
@@ -1258,6 +1273,13 @@ def cmd_login(args: argparse.Namespace) -> None:
|
|
|
1258
1273
|
cfg = config.load()
|
|
1259
1274
|
api = args.api_url or cfg["api_url"]
|
|
1260
1275
|
|
|
1276
|
+
if cfg.get("token") and not getattr(args, "force", False):
|
|
1277
|
+
current = cfg.get("email") or cfg.get("account_id", "")[:8] or "an account"
|
|
1278
|
+
print(f"Already logged in as {current}.")
|
|
1279
|
+
answer = input(" Switch accounts? [y/N]: ").strip().lower()
|
|
1280
|
+
if answer not in ("y", "yes"):
|
|
1281
|
+
return
|
|
1282
|
+
|
|
1261
1283
|
# Start device auth flow
|
|
1262
1284
|
result = _request("POST", "/auth/cli/start", api, "")
|
|
1263
1285
|
code = result["code"]
|
|
@@ -1713,6 +1735,8 @@ def main() -> None:
|
|
|
1713
1735
|
sub.add_parser("log", help="List sessions")
|
|
1714
1736
|
l = sub.add_parser("login", help="Connect to platform")
|
|
1715
1737
|
l.add_argument("--api-url")
|
|
1738
|
+
l.add_argument("--force", "-f", action="store_true", help="Skip switch-account prompt")
|
|
1739
|
+
sub.add_parser("logout", help="Clear login credentials (keeps consent and sessions)")
|
|
1716
1740
|
pu = sub.add_parser("push", help="Upload privately to your account")
|
|
1717
1741
|
pu.add_argument("session_id", nargs="?")
|
|
1718
1742
|
tg = sub.add_parser("tag", help="Tag a session")
|
|
@@ -1771,7 +1795,7 @@ def main() -> None:
|
|
|
1771
1795
|
args = p.parse_args()
|
|
1772
1796
|
cmds = {
|
|
1773
1797
|
"init": cmd_init, "start": cmd_start, "stop": cmd_stop,
|
|
1774
|
-
"view": cmd_view, "log": cmd_log, "login": cmd_login,
|
|
1798
|
+
"view": cmd_view, "log": cmd_log, "login": cmd_login, "logout": cmd_logout,
|
|
1775
1799
|
"push": cmd_push, "tag": cmd_tag, "publish": cmd_publish,
|
|
1776
1800
|
"delete": cmd_delete, "review": cmd_review, "consent": cmd_consent,
|
|
1777
1801
|
"update": cmd_update, "lock": cmd_lock, "reset": cmd_reset, "uninstall": cmd_uninstall,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "methodproof"
|
|
3
|
-
version = "0.7.
|
|
3
|
+
version = "0.7.2"
|
|
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", "cryptography>=43.0", "keyring>=25.0"]
|
|
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
|
|
File without changes
|
|
File without changes
|