Feature: strukturerade verktygsgodkännanden
- shared: protokoll för approval (daemon:approval, server:approval[-resolved],
web:approval-decision, server:approval-decision)
- daemon: hook-läge ('agent-helm hook' — samma binär), lokal 127.0.0.1-endpoint
som hooken POST:ar till, long-poll tills beslut; graceful default (allow) när
ingen UI; timeout-fallback; skickar AGENT_HELM_HOOK_PORT till agentens env
- server: routar daemon:approval -> prenumeranter, beslut -> daemon + döljer kort
- web: reaktiv approvals-lista + kort-overlay (Tillåt/Neka), mobilanpassad
CI:
- release.yaml triggar nu även på master-push -> rullande 'latest'-release
(versionerade releaser kvar på v*-taggar); install.sh hämtar 'latest'
Docs: hook-konfig (gemini settings.json) + hook-env i .env.example + DEPLOY.md.
Säkerhet: hook-endpoint binder endast 127.0.0.1; inga hemligheter i repot.
Verifierat lokalt: hook->daemon->server->kort->beslut->hook ger {"decision":"allow"};
alla paket typecheckar; web bygger.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24 lines
909 B
Plaintext
24 lines
909 B
Plaintext
# Delad token som BÅDE daemon och frontend måste skicka för att få ansluta till servern.
|
|
# Byt till något hemligt — den här skyddar fjärrstyrning av en agent som kan köra shell.
|
|
AGENT_HELM_TOKEN=change-me
|
|
|
|
# --- server ---
|
|
PORT=8787
|
|
|
|
# --- daemon ---
|
|
SERVER_URL=ws://localhost:8787
|
|
# Kommandot som körs i pty:n. Default: gemini. Sätt t.ex. AGENT_CMD=bash för att testa pipelinen.
|
|
AGENT_CMD=gemini
|
|
# AGENT_ARGS=
|
|
# AGENT_CWD=
|
|
# AGENT_TITLE=
|
|
|
|
# --- hook (valfritt: strukturerade verktygsgodkännanden via BeforeTool) ---
|
|
# AGENT_HELM_HOOK_PORT=8788 # lokal 127.0.0.1-endpoint som `agent-helm hook` anropar
|
|
# AGENT_HELM_HOOK_DEFAULT=allow # beslut när ingen UI är ansluten (allow|deny)
|
|
# AGENT_HELM_HOOK_TIMEOUT=120000 # ms att vänta på beslut innan default används
|
|
|
|
# --- frontend (Vite läser bara VITE_*-prefix) ---
|
|
VITE_SERVER_WS=ws://localhost:8787
|
|
VITE_AGENT_HELM_TOKEN=change-me
|