cli/api: add `--jurisdiction` and document the command · Entire

cli/api: add --jurisdiction and document the command

7e82009main·

Soph·1w ago·3 files·+101 added/-11 removed

entire api --to cell only reached the caller's home entire-api cell. Add --jurisdiction <slug> (e.g. us, eu) to target a specific jurisdiction's cell instead, reusing the existing cell machinery: it passes auth.CellTarget{Jurisdiction: slug} into NewEntireAPICellClient, which mints the jurisdictional identity token and resolves that jurisdiction's cell URL. No new exchange/URL/security logic.

--jurisdiction targets a cell, so it implies --to cell; combining it with an explicit --to core is a contradiction and errors clearly. The slug is normalized to a bare lowercase DNS label (US/" us " -> us).

Surface it to agents: the command was already visible in entire help and entire agent-help, and agent-help renders live from the Cobra tree, so the updated Long/Example/flag-usage explain --jurisdiction automatically on drill-down. Also document entire api in CLAUDE.md, which was missing it entirely.

Sessions

Changes

57 unmodified lines

Top-level lifecycle and standalone commands: enable, disable, status, login, logout, clean, version, dispatch, activity, help, configure, agent-help.

api is an authenticated passthrough to Entire's HTTP APIs (gh-style): it attaches the right bearer and dials the right host so callers don't plumb auth themselves. --to core (default) hits the control plane; --to cell hits an entire-api cell. --jurisdiction <slug> (e.g. us, eu) targets a specific jurisdiction's cell instead of the caller's home cell and implies --to cell (cell routing + identity-token exchange live in auth.NewEntireAPICellClient via auth.CellTarget). {owner}/{repo}/{repo_id} in the path are filled from the current repo's origin remote. It is visible in entire help and entire agent-help, so agents discover it as the supported way to call the API.

agent-help renders machine-readable, agent-facing usage live from the Cobra command tree (so it always matches the installed binary): bare prints a


MCLAUDE.md+11/-1
const apiMaxResponseBytes = 32 << 20 // 32 MiB cap on a printed response body.

// The two --to backends: the control plane (core) and a per-jurisdiction
// entire-api cell.
const (
    apiTargetCore = "core"
    apiTargetCell = "cell"
)

type apiFlags struct {
    to           string
    jurisdiction string
    method       string
    rawFields    []string
    typedFields  []string
}
func runAPI(ctx context.Context, w, errW io.Writer, rawPath string, f *apiFlags) error {
    ... // function implementation
}
func TestResolveAPIClient_UnknownTarget(t *testing.T) {
    ... // function test logic
}