github
v0.4.0GitHub CLI and event-driven PR monitoring — typed queries and mutations, authenticated temporary webhooks, CI/comment/review notifications, and merge-triggered cleanup.
- macOS: arm64 · x64
- Linux: arm64 · armv7 · x64
- Windows: arm64 · x64
exact versions are immutable; binary and bundle artifacts are digest-pinned.
configuration
- default_timeout_ms: 30000
gh_executable:
max_output_bytes: 1048576
max_timeout_ms: 120000
webhooks:
enabled: false
max_body_bytes: 1048576
max_pending: 10000
queue: github-webhooks
storage_path: ./data/github-webhooks/store.sqlite3
tunnel_id: webhooksreadme
open as markdownMonitoramento durável de PR (opt-in)
Além das APIs CLI existentes, github::pr::watch, github::pr::unwatch,
github::pr::watch-status, github::pr::recover e o trigger github::pr::event
implementam monitoramento por webhooks. Desabilitado por padrão; leia
guia de webhooks para habilitação, permissões, recuperação e limitações.
Nenhum recurso externo é criado durante o registro da interface com defaults.
github
GitHub as iii functions, powered by the GitHub CLI. Typed github::*
functions cover pull requests, issues, repos, Actions runs and workflows,
releases, and search; github::exec runs any other gh command and
github::api reaches any GitHub REST endpoint. Agents get
schema-discoverable GitHub operations with read-vs-mutate permission gating
instead of raw shell.
Install
iii trigger compose::add worker=githubiii trigger compose::add resolves the worker and its dependencies, writes
exact declarations to worker-compose.yaml, and reconciles the Compose project.
The worker shells out to the GitHub CLI — install
a current gh (the typed field sets are validated against gh 2.94) and give
it credentials: either gh auth login on the host, or set GH_TOKEN for
the worker (see Configuration).
Quickstart
use iii_sdk::{register_worker, InitOptions, TriggerRequest};
use serde_json::json;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let iii = register_worker("ws://localhost:49134", InitOptions::default());
// Open PRs in a repo, typed and parsed:
let prs = iii
.trigger(TriggerRequest {
function_id: "github::pr::list".into(),
payload: json!({ "repo": "cli/cli", "state": "open", "limit": 5 }),
action: None,
timeout_ms: Some(60_000),
})
.await?;
println!("{prs:#?}"); // { value: [{ number, title, state, url, … }] }
// Anything else gh can do, verbatim:
let version = iii
.trigger(TriggerRequest {
function_id: "github::exec".into(),
payload: json!({ "args": ["--version"] }),
action: None,
timeout_ms: Some(60_000),
})
.await?;
println!("{version:#?}"); // { stdout, stderr, exit_code, … }
Ok(())
}Configuration
gh_executable: "" # path to gh; empty = `gh` on PATH
token: "${GH_TOKEN}" # env-expanded; empty = ambient `gh auth login`
default_timeout_ms: 30000 # per-call timeout when timeout_ms is omitted
max_timeout_ms: 120000 # upper clamp for any per-call timeout_ms
max_output_bytes: 1048576 # per-stream capture cap (flags *_truncated)Other keys (and their defaults) live in src/config.rs.