Documentation
¶
Index ¶
- Constants
- func BuildExecArgs(runtime Runtime, id string, argv []string, withTTY bool) []string
- func CollectHostnames(cfg *config.Config, include ...DeploymentRef) []string
- func DashboardHostname(runtime Runtime, id string) string
- func DataRoot(cfg *config.Config, runtime Runtime, id string) string
- func DeploymentPath(cfg *config.Config, runtime Runtime, id string) string
- func ExecInPod(cfg *config.Config, runtime Runtime, id string, argv []string) error
- func HomePath(cfg *config.Config, runtime Runtime, id string) string
- func Hostname(runtime Runtime, id string) string
- func Hostnames(runtime Runtime, id string) []string
- func KeystoreVolumePath(cfg *config.Config, runtime Runtime, id string) string
- func ListInstanceIDs(cfg *config.Config, runtime Runtime) ([]string, error)
- func MustDefaultDeploymentPath(cfg *config.Config) string
- func Namespace(runtime Runtime, id string) string
- func RenderSoul(objective string) (string, error)
- func ResolveInstance(cfg *config.Config, runtime Runtime, args []string) (id string, remaining []string, err error)
- func ResolveSingleDefaultNamespace(cfg *config.Config, runtime Runtime) (string, error)
- func SkillsPath(cfg *config.Config, runtime Runtime, id string) string
- func WorkspacePath(cfg *config.Config, runtime Runtime, id string) string
- type DeploymentRef
- type Descriptor
- type Runtime
Constants ¶
const ( OpenClaw Runtime = "openclaw" Hermes Runtime = "hermes" DefaultDomain = "obol.stack" DefaultInstanceID = "obol-agent" )
const RemoteSignerChartVersion = "0.3.2"
RemoteSignerChartVersion is the single source of truth for the `remote-signer` Helm chart pin used by both Hermes and OpenClaw deployments. It MUST be updated as a single edit; bumping it here updates every consumer in lockstep.
Chart 0.3.2 ships remote-signer image `v0.3.0`, which emits canonical Ethereum recovery-id signatures (`v=27/28`) from `/sign/.../message`, `/sign/.../typed-data`, and `/sign/.../hash`. Earlier images returned `v=0/1` (alloy y-parity), which was rejected by EIP-712 / ERC-3009 verifiers like USDC `transferWithAuthorization` and forced the buy.py caller to renormalize.
renovate: datasource=helm depName=remote-signer registryUrl=https://obolnetwork.github.io/helm-charts/
const SoulTemplate = `` /* 2104-byte string literal not displayed */
SoulTemplate is the default system-prompt scaffold for sub-agents.
It is shipped with the binary, not the Agent CRD, so we can ratchet guardrails forward without bumping the CRD schema. The CRD only carries the operator's objective text, which is interpolated at the {{ .OperatorObjective }} placeholder.
Lifecycle: written exactly once by the seeder when soul.md does not yet exist on the agent's data PVC. After that the agent owns the file and can rewrite it freely.
Variables ¶
This section is empty.
Functions ¶
func BuildExecArgs ¶ added in v0.10.0
BuildExecArgs returns the kubectl argv for `kubectl exec` into the agent pod identified by (runtime, id), running argv inside it. Pure / testable — no side effects. argv is the full in-pod command vector; argv[0] is the binary (e.g. "python3" or a runtime CLI path), argv[1:] its args.
withTTY toggles the `-t` flag; callers usually pass stdinIsTerminal().
func CollectHostnames ¶
func CollectHostnames(cfg *config.Config, include ...DeploymentRef) []string
func DashboardHostname ¶
func ExecInPod ¶ added in v0.10.0
ExecInPod runs argv inside the agent pod identified by (runtime, id) using the bundled kubectl binary. Stdin/stdout/stderr are wired to the host TTY.
On non-zero exit from the in-pod command, ExecInPod calls os.Exit with the same status to preserve exit codes for shell scripting. A nil return means the command exited 0.
func KeystoreVolumePath ¶
func RenderSoul ¶ added in v0.10.0
RenderSoul substitutes the operator's objective into the soul template. An empty objective renders the template verbatim — including a literal blank line where the objective would be — so callers can decide whether to enforce non-empty in their CRD validation.