Skip to content

fix(cli): resolve QA findings + conversation participant limit (CORE-2259)#60

Merged
xergioalex merged 5 commits into
mainfrom
fix/qa-cli-32x-core-2259
Jul 12, 2026
Merged

fix(cli): resolve QA findings + conversation participant limit (CORE-2259)#60
xergioalex merged 5 commits into
mainfrom
fix/qa-cli-32x-core-2259

Conversation

@xergioalex

@xergioalex xergioalex commented Jul 12, 2026

Copy link
Copy Markdown
Member

Summary

  • CORE-2260 — Fixed agent message list crash by extracting results from the paginated API envelope
  • CORE-2261 — Form transition now resolves human-readable labels (e.g. "Done") to machine keys
  • CORE-2262 — Added --json flag to dailybot status for machine-readable output
  • CORE-2263 — Client-side search query length validation (max 256 chars) matching server-side limit
  • CORE-2264 — Updated checkin create help text to reflect that members can now create check-ins
  • Conversation participant limit — Enforced Slack MPIM limit of 7 users + bot (8 total) in conversation open with client-side pre-check and conversation_too_many_participants error code handling

Test plan

  • agent message list returns messages without crashing
  • form transition --state "Done" resolves label to key
  • status --json emits valid JSON
  • Search query >256 chars is rejected client-side
  • checkin create --help no longer says "admins/managers"
  • conversation open with 8+ participants is rejected client-side
  • conversation open with ≤7 participants passes validation
  • conversation_too_many_participants API error handled gracefully
  • pytest passes (565/566 — 1 pre-existing unrelated failure)
  • Verified against local server (http://djangovscode:8000)

xergioalex and others added 3 commits July 12, 2026 02:00
Fix three CLI bugs and add one feature found during MEMBER-role QA:

- CORE-2260: agent message list crash — API returns a paginated envelope
  {count, results} but get_agent_messages() iterated the raw dict keys.
  Now extracts results from the envelope; display hardened for non-dict items.
- CORE-2261: form transition rejects labels — users had to pass the machine
  key (e.g. "done") instead of the label ("Done"). Added _resolve_workflow_state()
  that fetches the form's states and resolves labels to keys case-insensitively.
- CORE-2262: status --json flag was documented but missing. Added it.
- CORE-2264: checkin create help text said "admins/managers only" — relaxed
  to "role-gated server-side" since Members should be allowed.
- Dockerfile: bump CLI floor to >=3.2.2.

8 new tests added (868 total passing). Two API-side issues (CORE-2263,
CORE-2264) require server changes — handoff prompt in the DWP plan.

Co-authored-by: Cursor <cursoragent@cursor.com>
Now that the API validates search queries >256 chars with a 400
search_query_too_long response, add matching client-side validation
so users get instant feedback without a round-trip:

- query_options.py: build_query_params rejects (ValueError) instead
  of silently truncating search queries exceeding 256 chars.
- api_client.py: _merge_list_query raises APIError as defense-in-depth
  for callers that bypass build_query_params.
- Verified checkin create works as Member (API CORE-2264 fix deployed).
- 4 new tests, 872 total passing.

Co-authored-by: Cursor <cursoragent@cursor.com>
Slack group DMs (MPIMs) support at most 8 total members. Since the
Dailybot bot always occupies one slot, `conversation open` now rejects
more than 7 user participants client-side before hitting the API.

- Add MAX_CONVERSATION_PARTICIPANTS constant (7)
- Pre-check identifier count and post-dedup UUID count
- Handle `conversation_too_many_participants` API error code
- Document the limit in the vendored agent skill

Co-authored-by: Cursor <cursoragent@cursor.com>
@xergioalex xergioalex changed the title fix(cli): resolve QA findings from CLI 3.2.x full-suite (CORE-2259) fix(cli): resolve QA findings + conversation participant limit (CORE-2259) Jul 12, 2026
xergioalex and others added 2 commits July 12, 2026 02:47
…commands_test

Co-authored-by: Cursor <cursoragent@cursor.com>
- Widen print_agent_messages parameter type to list[Any] so the
  isinstance guard is not flagged as unreachable by mypy.
- Fix test_printers_still_emit_their_own_styling: Rich's capture()
  does not emit ANSI codes regardless of force_terminal; assert on
  content instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
@xergioalex xergioalex merged commit bbf1106 into main Jul 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant