lightning-terminal/litrpc/lit-scripts.yaml
sputn1ck 5cf25ca624 scripting: add Starlark scripting system for LiT automation
This commit introduces a comprehensive Starlark scripting system that
enables custom automation with access to all subdaemon RPCs (lnd, loop,
pool, faraday, taproot-assets). Scripts use native LND macaroons for
permission enforcement.

Key features:
- Starlark execution engine with sandboxed resource limits
- Standard builtins: print, log, sleep, now, json_encode/decode
- HTTP GET requests with URL allowlisting
- Persistent KV store with bucket-based permissions
- LND event subscriptions for long-running daemon scripts
- Script CRUD operations with macaroon baking
- Execution history and running script tracking
- Complete CLI commands (litcli scripts ...)

Database schema:
- scripts: Store script definitions with macaroon permissions
- script_executions: Audit trail for script runs
- script_kv_store: Persistent key-value storage for scripts
- running_scripts: Track currently running scripts

Security model:
- Each script has an LND macaroon baked with specific permissions
- RPC calls from scripts include this macaroon in the header
- LND/subdaemons validate permissions natively
- URL and bucket allowlists validated at runtime
2026-01-30 23:28:52 +01:00

45 lines
1.3 KiB
YAML

type: google.api.Service
config_version: 3
http:
rules:
# Scripts CRUD
- selector: litrpc.Scripts.CreateScript
post: "/v1/scripts"
body: "*"
- selector: litrpc.Scripts.UpdateScript
put: "/v1/scripts/{name}"
body: "*"
- selector: litrpc.Scripts.DeleteScript
delete: "/v1/scripts/{name}"
- selector: litrpc.Scripts.GetScript
get: "/v1/scripts/{name}"
- selector: litrpc.Scripts.ListScripts
get: "/v1/scripts"
# Script execution
- selector: litrpc.Scripts.StartScript
post: "/v1/scripts/{name}/start"
body: "*"
- selector: litrpc.Scripts.StopScript
post: "/v1/scripts/{name}/stop"
body: "*"
- selector: litrpc.Scripts.ListRunningScripts
get: "/v1/scripts/running"
- selector: litrpc.Scripts.ValidateScript
post: "/v1/scripts/validate"
body: "*"
- selector: litrpc.Scripts.GetExecutionHistory
get: "/v1/scripts/history"
# KV Store
- selector: litrpc.Scripts.KVGet
get: "/v1/scripts/kv/{bucket}/{key}"
- selector: litrpc.Scripts.KVPut
put: "/v1/scripts/kv/{bucket}/{key}"
body: "*"
- selector: litrpc.Scripts.KVDelete
delete: "/v1/scripts/kv/{bucket}/{key}"
- selector: litrpc.Scripts.KVList
get: "/v1/scripts/kv/{bucket}"