Skip to content

feat: implement arxiv_research tool for academic paper analysis#78

Closed
Marilyn69 wants to merge 2 commits into
NousResearch:mainfrom
Marilyn69:main
Closed

feat: implement arxiv_research tool for academic paper analysis#78
Marilyn69 wants to merge 2 commits into
NousResearch:mainfrom
Marilyn69:main

Conversation

@Marilyn69

Copy link
Copy Markdown

Overview

This PR introduces the arxiv_research tool, enhancing Hermes' ability to fetch, parse, and analyze academic papers directly from ArXiv URLs.

Changes Implemented

  • Tool Logic (tools/arxiv_research_tool.py): Added PDF downloading and text extraction functionality using PyMuPDF.
  • Tool Registration: Integrated the tool into the agent's registry with appropriate Pydantic schemas.
  • Documentation (skills/arxiv-research/SKILL.md): Provided usage guidelines and examples for the skill.

⚠️ Note for Reviewers (Related to Issue #74)

I have successfully implemented the core logic and tool registration. However, as I documented in Issue #74, I encountered a persistent environment-specific bug (model naming/OpenRouter API connectivity) while running this on GitHub Codespaces. This prevented me from completing a full end to end local test.

The logic itself is complete and ready. Could you please review the implementation and test it in your local environment with your standard API keys?

I would love to collaborate on fixing any potential bugs that arise during your testing, as well as contributing further to the Hermes ecosystem!

@teknium1

Copy link
Copy Markdown
Contributor

I think the better approach here is to make a PDF extraction skill and then it doesn't need anything extra.

Added that here: https://github.com/NousResearch/hermes-agent/commits/main/

includes semantic scholar and points to the various OCR we can do.

@teknium1 teknium1 closed this Feb 27, 2026
ashneil12 added a commit to ashneil12/vanilla-hermes-agent that referenced this pull request Jun 10, 2026
…red test (1)..(6) contexts

Port of canary PR NousResearch#78 (8107cf10). tests.yml skips on md/docs-only PRs via
paths-ignore while branch protection requires test (1)..(6) with
enforce_admins=true, deadlocking docs-only PRs. This same-named no-op runs
on the inverse paths and reports the contexts green instantly.
ashneil12 added a commit to ashneil12/vanilla-hermes-agent that referenced this pull request Jun 10, 2026
…red test (1)..(6) contexts (#53)

Port of canary PR NousResearch#78 (8107cf10). tests.yml skips on md/docs-only PRs via
paths-ignore while branch protection requires test (1)..(6) with
enforce_admins=true, deadlocking docs-only PRs. This same-named no-op runs
on the inverse paths and reports the contexts green instantly.
jarvis-stark-ops added a commit to 1Team-Engineering/hermes-agent that referenced this pull request Jun 11, 2026
…ousResearch#77, NousResearch#78)

Two binding mechanisms for the worker-discipline gaps the 2026-06-10
v6.7 validation chain surfaced. Both close hermes-jarvis#77 (workers
don't reach for x_fast_justified when fast) and hermes-jarvis#78
(workers heartbeat forever past elapsed floor).

Paired with hermes-jarvis#80 (SOULs decision tree).

## Layer 1 — progressive RuntimeFloorViolation messaging

RuntimeFloorViolation now carries prior_floor_rejections and
floor_elapses_at. message() branches on the rejection count:
- 0: standard 'Either... or...' message with explicit
  seconds_remaining
- ≥1: escalated 'REJECTED #N — same inputs, same result. You must
  choose ONE of: (A) Wait Xs... (B) Opt out NOW with metadata=...'

_v6_7_run_completion_gates seeds the count from
_v6_7_count_prior_floor_rejections (LIKE-matches the JSON 'kind'
field to avoid false-positives on prose).

## Layer 2 — heartbeat surfaces floor_status

_v6_7_heartbeat_floor_status computes elapses_at, seconds_remaining,
retry_complete_now, floor_seconds from the task's started_at + role
floor. _handle_heartbeat threads it through so workers see
'wait Xs vs use opt-out' as actionable data.

## Self-review fixes baked in

- LIKE pattern anchored to JSON kind field (no summary_preview
  false-positives)
- verify_runtime_floor docstring documents reclaim semantics
  (started_at = first claim; reclaim doesn't reset)
- Dead for-loop + deferred import removed
- Helper renamed to _v6_7_heartbeat_floor_status (with public alias
  for back-compat)
- 'REJECTED FOR THE 2-th TIME' → 'REJECTED #2' (machine-readable,
  no grammar awkwardness)

## Tests

123 in test_kanban_completion_gates.py pass. 219/219 across full
v6.7+v6.8 + adjacent regression set, zero failures. Includes 4
gap-fill tests from self-review (summary_preview false-positive
guard, multi-violation single-count, unknown-task safety, negative-
seconds clamping).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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