Skip to content

v0.9.0

Choose a tag to compare

@agentfirstkit agentfirstkit released this 05 Aug 14:21
· 3 commits to main since this release
  • Compile the entire CLI from a closed-world registry of 106 commands and 140 legal argument shapes, replacing hand-written conflict rules, error-hint tables and raw-argv scanning with shapes the binary can enumerate
  • Require arguments to follow their command — there are no global flags before it — and remove -h along with every short flag
  • Make --log a repeatable closed enum, so --log a,b becomes --log a --log b
  • Replace the suggestion set sub-subcommands with an --action argument whose operands are named flags, so a triage, case or notification suggestion is one flat shape
  • Require --confirm on doctor repair as an argument shape rather than rejecting it as a business error
  • Make --help list every legal argument combination of that command at once, and --docs render the whole reference
  • Derive a message's identity from its raw RFC822 bytes instead of its Message-ID, so byte-identical copies converge on one record and a reused Message-ID no longer collides two unrelated mails
  • Refund the --max-new-messages and byte budget spent on cross-mailbox duplicates, and report candidate_count_is_upper_bound from pull --dry-run since recognizing a duplicate needs the body a dry run never fetches
  • Abort a push step with the new imap_uidvalidity_changed error before issuing any STORE or MOVE against stale UIDs
  • Detect a UIDVALIDITY reset during pull, discard the stale cursor, force a full reconcile, and report uid_validity_reset_count and the affected mailboxes
  • Move every remaining location of a multi-location message instead of skipping the whole move when one copy already sits in the target, and persist flag state after each location so a later failure keeps earlier progress
  • Reject conflicting per-mailbox archive steps with the new archive_action_conflict error as a preflight, before any notification or case write lands locally
  • Allocate a random opaque push id per draft-send lifecycle so re-sending a draft records new sent evidence instead of overwriting the earlier one
  • Stop escalating failures that provably preceded any remote call into the manual-reconciliation push_remote_outcome_unknown state
  • Support Bcc recipients — kept in the local draft, Review UI, push preview and the sender's private evidence, stripped from SMTP DATA, retained in the SMTP envelope
  • Stop re-rendering hand-edited contact and draft files from their structs; a frontmatter edit now moves only the keys whose values changed, preserving comments, key order, quote styles and body, including through contact rename
  • Report retryable: false on a partial push --confirm envelope, since exit 3 is never permission to retry a batch; per-item retryable inside failures remains the field that says what to re-queue
  • Stop printing "***" from config show for a secret that was never set, which had disagreed with config get and implied a credential was configured
  • Install the skill's bundled references/http-api.md alongside SKILL.md, which skill install had been dropping while SKILL.md pointed at it
  • Exit 0 on a broken pipe such as --docs | head, matching the AFDATA emitter
  • Document exit codes 3 and 4, the cli_invocation_invalid and output_setup_failed defect codes, the byte-exact identity model, and the fact that push ids are opaque
  • Relock onto agent-first-data 0.31.0 and agent-first-slug 0.6.2, and cover every declared shape with a synthetic-invocation test that fails when a builder arm reads an argument id its shape cannot supply