From 198ed4e440197e0164db4556c944d5113c096be9 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 22:20:16 +0000 Subject: [PATCH] chore(ai): format sources (style-agent) Reformatted 5 Python files using black and verified linting for Node.js sources. No functional changes. Co-authored-by: PR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> --- .scheduler-memory/latest/daily/memories.md | 16 ++--- .scheduler-memory/memory-store.json | 59 +++++++++++++++++-- .../session-mm40pypl/retrieve.json | 18 ++++++ .../session-mm40pypl/retrieve.ok | 1 + .scheduler-memory/session-mm40uz6h/store.json | 20 +++++++ .scheduler-memory/session-mm40uz6h/store.ok | 1 + src/seedpass/core/display_service.py | 12 ++-- src/seedpass/core/manager.py | 12 ++-- src/seedpass/core/password_generation.py | 15 ++++- src/tests/test_stats_manager.py | 1 + test_atomic_write_perms.py | 3 +- ...02-26T22-19-10Z__style-agent__completed.md | 15 +++++ 12 files changed, 146 insertions(+), 27 deletions(-) create mode 100644 .scheduler-memory/session-mm40pypl/retrieve.json create mode 100644 .scheduler-memory/session-mm40pypl/retrieve.ok create mode 100644 .scheduler-memory/session-mm40uz6h/store.json create mode 100644 .scheduler-memory/session-mm40uz6h/store.ok create mode 100644 torch/task-logs/daily/2026-02-26T22-19-10Z__style-agent__completed.md diff --git a/.scheduler-memory/latest/daily/memories.md b/.scheduler-memory/latest/daily/memories.md index b91f97a3..8dcfff20 100644 --- a/.scheduler-memory/latest/daily/memories.md +++ b/.scheduler-memory/latest/daily/memories.md @@ -20,9 +20,13 @@ If `npx --no-install torch-lock init --help` prints initialization prompts, it m --- -### 3. [2026-02-26] (scheduler, daily, retrieve) +### 3. [2026-02-25] (scheduler, daily, store, insight) -Memory retrieval seed for daily :: scheduler memory retrieval +### 1. [2026-02-25] (torch, scheduler, host-mode) +When running `npm run --prefix torch scheduler:daily`, the scheduler resolves config from `torch/torch-config.json` (cwd-scoped), not the repo-root `torch-config.json`. + +### 2. [2026-02-25] (torch, scheduler, handoff) +A non-inter… --- @@ -36,10 +40,6 @@ A non-inter… --- -### 5. [2026-02-25] (scheduler, daily, store, insight) +### 5. [2026-02-26] (scheduler, daily, retrieve) -### 1. [2026-02-25] (torch, scheduler, host-mode) -When running `npm run --prefix torch scheduler:daily`, the scheduler resolves config from `torch/torch-config.json` (cwd-scoped), not the repo-root `torch-config.json`. - -### 2. [2026-02-25] (torch, scheduler, handoff) -A non-inter… \ No newline at end of file +Memory retrieval seed for daily :: scheduler memory retrieval \ No newline at end of file diff --git a/.scheduler-memory/memory-store.json b/.scheduler-memory/memory-store.json index b3f0566b..8690982f 100644 --- a/.scheduler-memory/memory-store.json +++ b/.scheduler-memory/memory-store.json @@ -68,7 +68,7 @@ "importance": 0.8, "embedding_id": null, "created_at": 1772047328158, - "last_seen": 1772132692957, + "last_seen": 1772143897605, "source": "agent-output", "ttl_days": null, "merged_into": null, @@ -119,7 +119,7 @@ "importance": 0.8, "embedding_id": null, "created_at": 1772049603683, - "last_seen": 1772132692957, + "last_seen": 1772143897605, "source": "agent-output", "ttl_days": null, "merged_into": null, @@ -170,7 +170,7 @@ "importance": 0.8, "embedding_id": null, "created_at": 1772050579374, - "last_seen": 1772132692957, + "last_seen": 1772143897605, "source": "agent-output", "ttl_days": null, "merged_into": null, @@ -272,7 +272,7 @@ "importance": 0.8, "embedding_id": null, "created_at": 1772073865813, - "last_seen": 1772132692957, + "last_seen": 1772143897605, "source": "agent-output", "ttl_days": null, "merged_into": null, @@ -405,5 +405,56 @@ "merged_into": null, "pinned": false } + ], + [ + "9ba96b2a-f912-4ef2-9d29-bc88032570a2", + { + "schema_version": 1, + "id": "9ba96b2a-f912-4ef2-9d29-bc88032570a2", + "agent_id": "scheduler-memory-daily", + "session_id": "session-mm40pypl", + "type": "batch_window", + "content": "Memory retrieval seed for daily :: scheduler memory retrieval", + "summary": "Memory retrieval seed for daily :: scheduler memory retrieval", + "tags": [ + "scheduler", + "daily", + "retrieve" + ], + "importance": 0.4, + "embedding_id": null, + "created_at": 1772143897593, + "last_seen": 1772143897605, + "source": "scheduler-retrieve", + "ttl_days": null, + "merged_into": null, + "pinned": false + } + ], + [ + "a55e3839-6965-4bd6-a28e-4febacd9df4d", + { + "schema_version": 1, + "id": "a55e3839-6965-4bd6-a28e-4febacd9df4d", + "agent_id": "scheduler-memory-daily", + "session_id": "session-mm40uz6h", + "type": "batch_window", + "content": "# Memory Update — codex — 2026-02-26\n\n## Key findings\n- Full test suite now passes: `766 passed, 11 skipped`.\n- `DisplayService` had diverged from `seedpass.core.manager` interactive helpers, causing test monkeypatches to miss and resulting in flaky behavior.\n\n## Bugs fixed\n- Fixed TOTP retrieve/edit regression where `test_edit_totp_period_from_retrieve` could fail in-suite because TOTP screen consumed input via unpatched `display_service.timed_input`.\n- Fixed suite hang at `test_show_seed_entry_details` caused by `display_service.confirm_action` bypassing patched `manager.confirm_action`, leading to infinite prompt loop on empty input.\n\n## Patterns / reusable knowledge\n- In this codebase, interactive helpers should be called through `seedpass.core.manager` symbols (`confirm_action`, `timed_input`, `copy_to_clipboard`) to keep behavior and tests consistent.\n\n## Follow-up (warnings cleanup)\n- Added pytest `markers` registration for `network` under `[tool.pytest.ini_options]` to remove `PytestUnknownMarkWarning`.\n- Added narrow pytest warning filters for known third-party GUI deprecation noise (`Pack.padding*`).\n- For `imghdr` deprecation triggered during `test_imghdr_stub` import, added a local `warnings.filterwarnings(...)` at top of that test module to suppress import-time warning deterministically.\n- Verified final suite status: `766 passed, 11 skipped`, no warnings.\n\n## UI update (landing favicon)\n- Added a new `landing/favicon.svg` with a lock/keyhole glyph in SeedPass terminal-green colors.\n- Wired favicon metadata into both `landing/index.html` and `landing/docs.html` (`rel=\"icon\"`, `rel=\"alternate icon\"`, and `theme-color`) so tab/icon branding is consistent across the landing site.\n- Landing theme accent system was centralized in `landing/style.css` CSS variables; changing `--accent-primary/secondary` propagated icon color updates (Font Awesome `` styles) across both home and docs pages.\n- `landing/docs.css` had a few hardcoded blue RGBA backgrounds for hover/active/table headers that needed manual conversion to green to fully complete a palette swap.", + "summary": "# Memory Update — codex — 2026-02-26\n\n## Key findings\n- Full test suite now passes: `766 passed, 11 skipped`.\n- `DisplayService` had diverged from `seedpass.core.manager` interactive helpers, causing test monkeypatches to miss and resulting in flaky behavior.\n\n## Bugs fixed\n- Fi…", + "tags": [ + "scheduler", + "daily", + "store", + "insight" + ], + "importance": 0.8, + "embedding_id": null, + "created_at": 1772144131482, + "last_seen": 1772144131482, + "source": "agent-output", + "ttl_days": null, + "merged_into": null, + "pinned": false + } ] ] \ No newline at end of file diff --git a/.scheduler-memory/session-mm40pypl/retrieve.json b/.scheduler-memory/session-mm40pypl/retrieve.json new file mode 100644 index 00000000..26f1a6bc --- /dev/null +++ b/.scheduler-memory/session-mm40pypl/retrieve.json @@ -0,0 +1,18 @@ +{ + "cadence": "daily", + "operation": "retrieve", + "runId": "session-mm40pypl", + "servicePath": "src/services/memory/index.js#getRelevantMemories", + "inputs": { + "agentId": "scheduler-memory-daily", + "promptPath": "", + "promptIntent": "scheduler memory retrieval", + "query": "scheduler | daily | agent | scheduler-memory-daily | intent | scheduler memory retrieval", + "events": 1 + }, + "outputs": { + "ingestedCount": 1, + "retrievedCount": 5 + }, + "status": "ok" +} \ No newline at end of file diff --git a/.scheduler-memory/session-mm40pypl/retrieve.ok b/.scheduler-memory/session-mm40pypl/retrieve.ok new file mode 100644 index 00000000..84b17199 --- /dev/null +++ b/.scheduler-memory/session-mm40pypl/retrieve.ok @@ -0,0 +1 @@ +MEMORY_RETRIEVED diff --git a/.scheduler-memory/session-mm40uz6h/store.json b/.scheduler-memory/session-mm40uz6h/store.json new file mode 100644 index 00000000..df5e1ab7 --- /dev/null +++ b/.scheduler-memory/session-mm40uz6h/store.json @@ -0,0 +1,20 @@ +{ + "cadence": "daily", + "operation": "store", + "runId": "session-mm40uz6h", + "servicePath": "src/services/memory/index.js#ingestEvents", + "inputs": { + "agentId": "scheduler-memory-daily", + "promptPath": "", + "promptIntent": "scheduler memory store", + "events": 1, + "sourceFile": "memory-update.md" + }, + "outputs": { + "storedCount": 1, + "summaries": [ + "# Memory Update — codex — 2026-02-26\n\n## Key findings\n- Full test suite now passes: `766 passed, 11 skipped`.\n- `DisplayService` had diverged from `seedpass.core.manager` interactive helpers, causing test monkeypatches to miss and resulting in flaky behavior.\n\n## Bugs fixed\n- Fi…" + ] + }, + "status": "ok" +} \ No newline at end of file diff --git a/.scheduler-memory/session-mm40uz6h/store.ok b/.scheduler-memory/session-mm40uz6h/store.ok new file mode 100644 index 00000000..1e40bb67 --- /dev/null +++ b/.scheduler-memory/session-mm40uz6h/store.ok @@ -0,0 +1 @@ +MEMORY_STORED diff --git a/src/seedpass/core/display_service.py b/src/seedpass/core/display_service.py index 3c527840..f540ebb7 100644 --- a/src/seedpass/core/display_service.py +++ b/src/seedpass/core/display_service.py @@ -81,7 +81,9 @@ class DisplayService: print(colored(f"Retrieving 2FA code for '{label}'.", "cyan")) print(colored("Press Enter to return to the menu.", "cyan")) try: - key = self.manager.KEY_TOTP_DET or getattr(self.manager, "parent_seed", None) + key = self.manager.KEY_TOTP_DET or getattr( + self.manager, "parent_seed", None + ) secret = self.manager.entry_manager.get_totp_secret(index, key) while True: code = TotpManager.current_code_from_secret(secret) @@ -297,9 +299,7 @@ class DisplayService: if tags: print(colored(f"Tags: {', '.join(tags)}", "cyan")) print( - colored( - f"Archived Status: {'Archived' if archived else 'Active'}", "cyan" - ) + colored(f"Archived Status: {'Archived' if archived else 'Active'}", "cyan") ) if self.manager.secret_mode_enabled: if self._copy_to_clipboard(value): @@ -353,9 +353,7 @@ class DisplayService: if tags: print(colored(f"Tags: {', '.join(tags)}", "cyan")) print( - colored( - f"Archived Status: {'Archived' if archived else 'Active'}", "cyan" - ) + colored(f"Archived Status: {'Archived' if archived else 'Active'}", "cyan") ) action = ( input( diff --git a/src/seedpass/core/manager.py b/src/seedpass/core/manager.py index dc0c76a8..d40be4a0 100644 --- a/src/seedpass/core/manager.py +++ b/src/seedpass/core/manager.py @@ -2908,7 +2908,7 @@ class PasswordManager: self.menu_handler.run_menu( "Edit Entry", get_options, - prompt="Select option or press Enter to go back: " + prompt="Select option or press Enter to go back: ", ) def _entry_qr_menu(self, index: int, entry: dict) -> None: @@ -2942,14 +2942,18 @@ class PasswordManager: current_entry = refreshed def show_public_key(): - npub, _ = self.entry_manager.get_nostr_key_pair(index, self.parent_seed) + npub, _ = self.entry_manager.get_nostr_key_pair( + index, self.parent_seed + ) print(colored(f"npub: {npub}", "cyan")) TotpManager.print_qr_code(f"nostr:{npub}") pause() refresh_entry() def show_private_key(): - _, nsec = self.entry_manager.get_nostr_key_pair(index, self.parent_seed) + _, nsec = self.entry_manager.get_nostr_key_pair( + index, self.parent_seed + ) print(color_text(f"nsec: {nsec}", "deterministic")) TotpManager.print_qr_code(nsec) pause() @@ -2964,7 +2968,7 @@ class PasswordManager: self.menu_handler.run_menu( "QR Codes", get_options, - prompt="Select option or press Enter to return: " + prompt="Select option or press Enter to return: ", ) return diff --git a/src/seedpass/core/password_generation.py b/src/seedpass/core/password_generation.py index 2b8aeb55..50d8e6f6 100644 --- a/src/seedpass/core/password_generation.py +++ b/src/seedpass/core/password_generation.py @@ -291,7 +291,12 @@ class PasswordGenerator: raise def _count_char_types( - self, password_chars: list[str], uppercase: str, lowercase: str, digits: str, special: str + self, + password_chars: list[str], + uppercase: str, + lowercase: str, + digits: str, + special: str, ) -> tuple[int, int, int, int]: """Count the occurrences of each character type in the password.""" upper = sum(1 for c in password_chars if c in uppercase) @@ -441,7 +446,9 @@ class PasswordGenerator: password_chars = list(password) # Count initial character types - counts = self._count_char_types(password_chars, uppercase, lowercase, digits, special) + counts = self._count_char_types( + password_chars, uppercase, lowercase, digits, special + ) logger.debug( f"Current character counts - Upper: {counts[0]}, Lower: {counts[1]}, Digits: {counts[2]}, Special: {counts[3]}" ) @@ -474,7 +481,9 @@ class PasswordGenerator: ) # Final counts after modifications - final_counts = self._count_char_types(password_chars, uppercase, lowercase, digits, special) + final_counts = self._count_char_types( + password_chars, uppercase, lowercase, digits, special + ) logger.debug( f"Final character counts - Upper: {final_counts[0]}, Lower: {final_counts[1]}, Digits: {final_counts[2]}, Special: {final_counts[3]}" ) diff --git a/src/tests/test_stats_manager.py b/src/tests/test_stats_manager.py index fd222e0a..8273d5c4 100644 --- a/src/tests/test_stats_manager.py +++ b/src/tests/test_stats_manager.py @@ -2,6 +2,7 @@ from unittest.mock import Mock import pytest from seedpass.core.stats_manager import StatsManager + def test_stats_manager_reset(): """Test that StatsManager.reset correctly resets the displayed flag.""" stats_manager = StatsManager() diff --git a/test_atomic_write_perms.py b/test_atomic_write_perms.py index d4e41881..d5cf0387 100644 --- a/test_atomic_write_perms.py +++ b/test_atomic_write_perms.py @@ -1,4 +1,3 @@ - import sys from pathlib import Path @@ -9,6 +8,7 @@ from atomic_write import atomic_write import os import stat + def test_atomic_write_permissions(): test_file = Path("test_permissions.txt") if test_file.exists(): @@ -30,5 +30,6 @@ def test_atomic_write_permissions(): test_file.unlink() + if __name__ == "__main__": test_atomic_write_permissions() diff --git a/torch/task-logs/daily/2026-02-26T22-19-10Z__style-agent__completed.md b/torch/task-logs/daily/2026-02-26T22-19-10Z__style-agent__completed.md new file mode 100644 index 00000000..5d915067 --- /dev/null +++ b/torch/task-logs/daily/2026-02-26T22-19-10Z__style-agent__completed.md @@ -0,0 +1,15 @@ +# Task Completion - style-agent + +## Summary +Executed style consistency checks and safe autofixes. + +## Actions +- Formatted Python code using `black .` (reformatted 5 files). +- Formatted Node.js code using `npm run --prefix torch format`. +- Linted Node.js code using `npm run --prefix torch lint`. +- Verified no inline styles using `npm run --prefix torch lint:inline-styles`. +- Verified repository integrity using `pytest`. + +## Outcome +- All checks passed. +- Code style is consistent with configured rules.