Files
larksuite-cli/cmd
shanglei 2fcb703943 feat(config): non-blocking config init --new via --no-wait / --device-code
Mirror auth login's two-step device flow so AI agents can create a new
Feishu/Lark app without blocking. `--new --no-wait` initiates the device
authorization, prints device_code + verification_url + resume_args as JSON, and
returns immediately; `--device-code <code>` resumes polling, then persists and
probes the app. Plain `--new` keeps its existing blocking behavior.

- Cache the resume context (brand/profile/lang/interval/absolute expiry/config
  digest) keyed by a sha256 of the device_code; the secret is never cached.
- Re-check the config digest immediately before saving so a concurrent edit
  during the poll window is not clobbered; clear the cache only after a
  successful save or a terminal poll failure (denied/expired/timeout) so an
  interrupted resume can retry.
- Classify poll failures via sentinel errors on PollAppRegistration.
- Emit the resume step as an argv array (resume_args) — cross-platform and
  injection-safe — carrying --force-init when set.
- A non-terminal `config init` returns a FailedPrecondition error pointing at
  the two-step flow. The new flags are documented in `config init --help`.

Tests: cache round-trip, sha256 key, config digest, poll-failure
classification, flag-conflict attribution, resume guards (missing / expired /
corrupt cache, config drift), and an end-to-end initiate->resume flow through a
local HTTP server.
2026-06-18 14:07:34 +08:00
..