- endpoints: encodeURIComponent the id segments (task_id, app_id, node_id,
schema_id) interpolated into request URLs. task_id in particular comes from
the server's async-submit response and is fetched back with the bearer token
attached, so an unencoded value could steer the authenticated follow-up
request to a different path on the host.
- stream (SSE parser): cap the in-memory buffer (16 MiB). A stream that never
emits a newline, or that builds one enormous event from many data: lines,
could otherwise grow the buffer without bound and exhaust process memory.
https://claude.ai/code/session_017ZGQCjwNQF5Pz96gLUnnG1
- config set: mask api_key/access_token/access_key_id/access_key_secret in the
confirmation echo. It previously printed the stored secret verbatim to stdout
(CI logs, pipes, screen shares), unlike `config show` / `auth status` which
already maskToken().
- http / knowledge retrieve: use maskToken() in --verbose request logs instead
of printing the first 8 chars of the bearer token / AccessKey id.
- telemetry: write telemetry.jsonl with mode 0600 (was created world-readable
by default), matching the other credential-area writers.
- ensureConfigDir: chmod 0700 after mkdir, so a pre-existing ~/.bailian created
by an older build/another tool (where mkdir's mode is ignored) holding
cleartext credentials gets locked down too. Best-effort; never fatal.
https://claude.ai/code/session_017ZGQCjwNQF5Pz96gLUnnG1
Follow-up to 1.1.1.
- release.mjs: build packages before type checks so bailian-cli-core resolves on clean checkouts
- CHANGELOG: record the above under Fixed
- Reformat CONTRIBUTING / INSTALL / README / docs tables (prettier only, no content changes)
Documentation-only patch release.
- Add INSTALL.md for AI-Agent-driven installation
- Sync root and packages/cli READMEs (EN + CN)
- Drop unpkg links in favor of canonical sources
- release.mjs: assert README sync before publishing