docs: technical memory architecture + landing page clarity - #30
Closed
UfukNode wants to merge 1 commit into
Closed
Conversation
h4x3rotab
pushed a commit
to Clawdi-AI/hermes-agent
that referenced
this pull request
Apr 10, 2026
Adds a Knowledge tab alongside the existing Memory tab under /memory.
The knowledge browser renders markdown wiki pages from ~/.hermes/knowledge/
with support for:
- YAML frontmatter parsing (title, type, domain, status, tags)
- Directory-based navigation with folder tree sidebar
- [[wikilink]] resolution as clickable in-app navigation
- Backlinks ('Pages that link here')
- Full-text search across all wiki pages
- Tag filtering
- Metadata display (type, domain, status, created/updated)
- Graph view dialog showing page connections
- 'Ask agent about this' button linking to chat
- Graceful empty state when no knowledge directory exists
Server side:
- src/server/knowledge-browser.ts — wiki scanner, frontmatter parser,
wikilink extractor, graph builder
- 4 API routes: /api/knowledge/list, /read, /search, /graph
Frontend:
- src/routes/memory.tsx — tabbed layout (Memory | Knowledge)
- src/screens/memory/knowledge-browser-screen.tsx — full browser UI
Knowledge tab works independently of gateway capabilities (reads local
filesystem directly). No new dependencies added.
Closes NousResearch#30
3 tasks
ashneil12
referenced
this pull request
in ashneil12/vanilla-hermes-agent
May 18, 2026
) When the WebUI's model picker sets the active provider to "venice" (or "crof", "bankr", "cometapi"), the agent's resolve_provider_client() looked up the slug in PROVIDER_REGISTRY, failed to find it, and raised: "Provider 'venice' is set in config.yaml but no API key was found. Set the VENICE_API_KEY environment variable..." VENICE_API_KEY WAS set in env — the failure was because the agent had no idea which env var or base URL to use for "venice" as a slug. PROVIDER_REGISTRY entries for the other OpenAI-compatible aggregators (Z.AI, MiniMax, Mistral, etc.) already existed; Venice/CrofAI/Bankr/CometAPI just hadn't been added in the upstream code. Adds four api_key-auth entries mirroring the existing OpenAI-compat ones: - venice → https://api.venice.ai/api/v1 + VENICE_API_KEY - crof → https://crof.ai/v1 + CROF_API_KEY - bankr → https://gateway.bankr.bot/v1 + BANKR_API_KEY - cometapi → https://api.cometapi.com/v1 + COMETAPI_API_KEY Companion to the WebUI side (PRs #26/#27/#29/#30/#32/#33) which made these providers discoverable in the model picker with their live /v1/models catalogs. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
dmascord
added a commit
to dmascord/hermes-agent
that referenced
this pull request
Jun 6, 2026
…(was lost in chain shift)
This was referenced Jun 9, 2026
jarvis-stark-ops
pushed a commit
to 1Team-Engineering/hermes-agent
that referenced
this pull request
Jun 10, 2026
…on + dispatcher-only lookup Second self-review found one BROKEN issue and one WEAK adversarial concern. Both addressed. ## BROKEN #7 — same-tenant cross-umbrella collision Two goal_mode umbrellas sharing a tenant (the common marvel-swarm-* case) would both look up integrative reviews by the same title prefix + tenant. Umbrella B's archive could find umbrella A's review and either falsely unblock (if A was approved) or falsely block (if A was in flight). Fix: embed `umbrella_id` in the review title: ``Integrative architectural review (v6.7 NousResearch#30) for <umbrella_id>`` Lookup uses a per-umbrella LIKE pattern via two new helpers: `_v6_7_integrative_title_for(umbrella_id, round)` and `_v6_7_integrative_title_pattern(umbrella_id)`. Tenant is no longer load-bearing for isolation — the title is unique per umbrella. ## WEAK #8a — manual fake-review bypass mitigated A worker with kanban write access could create a task with the right title, mark it done with `result = "verdict: approve"`, and unblock the umbrella. Now the lookup query also filters `created_by = 'dispatcher'`, so hand-crafted fake reviews are ignored. This isn't a complete defense (a worker who can write arbitrary `created_by` values could still spoof) but defense in depth that catches the common case. ## Tests 3 new tests added (30 total, up from 27): - TestCrossUmbrellaIsolation.test_two_umbrellas_same_tenant_have_separate_reviews - TestCrossUmbrellaIsolation.test_approving_one_umbrella_does_not_unblock_another - TestFakeReviewMitigation.test_lookup_requires_created_by_dispatcher Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jarvis-stark-ops
added a commit
to 1Team-Engineering/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ousResearch#30) archive_task gates JARVIS goal-mode umbrella archives behind a final T'Challa integrative architectural review. When all per-block reviews are terminal and ≥1 build child + ≥1 review child exist, the dispatcher spawns a PEER task (not child — that caused a deadlock in the first attempt) assigned to tchalla with the 4-item review scope: end-to-end request trace, page render trace, adversarial enumeration, error-path audit. Strict line-anchored verdict parser (^verdict: approve|reject). Reject verdict triggers re-spawn with :rN suffix the next archive call. Per-umbrella title isolation prevents same-tenant cross-umbrella collision. created_by='dispatcher' filter mitigates fake-review bypass. Closes hermes-jarvis#30. Context: hermes-jarvis#61. 30 tests after three self-review passes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jarvis-stark-ops
added a commit
to 1Team-Engineering/hermes-agent
that referenced
this pull request
Jun 11, 2026
…h#79) (#19) * feat(kanban): v6.8 Part 4 — umbrella keep_running until reviewers spawn (NousResearch#79) The 2026-06-10 v6.7 validation chain caught this orchestration bug: JARVIS umbrella spawned Pepper + Friday from the umbrella, then called kanban_complete on itself before any reviewer was queued. The umbrella showed as done with build-only descendants; Kaipo had to manually spawn Tony / Tchalla / Vision to continue the chain. Closes hermes-jarvis#79. ## What this PR adds New gate ``verify_umbrella_review_coverage`` that fires when a goal_mode umbrella calls kanban_complete. The gate walks the umbrella's transitive descendants (reusing _v6_7_walk_descendants from NousResearch#73 so chained shapes count). If no review-role descendant exists anywhere in the subtree, the gate rejects. Two violation messages: 1. ``no descendants at all`` — pathological goal-mode umbrella that never decomposed. The orchestrator misfired. 2. ``build-role descendants but NO review-role descendants`` — the exact 2026-06-10 case. Message points the operator to spawn tony/tchalla/vision now via kanban_create --parent <build-id>. Opt-out: ``metadata={"x_no_review_needed": "<≥20-char reason>"}`` for legitimate cases (e.g. pure status-ack umbrellas). Standard v6.7/v6.8 opt-out conventions — emits completion_opt_out_used audit event with verbatim reason; bool/short strings rejected. ## Relationship to v6.7 NousResearch#30 - NousResearch#30 (integrative review at archive): fires at ARCHIVE time, spawns Tchalla after a chain settles. - NousResearch#79 (this PR): fires at COMPLETE time, forces JARVIS to spawn reviewers BEFORE marking itself done. Together they catch the empty-chain failure mode at both ends of the lifecycle. ## Tests 12 new tests: TestUmbrellaReviewCoverage (7) — non_goal skips, review descendant passes, only-build rejects with helpful message, no-descendants rejects with different message, tchalla/vision also satisfy, opt-out bypasses. TestUmbrellaReviewCoverageIntegration (5) — end-to-end via complete_task: build-only blocks, adding chained tony unblocks (closes NousResearch#73 + NousResearch#79 together), x_no_review_needed passes, short opt-out rejected, non-goal_mode tasks unaffected. 135 in test_kanban_completion_gates.py pass. 231/231 across full v6.7+v6.8 + adjacent regression set, zero failures. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(kanban): self-review fixes for v6.8 Part 4 umbrella gate (NousResearch#79) Three findings from the independent code review on PR #19: 1. Scope tightening: verify_umbrella_review_coverage now requires umbrella_assignee in ORCHESTRATION_ROLES (jarvis/pepper/banner). A goal-mode worker like Friday is out of scope — only orchestrators own umbrella-decomposition discipline. Was over-applying. 2. Empty-assignee message correctness: has_non_review_descendant is now bool(descendants), not the unset has_non_review flag. Prevents the "no descendants at all" message lying when descendants exist but all have empty assignees. Also added break after first review match for early termination. 3. Opt-out rename: x_no_review_needed → x_umbrella_no_review across gate messages, kanban_db opt-out validation, accepted_opt_outs audit entry, and tests. Avoids future collision with x_no_reviewer_fields (reviewer-field opt-out). Plus 8 new unit tests covering the scope tightening (friday/tony skipped, empty-assignee skipped, pepper/banner in scope, case- insensitive matching) and edge cases the reviewer flagged (blocked-status review counts, deep transitive review, multi-children multi-reviews). Module docstring updated: was "Three gates ship today (Tranche 1 of v6.7)" — now reflects the v6.7+v6.8 gate roster (5 gates, closing 7 issues). All 144 gate tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Jarvis <jarvis@Kaipos-Mac-mini.local> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
whichguy
added a commit
to whichguy/hermes-agent-1
that referenced
this pull request
Jul 4, 2026
…h#33 adopted; journal + v1.3.4 ATTEMPTED: - Ran the pre-registered NousResearch#32 gate (objective outcome harness, n=34 = 20 micro + 14 agentic, K=3, all-deepseek, --max-rounds 1, --strict-preflight; 170 cells / 52 min; raw ~/.hermes/outcome_eval_32.json) and applied the ADOPT rule mechanically. Journaled the verdict both ways across README §6, design-decisions (§First-order candidate source NousResearch#32 + §Discrimination preflight NousResearch#33), evsi-validation-findings (pre-registered rule quoted verbatim, incl. the efficiency ceiling), and the nbq-improve backlog. Bumped nbq 1.3.3 -> 1.3.4 (negative result, no default flip). WHY: - NousResearch#32 tested the NousResearch#28 successor hypothesis: the residual P4 gap over the naive zeroshot arm is generation altitude, not the value judge. First cost-aware gate: efficiency (wall/tokens/calls) measured alongside Δresult, with a pre-registered 10%-added-wall ceiling that vetoes even a result win. RESULT: - NousResearch#32: NO ADOPT. Per-arm pass vs baseline 0.460 -- nbq +0.083 (9W/4L, un 74%, 25.0s/20221tok/38.3c); nbq-firstorder +0.132 (7W/3L, un 78%, 29.2s/23944tok/45.4c); zeroshot +0.274 (15W/1L, p=0.0005, un 31%, 5.9s/154tok/1c). Paired nbq-firstorder vs nbq: Δ+0.049 > 0 but 6W/6L/22-tie (broad-win guard fails); unanswerable 77% (>50%); lens-payoff regression (log-clean 0.67->0.33); +16.8% wall (>10% ceiling). All four adopt conditions fail. Altitude has signal (mean beat plain nbq) but did NOT close the gap -- zeroshot still dominates at ~1/5 wall, ~1/150 tokens; the residual gap is ANSWERABILITY. firstorder stays built, off-by-default. NousResearch#30 answerability weighting re-opened (its condition, unanswerable >50%, is now met). - NousResearch#33: PASS/adopted as opt-in instrument -- discrimination_preflight fast 8/8, deepseek 8/8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
whichguy
added a commit
to whichguy/hermes-agent-1
that referenced
this pull request
Jul 4, 2026
…retro probe ATTEMPTED: First real use of the nbq-improve protocol (iteration two) — a conditional full lap. Built a zero-model-call retro probe (evals/probe_answerability.py + 5 tests) to gate whether to build NousResearch#30 answerability weighting, testing NousResearch#30's premise against the existing objective corpus (outcome_eval_32.json: per-question EVSI meta.q_values, answerability qa[].revealed, outcome frac). WHY: NousResearch#32 pinned the residual P4 gap on answerability (unanswerable 77% > 50%), re-opening NousResearch#30. Rather than build first, probe the premise for free: do kept high-EVSI *unanswerable* questions cause objective failure? The cheapest falsifying test uses data we already have — zero new model calls. RESULT: PARK (premise NOT supported, n=34). top1_unans x fail r=+0.052, SE=0.177, does not clear SE (no association); any_unans x fail r=-0.112, base rate 0.971 => DEGENERATE (near-universal unanswerability => no answerable-question contrast to steer toward) + wrong-direction; tertiary n_unans x frac r=-0.219 (weak whiff only). Delta-result: none (no NousResearch#30 build; conditional gate honored in commit order). Delta-cost: zero (probe is offline). Verdict per the pre-registered rule (quoted verbatim in evsi-validation-findings.md): PARK. NousResearch#30 re-open now requires a higher-contrast corpus (candidate 2/3) plus a non-self-rated mechanism (batched strict-simulator answer/refuse probe, designed + parked in prereg-iteration-two.md item B, unbuilt). Methodology banked: cost is multi-dimensional — verdict-rubric.md now requires a per-axis ceiling (wall, tokens, calls), any bust vetoing a result win. Suite 206 -> 211 green. next-best-questions 1.3.4 -> 1.3.5; nbq-improve 1.0.0 -> 1.0.1. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
whichguy
added a commit
to whichguy/hermes-agent-1
that referenced
this pull request
Jul 4, 2026
…nt != state ATTEMPTED: Built an opt-in nbq-reach-investigate arm in outcome_eval.py (a fixture-aware mock_investigator resolving strict-unanswerable questions from observable state, leakage-guarded) + 6 tests + a --arm flag on probe_answerability.py. Gated on the agentic bank (n=14) to test candidate 3: does resolving reach questions via an investigator lift objective pass and create the answerability<->pass contrast NousResearch#30 needs? WHY: Iteration two parked NousResearch#30 because unanswerability was near-universal with no answerable-question contrast. Candidate 3 was the route to build that contrast — route reach questions to a (mocked) investigator that turns unknowns into observables. RESULT: NO ADOPT. 0 investigator resolutions across all 42 rows — the mock never fired (it works on observable questions; the build smoke resolved one). nbq's high-EVSI questions are about INTENT (which reading, crash-vs-fallback, detail level), and an investigator observes STATE, not intent. Unanswerable ROSE (78.6%->81.0%). The +0.100 arm-mean gap (baseline 0.351 / nbq 0.301 / reach 0.401) is unpaired sampling variance: 0/14 tasks shared questions across arms. NousResearch#30 did not un-park (all 14 tasks frac<1.0 => fail has zero variance => probe r=0.000). Delta-cost: 0 incremental (0 resolutions). THE FINDING: intent != state — the valuable clarifications are unobservable by any hop, answerable only by the user, so the answerability/reachability lever is a dead-end; value is in the unobservable intent questions. Route forward = candidate 2 (nbq->relentless, real user answers intent). Methodology banked to verdict-rubric.md: paired-design validity (test the answering, hold questions fixed). Suite 211->217 green. next-best-questions 1.3.5->1.3.6; nbq-improve 1.0.1->1.0.2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
whichguy
added a commit
to whichguy/hermes-agent-1
that referenced
this pull request
Jul 4, 2026
… learning even without code) ATTEMPTED: Codify into verdict-rubric.md's commit-message contract that git history is the experiment log: every lap commit cites the key git references its learning chains from, and the thesis+lesson are committed EVEN WHEN the experimental code is not kept. WHY: Per jim — commit history is the durable log. A negative result or a discarded experiment must not vanish because its code didn't ship; the learning and its provenance (prior SHAs) must persist in git even when the code does not. RESULT: verdict-rubric.md commit-message contract extended (code-optional, learning-required; cite prior-lap SHAs). nbq-improve 1.0.2->1.0.3. This commit is the first to cite the chain it builds on: lap one nbq 1.3.3->1.3.4 (baseline 9e15281) lap two canonical 2305998, hub 8165e32 (NousResearch#30 answerability PARKED; cost-is-multidimensional) lap three canonical 1d0291b, hub a52ac40 (reach->investigate NO ADOPT; intent != state) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Soju06
added a commit
to Soju06/hermes-agent
that referenced
this pull request
Jul 16, 2026
Soju06
added a commit
to Soju06/hermes-agent
that referenced
this pull request
Jul 16, 2026
ethenotethan
added a commit
to ethenotethan/harness
that referenced
this pull request
Aug 4, 2026
…sResearch#30) The artifact tool whitelisted a fixed set of render dialects; HTML wasn't one, so the agent couldn't maintain an HTML-document artifact (a custom dashboard or styled report the structured kinds can't express). The gateway store already handles unknown kinds correctly — merge_content defaults to replace, which is exactly right for a whole HTML doc — so this only unblocks the tool surface: - Add "html" to VALID_KINDS and both schema enums. - Describe the kind: content is raw HTML (not JSON), no per-kind merge, so always write the complete document (get-before-write still applies). The native client renders it in its existing WKWebView-backed artifact view. Test: extend test_agent_tool_surface with an html set/get round-trip. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Meraniya
pushed a commit
to Meraniya/hermes-agent
that referenced
this pull request
Aug 6, 2026
NousResearch#30) * feat(memory): memgw provider — Memory Gateway hybrid recall as default New plugins/memory/memgw/ MemoryProvider that connects Hermes to the self-hosted Memory Gateway over Streamable-HTTP MCP: - memgw_recall / memgw_retain / memgw_reflect tools - background prefetch (recall|reflect), non-blocking sync_turn - on_delegation -> Experience capture, on_session_end summary - circuit breaker + threaded event loop (mirrors mem0/hindsight patterns) - cloud (Bearer) or local (keyless) mode - set as Hermes default memory.provider (degrades to built-in if unavailable) - 13 tests passing, ruff clean; provider discovered + loads via plugin system Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(memory/memgw): address Codex PR NousResearch#30 review findings - is_available() now checks for the mcp package before returning True, preventing ModuleNotFoundError on activation when credentials are set but the extra was never installed (P2) - pin pip dep to mcp>=1.26.0,<2 in plugin.yaml, matching the audited version in pyproject.toml (P2) - clear DEFAULT_CONFIG memory.provider so fresh installs don't default to an external provider the user hasn't configured (P1) - add on_session_switch() to clear _prefetch_result on session rotation so stale prefetch from a prior session can't bleed into a new one (P2) - pass user_id in all gateway calls (recall/write/reflect) when running in a multi-user gateway context, enabling server-side user scoping (P1) - remove the blocking join on the previous sync thread from sync_turn() so the turn path is never delayed by a slow/hung prior sync (P2) - track delegation threads in _delegation_threads list and join them in shutdown() so on_delegation writes aren't silently killed on exit (P2) - raise RuntimeError in _unwrap() when isError=True so circuit-breaker records the failure and tool calls surface the error to the model (P2) - guard _ensure_loop() with _loop_lock to prevent concurrent first-calls from racing and leaking a loop thread (P2) * fix(memgw): address Codex review — scoping, session/writer safety, MCP errors Addresses the 6 live findings on PR NousResearch#30: - multi-user scoping: recall/write/reflect payloads now include user_id (_user_scope) so gateway sessions don't share one namespace - MCP client: _unwrap raises on CallToolResult.isError so tool-level failures don't reset the circuit breaker as successes - is_available checks the optional mcp dependency is installed - prefetch: monotonic generation guard so a slow older worker can't overwrite a newer result; on_session_switch clears + invalidates in-flight prefetch - sync writers tracked in a list; shutdown joins all (not just the last) so an in-flight retain isn't dropped - delegation threads tracked + reaped - doc: README explains the deliberate bundled-plugin exception (personal default for this fork; degrades to built-in when mcp/key absent) - +4 tests (scoping, session-switch invalidation, stale-prefetch guard) 17 memgw tests pass, ruff clean Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Meraniya
pushed a commit
to Meraniya/hermes-agent
that referenced
this pull request
Aug 6, 2026
… — Codex PR NousResearch#30 review (NousResearch#31) Two chatgpt-codex-connector[bot] review comments on PR NousResearch#30 that still applied to current main (the other 13 were already addressed in the merged PR): 1. client.py NousResearch#13 — Cancel timed-out MCP calls: _run_sync now cancels the concurrent.futures.Future on timeout before re-raising, so a stalled MCP endpoint doesn't leave a pending HTTP session running on the shared background loop after the caller has given up / opened the breaker. 2. __init__.py NousResearch#15 — Parse the host before allowing keyless local mode: is_available() now urlparse's the URL and requires an exact loopback host (localhost/127.0.0.1/::1) instead of a substring match, so a URL like 'https://localhost@example.com/mcp' (host=example.com) is no longer trusted as local keyless mode. Adds regression tests: test_memgw_client_timeout.py (cancel-on-timeout fails against pre-fix client) + TestKeylessLocalModeHostParsing (3/4 fail pre-fix). Deferred (already fixed in merged PR NousResearch#30): MCP dep import check, MCP dep pin, loop lock, isError handling, stale-prefetch generation, sync/delegation thread tracking + shutdown join, session-switch prefetch invalidation, no join on turn path, default provider unset. Deferred (complex, needs interface change): NousResearch#3/NousResearch#4 per-turn user_id refresh for shared gateway sessions — sync_turn/prefetch only receive session_id, not user_id, so threading identity through requires a MemoryProvider interface change; NousResearch#1 in-tree placement is an architectural call (AGENTS.md says existing in-tree providers stay).
Meraniya
pushed a commit
to Meraniya/hermes-agent
that referenced
this pull request
Aug 6, 2026
…odex P1) (NousResearch#33) * fix(memgw): pass user_id per-call to prevent cross-user memory scoping in shared gateway sessions Closes the remaining open P1 Codex finding from the PR NousResearch#30 review chain. In shared gateway sessions (thread_sessions_per_user=False), multiple users share a cached AIAgent instance. _user_id was stored once at initialize() time and reused by _user_scope() for all subsequent sync_turn/queue_prefetch calls, routing User B's memories into User A's gateway namespace. Fix: propagate user_id as an optional keyword argument through the full call chain: run_agent._sync_external_memory_for_turn -> MemoryManager.sync_all / queue_prefetch_all -> MemoryProvider.sync_turn / queue_prefetch (base interface updated) -> MemGatewayProvider._user_scope(user_id) -- per-call override wins, falls back to self._user_id for non-gateway single-user sessions _user_scope() now accepts an explicit uid that takes priority over the cached self._user_id, so every background write and prefetch is scoped to the user who actually triggered the turn, not the user who first initialized the session. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NFLEjSSx3Wr2j4D3v4HNN4 * fix(ty): add user_id kwarg to queue_prefetch/sync_turn overrides The base class MemoryProvider now declares user_id as a keyword-only default arg on both queue_prefetch and sync_turn. Seven providers and one test stub that override these methods were not updated in PR NousResearch#33, causing ty to report invalid-method-override (17 new diagnostics). Add user_id: str = "" to each override; providers that do not use multi-user scoping can safely ignore it. Also bound pytest-timeout in [dependency-groups] per supply-chain policy: >=2.4.0,<3. * chore: regenerate uv.lock after pytest-timeout upper-bound pin The previous commit added <3 upper bound to pytest-timeout per repo supply-chain policy, but did not regenerate uv.lock. Running `uv lock` updates the lockfile to reflect the new constraint. * fix(ty): add user_id keyword arg to retaindb overrides The base MemoryProvider.sync_turn and .queue_prefetch gained user_id: str = "" as a keyword-only default, but these overrides were missed in the previous commit. Fixes 5 remaining invalid-method-override ty warnings. * fix(ty): add user_id keyword arg to mem0 overrides The base MemoryProvider.sync_turn and .queue_prefetch gained user_id: str = "" as a keyword-only default, but these overrides were missed in the previous commit. Fixes 5 remaining invalid-method-override ty warnings. * fix(ty): add user_id keyword arg to agent overrides The base MemoryProvider.sync_turn and .queue_prefetch gained user_id: str = "" as a keyword-only default, but these overrides were missed in the previous commit. Fixes 5 remaining invalid-method-override ty warnings. --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
mansonyu2000
pushed a commit
to mansonyu2000/hermes-agent
that referenced
this pull request
Aug 10, 2026
… Sprint NousResearch#30 evidence: none verified: - zentao story list --product=11 → 4 stories (NousResearch#117-120) - zentao task list --execution=30 → 13 tasks (NousResearch#45-57) - http://pm.test.com/zentao/story-browse-117.html Changed: - .zentao/mapping.json: winpeek#6 → peeka数字机器人NousResearch#11, SCRUM NousResearch#29, Sprint NousResearch#30 - tasks/mim-chat-v1-*: updated zentao IDs NousResearch#32-44 → NousResearch#45-57 - tasks/README.md + CLAUDE-module.md: zentao URLs/commands Co-Authored-By: Claude <noreply@anthropic.com>
bri12afdsarker96-lgtm
pushed a commit
to bri12afdsarker96-lgtm/hermes-agent-mercury
that referenced
this pull request
Aug 12, 2026
P3-M1 合入列车阶段 4: - fork PR #4 base 已由 GitHub API 从 feature/p3-m1-provider 改为 main (main 现含阶段 2 rebrand merge e3121a2 + 阶段 3 provider merge 7f9d1c9) - HA @ pinned SHA 由 PR NousResearch#30 旧 HEAD ad44bd11 改为阶段 1 真实 merge SHA a3ef38298e6a42a88ec93d75af88b4027f7febbe(HA 默认分支 claude/hermes-desktop-multi-ai-phone-aiw5mr 新 HEAD) 仅改 pin / provenance 相关位置(Codex 硬约束): - .github/workflows/p3-m1-mcp-seven-step.yml: env HERMES_AI_PIN_SHA + actions/checkout ref(两处 SHA) - tests/native_mcp/test_seven_step_via_registry.py: module docstring Prereq 段 SHA 说明(1 处) - docs/p3-m1-mcp-seven-step-fork.md: Scope 段(PR NousResearch#30 已 merged @ merge SHA) + Codex E 表 Step 1 说明(`importlib.metadata` 断言 + `git rev-parse HEAD` 硬闸,删除旧的 `pip show grep` 描述)+ 关联 PR 堆叠段(阶段 2/3/1 merge SHA 全部记录) 七步测试逻辑零改动。生产代码零改动。uv.lock/pyproject.toml 零改动。 本地: 1 passed in 5.06s。Secret 扫净。等专用 push+PR CI + umbrella CI + 原三审计 Agent 只读复审 base 变化和 SHA pin 变化。
bri12afdsarker96-lgtm
added a commit
to bri12afdsarker96-lgtm/hermes-agent-mercury
that referenced
this pull request
Aug 12, 2026
P3-M1 合入列车阶段 4。fork 自己生产路径 config.yaml →
tools/mcp_tool.py::discover_mcp_tools() → 两 stdio server →
tools/registry.py::registry.dispatch("mcp__<server>__<tool>", args) 完成
真实七步链路,含 tenant/thread 权威源锁定、strip_sources C4、send_reply 幂等、
严格 shutdown 与后台 mcp-event-loop 线程硬门。
HA @ pinned merge SHA a3ef38298e6a42a88ec93d75af88b4027f7febbe(阶段 1
HA PR NousResearch#30 merge commit)via actions/checkout + HERMES_AI_TOKEN
(fine-grained PAT,仅 HA Contents: Read-only)+ persist-credentials: false
+ Verify HEAD == HERMES_AI_PIN_SHA 硬闸。
依赖全部由 fork uv.lock 锁定:mcp==1.28.1 / httpx==0.28.1 /
websockets==15.0.1 只断言不重装。
CI (HEAD 1c23846):
- 专用 push run 31611539996 GREEN
- 专用 PR run 31611537510 GREEN(tests=1 passed=1 skipped=0 failures=0 errors=0)
- umbrella CI 31611538177 attempt 2 GREEN(含 12/12 Python slices +
Review label gate + All required checks pass 全 success)
3 原审计 Agent 对 base+pin 变化只读复审全部 PASS · blockers []。
ci-reviewed 标签由 Codex 授权添加,触发 Review label gate GREEN。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.