mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 14:38:59 +02:00
hosts/*.ts were ten copies of one file: runtimeRoot byte-identical in 9/10, pathRewrites mechanically derivable from the host name for 7/10, the 11-entry toolRewrites map byte-identical between openclaw and gbrain, and every asset change a 10-file edit (cursor and slate had already fallen out of three other hand-maintained lists). defineHost() owns the defaults; each host file now declares only what makes it different (slate/cursor: 8 lines each). Shared constants: CROSS_MODEL_RESOLVERS, GBRAIN_RESOLVERS, EXEC_STYLE_TOOL_REWRITES. Genuinely-different things stayed explicit: codex/factory $GSTACK_ROOT rewrites, hermes's tool vocabulary, claude's denylist+prefixable install, opencode's wider runtimeRoot. Proof: JSON.stringify(ALL_HOST_CONFIGS) dump-diff before/after EMPTY (and a runtime walk confirmed no function-valued or undefined-keyed fields, so the JSON diff is complete); gen:skill-docs --host all zero-diff; host-config + gen-skill-docs + idempotency suites 485/485. Host files 595 -> 285 lines. docs/ADDING_A_HOST.md teaches the factory pattern. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { defineHost, CROSS_MODEL_RESOLVERS, EXEC_STYLE_TOOL_REWRITES } from './define-host';
|
|
|
|
/**
|
|
* GBrain host config.
|
|
* Compatible with GBrain >= v0.10.0 (doctor --fast --json, search CLI, entity enrichment).
|
|
* When updating, check INSTALL_FOR_AGENTS.md in the GBrain repo for breaking changes.
|
|
*/
|
|
const gbrain = defineHost({
|
|
name: 'gbrain',
|
|
displayName: 'GBrain',
|
|
|
|
frontmatter: {
|
|
mode: 'allowlist',
|
|
keepFields: ['name', 'description', 'triggers'],
|
|
descriptionLimit: null,
|
|
},
|
|
|
|
generation: {
|
|
generateMetadata: false,
|
|
skipSkills: ['codex'],
|
|
includeSkills: [],
|
|
},
|
|
|
|
extraPathRewrites: [
|
|
{ from: 'CLAUDE.md', to: 'AGENTS.md' },
|
|
],
|
|
toolRewrites: { ...EXEC_STYLE_TOOL_REWRITES },
|
|
|
|
// GBrain gets brain-aware resolvers. All other hosts suppress these.
|
|
suppressedResolvers: [
|
|
...CROSS_MODEL_RESOLVERS,
|
|
// NOTE: GBRAIN_CONTEXT_LOAD and GBRAIN_SAVE_RESULTS are NOT suppressed here.
|
|
// GBrain is the only host that gets brain-first lookup and save-to-brain behavior.
|
|
],
|
|
|
|
coAuthorTrailer: 'Co-Authored-By: GBrain Agent <agent@gbrain.dev>',
|
|
});
|
|
|
|
export default gbrain;
|