mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 14:34:42 +01:00
* 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>
60 lines
2.3 KiB
TypeScript
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;
|