Skip to content

feat: Add Turkish Code Analyzer Agent - #82

Closed
zagiscoming wants to merge 4 commits into
NousResearch:mainfrom
zagiscoming:feature/code-analyzer-agent
Closed

feat: Add Turkish Code Analyzer Agent#82
zagiscoming wants to merge 4 commits into
NousResearch:mainfrom
zagiscoming:feature/code-analyzer-agent

Conversation

@zagiscoming

Copy link
Copy Markdown
Contributor

feat: Add Turkish Code Analyzer Agent

Autonomous Python code analyzer with security and quality checks.

Features:

  • Syntax error detection
  • Security scanning (SQL injection, eval, exec, pickle)
  • Code quality analysis
  • Best practices enforcement
  • Quality scoring (0-100)
  • Detailed reports

Tests: ✅ All passed

Usage:
python3 analyzer.py script.py

No external dependencies - Python 3.8+

zagiscoming and others added 2 commits February 26, 2026 20:23
- Analyzes Python code for syntax errors
- Checks code quality and best practices
- Performs security scanning (SQL injection, eval, exec)
- Generates quality score (0-100)
- Provides detailed analysis report

Features:
- Syntax checking with AST parser
- Quality analysis (empty functions, long functions, comments)
- Security scanning (SQL injection, eval(), exec(), pickle)
- Best practices enforcement (type hints, docstrings, exception handling)
- Comprehensive test suite

Files added:
- analyzer.py: Main analyzer module
- README.md: Turkish documentation
- requirements.txt: Dependencies
- test_analyzer.py: Test suite
@zagiscoming zagiscoming reopened this Feb 26, 2026
@teknium1 teknium1 closed this Feb 27, 2026
@zagiscoming
zagiscoming deleted the feature/code-analyzer-agent branch February 27, 2026 15:08
@zagiscoming
zagiscoming restored the feature/code-analyzer-agent branch February 27, 2026 15:09
Meraniya pushed a commit to Meraniya/hermes-agent that referenced this pull request Aug 6, 2026
…writes (NousResearch#82)

save_config()/restore_config() already keep the local .sha256 sidecar in
sync (PR NousResearch#57), but the *external* git-backed baseline used by
`hermes config verify` (PR NousResearch#67) was only ever updated by an explicit
`hermes config seal`. Any authorized write through save_config() — model
scanner, /model command, platform setup flows via
write_platform_config_field() — desynced that baseline, so the Config
Integrity Watchdog cron job flagged the legitimate change as tampering:
"Hermes Config Integrity Failure! The configuration hash does not match
the sealed baseline." This is the same scanner/watchdog TOCTOU conflict
documented in docs/plans/2026-07-02-scanner-watchdog-conflict-resolution.md,
just recurring one layer over in the newer git-backed mechanism.

_write_config_to_disk() now also calls the config-integrity-watchdog
skill's seal() (quietly) whenever $HERMES_DOTFILES_DIR is configured,
keeping the git-backed log current on every authorized write. Extracted
_find_core_module() (returns None instead of exiting) so this can
opportunistically no-op on machines without the watchdog set up.
restore_quick_snapshot() in backup.py gets the same treatment for
config.yaml restores from a quick snapshot.

Co-authored-by: Test <test@test.com>
sijav added a commit to sijav/sijav-agent that referenced this pull request Aug 7, 2026
…regions (rc-loop-setup) [roast 9.6/9.6/9.5]

Covers 1280-1285 (moa_config-None decode-and-swap + persist-message guard),
1445-1450 (loop-top iteration-budget gate: grace-reset vs budget-exhausted break
+ non-quiet warning), 1753-1759 (MoA context injection onto last user message).
Mutation-verified by the re-roast: deleting the prompt swap (raw marker reaches
the wire), inverting the quiet-guard, and replacing the 1449 warning print each
turn a test red; on-wire api_kwargs captured, not spy-traps. Justified
'# pragma: no branch' at 1754 (current turn's user row is always present so the
reversed walk always breaks). MISS []/MB []. Test premise corroborates NousResearch#82.
sijav added a commit to sijav/sijav-agent that referenced this pull request Aug 7, 2026
…ation (NousResearch#82)

The `if moa_config:` block lives in the OUTER loop, which re-runs for every
tool-call round, and `aggregate_moa_context()` unconditionally fans out to every
reference model — it has no output cache (moa_loop's _runtime_cache holds
credentials/routes only; the _ref_cache_* output cache belongs to a different
class this path never touches).

So a 5-round tool turn with 3 reference models fired 15 reference LLM calls
instead of 3 — a multiplicative cost and latency blowup on exactly the turns
that are already the slowest. Worse for correctness: each re-run aggregated
against a transcript that had grown under it, so the aggregator context injected
into the request silently changed mid-turn.

Now the aggregation is computed on the first iteration that needs it and cached
for the rest of the turn, while the cached context is still RE-INJECTED every
iteration — api_messages is rebuilt per round, so skipping injection would drop
the aggregator context from every request after the first. A None return is
normalised to "" so the not-yet-computed sentinel can't be re-triggered by a
legitimately empty aggregation.

The existing reversed-walk test asserted the old behaviour (agg.call_count == 2);
it now pins the fix — exactly ONE aggregation across two iterations, with the
context verified on the wire for BOTH requests.

1704 passed, 4 skipped.
sijav added a commit to sijav/sijav-agent that referenced this pull request Aug 7, 2026
…list, record coverage-measurement learnings

- TODO_BOARD: NousResearch#82 moved to DONE (404c53657); NousResearch#85 severity raised to HIGH/turn-killing
  with the roast's receipt; NousResearch#86 moved from FEATURES into BUGS; slice-B status
  corrected (committed, 53 tests); NousResearch#79 unblocked and marked in progress.
- WORKLIST: pruned 149 -> 56 lines, dropping the abandoned parallel-worker
  scaffolding that read as live instruction (worker pool, refill, dead PENDINGs).
- New learnings: aggregate coverage must go through scripts/run_tests_parallel.py
  (AGENTS.md:1368) and REQUIRES --with coverage; a scope-limited coverage number
  is not the real number; the Stop hook's relative-path bug that silently killed
  the loop.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants