mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-06 08:54:04 +01:00
wip: harness registration in setup, uninstall, tests
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
b6f80f77d4
commit
bbebe4e56d
11 files changed
+425
-104
No files matched your search
@@ -131,6 +131,12 @@ export interface HostConfig {
|
||||
* overwrite a user's own AGENTS.md. See scripts/gen-agents-digest.ts.
|
||||
*/
|
||||
instructionTier?: { rulesFile: string };
|
||||
/**
|
||||
* 'harness': setup's arm for this host is `gstack-harness register <host>`
|
||||
* (lib/harness-register.ts): the host's render copied into the harness's own
|
||||
* skills folder with an ownership ledger, not linked into a host skills dir.
|
||||
*/
|
||||
registration?: 'harness';
|
||||
};
|
||||
|
||||
// --- Host-Specific Behavioral Config ---
|
||||
@@ -189,6 +195,9 @@ export function validateHostConfig(config: HostConfig, validResolverNames?: Read
|
||||
if (!['native', 'prose'].includes(caps.questions)) errors.push(`capabilities.questions must be 'native' or 'prose'`);
|
||||
if (!['enforced', 'advisory'].includes(caps.safetyHooks)) errors.push(`capabilities.safetyHooks must be 'enforced' or 'advisory'`);
|
||||
}
|
||||
if (config.install.registration === 'harness' && config.tier !== 'experimental') {
|
||||
errors.push('install.registration harness needs tier experimental (setup registers it through gstack-harness)');
|
||||
}
|
||||
if (config.tier === 'instruction-only' && !config.install.instructionTier && config.name !== 'slate' && config.name !== 'gbrain') {
|
||||
errors.push('instruction-only hosts must declare install.instructionTier (what setup tells the user to copy)');
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user