Files
gstack/hosts/hermes.ts
T
Garry Tanandcapy-ai[bot] 9f44f188d1 v1.91.317.0 feat(harness): trigger-first skill descriptions, hybrid OpenClaw layout, opt-in --context block (GSTA-135) (#3555)
* test(harness): pin the GSTACK_SESSION_KIND=spawned marker and its readers (GSTA-135)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* feat(harness): trigger-first skill descriptions, hybrid OpenClaw layout, opt-in --context block (GSTA-135)

Router lines and Hermes leads open with the skill's triggers; OpenClaw
defaults to hybrid (five task skills plus the router); --context writes the
routing block only into a named file, refusing SOUL.md and any new Hermes
rules file that would outrank one Hermes loads now.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* docs(harness): skill-use layout, --context and HARNESS_CONTEXT_REFUSED (GSTA-135)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-29 13:28:08 +00:00

60 lines
2.3 KiB
TypeScript

import { defineHost, CROSS_MODEL_RESOLVERS, preambleToolGlossary } from './define-host';
const hermes = defineHost({
name: 'hermes',
displayName: 'Hermes',
tier: 'experimental',
capabilities: { toolExecution: true, questions: 'native', planMode: false, delegation: true, browser: true, safetyHooks: 'advisory' },
// Hermes indexes skills by frontmatter name, first match wins (#2825). Its
// skills index shows 57 chars of a description and "..." (agent/skill_utils.py
// SKILL_PROMPT_DESC_LIMIT = 60), so each description leads with when to use it.
frontmatter: {
mode: 'allowlist',
keepFields: ['name', 'description'],
descriptionLimit: null,
descriptionLead: 57,
nameMatchesDirectory: true,
},
extraPathRewrites: [
{ from: 'CLAUDE.md', to: 'AGENTS.md' },
],
toolRewrites: {
'use the Bash tool': 'use the terminal tool',
'use the Write tool': 'use the patch tool',
'use the Read tool': 'use the read_file tool',
'use the Edit tool': 'use the patch tool',
'use the Agent tool': 'use delegate_task',
"Claude Code's Agent tool": 'delegate_task',
'the Agent tool': 'delegate_task',
'Agent tool': 'delegate_task',
'use the Grep tool': 'search for',
'use the Glob tool': 'find files matching',
'the Bash tool': 'the terminal tool',
'the Read tool': 'the read_file tool',
'the Write tool': 'the patch tool',
'the Edit tool': 'the patch tool',
// #2015: Hermes asks through clarify.
...preambleToolGlossary('**Hermes tool names:** `AskUserQuestion` means your `clarify` tool (one question per call, options as choices); there is no `mcp__*__AskUserQuestion` variant.'),
},
suppressedResolvers: [
...CROSS_MODEL_RESOLVERS,
// GBRAIN_CONTEXT_LOAD and GBRAIN_SAVE_RESULTS are NOT suppressed.
// The resolvers handle GBrain-not-installed gracefully ("proceed without brain context").
// If Hermes has GBrain as a mod, brain features activate automatically.
],
// ./setup --host hermes (and setup run inside Hermes) registers every skill
// through gstack-harness into $HERMES_HOME/skills/gstack (one category).
install: {
linkingStrategy: 'symlink-generated',
registration: 'harness',
},
coAuthorTrailer: 'Co-Authored-By: Hermes Agent <agent@nousresearch.com>',
});
export default hermes;