parent
0fc77df1a9
commit
8e09f8360a
47 changed files with 98 additions and 1026 deletions
|
|
@ -19,23 +19,6 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
# What an `agent.nix` still setting the dropped per-agent matrix switch is
|
||||
# told. Shared by the two `mkRemovedOptionModule` entries below, one per
|
||||
# spelling of the path.
|
||||
matrixEnableRemoved = ''
|
||||
The per-agent matrix switch is gone. Matrix is enabled for an agent exactly
|
||||
when it has at least one services.hyperhive.agent.matrixAccounts entry, and
|
||||
the hive-internal `main` entry is declared for you whenever
|
||||
services.hyperhive.agent.matrix.url is non-null.
|
||||
|
||||
- `enable = true` was the default: drop the line, nothing else to do.
|
||||
- `enable = false`: set services.hyperhive.agent.matrix.url = null instead
|
||||
(and declare no accounts of your own). That is what leaves the account set
|
||||
empty, which is now what suppresses the daemon, its path watcher and the
|
||||
injected extraMcpServers.matrix entry.
|
||||
|
||||
See docs/tools/matrix.md.
|
||||
'';
|
||||
hiveNameRemoved = ''
|
||||
An agent reads its hive's name at runtime from /etc/hyperhive-hive-facts,
|
||||
which the hive writes into every container, so no agent build sets it.
|
||||
|
|
@ -71,36 +54,12 @@ in
|
|||
./packages.nix
|
||||
./queue.nix
|
||||
./queue-identity.nix
|
||||
./renamed-options.nix
|
||||
./user.nix
|
||||
./screen.nix
|
||||
./weston-vnc.nix
|
||||
(lib.mkRemovedOptionModule [ "hyperhive" "web" "useUnixSocket" ] ''
|
||||
Unix socket mode is always enabled for all agents. Remove the
|
||||
setting from your agent.nix.
|
||||
'')
|
||||
(lib.mkRemovedOptionModule [ "hyperhive" "allowedBashPatterns" ] ''
|
||||
The built-in Bash tool is fully disabled; agents use
|
||||
mcp__bash__run instead. Remove the setting from your agent.nix.
|
||||
'')
|
||||
# The dropped per-agent matrix switch. A removal, not a silent delete,
|
||||
# because the definition that *changes meaning* is `false`: left undeclared
|
||||
# it would be ignored and the agent would quietly gain the matrix tools its
|
||||
# operator turned off. Failing the eval with the replacement spelling is the
|
||||
# only outcome that cannot do that.
|
||||
#
|
||||
# Both spellings, for the same reason ../host-modules/deploy.nix lists both
|
||||
# of `swarm|deploy.matrix.registrationTokenFile`: an existing agent.nix may
|
||||
# carry either the `hyperhive.*` path or the `services.hyperhive.agent.*`
|
||||
# one, and only the one it actually carries will fire. Neither is an entry
|
||||
# in ./renamed-options.nix — a rename pointing at an undeclared option
|
||||
# breaks evaluation for everyone, removed or not.
|
||||
(lib.mkRemovedOptionModule [ "hyperhive" "matrix" "enable" ] matrixEnableRemoved)
|
||||
(lib.mkRemovedOptionModule [ "services" "hyperhive" "agent" "matrix" "enable" ] matrixEnableRemoved)
|
||||
# Both spellings, for the reason given above.
|
||||
(lib.mkRemovedOptionModule [ "hyperhive" "hiveName" ] hiveNameRemoved)
|
||||
# The hive supplies both at runtime; a definition fails the eval, naming
|
||||
# where the value comes from.
|
||||
(lib.mkRemovedOptionModule [ "services" "hyperhive" "agent" "hiveName" ] hiveNameRemoved)
|
||||
(lib.mkRemovedOptionModule [ "hyperhive" "claudeMemoryMaxBytes" ] memoryMaxBytesRemoved)
|
||||
(lib.mkRemovedOptionModule [
|
||||
"services"
|
||||
"hyperhive"
|
||||
|
|
|
|||
|
|
@ -1,207 +0,0 @@
|
|||
# Deprecation shims for the agent tier's top-level `hyperhive.*` spelling.
|
||||
#
|
||||
# Per-agent options live at `services.hyperhive.agent.<name>`, beside the host
|
||||
# tier's `services.hyperhive.*`. These entries keep an `agent.nix` that still
|
||||
# uses the top-level `hyperhive.<name>` spelling evaluating, with a
|
||||
# deprecation warning.
|
||||
#
|
||||
# ⚠️ One entry per LEAF, not per namespace. A single entry for a parent path
|
||||
# only covers its children when the parent is a submodule-typed option; every
|
||||
# nested option here (`user`, `mcp`, `otel`, …) is a plain attrset of
|
||||
# declarations instead, so each leaf needs its own line — the same reason
|
||||
# `../host-modules/deploy.nix` renames the CI runner's knobs one by one.
|
||||
{ lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "_bashEnvFragments" ]
|
||||
[ "services" "hyperhive" "agent" "_bashEnvFragments" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "allowedRecipients" ]
|
||||
[ "services" "hyperhive" "agent" "allowedRecipients" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "autoCompact" ]
|
||||
[ "services" "hyperhive" "agent" "autoCompact" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "availableModels" ]
|
||||
[ "services" "hyperhive" "agent" "availableModels" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "backendEnvironmentFile" ]
|
||||
[ "services" "hyperhive" "agent" "backendEnvironmentFile" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "cargo" "shortMessages" ]
|
||||
[ "services" "hyperhive" "agent" "cargo" "shortMessages" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "claudeCodePath" ]
|
||||
[ "services" "hyperhive" "agent" "claudeCodePath" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "claudeMarketplaces" ]
|
||||
[ "services" "hyperhive" "agent" "claudeMarketplaces" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "claudePlugins" ]
|
||||
[ "services" "hyperhive" "agent" "claudePlugins" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "claudePluginsAutoUpdate" ]
|
||||
[ "services" "hyperhive" "agent" "claudePluginsAutoUpdate" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "dashboardLinks" ]
|
||||
[ "services" "hyperhive" "agent" "dashboardLinks" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "docs" "enable" ]
|
||||
[ "services" "hyperhive" "agent" "docs" "enable" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "docs" "source" ]
|
||||
[ "services" "hyperhive" "agent" "docs" "source" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "effortLevel" ]
|
||||
[ "services" "hyperhive" "agent" "effortLevel" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "extraMcpServers" ]
|
||||
[ "services" "hyperhive" "agent" "extraMcpServers" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "extraWebProxies" ]
|
||||
[ "services" "hyperhive" "agent" "extraWebProxies" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "forge" "url" ]
|
||||
[ "services" "hyperhive" "agent" "forge" "url" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "frontend" "dist" ]
|
||||
[ "services" "hyperhive" "agent" "frontend" "dist" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "frontend" "extraFiles" ]
|
||||
[ "services" "hyperhive" "agent" "frontend" "extraFiles" ]
|
||||
)
|
||||
# `frontend.mergedDist` deliberately has NO entry:
|
||||
# it is `readOnly` and ./frontend.nix already defines it, and a rename
|
||||
# module contributes a *definition* to its target — so a shim for it makes
|
||||
# every evaluation fail with "set multiple times". Nothing could have set
|
||||
# it anyway; a reader of the old path gets "option does not exist",
|
||||
# which says the same thing sooner. Same reasoning as the `hostUsersFile`
|
||||
# exclusion in ../host-modules/deploy.nix.
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "github" "enable" ]
|
||||
[ "services" "hyperhive" "agent" "github" "enable" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "gui" "enable" ]
|
||||
[ "services" "hyperhive" "agent" "gui" "enable" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "gui" "vncPort" ]
|
||||
[ "services" "hyperhive" "agent" "gui" "vncPort" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule [ "hyperhive" "icon" ] [ "services" "hyperhive" "agent" "icon" ])
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "logs" "queryUrl" ]
|
||||
[ "services" "hyperhive" "agent" "logs" "queryUrl" ]
|
||||
)
|
||||
# `matrix.enable` is deliberately absent from this list: it has no
|
||||
# replacement option, and a rename pointing at an undeclared option
|
||||
# breaks evaluation for everyone. Both of its spellings are
|
||||
# `mkRemovedOptionModule` in ./default.nix instead.
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "matrix" "url" ]
|
||||
[ "services" "hyperhive" "agent" "matrix" "url" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "matrixAccounts" ]
|
||||
[ "services" "hyperhive" "agent" "matrixAccounts" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "mcp" "bashHttpPort" ]
|
||||
[ "services" "hyperhive" "agent" "mcp" "bashHttpPort" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "mcp" "httpPort" ]
|
||||
[ "services" "hyperhive" "agent" "mcp" "httpPort" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "mcp" "matrixHttpPort" ]
|
||||
[ "services" "hyperhive" "agent" "mcp" "matrixHttpPort" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "mcp" "subagentHttpPort" ]
|
||||
[ "services" "hyperhive" "agent" "mcp" "subagentHttpPort" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule [ "hyperhive" "model" ] [ "services" "hyperhive" "agent" "model" ])
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "otel" "debug" ]
|
||||
[ "services" "hyperhive" "agent" "otel" "debug" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "otel" "enable" ]
|
||||
[ "services" "hyperhive" "agent" "otel" "enable" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "otel" "endpoint" ]
|
||||
[ "services" "hyperhive" "agent" "otel" "endpoint" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "otel" "extraResourceAttributes" ]
|
||||
[ "services" "hyperhive" "agent" "otel" "extraResourceAttributes" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "otel" "metricIntervalMs" ]
|
||||
[ "services" "hyperhive" "agent" "otel" "metricIntervalMs" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "otel" "protocol" ]
|
||||
[ "services" "hyperhive" "agent" "otel" "protocol" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule [ "hyperhive" "packages" ] [ "services" "hyperhive" "agent" "packages" ])
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "queue" "natsUrl" ]
|
||||
[ "services" "hyperhive" "agent" "queue" "natsUrl" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "queue" "tokenEndpoint" ]
|
||||
[ "services" "hyperhive" "agent" "queue" "tokenEndpoint" ]
|
||||
)
|
||||
# `queue.clientIdFile` / `queue.clientSecretFile` are excluded for the
|
||||
# `mergedDist` reason above: both are `readOnly`, so a shim's definition
|
||||
# collides with the option's own and breaks every evaluation. They are
|
||||
# derived paths no agent config could have set.
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "swarmName" ]
|
||||
[ "services" "hyperhive" "agent" "swarmName" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "useApiKey" ]
|
||||
[ "services" "hyperhive" "agent" "useApiKey" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "user" "gid" ]
|
||||
[ "services" "hyperhive" "agent" "user" "gid" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "user" "name" ]
|
||||
[ "services" "hyperhive" "agent" "user" "name" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "user" "passwordlessSudo" ]
|
||||
[ "services" "hyperhive" "agent" "user" "passwordlessSudo" ]
|
||||
)
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "hyperhive" "user" "uid" ]
|
||||
[ "services" "hyperhive" "agent" "user" "uid" ]
|
||||
)
|
||||
];
|
||||
}
|
||||
Loading…
Reference in a new issue