Skip to content

feat: expose bulk-delete (cues, cueapi #650 / cli #46 parity)#11

Merged
mikemolinet merged 1 commit into
mainfrom
feat/cues-bulk-delete
May 9, 2026
Merged

feat: expose bulk-delete (cues, cueapi #650 / cli #46 parity)#11
mikemolinet merged 1 commit into
mainfrom
feat/cues-bulk-delete

Conversation

@mikemolinet
Copy link
Copy Markdown
Collaborator

Summary

Exposes cueapi bulk-delete as the bulk-delete Action command. Closes (in part) Backlog row cmousydyn — originally mistitled "messages bulk-delete"; PM corrected to "cues" on 2026-05-09 ~20:45Z after my pre-verify caught the title-vs-reality mismatch.

What's added

action.yml

  • Add bulk-delete to the command input description list (Cue management section).
  • New cue-ids input — whitespace/newline-separated cue IDs, max 100 per call. Description notes per-ID atomic semantic + the always-pass---yes/CLI-sends-X-Confirm-Destructive pattern.
  • New env-var injection: CUE_IDS: ${{ inputs.cue-ids }}.
  • New runs.steps case branch: validates 1-100 IDs, splits on whitespace via read -ra, appends each as positional arg, always passes --yes. Fails with explicit ::error:: if cue-ids empty or > 100.
  • Update unsupported-command error message to include bulk-delete.

parity-manifest.json

  • Add bulk-delete to commands_exposed_via_action with full provenance note (cueapi #650, cli #46, the title-correction trail).
  • Remove the factually-wrong messages bulk-delete entry from commands_missing_from_action (PR #650 is cues, not messages; messages bulk-delete endpoint doesn't exist on cueapi-core or private cueapi).
  • Correct the post_2026_05_04_cueapi_prs_not_yet_in_action entry for #650 from DELETE /v1/messages bulk delete to POST /v1/cues/bulk-delete with a correction note.

Behavior

- uses: cueapi/cueapi-action@v1
  with:
    command: bulk-delete
    cue-ids: |
      cue_abc
      cue_def
      cue_xyz
    api-key: ${{ secrets.CUEAPI_API_KEY }}

Server returns {"deleted": [...], "skipped": [...]} printed to stdout. Per-ID atomic — IDs that don't exist or aren't owned by the caller land in skipped (silent skip on miss; no info leak about other tenants' cues).

Stats

  • 2 files changed (+33/-5).

Test plan

  • python3 -c "import yaml; yaml.safe_load(open('action.yml'))" valid
  • python3 -c "import json; json.load(open('parity-manifest.json'))" valid
  • Whitespace splitting via read -ra handles both space- and newline-separated inputs (standard bash)
  • Boundary: > 100 IDs fails with ::error:: before any network call (matches server cap; fail-fast)
  • Empty cue-ids fails with ::error:: (avoids invoking CLI with no args)
  • action.yml runs section follows the same shape as existing case branches (delete, get, etc.)

Note re: Backlog row title

Originally cmousydyn was titled "Parity port: bulk delete messages (#650) → cueapi-python + cueapi-mcp + cueapi-action". Pre-verify caught the mismatch — PR #650 is about cues, not messages. PM patched the row title to 'cues' and confirmed interpretation 1 (port the cues bulk-delete). This PR ships the cueapi-action piece; cueapi-python (#37, merged) + cueapi-mcp (#32, in flight) ship the other pieces.

Related

Closes

  • Closes (in part) cmousydyn000004lgs0drkbap. Row stays in-progress until cueapi-mcp PR #32 also ships.

🤖 Generated with Claude Code

Closes (in part) Backlog row cmousydyn — originally mistitled 'messages
bulk-delete'; PM corrected to 'cues' on 2026-05-09 ~20:45Z after
pre-verify caught the mismatch (cueapi-core has zero @router.delete on
messages.py; PR #650 is cues, not messages).

Adds:
- action.yml `command: bulk-delete` exposure with new `cue-ids` input
  (whitespace-separated; max 100 per call; always passes --yes since
  CI has no interactive confirm; CLI sends X-Confirm-Destructive: true)
- Validation: error-and-exit if cue-ids empty or > 100 IDs
- Updated command description list + unsupported-command error message

parity-manifest.json:
- Add `bulk-delete` to commands_exposed_via_action
- Remove `messages bulk-delete` from commands_missing_from_action
  (was factually wrong; the underlying endpoint doesn't exist on
  /v1/messages — corrective entry now in commands_exposed_via_action)
- Correct the post-2026-05-04 PR list entry for #650 from 'DELETE
  /v1/messages bulk delete' to 'POST /v1/cues/bulk-delete' with
  correction note

Companion ports (same Backlog row):
- cueapi-python PR #37 (merged 2026-05-09 20:49Z)
- cueapi-mcp PR #32 (in flight)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mikemolinet mikemolinet added the enhancement New feature or request label May 9, 2026
@mikemolinet mikemolinet merged commit 30f0f5f into main May 9, 2026
@mikemolinet mikemolinet deleted the feat/cues-bulk-delete branch May 9, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant