chore: promote staging to staging-promote/729449fa-24553476964 (2026-04-17 09:30 UTC)#2573
Conversation
* feat(cli/logs): add --grep support for filtering log output - Add --grep/-g flag for regex filtering (conflicts with --follow) - Add --ignore-case for case-insensitive matching - Add --context N to show lines around matches - Implement filter_lines() with regex crate - Add 6 comprehensive tests - Update documentation with examples Branching from staging as suggested in #371. * refactor(cli/logs): simplify regex compilation per bot feedback - Use RegexBuilder::new().case_insensitive(ignore_case) instead of if/else - Fix test assertion to avoid move issue (single unwrap_err() call) - Apply cargo fmt formatting * fix(cli/logs): address maintainer feedback - Use saturating_add to prevent integer overflow in context calculation - Add test_filter_lines_with_non_overlapping_context to verify BTreeSet dedup logic Addresses review comments on PR #1533.
Agents could not create reactive missions (e.g. "log every telegram message") because of three shortcomings: 1. Cadence was optional and defaulted to "manual" silently — malformed values like "every 5 min" were also swallowed and became manual triggers 2. Reactive missions (event/webhook) had a hardcoded 300s cooldown with no way to override it via mission_create 3. mission_update and mission_delete existed in code but were not documented in the CodeAct preamble or the Tier 0 ActionDef schemas, so the LLM never called them Changes: - parse_cadence now returns Result and rejects unrecognized strings with a readable error so the LLM can correct the call - mission_create requires cadence (returns error if missing instead of defaulting to manual) - mission_create and mission_update accept guardrail params (cooldown_secs, max_concurrent, dedup_window_secs, max_threads_per_day) as top-level fields - mission_list output now includes cadence and guardrails so misconfigured missions are visible - mission_update and mission_delete added to CodeAct preamble - Tier 0 ActionDef schemas updated with correct cadence formats and guardrails - Regression tests for malformed cadence rejection Changes on review * chore: cargo fmt * fix: enforce numeric params to be u64 * fix: address reviewer comments * chore: divide long strings of comments * fix: extract_fuardrails overrided existing mission update * fix: allow event:*:pattern as cadence * fix: check before storing events * chore: fix docs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: add limit to regexbuilder * chore: homogenize tool description * fix: add tests * fix: implement requested fixes --------- Co-authored-by: Guillermo Alejandro Gallardo Diez <gagdiez@iR2.local> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Code reviewFound 6 issues:
Positive findings: excellent caller-level test coverage, strong input validation, no unwrap/expect in production, ReDoS protection via regex size limits, proper async discipline. |
Auto-promotion from staging CI
Batch range:
a53eac5c2dec6b6cd5c08189086093fde64aa9cb..030c09a68e22f1f5606d5a80abb1783b6d6deadaPromotion branch:
staging-promote/030c09a6-24558109707Base:
staging-promote/729449fa-24553476964Triggered by: Staging CI batch at 2026-04-17 09:30 UTC
Commits in this batch (66):
ironclaw profile listsubcommand (feat(cli): addironclaw profile listsubcommand #2288)reasoning_contentfields in chat completions response (fix: duplicatereasoning_contentfields in chat completions response #2493)Current commits in this promotion (2)
Current base:
staging-promote/729449fa-24553476964Current head:
staging-promote/030c09a6-24558109707Current range:
origin/staging-promote/729449fa-24553476964..origin/staging-promote/030c09a6-24558109707Auto-updated by staging promotion metadata workflow
Waiting for gates:
Auto-created by staging-ci workflow