feat(#1595): add hyperhive.effortLevel baseline default option

Per-agent enum option (medium|high|xhigh, default medium) rendered into
the HYPERHIVE_EFFORT_LEVEL env var. The harness resolves effort as
operator-override-file -> this env -> medium and passes it to
claude --effort at turn launch (harness read+apply tracked separately).

Same declarative-default + runtime-override shape as hyperhive.model.
Umbrella: operator-controlled claude effort.
This commit is contained in:
atlas 2026-06-10 01:10:10 +02:00 committed by mara
commit 004df7a1c9

View file

@ -134,6 +134,29 @@ in
'';
};
options.hyperhive.effortLevel = lib.mkOption {
type = lib.types.enum [
"medium"
"high"
"xhigh"
];
default = "medium";
example = "high";
description = ''
Baseline claude effort level for this agent. Rendered into the
`HYPERHIVE_EFFORT_LEVEL` environment variable; the harness resolves
effort as operator-override-file this env built-in `"medium"`,
and passes the result to `claude --effort` at turn launch.
`"medium"` (the default) keeps token spend low and works well with
the harness across families. `"high"` matches the current platform
default; `"xhigh"` is recommended for coding / high-autonomy work on
capable models (Opus 4.8+) at higher token cost. The operator can
override at runtime per-agent via the web UI (applied on the next
session); any rebuild that changes this option resets that override.
'';
};
options.hyperhive.allowedBashPatterns = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
@ -912,6 +935,10 @@ in
# surfaces it to the frontend; an empty value falls back to the
# built-in default list.
HIVE_AVAILABLE_MODELS = lib.concatStringsSep "," config.hyperhive.availableModels;
# HYPERHIVE_EFFORT_LEVEL is the per-agent baseline effort (see
# hyperhive.effortLevel). The harness resolves operator-override-file
# → this env → "medium" and passes it to claude --effort at turn launch.
HYPERHIVE_EFFORT_LEVEL = config.hyperhive.effortLevel;
HIVE_ASSETS_DIR = "${pkgs.hyperhive-assets}/share/hyperhive";
SHELL = "${pkgs.bashInteractive}/bin/bash";
}