26 Commits
Author SHA1 Message Date
haikdc 019a71c26d [haik]: added in docs skeleton from other repo into this, still gotta map it onto the current struct 2026-06-14 07:28:14 -07:00
haikdcandGitHub 9c95342704 Haik/feat/test runner (#86)
* [haik]: ckpt, added in the test runner skelton i made in another repo -> still gotta make tweaks to fold it onto the current repo

* [haik]: restructure backend test layout: move 37 test files from backend/tests/ into backend/tests/test_cases/, add backend/tests/run.sh one-command launcher that auto-provisions both runner and test venvs with stamp-based caching, update runner config.json to point test_paths at test_cases/ and fix venv_python path, revise runner README with run.sh usage and clearer setup instructions, and gitignore the .runner-venv directory

* [haik]: refactor: reorganize backend/tests/test_cases from flat structure into domain subdirectories — moved 36 test files into auth/, browser/, labeling/, service/, settings/, and web_search/ for better discoverability and grouping

* [haik]: overhaul test picker UI and add post-run rerun loop: replace checkbox glyphs with fzf-style row recolouring (coral=full, lighter coral=partial) and a right-pinned selection dot, add config-driven icon tiers (nerd/emoji/unicode/ascii) with per-glyph graceful degradation, replace the modal -k keyword screen with an inline live-filtering search bar that prunes the tree on every keystroke, add warm Anthropic-dark coral theme, toolbar flag chips replacing the old status line, and a floating help badge overlay; add rerun_prompt.py with inline Textual pill prompt (rerun all/failed/passed/exit) shown after each TTY run, wire it into main.py as a post-run loop; change run_tests to return (exit_code, RunSummary) tracking collected/passed/failed node IDs via new Dashboard methods; add icons field to config.py and config.json (set to nerd), document icon tiers and Nerd Font setup in README, set Hack Nerd Font in .vscode/settings.json, add .runner-venv to linter excludes
2026-06-14 07:02:30 -07:00
haikdc 211f939560 [haik]: refactor: standardize naming convention across browser agent modules — replace _CONSTANT/_func leading-underscore privates with P_PREFIX for module-level constants and p_func for internal helpers, promote public API functions (safe_resp_text, detect_loop, hash_tool_call, clean_bullet, etc.) by dropping the underscore, switch module-level imports to explicit function-level imports in browser_agent.py and agents.py, and add browser_skills.py to the linter no-underscore-names exception list 2026-06-13 17:30:35 -07:00
haikdc 07199caf34 [haik]: refactor: adopt P-prefix naming convention for module-level private symbols, replacing leading underscores with P_ prefix (e.g. _STEP_TOOLS -> P_STEP_TOOLS, _BROWSY_RE -> P_BROWSY_RE, _domain_notes -> P_DOMAIN_NOTES) and removing underscores from public API functions (e.g. _trim_history_by_turns -> trim_history_by_turns, _validate_message_pairing -> validate_message_pairing). Updated across browser_history, browser_agent, browser_batch_replay, browser_fast_path, browser_fast_read, browser_extract, browser_agent_mcp_server, and aux_llm. Added linter no-underscore-names exclusions for agent_manager, agents, and browser_agent 2026-06-13 16:49:37 -07:00
haikdc 8c7f9a7016 [haik]: migrate error_classify.py from underscore-prefix to p_/P_ naming convention: rename _is_auth_error, _is_free_trial_exhausted, _is_long_context_error, _is_transient_capacity_error, _is_unknown_model_error to public (drop _), rename _TRANSIENT_CAPACITY_PATTERNS and NON_TRANSIENT_PATTERNS to P upper-snake. Update all call sites in agent_manager.py and test imports in test_v2_invariants.py. Enhance p-private linter: make is_p() case-insensitive so P UPPER_SNAKE constants are enforced, add # p-private-ignore inline suppression (bare and scoped forms), thread source lines through check functions. Enable no-underscore-names rule in config. Update README and config descriptions. 2026-06-13 16:28:03 -07:00
haikdc 18538097e5 [haik]: add p-private linter check enforcing the p_ prefix as a real access modifier with Java private semantics over backend Python — module-level p_ symbols (top-level def/class/assignment) are file-private (usable in their own file, nowhere else), class members (def p_m, self.p_x=, class-body fields p_x: T) are class-private (legal only lexically inside the owning class or a class nested within it); strict like Java private not protected so cross-file subclass access to a base p_ member is flagged; two-pass pure-AST implementation in checks/p_private.py (phase 1 collects ownership, phase 2 checks references via access form — attribute access for class members, bare-name/import for module-level — no type inference); wire run_p_private_check into lint.py section order between no-underscore-names and eslint, add p-private config entries (enabled, description, empty exceptions) in config.json, and document the rule and its status in README 2026-06-13 16:10:56 -07:00
haikdc 8f649eb82c [haik]: rename _sanitize_server_name to sanitize_mcp_server_name (mcp_config canonical, agent_manager, prompt_context, main, tests, toolLabels comment), add no-underscore-names linter check banning leading-underscore Python names in backend, extract _models.py from classes.py for shared pydantic BaseModel field detection used by both classes and vulture checks, add vulture-ignore inline comment suppression and automatic pydantic field-name whitelisting to vulture.py, remove leaked payload arg from client.py sync, update README with new check docs and inline-ignore usage 2026-06-13 15:15:44 -07:00
haikdc 51532c548c [hAIk]: add ruff lint check for per-file scope-aware rules (F401 unused imports, F811 redefinitions, F841 unused locals, ARG001/ARG002 unused args) and narrow vulture to whole-program dead-code reachability only — the two are complementary, not redundant; introduce CheckError exception so eslint/knip/ruff/vulture surface tool failures loudly instead of silently returning []; refactor run_checks() from a 7-tuple to a LintResult dataclass with sections + incomplete tracking, and exit non-zero on incomplete runs so CI never mistakes a partial pass for a clean one; update print_errors.sh with ruff section; pin ruff==0.15.17 in requirements-dev.txt; add missing @pytest.mark.asyncio decorators to test_outputs_runtime_cleanup.py and remove the pytest_collection_modifyitems auto-marker from test_phase1_stress.py; set tasks.json reveal to always 2026-06-13 10:36:49 -07:00
haikdc 44b82ba7c8 [hAIk]: add CastLabs EVS auth preflight in run.sh so DRM credential prompts resolve before backend/frontend logs interleave the terminal — supports shared .env.evs creds, interactive fallback signup, and OPENSWARM_SKIP_VMP=1 opt-out; propagate skip flag into sign-vmp.sh to bypass signing network calls; gate requirements-dev.txt install behind OPENSWARM_DEV=1 in backend/run.sh; disable max-file-lines, max-folder-items, and import-cycles linter checks and clear all exception/whitelist entries; add .env.evs.example template 2026-06-13 09:07:03 -07:00
ciregenz 6cf2606666 [eric] merge: fold eric/cleanup abstraction refactor into dev (resolve 9, re-home edits) 2026-05-24 16:24:59 -07:00
ciregenz b129998489 [eric] lint: relax max-folder-items to >7 (7 ok), prune exact-7 exceptions, convert scripts/electron/linter-checks 2026-05-23 20:02:40 -07:00
ciregenz 6b7f66af3f [eric] lint: extend max-folder-items governance to frontend (documented exceptions, drop blanket ignore) 2026-05-23 19:53:56 -07:00
ciregenz 56dbd6d633 [eric] lint: add runtime import-cycle check (alias-aware, skips type-only and dynamic imports) 2026-05-23 19:20:47 -07:00
ciregenz 07f61c8547 [eric] lint: scope max-folder-items to documented backend registries, drop blanket ignore 2026-05-23 18:56:02 -07:00
ciregenz 9b20e1f7b0 [eric] lint: repoint grandfather globs to restructured file paths 2026-05-23 14:00:16 -07:00
ciregenz d2d6816d8a [eric] deadcode: remove unused DISCOVERY_SCAFFOLDING 2026-05-23 10:28:13 -07:00
ciregenz dd3efa866d [eric] deadcode: remove unused _is_9router_available 2026-05-23 10:27:36 -07:00
ciregenz b9ce323c5f [eric] deadcode: remove unused _summarize_message_block 2026-05-23 10:26:42 -07:00
ciregenz 8b646b0223 [eric] deadcode: remove unused _approx_tokens 2026-05-23 10:25:47 -07:00
ciregenz 7916babdcc [eric] lint: drop Dashboard grandfather entry 2026-05-23 06:58:49 -07:00
ciregenz 04ba8aef98 [eric] lint: drop Settings grandfather entry 2026-05-23 06:26:48 -07:00
ciregenz b5b755b8e8 [eric] lint: drop ChatInput grandfather entry 2026-05-23 06:08:50 -07:00
ciregenz 3a5a4f7798 [eric] lint: drop ToolCallBubble grandfather entry 2026-05-23 05:21:59 -07:00
ciregenz 08063ed85d [eric] lint: drop Tools grandfather entry 2026-05-23 05:05:31 -07:00
ciregenz 5543e15fe7 [eric] lint: grandfather oversized files + vulture whitelist 2026-05-23 04:21:10 -07:00
ciregenz 90fbef4f03 [eric] lint: vendor structural linter + config 2026-05-23 04:21:05 -07:00