Skip to content

Add logging for first 100 chars of the tool call args json / tool response#9

Merged
teknium1 merged 2 commits into
mainfrom
tc-logging
Nov 15, 2025
Merged

Add logging for first 100 chars of the tool call args json / tool response#9
teknium1 merged 2 commits into
mainfrom
tc-logging

Conversation

@hjc-puro

@hjc-puro hjc-puro commented Nov 7, 2025

Copy link
Copy Markdown
Contributor
  python run_agent.py --query="your query" --log_prefix_chars=50
  python batch_runner.py --dataset_file=data.jsonl --batch_size=10 --run_name=test --log_prefix_chars=30
==================================================
💬 Starting conversation: 'how much disk'

🔄 Making API call #1...
⏱️  API call completed in 3.13s
🤖 Assistant: I'll check the disk usage on the system for you.
🔧 Processing 1 tool call(s)...
  📞 Tool 1: terminal(['command']) - {"command": "df -h"}
[warning]Master tmux session not found, attempting to reinitialize...[/]
[info]Attempting to initialize master tmux session (attempt 1/3)...[/]
[info]Initializing master tmux session for persistent state...[/]
[success]Master tmux session 'master-session-morphvm_' initialized successfully[/]
[info]Validating tmux session functionality...[/]
[success]Master tmux session 'master-session-morphvm_' initialized and validated successfully[/]
  ✅ Tool 1 completed in 23.12s - {"output": "Filesystem      Size  Used Avail Use% Mounted on\n/dev/root        32G  1.4G   29G   5% ...

🔄 Making API call #2...
⏱️  API call completed in 3.96s
🤖 Assistant: The disk usage shows:

- **Total disk space**: 32 GB
- **Used space**: 1.4 GB (5% used)
- **Availabl...
🎉 Conversation completed after 2 API call(s)
[VM Cleanup] Manually terminated VM for task: 974afa98-28c5-4c89-8e3a-0b88775bc241

==================================================

@hjc-puro hjc-puro requested a review from teknium1 November 7, 2025 19:45
@teknium1 teknium1 merged commit 92e3074 into main Nov 15, 2025
sudo-yf pushed a commit to sudo-yf/hermes-agent that referenced this pull request Apr 5, 2026
…d-base-url

fix: update MiniMax/Z.AI model lists, pass base_url to AIAgent
h4x3rotab referenced this pull request in Clawdi-AI/hermes-agent Apr 10, 2026
- 6 built-in templates: Code Review, Bug Fix, Feature Build, Research, Refactor, Security Audit
- Template picker modal with search, built-in/custom sections
- 'Use Template' button in New Mission wizard (step 0)
- Auto-populates name, goal, and task list from template
- 'Save as Template' button in mission completion report
- Custom templates stored in localStorage, deletable
- workflow-templates.ts with full CRUD operations
malaiwah pushed a commit to malaiwah/hermes-agent that referenced this pull request Apr 11, 2026
… exec cmd:' log lines' (NousResearch#9) from fix/docker-exec-log-mask-rotating-creds into main
@AxDSan

AxDSan commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Phase 1 Update — IN PROGRESS → COMPLETED ✅

Commit: tfeat(auth): Phase 1 — stop forcing every signup to be a pastort

What landed:

  • Schema: is now nullable, enum added, junction table created
  • Auth middleware: New signups get , , instead of auto-creating a church and forcing ADMIN
  • Migration: Applied to production DB successfully

What this means right now:

  • Any NEW user who signs up will NOT get a church. They'll be an unaffiliated MEMBER.
  • EXISTING users are untouched — they still have their churches.
  • The app will likely break for new signups until Phase 2 (onboarding flow) is built, because the frontend expects every user to have a church.

Next up:

Phase 2: Onboarding Flow — build the page where new users choose: Start a Church / Join with Invite / Browse Only.

Ready to continue with Phase 2?

@AxDSan

AxDSan commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Phase 4 complete. Commit 57bfb0e6. SideNav filters by role, dashboard CTAs are role-aware, admin pages (members/settings/billing/analytics) guarded with RoleGuard, PATCH /churches/:id requires ADMIN, GET /churches/my no longer auto-creates churches.

Eric0831 pushed a commit to Eric0831/hermes-agent-zeus that referenced this pull request Apr 26, 2026
Captures Tier 3 tooling work that was considered during the 2026-04-26
overhaul but deferred. Each section explains the design, why it wasn't
shipped, and the trigger condition that should reopen it.

Tier 3 items deferred:
  NousResearch#7  Lazy MCP discovery — high refactor surface, low immediate value
      (gateway RAM/startup not currently constrained).
  NousResearch#8  Health-aware tool router — overlaps with already-shipped manual
      fallback (Tavily→DDG/httpx); marginal gain doesn't justify
      scaffolding.
  NousResearch#10 Batch tool API — concurrent path + within-turn dedup cache already
      mitigate the common case; would be disruptive.

Each section includes a reference design so future work can pick up
without re-deriving rationale, plus a "reopen when..." condition tied
to observable signals (memory > 4GB, fallback rate > 30%, etc.) so the
weekly health check (or operator) can flag when revisit is justified.

Tier 3 NousResearch#9 (LLM-summarize large results) was shipped in 9b3cef1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
Add logging for first 100 chars of the tool call args json / tool response
jsherman11 referenced this pull request in AI-SDR-SaaS/hank-hermes-agent May 11, 2026
Wraps the new POST /api/ad-hoc/quick-post endpoint on the publisher
(merged in hermes-social-media PR #9). Lets Jonathan DM Hermes photos
+ a description, and Hermes posts the bundle directly: media uploads to
Dropbox, caption.md gets written, Telegram approval DM lands within
seconds. Tap Approve → publishes to IG + TikTok.

- QuickPostRequest / QuickPostResponse in publisher_types.py mirror the
  publisher's Zod schema (regex on brand/angle/cta segments, min/max on
  media_urls)
- publisher_quick_post tool in publisher_tools.py with a docstring that
  explains when the agent should reach for it
- 4 new tests cover registration + validation + happy path

Uses the existing PUBLISHER_BASE_URL + PUBLISHER_API_KEY env vars — no
new config required.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@teknium1 teknium1 mentioned this pull request May 11, 2026
5 tasks
olympus-terminal pushed a commit to olympus-terminal/hermes-agent that referenced this pull request May 16, 2026
Add logging for first 100 chars of the tool call args json / tool response
gu87 referenced this pull request in gu87/hermes-agent May 18, 2026
- #1: Semantic repair log now records each transformation step, not just final rule
- #2: Eliminated double-repair in concurrent execution path
- #3: log_tool_input_repaired now called from production code paths
- #4: _repair_check_path_traversal replaced pass with logger.warning
- #5: _repair_fix_double_escape corrected: 2 backslashes → 1 (was 4→2)
- #6: Fixed malformed backtick in coerce_tool_args docstring
- #7: Registered _repair_strip_shell_prompt in _SEMANTIC_REPAIR_MAP
- #8: Removed dead code in tests (empty patch.dict, unused MagicMock)
- #9: Tightened ambiguous test assertion for required null fields
- NousResearch#10: Added logger.warning for silent exception swallowing
- NousResearch#11: Added EVENT_TOOL_INPUT_REPAIRED to REQUIRED_PAYLOAD_KEYS
- NousResearch#12: Added 7 new edge case tests (multi-rule log, unicode, idempotency)
Total: 39 tests passing
github-actions Bot referenced this pull request in nnnet/hermes-agent May 18, 2026
verkyyi added a commit to verkyyi/hermes-agent that referenced this pull request May 28, 2026
Upstream catch-up: 1,239 commits merged; only the 9 fork-patched files
conflicted. Resolutions (see docs/LOCAL_PATCHES.md for each patch):

- pyproject.toml: kept CVE pins (aiohttp 3.13.4, anthropic 0.87.0,
  cryptography 46.0.7); adopted upstream pytest-timeout, dropped xdist.
- run_agent.py: upstream split it into thin forwarders + new agent/* modules.
  Re-homed AgentFeeds (NousResearch#9) -- helpers stay in run_agent.py; manifest wiring
  into agent/system_prompt.build_system_prompt_parts (lazy import, monkeypatch
  -safe); config init in agent/agent_init.py. Re-homed origin request_id (NousResearch#1)
  into agent/agent_runtime_helpers + agent/tool_executor.
- hermes_cli/kanban_db.py: ported our crash diagnostics (provider_failure,
  failure_diagnostics) onto upstream's dict crash_details + layered upstream
  error-fingerprinting/systemic detection; unioned forced-skill machinery
  (NousResearch#5/NousResearch#11) with upstream has_spawnable_review/scratch-tip/accept-hooks/
  model_override.
- gateway/run.py: re-homed timestamp prefix (NousResearch#8) into _build_gateway_agent_
  history; combined notify-interval + heartbeat (kept public-progress cadence,
  added upstream edit-in-place heartbeat msg id).
- tests: took upstream conversation_loop refactor + new board= suite; unioned
  fixture env-isolation; added CRASH_GRACE_SECONDS=0 to worker_env fixture.

Merge-touched suites green (851 passed). Remaining full-suite failures are
pre-existing/environmental (macOS services, optional deps).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
verkyyi added a commit to verkyyi/hermes-agent that referenced this pull request May 28, 2026
Baseline is now caught up to upstream/main @ 2d5dcfa (merge 4a9607a).
Update re-homed patch locations after upstream's agent/* refactor:
- NousResearch#1 request_id plumbing -> agent/tool_executor.py + agent/agent_runtime_helpers.py
- NousResearch#8 timestamp prefix -> applied in gateway/run.py::_build_gateway_agent_history
- NousResearch#9 AgentFeeds wiring -> agent/system_prompt.py + config init agent/agent_init.py
  (helpers stay in run_agent.py)
Note test infra moved to pytest-timeout (xdist dropped).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
lenardhuebner88-rgb referenced this pull request in lenardhuebner88-rgb/hermes-agent May 28, 2026
Low/zero-drift wiring slice of Paket B (from sync-20260526):
- status.write_runtime_status gains platform_health + token_usage kwargs
  with HUB pressure classification (current_*_pct accessors).
- platforms/base auto-attaches runtime_health() via duck-typing.
- oneshot fallback chain runs through filter_default_gateway_fallbacks.
- display_config: HUB-aware Discord defaults (_HUB_DISCORD_DEFAULTS,
  preview_length=40 per Review-Finding #9) as resolver step 3b.

test_display_config 3-way merged: kept main's mobile-first Telegram
"off" defaults, added the HUB-layer tests, pinned test_high_tier_platforms
to a non-HUB home.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MattKotsenas added a commit to MattKotsenas/hermes-agent that referenced this pull request May 30, 2026
Match the other sandbox backends' per-init filesystem isolation. Docker
stamps a fresh 'hermes-<uuid>' container name on every _init (docker.py:508),
so a destroyed-then-recreated env always sees a brand-new filesystem.

Gondolin's sandbox_dir is deterministic from task_id, and _setup_overlay_mounts
keeps the scratch dir (overlays/<safe>/{upper,work,merged}) on disk across env
lifecycles. The next env that mounts the same guest_path under the same
sandbox_dir inherits the prior session's writes via the persisted upper layer
— a real cross-session contamination bug, not just a disk leak.

Fix: _teardown_overlay_mounts now rmtrees the per-mount scratch dir
(merged.parent) after the lazy unmount returns. Lazy unmount + open-fd-keeps-
inode-alive means this is safe even if the daemon hasn't fully released
handles. Crash recovery still preserves upper/ because the import-time
sweep only unmounts and never rmtrees.

This also closes design-doc revisit item NousResearch#9 (failed-init cleanup).

Test:
  tests/integration/test_gondolin_terminal.py::test_overlay_writes_do_not_leak_
  between_env_lifecycles

A KVM-gated integration test that asserts the behavioural invariant via
the public GondolinEnvironment.execute() API: env1 writes a file into an
overlay extra_mount, env2 (same sandbox_dir, same mount config) must not
see it. Implementation-agnostic — no mention of upper/ or fuse-overlayfs —
so a future migration to a custom upstream VFSProvider (the @earendil-works/
gondolin package ships vfs/provider) satisfies the same contract trivially
and the test passes for free.

Doc updates (DO NOT MERGE revisit list):
  - NousResearch#9 marked resolved (this fix)
  - NousResearch#6 narrowed: lists the one test we now have and what's still missing
  - NousResearch#10 added: task_id='default' is shared across all top-level agents at
    the hermes/gateway layer; concurrent-tenancy isolation needs a
    per-session task_id and is out of scope for this branch
  - NousResearch#11 added: overlay=true + missing readonly is a silent UX trap
    (host-side scratch is created, daemon makes guest mount EROFS)

Regression: all 118 gondolin unit + integration tests pass.

DO NOT MERGE — see docs/design/gondolin-terminal-backend.md.
McClean-Sherlock pushed a commit to McClean-codes/hermes-agent that referenced this pull request Jun 7, 2026
…e removal, LOOP target warnings

NousResearch#8: Card ID parsing uses regex 'Created\s+card\s+(\S+)' with fallback
NousResearch#9: validate checks gate→revision pairs (referenced gates must have dependents)
NousResearch#10: _find_revision_node documented single-revision assumption
NousResearch#11: LOOP target mismatch warns before fallback
NousResearch#12: Removed unused _find_dependents
NousResearch#7: 32 unit tests — DAG, cycles, LOOP regex, failure propagation, state persistence, validation, card parsing
ilkoretskiy added a commit to ilkoretskiy/hermes-agent that referenced this pull request Jun 8, 2026
Resolutions:
- gateway/run.py: take upstream. Our cherry-picked topic-binding patch
  (_refresh_telegram_topic_binding_after_session_switch, for NousResearch#20470) is now
  subsumed by upstream _sync_telegram_topic_binding (NousResearch#20470/NousResearch#29712/NousResearch#33414).
- Dockerfile: merge PATH — keep upstream /opt/hermes/bin privilege-drop shim
  ahead of venv, keep fork /opt/tools persistent-tools volume + pipx/gobin/cargo.
- tests/agent/transports/test_chat_completions.py: keep both (fork codex-ack
  test + upstream extra_content tests).
Brings upstream PR NousResearch#33481 (HOME=/opt/data for s6 gateway services) — closes the
local NousResearch#9 workaround.
ritikmdn added a commit to ritikmdn/hermes-agent that referenced this pull request Jun 9, 2026
Record PR NousResearch#9, Vercel production deployment, Upstash result handoff verification, and the current Slack provider 429 blocker.

Verified: scripts/run_tests.sh tests/hermes_cli/test_elixir_analytics_profile_distribution.py tests/hermes_cli/test_elixir_analytics_runner_plugin.py tests/hermes_cli/test_elixir_analytics_release_packaging.py tests/test_toolsets.py tests/gateway/test_slack.py -- -q
eriksilver added a commit to eriksilver/hermes-agent that referenced this pull request Jun 9, 2026
Two new scrapers from scraper-suite PR NousResearch#9 — Jefferson County Sheriff
Foreclosure Sales (JCSD JSON endpoint) and Annual Land Tax Sale
(Collector PDF). Cadence is daily on the mini (launchd plists at 05:45
and 06:00 respectively); 36h tolerance matches the STL Sheriff sibling.

Both scrapers carry meaningful steady-state empty payloads (no active
foreclosure auctions; between annual vintages) → success-with-records=0
is the expected most-days result. Heartbeat alerts only on a real
overdue, not on "no data."

Atlas count bumped 6 → 8.
mcvayaaron6-commits pushed a commit to mcvayaaron6-commits/hermes-agent that referenced this pull request Jun 10, 2026
NousResearch#4 — agent/orchestrator.py: requires_upstream_success=False stranded
     PENDING forever when an upstream failed.  The promotion logic
     only checked all-SUCCEEDED for READY and only the spec.requires
     branch for SKIPPED, leaving cleanup-style tasks in PENDING with
     no path out.  Fix promotes them to READY once every dep
     reaches a terminal state (SUCCEEDED / FAILED / SKIPPED), so
     they actually run.  Existing test_requires_upstream_success_
     false_still_runs (which previously documented the bug) flipped
     to assert correct behaviour + new test
     test_requires_upstream_success_false_waits_for_terminal_state
     locks in the wait-for-all-deps semantics.

NousResearch#5 — agent/audit_log.py: _CHAIN_STATE per-process cache forked the
     hash chain when two processes wrote the same audit.jsonl.
     Fix takes an OS-level fcntl flock around the entire read-tail
     + append critical section AND always re-reads the tail under
     the flock (cache invalidated per-write) — cross-process
     correctness over in-process micro-perf.  Falls back to in-
     process-only on platforms without fcntl (Windows native).

NousResearch#6 — agent/bus.py: publish_lesson_captured hard-coded
     subject="lesson.captured" (with a useless f-prefix), so
     pattern subscribers like 'lesson.*.captured' never matched.
     Fix: derive the middle segment from the lesson's filename
     stem (or a uuid fallback) so subjects look like
     'lesson.add-oauth-login-20260516-1432.captured' — pattern
     matching works, history queries discriminate by lesson, and
     the hierarchical-subject convention documented in the module
     header is honored.

NousResearch#7 — agent/plan_mode.py: refusal_for used str.format with the
     plan_path interpolated, so a path containing '{...}' (legal
     on Linux, common in worktree templates) raised KeyError
     instead of returning the refusal message.  Fix: str.replace
     with no second-pass field-resolution — works for any path
     including ones with curly braces.

NousResearch#8 — cli.py: buf.get("task", message[:120]) eagerly evaluated the
     default; if message was None on a non-interactive code path,
     TypeError propagated into the wrapping try/except and the
     lesson was silently lost.  Fix: compute the fallback string
     once with isinstance guard, then use buf.get("task") or
     fallback.

NousResearch#9 — agent/skill_promotion.py: `threshold = threshold or _int_config(...)`
     in both find_skill_candidates and find_profile_candidates_
     from_usage discarded explicit caller values of 0 — tests
     and operators couldn't disable the gates by passing 0.  Fix:
     `if threshold is None: threshold = _int_config(...)` so 0
     is preserved.

Plus a deferred fix to NousResearch#14 (verifier post-/exit-plan): added a
transient `executing_plan` flag on PlanModeState that exit() sets
and the CLI's VERIFIED branch clears.  Verifier auto_when_plan
now fires only while plan_mode is active OR the plan is actively
executing — not for unrelated chat turns after the plan converges.

274 tests pass.  No regressions.

https://claude.ai/code/session_01PNyEMgrzVHtXnPGwUfotWw
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.

3 participants