Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1049 commits
Select commit Hold shift + click to select a range
3fc7b62
feat(cron,gateway): NAS-JWT fire verifier + /api/cron/fire webhook (C…
benbarclay Jun 18, 2026
b75757d
feat(cron): wire on_jobs_changed, cron.chronos config, docs + agent↔N…
benbarclay Jun 18, 2026
0ddd21c
feat(relay): managed-boot self-provision client (Phase 3, gateway sid…
benbarclay Jun 18, 2026
9c3c5da
fix(backup): hermes import never overwrites volatile gateway runtime …
benbarclay Jun 18, 2026
28531b6
Merge remote-tracking branch 'origin/main' into hermes/hermes-6fe26723
benbarclay Jun 18, 2026
c661634
fix(dashboard): stream file uploads via multipart instead of base64 J…
benbarclay Jun 18, 2026
1153b42
Merge upstream/main into OpenViking setup-UX (salvage #32445)
kshitijk4poor Jun 18, 2026
6752da9
fix(dashboard): clean up upload temp file on client disconnect + pin …
kshitijk4poor Jun 18, 2026
eaa0984
chore: drop committed PR-infographic assets from the repo (#48261)
benbarclay Jun 18, 2026
832d596
Merge pull request #48262 from kshitijk4poor/salvage-32445
kshitijk4poor Jun 18, 2026
5494c1e
refactor(openviking): reuse atomic_json_write for ovcli config; drop …
kshitijk4poor Jun 18, 2026
edcde6b
Merge pull request #48265 from kshitijk4poor/chore/ov-atomic-json-write
kshitijk4poor Jun 18, 2026
e1e53bf
Merge remote-tracking branch 'origin/main' into hermes/hermes-6fe26723
benbarclay Jun 18, 2026
085fc5d
feat(skills): find & diff user-modified bundled skills
xxxigm Jun 17, 2026
481f041
test(skills): cover list-modified + diff for bundled skills
xxxigm Jun 17, 2026
6777916
fix(skills): surface list-modified hint on both update paths + disamb…
kshitijk4poor Jun 18, 2026
737007e
Merge pull request #48286 from kshitijk4poor/salvage/skills-list-modi…
kshitijk4poor Jun 18, 2026
0b54a33
fix(langfuse): scope trace state by turn/request ids
infinitycrew39 Jun 17, 2026
40ed67c
test(langfuse): cover turn/api trace-key scoping
infinitycrew39 Jun 17, 2026
b435613
test(langfuse): add end-to-end turn-isolation regression
kshitijk4poor Jun 18, 2026
f6fac60
refactor(skills): dedupe file-listing, share user-modified predicate,…
kshitijk4poor Jun 18, 2026
860cf51
Merge pull request #48293 from kshitijk4poor/chore/skills-diff-cleanup
kshitijk4poor Jun 18, 2026
e1d10ec
refactor(langfuse): extract _scope_prefix from _trace_key
kshitijk4poor Jun 18, 2026
f4fbaa6
fix(langfuse): bound _TRACE_STATE growth from non-finalizing turns
kshitijk4poor Jun 18, 2026
0787ea0
test(langfuse): pin exact surviving key in turn-isolation test
kshitijk4poor Jun 18, 2026
9b2f7d2
Merge pull request #48292 from NousResearch/fix/langfuse-trace-scope-…
kshitijk4poor Jun 18, 2026
ca28c63
chore(release): map infinitycrew39 author email
kshitijk4poor Jun 18, 2026
426f321
Merge pull request #48299 from NousResearch/chore/author-map-infinity…
kshitijk4poor Jun 18, 2026
2a5d51c
fix(openviking): adapt memory provider for current api
qin-ctx Jun 15, 2026
a14bae6
fix(install): resolve PowerShell host instead of bare `powershell` fo…
xxxigm Jun 18, 2026
feff283
test(install): lock uv installer to a resolved PowerShell host
xxxigm Jun 18, 2026
67316fd
fix(install): relax native stderr handling in install.ps1 (#48352)
Tranquil-Flow Jun 18, 2026
b892ee2
fix(agent): summarize non-retryable API errors so raw HTML never leaks
xxxigm Jun 16, 2026
f18f31e
test(agent): cover non-retryable error HTML summarization
xxxigm Jun 18, 2026
d0622ca
refactor(agent): reuse hoisted summary in content-policy branch
kshitijk4poor Jun 18, 2026
8abdab2
fix(tui): MCP headline counts connected servers, not disabled ones (#…
teknium1 Jun 18, 2026
2f7c485
fix(tui): refresh tool snapshot when MCP discovery lands after agent …
teknium1 Jun 18, 2026
92e6d8c
fix(desktop): dispose open PTY sessions in before-quit handler
srojk34 Jun 18, 2026
ef4b897
chore(release): map srojk34 author email
teknium1 Jun 18, 2026
646cd1b
fix(nix): refresh npmDepsHash after the Electron 40.10.2 pin (#47792)…
alt-glitch Jun 18, 2026
b39ec2f
Merge pull request #48341 from xxxigm/fix/install-ps1-powershell-host…
kshitijk4poor Jun 18, 2026
2e5c04a
fix(#37878): scrub operator environment before launching cua-driver MCP
iamlukethedev Jun 7, 2026
3c3ac19
fix(#37878): Address review feedback — fix trailing whitespace and ad…
iamlukethedev Jun 8, 2026
41babc7
chore(release): map iamlukethedev to AUTHOR_MAP
teknium1 Jun 18, 2026
f1254c8
fix(skills): rmtree scope guard + default pre_update_backup to true (…
Kewe63 Jun 18, 2026
25c590c
fix(skills): refuse SKILLS_DIR root in rmtree guard, not just outside…
teknium1 Jun 18, 2026
58ad694
fix(tui): don't make Enter swallow trailing-space-only slash completi…
xxxigm Jun 18, 2026
5ffbfed
feat(mcp-catalog): add official Unreal Engine 5.8 MCP server
teknium1 Jun 18, 2026
4af16b5
Merge pull request #48206 from ehz0ah/fix/openviking-current-api-rebased
kshitijk4poor Jun 18, 2026
c37fdec
feat(dashboard): surface full per-MCP catalog detail; fix pip-install…
teknium1 Jun 18, 2026
fd12e59
fix(install): fail fast when uv venv genuinely fails under relaxed EAP
kshitijk4poor Jun 18, 2026
2fa16ec
Merge pull request #48529 from kshitijk4poor/salvage-48372-eap
kshitijk4poor Jun 18, 2026
38c8a9c
feat(memory): batch operations for single-turn memory updates (#48507)
teknium1 Jun 18, 2026
0fa7d6f
fix(desktop): never persist or restore a named custom provider as bar…
teknium1 Jun 18, 2026
07e785d
fix(prompt): dedupe parallel-tool-call steer; correct its rationale
OutThisLife Jun 18, 2026
51ee5b2
fix(desktop,tui): surface self-improvement review summary + honor mem…
OutThisLife Jun 18, 2026
81eaedd
Merge pull request #48533 from NousResearch/hermes/hermes-4061c6a8
OutThisLife Jun 18, 2026
d573e7c
fix(dashboard): use DS Button prefix/size API instead of inline icons
jquesnelle Jun 18, 2026
73cd862
feat(billing): /billing terminal billing — interactive TUI + CLI clie…
alt-glitch Jun 18, 2026
81ff916
fix(agent): flush un-persisted messages before session rotation (#47202)
kyssta-exe Jun 16, 2026
0879d5c
fix(gateway): preserve original transcript when /compress rotation is…
teknium1 Jun 18, 2026
4ed2f33
fix(thread): allow scrolling long user messages in chat history (#48619)
alelpoan Jun 18, 2026
9705e79
fix(picker): remove max_models=50 cap in interactive model pickers
Jun 18, 2026
3042045
fix(picker): keep max_models=0 distinct from unlimited; lock cap sema…
teknium1 Jun 18, 2026
49596b7
fix(gateway): resume follows the compression tip so post-compression …
OutThisLife Jun 18, 2026
c23c370
test: narrow db._conn before raw SQL so ty stops flagging None-union …
OutThisLife Jun 18, 2026
1ea2b27
Merge pull request #48633 from NousResearch/fix/resume-follows-compre…
OutThisLife Jun 18, 2026
f8d8f04
feat(kanban): auto-subscribe calling session on kanban_create
flooryyyy Jun 15, 2026
2944b3c
fix(desktop): make session delete idempotent and id-resolving (#48641)
OutThisLife Jun 18, 2026
3ead2bd
feat(prompt): configurable per-platform system-prompt hint overrides
victor-kyriazakos Jun 18, 2026
f1ff845
docs(prompt): document platform_hints config override
teknium1 Jun 18, 2026
769f307
fix(npm): lock react-simple-icons to 13.11.1
ethernet8023 Jun 18, 2026
cbe44bf
Merge pull request #48657 from NousResearch/hermes-icons
ethernet8023 Jun 18, 2026
03d9a95
fix(desktop): show Hindsight memory provider (#37546)
benfrank241 Jun 18, 2026
d2c53ff
feat(relay): WS-only inbound on the gateway adapter (Phase 3) (#48294)
benbarclay Jun 18, 2026
36851fa
fix(docker): support WebUI installs from read-only sources (#48541)
r266-tech Jun 19, 2026
2c6e266
fix(relay): trigger self-provision on relay-config + NAS token, not i…
benbarclay Jun 19, 2026
0403f41
fix(agent): handle missing trigram tokenizer without disabling FTS5
liuhao1024 Jun 16, 2026
c10aa5d
fix(agent): address review feedback on trigram tokenizer fallback
liuhao1024 Jun 16, 2026
9ae98e0
fix(agent): rebuild base fts without trigram
channkim Jun 16, 2026
1d2e359
fix(cli): surface a visible warning when the session store is unavail…
teknium1 Jun 18, 2026
62c71eb
chore(release): map chanyoung.kim@nota.ai -> channkim for #47049 salvage
teknium1 Jun 18, 2026
e48554a
feat(cli): lock hermes worktrees so concurrent processes can't clobbe…
JoaoMarcos44 Jun 18, 2026
8568988
chore: add JoaoMarcos44 to AUTHOR_MAP
teknium1 Jun 18, 2026
d06104a
fix(dashboard): resolve chat TUI argv off event loop (#48561)
kshitijk4poor Jun 19, 2026
c34840e
fix(cron): serve /api/cron/fire on the dashboard app (hosted-agent su…
benbarclay Jun 19, 2026
28d887c
Merge pull request #48615 from NousResearch/fix/dashboard-ds-button-api
jquesnelle Jun 19, 2026
620fd59
feat(model-picker): add Refresh Models control to bust stale model ca…
teknium1 Jun 19, 2026
e4452ff
fix(agent): summarize structured provider error messages
helix4u Jun 18, 2026
cfb55de
Update Stripe Projects skill docs (#48673)
colinwren-stripe Jun 19, 2026
c02192f
feat(image-gen): add image-to-image / editing to image_generate (#48705)
teknium1 Jun 19, 2026
637aff4
Merge remote-tracking branch 'origin/main' into hermes/hermes-6fe26723
benbarclay Jun 19, 2026
245b95b
fix(terminal): block gateway lifecycle commands from inside the gatew…
AhmetArif0 Jun 2, 2026
a64fc49
fix(relay): make hosted gateways actually connect AND complete the in…
benbarclay Jun 19, 2026
12dfcfd
fix(tui): restart dashboard chat on idle exit hotkeys
shannonsands Jun 19, 2026
6278bca
Merge pull request #48259 from NousResearch/fix/ns501-multipart-uploa…
kshitijk4poor Jun 19, 2026
f741e70
Add Slack allowed users setup field
shannonsands Jun 19, 2026
d919049
Add Slack setup hints and field validation
shannonsands Jun 19, 2026
83c034b
fix(dashboard): accept Slack allow-all wildcard in allowed-users vali…
kshitijk4poor Jun 19, 2026
1ab6f34
refactor(dashboard): align Slack allowlist validation with gateway parse
kshitijk4poor Jun 19, 2026
3485bc7
Merge pull request #48880 from kshitijk4poor/salvage-48824-slack-allo…
kshitijk4poor Jun 19, 2026
c7b7f92
fix(openviking): sync structured turns with tool parts
Jun 2, 2026
d7cd0bc
fix(openviking): preserve structured sync attribution
ehz0ah Jun 19, 2026
15e3b64
fix(tui): keep hosted dashboard chat alive on exit
shannonsands Jun 19, 2026
3f0e984
refactor(tui): reuse DASHBOARD_TUI_MODE for hosted /exit guard
kshitijk4poor Jun 19, 2026
5a856bd
chore(release): add OpenViking contributor attribution
ehz0ah Jun 19, 2026
9362ce2
feat(skills): add html-artifact skill, fold in sketch + architecture-…
alt-glitch Jun 19, 2026
fcac0f9
fix(openviking): guard empty tool_id in batch skip set; reuse env_var…
kshitijk4poor Jun 19, 2026
3ca0ef7
fix(nix): hashless npm deps via importNpmLock (#48883)
alt-glitch Jun 19, 2026
27a6e18
refactor(openviking): derive recall-tool name set from canonical schemas
kshitijk4poor Jun 19, 2026
2d4046c
refactor(openviking): reuse pre-scanned tool_input for pending tool c…
kshitijk4poor Jun 19, 2026
be2c2be
refactor(openviking): name tool_status constants and alias sets
kshitijk4poor Jun 19, 2026
527a47f
Merge pull request #48924 from kshitijk4poor/salvage-48894-structured…
kshitijk4poor Jun 19, 2026
226ec28
Merge pull request #48367 from kshitijk4poor/salvage-47289
kshitijk4poor Jun 19, 2026
e738c08
fix(backup): exclude regeneratable dependency and cache dirs
xxxigm Jun 19, 2026
db57a1a
Merge pull request #48941 from kshitijk4poor/salvage-48887-backup-exc…
kshitijk4poor Jun 19, 2026
1699525
fix(tui): route pending-input commands via command.dispatch (#48848)
kyssta-exe Jun 19, 2026
df4ca2c
Merge pull request #48953 from kshitijk4poor/salvage/issue-48848
kshitijk4poor Jun 19, 2026
fd27c90
chore: add tt-a1i to AUTHOR_MAP
kshitijk4poor Jun 19, 2026
5378b94
Merge pull request #48966 from kshitijk4poor/chore/authmap-tt-a1i
kshitijk4poor Jun 19, 2026
ab8f063
fix(tui): disable fast-echo bypass inside tmux to prevent cursor drift
fyzanshaik Jun 19, 2026
e52fffb
harden(tui): also disable fast-echo for tmux-flavored TERM (SSH-from-…
kshitijk4poor Jun 19, 2026
5e93075
Merge pull request #48982 from NousResearch/salvage/48965-tmux-fast-echo
kshitijk4poor Jun 19, 2026
dc5cb0a
fix(dashboard): refresh Sessions list in real time when new sessions …
yatesjalex Jun 19, 2026
f37bb21
chore(dashboard): wire vitest into npm test script
kshitijk4poor Jun 19, 2026
46f9d53
fix(agent): aggregate anthropic aux calls via stream
tt-a1i Jun 19, 2026
6ad0bc2
fix(sessions): let a compression continuation reclaim its base title
xxxigm Jun 19, 2026
65d050c
test(sessions): cover title reclaim across a compression lineage
xxxigm Jun 19, 2026
8c70346
refactor(sessions): express compression-ancestor check as one recursi…
kshitijk4poor Jun 19, 2026
ce0ac9b
Merge pull request #49000 from kshitijk4poor/salvage/session-title-li…
kshitijk4poor Jun 19, 2026
f9ffe0b
fix(desktop): resume stored session id on notification click
xxxigm Jun 19, 2026
069011d
test(desktop): cover runtime->stored notification id resolution
xxxigm Jun 19, 2026
bce1e36
fix(discord): unwrap dict choices + soft-boundary truncate clarify bu…
johnjacobkenny Jun 2, 2026
2c3aebc
fix(clarify): unwrap dict choices at the source so every surface gets…
teknium1 Jun 19, 2026
460b1e5
fix(gateway): refresh max_turns before resolving runtime budget
infinitycrew39 Jun 18, 2026
dcac719
test(gateway): cover runtime max_turns refresh
infinitycrew39 Jun 18, 2026
ca92e9a
fix(gateway): refresh cached agent max_iterations from current config
infinitycrew39 Jun 19, 2026
144834b
test(gateway): real cached-agent max_iterations regression test
teknium1 Jun 19, 2026
fd92a3a
fix(gateway): Windows restart no longer causes a silent outage
salesondemandio Jun 8, 2026
b12c0cd
test(windows): run pytest-timeout in thread mode on Windows
salesondemandio Jun 8, 2026
715fa9e
fix(gateway): harden gateway command-line matcher (review findings)
salesondemandio Jun 8, 2026
b922d7d
chore(release): add salesondemandio to AUTHOR_MAP for PR #42664
teknium1 Jun 19, 2026
9cd7b8c
Merge pull request #48950 from kshitijk4poor/salvage/dashboard-sessio…
kshitijk4poor Jun 19, 2026
9245115
Revert "feat(skills): add html-artifact skill, fold in sketch + archi…
teknium1 Jun 19, 2026
9a2f275
fix(desktop): allow selecting slash output and shell logs in thread (…
OutThisLife Jun 19, 2026
a7b4fbc
fix(tui): guard /update against hosted dashboard mode
srojk34 Jun 19, 2026
160bb56
feat(tts): expose speaker_id on built-in Piper provider
Cdddo Jun 19, 2026
ddca590
chore: add Cdddo to AUTHOR_MAP
teknium1 Jun 19, 2026
01a6f11
fix(debug): include gui.log (dashboard/TUI/pty/websocket) in hermes d…
kshitijk4poor Jun 19, 2026
c1ffd4c
fix(cli): make refresh_interval configurable, default to 0 (disabled)
OYLFLMH Jun 18, 2026
1cc9157
test(cli): cover cli_refresh_interval default; map salvaged author
teknium1 Jun 19, 2026
fad4b40
fix(model): persist /model switch by default across sessions
yatesjalex Jun 19, 2026
5a506da
feat(tts): add auxiliary-model auto speech tags for xAI
Cdddo Jun 18, 2026
8ae6bd0
test(tts): cover xAI auto speech-tags auxiliary rewrite path
Cdddo Jun 18, 2026
4128c69
chore: add carlos.dddo to AUTHOR_MAP
teknium1 Jun 19, 2026
cb3d903
Fix model picker and autorefresh on change
IAvecilla Jun 17, 2026
054b8c8
feat: unified provider_catalog() — one source for CLI picker and desk…
austinpickett Jun 19, 2026
3be1326
feat(desktop): /api/env derives provider key membership from unified …
austinpickett Jun 19, 2026
60dfa0f
feat(desktop): Accounts tab derives membership from unified provider …
austinpickett Jun 19, 2026
6cb04be
feat(desktop): Keys tab groups by backend provider identity
austinpickett Jun 19, 2026
8fe7b52
test(desktop): lock GUI⊇`hermes model` provider parity; surface Bedrock
austinpickett Jun 19, 2026
ee0de63
feat(desktop): add API-keys search; keep provider lists priority-sorted
austinpickett Jun 19, 2026
d91b8d8
test(desktop): make keyVar a typed EnvVarInfo factory
austinpickett Jun 19, 2026
1d59d2d
feat(desktop): resolve OAuth status for catalog-only account providers
teknium1 Jun 19, 2026
06c7c25
test(desktop): lock generic OAuth status fallthrough for catalog-only…
teknium1 Jun 19, 2026
8b7c89b
feat(dashboard): session switcher panel on the Chat tab (#49077)
teknium1 Jun 19, 2026
e00b965
feat(tts): add xAI TTS speed and optimize_streaming_latency config knobs
Cdddo Jun 19, 2026
b936f92
fix(desktop): render send/prefill directive notices (/goal, /undo) (#…
teknium1 Jun 19, 2026
caaa916
fix(gateway): don't let delayed Discord status messages partition his…
simpolism Jun 10, 2026
df2420f
fix(gateway): keep non-Discord home-channel startup send byte-identical
teknium1 Jun 19, 2026
9e1f616
fix(clarify): docstring — put options in choices[] only, never enumer…
alt-glitch Jun 15, 2026
d82f9fa
feat(gateway): multiplex phase 0 — config flag, profile enumeration, …
benbarclay Jun 18, 2026
f538470
feat(gateway): multiplex phase 2 — fail-closed profile credential iso…
benbarclay Jun 18, 2026
f35abb1
feat(gateway): multiplex phase 1 — HTTP-inbound /p/<profile>/ routing…
benbarclay Jun 18, 2026
d5d02ea
feat(gateway): multiplex phase 3 — secondary-profile adapter registry…
benbarclay Jun 18, 2026
1e70df5
feat(gateway): multiplex phase 4 — lifecycle guard + per-profile obse…
benbarclay Jun 18, 2026
2dd285f
docs(gateway): document multiplexing opt-in + contract changes
benbarclay Jun 19, 2026
d7bff94
fix(cli): default cli_refresh_interval to 1.0 to keep status bar aliv…
teknium1 Jun 19, 2026
1958208
chore(release): add Sahil-SS9 to AUTHOR_MAP for PRs #48466/#44919/#44…
teknium1 Jun 19, 2026
a5e0607
fix(cron): compact cron failure messages + repair bare repo dirs afte…
Sahil-SS9 Jun 18, 2026
dfa5610
fix(kanban): machine-global singleton lock for the embedded dispatche…
Sahil-SS9 Jun 12, 2026
226e932
fix(kanban): cross-platform dispatcher lock + explicit release
Sahil-SS9 Jun 12, 2026
ba50e86
fix: open dispatcher lock file with explicit utf-8 encoding
teknium1 Jun 19, 2026
db744e7
feat(simplify-code): add risk-tiered application, Chesterton's Fence,…
Sahil-SS9 Jun 8, 2026
6c44471
fix(hindsight): lazy-install cloud client dependency
benfrank241 Jun 19, 2026
13d4b5f
fix(hindsight): align client version to 0.6.1 across all sources
teknium1 Jun 19, 2026
b9e521d
fix(kanban): hold reclaim while the worker is still alive
Sahil-SS9 Jun 12, 2026
35e7ca0
fix(kanban): treat already-gone worker as terminated, not survived
teknium1 Jun 19, 2026
a58287a
Merge remote-tracking branch 'origin/main' into pr48275-rebase
teknium1 Jun 19, 2026
bf9a048
test(config): pin config/env load behavior before managed scope
benbarclay Jun 18, 2026
9cbcc0c
feat(managed-scope): add managed_scope module (resolver, loaders, key…
benbarclay Jun 18, 2026
b5ddd6e
feat(managed-scope): managed config layer wins over user config
benbarclay Jun 18, 2026
81a663a
feat(managed-scope): apply managed .env last with override
benbarclay Jun 18, 2026
4f9e15d
feat(managed-scope): guard writes to managed config/env keys
benbarclay Jun 18, 2026
ddd519e
feat(managed-scope): surface managed scope in config show and doctor
benbarclay Jun 18, 2026
9a24e41
docs: add managed scope admin guide + cross-link from configuration
benbarclay Jun 18, 2026
732293c
fix(managed-scope): apply managed layer in cli.py's standalone config…
benbarclay Jun 19, 2026
b0e47a9
fix(managed-scope): honor managed scope in all standalone config loaders
benbarclay Jun 19, 2026
1928aa0
fix(managed-scope): honor managed scope in config→env bridges too
benbarclay Jun 19, 2026
2a5e9d9
Merge pull request #48275 from NousResearch/feat/cron-scheduler-provi…
teknium1 Jun 19, 2026
9026a8c
feat(gateway): add Raft bundled platform plugin with activity hooks
Jun 18, 2026
22ccb12
chore(release): map skyzh@mail.build to xxchan for Raft salvage
teknium1 Jun 18, 2026
7d86178
fix(raft): set stdin=DEVNULL on bridge subprocess
teknium1 Jun 18, 2026
1b04e4e
fix(cli): status bar no longer stays hidden after resize during idle …
teknium1 Jun 19, 2026
0d7abd5
fix(dashboard): sort chat session switcher by most-recent activity (#…
teknium1 Jun 19, 2026
6308d34
fix(desktop): rename "Restart messaging" -> "Restart gateway"
OutThisLife Jun 19, 2026
553cf4f
feat(desktop): restart the gateway from Cmd+K, with statusbar spinner…
OutThisLife Jun 19, 2026
a163992
fix(desktop): offer a Restart gateway action on messaging save/toggle…
OutThisLife Jun 19, 2026
929dbf7
fix(desktop): make rendered logs selectable so they can be copied
OutThisLife Jun 19, 2026
0e8b765
fix(desktop): rename "Restart messaging" → "Restart gateway", surface…
OutThisLife Jun 19, 2026
b266ad7
chore(deps): npm audit fix — bump transitive undici to clear advisori…
teknium1 Jun 19, 2026
c068980
fix(cli): clear viewport on width-change resize so the status bar can…
teknium1 Jun 19, 2026
ac00e73
feat(dashboard): add a reasoning-effort picker to the chat sidebar (#…
teknium1 Jun 19, 2026
990273d
fix(agent): accept pixel-correct image downscale when bytes grow (#48…
alt-glitch Jun 19, 2026
26e76a7
feat(telegram): opt-in Online/Offline bot status indicator (#49134)
teknium1 Jun 19, 2026
da72532
fix(cron): sanitize env for job script subprocesses
0z1-ghb Jun 19, 2026
239740a
feat(tools): MCP elicitation handler with gateway-aware approval routing
lgalabru Jun 9, 2026
746c46d
chore: add lgalabru to AUTHOR_MAP for PR #43112 salvage
teknium1 Jun 19, 2026
2d978bf
test(cron): make env-sanitize probe var deterministic
kshitijk4poor Jun 19, 2026
93d6e73
fix(mcp): expose late-connecting MCP tools to the agent (TUI/CLI/gate…
alt-glitch Jun 19, 2026
3713483
fix(mcp): refresh agent tool snapshot between turns (cache-safe late-…
alt-glitch Jun 19, 2026
b6e2a54
fix(mcp): address adversarial review round 1 (cache parity, gates, ra…
alt-glitch Jun 19, 2026
88d5232
fix(mcp): address adversarial review round 2 (stale-publish race, par…
alt-glitch Jun 19, 2026
f3e967a
fix(mcp): round-3 polish — generation capture adjacency + gateway con…
alt-glitch Jun 19, 2026
16642e2
fix(mcp): revert ACP rebuild to original; harden generation guard
alt-glitch Jun 19, 2026
8dc0b18
refactor(cron): copy os.environ before sanitizing for subprocess
kshitijk4poor Jun 19, 2026
f065088
docs(security): enumerate cron job scripts in §2.3 credential scoping
kshitijk4poor Jun 19, 2026
ba49fb5
fix(discord): hydrate channel context when replying to a message (#49…
teknium1 Jun 19, 2026
4c5217b
Merge pull request #49207 from kshitijk4poor/fix/cron-script-env-sani…
kshitijk4poor Jun 19, 2026
4072205
fix(mcp): keep short-TTL HTTP sessions alive with configurable ping k…
jquesnelle Jun 19, 2026
2bd1977
chore: release v0.17.0 (2026.6.19)
teknium1 Jun 19, 2026
a8c7673
feat(ragnos): re-baseline fork onto upstream v2026.6.19 (Sprint 0)
Jun 24, 2026
f5df5a0
feat(ragnos): add governance overlay plugin (pre_tool_call gate + tel…
Jun 24, 2026
953291b
fix(ragnos): log active photon inbound mode
Jun 24, 2026
e7ec732
fix(photon): classify Envoy overflow errors as retryable; add typing …
JoaoMarcos44 Jun 21, 2026
acc9d71
fix(photon): detect unexpected sidecar death and trigger reconnect
JoaoMarcos44 Jun 21, 2026
983c0c6
test(photon): cover overflow retry, typing cooldown, sidecar-crash de…
teknium1 Jun 21, 2026
9a9247e
fix(photon): recover degraded upstream stream
helix4u Jun 22, 2026
537454c
fix(photon): label upstream CatchUpEvents failures
SidUParis Jun 21, 2026
4a3a8fa
fix(photon): intercept console.log so 'stream interrupted' bursts esc…
teknium1 Jun 23, 2026
6215032
feat(photon): upgrade spectrum-ts sidecar to v7.0.0
underthestars-zhy Jun 26, 2026
e42a1ba
fix(photon): upgrade spectrum-ts sidecar to v8.0.0
underthestars-zhy Jun 26, 2026
5e09065
fix(photon): correlate tapbacks to bot message context
underthestars-zhy Jun 26, 2026
6c8e1ef
fix(photon): support own-message reply context
Jun 28, 2026
9cb51fc
Merge pull request #3 from ragnos-labs/codex/photon-v8-recovery-2026-…
ragnos-dev Jun 28, 2026
5b23717
fix(hermes): move own-message reply context into Photon adapter
Jun 29, 2026
25db92a
fix(hermes): restore upstream 30s reconnect delay in gateway core
Jun 29, 2026
f18c3e0
fix(ragnos): clear hermes conformance ci blockers
Jun 29, 2026
82c9cf0
chore(ragnos): keep setup hook out of conformance pr
Jun 29, 2026
ff174b3
chore(ragnos): drop unrelated install hook test from conformance pr
Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
39 changes: 39 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,42 @@ data/
# Compose/profile runtime state (bind-mounted; avoid ownership/secret issues)
hermes-config/
runtime/

# ---------- Not needed inside the Docker image ----------

# Desktop app source (Tauri/Electron); never installed in the container
apps/

# Test suite — not shipped in production images
tests/

# Documentation site (Docusaurus) and supplementary docs
website/
docs/

# Assets only used by the GitHub README
assets/
infographic/

# Plugin-level docs (hermes-achievements ships docs/ but the runtime doesn't read them)
plugins/hermes-achievements/docs/

# Nix / Homebrew / AUR packaging metadata — irrelevant to Docker
nix/
flake.nix
flake.lock
packaging/

# Design and planning documents
plans/
.plans/

# ACP registry manifest (icon + agent.json) — not consumed at runtime
acp_registry/

# Repo-level dotfiles that are git-only or dev-tooling config
.env.example
.envrc
.gitattributes
.hadolint.yaml
.mailmap
Binary file added .github/pr-screenshots/45449/billing-confirm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 2 additions & 3 deletions .github/workflows/contributor-check.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
name: Contributor Attribution Check

on:
pull_request:
branches: [main]
# No paths filter — the job must always run so the required check
# reports a status (path-gated workflows leave checks "pending" forever
# when no matching files change, which blocks merge).

pull_request:
branches: [main]
permissions:
contents: read

Expand Down
101 changes: 84 additions & 17 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,20 @@ on:
- 'optional-skills/**'
- '.github/workflows/deploy-site.yml'
workflow_dispatch:
inputs:
skills_index_run_id:
description: 'Optional Build Skills Index run ID whose skills-index artifact should be deployed'
required: false
type: string
rebuild_skills_index:
description: 'Force a fresh multi-source crawl instead of reusing the latest healthy index'
required: false
default: false
type: boolean

permissions:
contents: read
actions: read
pages: write
id-token: write

Expand Down Expand Up @@ -44,7 +56,7 @@ jobs:

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
node-version: 22
cache: npm
cache-dependency-path: website/package-lock.json

Expand All @@ -55,26 +67,81 @@ jobs:
- name: Install PyYAML for skill extraction
run: pip install pyyaml==6.0.2 httpx==0.28.1

- name: Build skills index (unified multi-source catalog)
- name: Prepare skills index (unified multi-source catalog)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ github.token }}
GITHUB_TOKEN: ${{ github.token }}
SKILLS_INDEX_RUN_ID: ${{ github.event.inputs.skills_index_run_id || '' }}
REBUILD_SKILLS_INDEX: ${{ github.event.inputs.rebuild_skills_index || 'false' }}
run: |
# Rebuild the unified catalog. The file is gitignored, so a fresh
# checkout starts without it and we want the freshest crawl in
# every deploy.
# The unified external catalog is expensive to crawl and can burn
# through the repository installation's GitHub API quota when several
# docs deploys land close together. Normal docs deploys therefore
# reuse the latest healthy catalog: first the artifact from a
# scheduled skills-index run, then the currently live index. Only a
# manual force rebuild does a fresh crawl here.
#
# This MUST be fatal. build_skills_index.py runs a health check and
# exits non-zero WITHOUT writing the output file when a source
# collapses (e.g. a GitHub API rate limit zeroes the github /
# claude-marketplace / well-known taps all at once). Letting the
# deploy continue would either (a) ship a degenerate index missing
# whole hubs — the June 2026 regression where OpenAI/Anthropic/
# HuggingFace/NVIDIA tabs vanished — or (b) fall through to a
# local-only catalog. Failing here keeps the last good deployment
# live (GitHub Pages serves the previous build) instead of
# publishing a broken catalog. Re-run the workflow once the
# transient rate limit clears.
# If we do crawl, the build remains fatal. build_skills_index.py runs
# the health check BEFORE writing and exits non-zero on source
# collapse, keeping the last good Pages deployment live instead of
# publishing a degenerate catalog.
set -euo pipefail
INDEX_PATH="website/static/api/skills-index.json"
mkdir -p "$(dirname "$INDEX_PATH")"

validate_index() {
python3 - "$INDEX_PATH" <<'PY'
import json
import sys
from pathlib import Path

path = Path(sys.argv[1])
try:
data = json.loads(path.read_text(encoding="utf-8"))
except Exception as exc:
print(f"invalid skills index JSON: {exc}", file=sys.stderr)
sys.exit(1)
skills = data.get("skills")
if not isinstance(skills, list) or len(skills) < 1500:
count = len(skills) if isinstance(skills, list) else "missing"
print(f"skills index too small: {count}", file=sys.stderr)
sys.exit(1)
print(f"skills index ready: {len(skills)} skills")
PY
}

if [ "$REBUILD_SKILLS_INDEX" = "true" ]; then
python3 scripts/build_skills_index.py
validate_index
exit 0
fi

if [ -n "$SKILLS_INDEX_RUN_ID" ]; then
tmpdir="$(mktemp -d)"
echo "Downloading skills-index artifact from run $SKILLS_INDEX_RUN_ID"
if gh run download "$SKILLS_INDEX_RUN_ID" --name skills-index --dir "$tmpdir"; then
candidate="$(find "$tmpdir" -name skills-index.json -type f | head -n 1 || true)"
if [ -n "$candidate" ]; then
cp "$candidate" "$INDEX_PATH"
if validate_index; then
exit 0
fi
fi
fi
echo "::warning::Could not use skills-index artifact from run $SKILLS_INDEX_RUN_ID; trying live index"
fi

echo "Downloading currently live skills index"
if curl -fsSL --retry 3 --retry-delay 5 \
"https://hermes-agent.nousresearch.com/docs/api/skills-index.json" \
-o "$INDEX_PATH" && validate_index; then
exit 0
fi

echo "::warning::Live skills index unavailable or unhealthy; falling back to a fresh crawl"
rm -f "$INDEX_PATH"
python3 scripts/build_skills_index.py
validate_index

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/docker-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@ on:
- docker/**
- .hadolint.yaml
- .github/workflows/docker-lint.yml

# No paths filter — the job must always run so the required check
# reports a status (path-gated workflows leave checks "pending" forever
# when no matching files change, which blocks merge).
pull_request:
branches: [main]
paths:
- Dockerfile
- docker/**
- .hadolint.yaml
- .github/workflows/docker-lint.yml

permissions:
contents: read
Expand Down
17 changes: 7 additions & 10 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,13 @@ on:
- 'docker/**'
- '.github/workflows/docker-publish.yml'
- '.github/actions/hermes-smoke-test/**'

# No paths filter — the job must always run so the required check
# reports a status (path-gated workflows leave checks "pending" forever
# when no matching files change, which blocks merge).
pull_request:
branches: [main]
paths:
- '**/*.py'
- 'pyproject.toml'
- 'uv.lock'
- 'Dockerfile'
- 'docker/**'
- '.github/workflows/docker-publish.yml'
- '.github/actions/hermes-smoke-test/**'

release:
types: [published]

Expand Down Expand Up @@ -90,7 +87,7 @@ jobs:
# (see `_SKIP_PARTS` in scripts/run_tests_parallel.py) because each
# shard would otherwise reach the session-scoped ``built_image``
# fixture in ``tests/docker/conftest.py`` and start a 3-7min
# ``docker build`` under a 180s pytest-timeout cap — guaranteed to
# ``docker build`` — guaranteed to
# die in fixture setup.
#
# Piggybacking here avoids a second image build: the smoke test
Expand All @@ -114,7 +111,7 @@ jobs:
run: |
uv venv .venv --python 3.11
source .venv/bin/activate
# ``dev`` extra pulls in pytest, pytest-asyncio, pytest-timeout
# ``dev`` extra pulls in pytest, pytest-asyncio —
# everything tests/docker/ needs. We deliberately avoid ``all``
# here because the docker tests only drive the container via
# subprocess and don't import hermes_agent's optional deps.
Expand Down
18 changes: 10 additions & 8 deletions .github/workflows/docs-site-checks.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
name: Docs Site Checks

on:
# No paths filter — the job must always run so the required check
# reports a status (path-gated workflows leave checks "pending" forever
# when no matching files change, which blocks merge).
pull_request:
paths:
- 'website/**'
- '.github/workflows/docs-site-checks.yml'
branches: [main]

workflow_dispatch:

permissions:
Expand All @@ -14,21 +16,21 @@ jobs:
docs-site-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
node-version: 22
cache: npm
cache-dependency-path: website/package-lock.json

- name: Install website dependencies
run: npm ci
working-directory: website

- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'
python-version: "3.11"

- name: Install ascii-guard
run: python -m pip install ascii-guard==2.3.0 pyyaml==6.0.3
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/history-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ name: History Check
# the PR head and main to be non-empty.

on:
# No paths filter — the job must always run so the required check
# reports a status (path-gated workflows leave checks "pending" forever
# when no matching files change, which blocks merge).
pull_request:
branches: [main]

Expand All @@ -24,9 +27,9 @@ jobs:
check-common-ancestor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # full history both sides for merge-base
fetch-depth: 0 # full history both sides for merge-base

- name: Reject PRs with no common ancestor on main
run: |
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ on:
- "**/*.md"
- "docs/**"
- "website/**"

# No paths filter — the job must always run so the required check
# reports a status (path-gated workflows leave checks "pending" forever
# when no matching files change, which blocks merge).
pull_request:
branches: [main]
paths-ignore:
- "**/*.md"
- "docs/**"
- "website/**"

permissions:
contents: read
Expand Down Expand Up @@ -154,7 +154,6 @@ jobs:
});
}


ruff-blocking:
# Enforce the rules in pyproject.toml [tool.ruff.lint.select]. Currently
# PLW1514 (unspecified-encoding) — catches bare ``open()`` /
Expand Down
Loading
Loading