mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 22:48:57 +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>
20 lines
736 B
TypeScript
20 lines
736 B
TypeScript
import { defineHost } from './define-host';
|
|
|
|
const opencode = defineHost({
|
|
name: 'opencode',
|
|
displayName: 'OpenCode',
|
|
|
|
globalRoot: '.config/opencode/skills/gstack', // XDG config dir, not ~/.opencode
|
|
|
|
// OpenCode links a wider runtime asset set than the shared default
|
|
// (design binary, review specialists, qa templates/references, DX hall of fame).
|
|
runtimeRoot: {
|
|
globalSymlinks: ['bin', 'browse/dist', 'browse/bin', 'design/dist', 'gstack-upgrade', 'ETHOS.md', 'review/specialists', 'qa/templates', 'qa/references', 'plan-devex-review/dx-hall-of-fame.md'],
|
|
globalFiles: {
|
|
'review': ['checklist.md', 'design-checklist.md', 'greptile-triage.md', 'TODOS-format.md'],
|
|
},
|
|
},
|
|
});
|
|
|
|
export default opencode;
|