Repository navigation
v0.19.1
Fixes #137 — kiro: context tokens use an assumed 200k window and the last percent, so start size reads wrong
Fixes #126 — Release: npm stuck at 0.16.1 (0.17.0 to 0.19.0 never published), so the homebrew job fails and bun add -g installs a stale ach
Fixes #135 — Exit reason picks a routine INFO log line instead of the real stderr error
Fixes #133 — kiro (headless v3): nonzero exit hides the CLI's stderr reason, e.g. monthly usage limit
Fixes #131 — Kiro tap leaks HTTPS_PROXY into the agent's shell tools; other HTTPS clients get 502
Fixes #128 — Piped stdout is truncated at 64 KiB (binary) / 128 KiB (bun from source) since 0.17: ach dash --json --all | jq gets invalid JSON
Fixes #127 — kiro ACP transport: --kiro-engine v3 dies in initialize; kiro-cli acp rejects --agent/--model/--effort/--trust-all-tools with v3
Fixed
- kiro: the context window is now derived instead of assumed (#137). A v3 run's
context_usagebreakdown gives the window from its largest category (tokens / percent), snapped to a known size, so Opus 5.5 andautoruns read a 1M window (windowSource: 'derived') instead of the assumed 200k, which read context about 5x low. Summing the breakdown's token counts is wrong after the first update, because kiro zeroes some category tokens while keeping their percent.usage.contextalso gainsstartPercentage/startTokens(the first reading, the session's start size) and an optionalbreakdown;percentage/tokensstay the end reading, and the run summary prints both. Window precedence: session store, then derived, then assumed. - npm stuck at 0.16.1 (#126): the release workflow now publishes the tagged version to npm (
npmjob, provenance, idempotent, fails loudly without theNPM_TOKENsecret), and the homebrew job waits on it. A backfill of an older tag (gh workflow run release-binaries.yml -f tag=vX.Y.Z) publishes under thebackfilldist-tag, solatestnever moves backwards. See docs/PACKAGING.md. - The nonzero-exit reason no longer picks routine log lines (#135). A headless kiro-cli run that exited 1 read
kiro-cli exited with code 1: [INFO] [KRS] <-- GenerateAssistantResponseCommand done totalEvents=9, because the fallback took the last stderr line.pickStderrReason(src/adapters/shared.ts) now never picks INFO/DEBUG/TRACE-tagged lines ([INFO],DEBUG,level=trace). It prefers the last line that looks like a failure (error,failed,not offered,denied,exceeded,unauthorized,forbidden), then the last WARN line, then the last other non-empty line. When only routine lines remain, the message stays bare. The stderr tail grew from 5 to 20 lines (still 4 KB per line), so trailing INFO lines no longer push the real error out. - A CLI child that exits nonzero now reports why (#133). The exit error used to say only
kiro-cli exited with code 1, so a kiro-cli headless run that stopped onThe monthly usage limit has been reachedlooked like a crash. The shared run loop (src/adapters/shared.ts) keeps the last few stderr lines and appends the most relevant one, ANSI codes stripped: the last line matchingerror, else the last non-empty line, as inkiro-cli exited with code 1: Error: Internal error (code -32603): ... The monthly usage limit has been reached. The message prefix is unchanged, so existing matchers still work. When an adapter's own stderr hook already raised a specific error (cursor), the exit message stays bare, so the reason is not reported twice. Exit 0 is unchanged. - kiro: the MITM credit tap no longer breaks HTTPS from the agent's shell tools (#131). kiro-cli hands the tap env (
HTTPS_PROXY,SSL_CERT_FILE,NODE_EXTRA_CA_CERTS) to every command the agent runs, and mitmdump intercepted every host. A host whose certificate chain mitmdump could not verify (for example behind a TLS-inspecting network proxy) came back as HTTP 502, so another vendor's CLI run from the agent's shell failed on every call. mitmdump now gets--allow-hostsfor the metered hosts only (codewhisperer.*.amazonaws.com,runtime.*.kiro.dev, extendable withACH_KIRO_TAP_HOSTS), and other hosts are tunneled raw to their origin.SSL_CERT_FILEnow points at the system roots plus the tap CA instead of the bare tap CA, so OpenSSL clients can still verify tunneled hosts. See docs/KIRO.md. - Piped stdout is no longer truncated under Bun (#128).
ach dash --json --all | wc -cstopped at 64 KiB in the compiled binaries and 128 KiB from source, because the CLI calledprocess.exitbefore the pipe drained: under Bun the emptywrite("", cb)guard fires its callback while earlier output is still queued. The CLI now records stdout/stderr backpressure (awrite()that returns false) and waits fordrainbefore every forced exit (src/cli/stdio-flush.ts), includingwatch,serveand the livedashshutdown paths. - kiro:
--kiro-transport acp --kiro-engine v3no longer dies ininitialize(#127). kiro-cli rejects--agent,--model,--effort,--trust-all-toolsand--trust-toolswith--agent-engine v3onacp, so for v3 only--agent-engine v3is passed. Aftersession/new(orsession/load) the agent (a mode), model and effort are set withsession/set_config_option, because v3 does not implementsession/set_model. Each value is checked against the options v3 sends back, since v3 accepts unknown values without an error. An agent the session does not offer fails before any prompt, and the error suggests--kiro-transport headless. A fresh workspace can load its model catalog aftersession/new, so the handshake waits up to 15 s for it.kiro.toolsis applied by answeringsession/request_permission(allallows, a list allows the listed tool ids or ACP kinds,noneor unset denies). The run evidence recordsengine,effortAck,currentEffortandtoolTrust. Verified live on kiro-cli 2.29.0.