Skip to content

feat(fire): --send-at flag (hosted PR #618 port)#37

Merged
govindkavaturi-art merged 1 commit into
mainfrom
feat/cli-fire-send-at-port-618
May 6, 2026
Merged

feat(fire): --send-at flag (hosted PR #618 port)#37
govindkavaturi-art merged 1 commit into
mainfrom
feat/cli-fire-send-at-port-618

Conversation

@mikemolinet
Copy link
Copy Markdown
Collaborator

Summary

Parity port for hosted cueapi/cueapi#618 (per-fire send_at scheduling on POST /v1/cues/{id}/fire).

cueapi fire cue_x --send-at "2026-05-04T20:00:00Z"
cueapi fire cue_x --payload-override '{"task":"demo"}' --send-at "2026-05-04T22:00:00Z"

Behavior

  • Server gates dispatch on dispatch_outbox.scheduled_at <= now(). Past send_at timestamps are forgiving (server treats as 'fire now' — idempotent, no error).
  • ISO 8601 string passed through as-is. Server's FireRequest.send_at is Optional[datetime]; Pydantic parses ISO strings cleanly.

Tests

4 new (133 → 137 total). Pinned:

  • Help text shows --send-at
  • Body shape: send_at lands in JSON body unchanged
  • Body shape: omits when unset (no null leakage)
  • Combines correctly with --payload-override + --merge-strategy

Depends on

cueapi/cueapi#618 merging to staging → prod for user-visible behavior. PR can merge independently — sending an unknown send_at field against an old server is silently ignored (FireRequest's Pydantic extra defaults to ignore).

Companion

cueapi-python parity PR ships the same surface as client.cues.fire(send_at="...").

🤖 Generated with Claude Code

Adds `--send-at` to `cueapi fire` for per-fire scheduling. Server-side
FireRequest gained `send_at: Optional[datetime]` in #618; the dispatcher
gates on dispatch_outbox.scheduled_at. Past timestamps are forgiving
(server treats as 'fire now', idempotent).

Tests: 4 new (133 → 137 total). Pinned: --send-at omitted from body
when unset, combines correctly with --payload-override + --merge-strategy.

Depends on cueapi/cueapi#618 merging to staging then prod for
user-visible behavior. PR can merge independently — sending an unknown
`send_at` field against an old server is silently ignored (Pydantic
extra='ignore' default on FireRequest).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Copy link
Copy Markdown
Member

@govindkavaturi-art govindkavaturi-art left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean port of hosted #618. ISO 8601 UTC timestamp; past-timestamp forgiveness preserved (server-side fire-now semantics) so CLI authors don't have to clock-skew-protect. Approve.

@govindkavaturi-art govindkavaturi-art merged commit ee943b6 into main May 6, 2026
4 checks passed
govindkavaturi-art pushed a commit that referenced this pull request May 6, 2026
…38)

Updates `parity-manifest.json` to reflect the 8-PR parity wave landed today.

`commands_covered` block extended with the new commands (now 35 total):
- 3 new executions subcommands (replay / verification-pending / verify) from PR #31
- 9 new agents commands (messaging primitive identity surface) from PR #28
- 4 new messages commands (messaging primitive lifecycle) from PR #29
- 2 new workers commands (list / delete) from PR #33
- 2 new `key webhook-secret` subcommands from PR #33
- `--send-at` flag on `cueapi fire` from PR #37 (in flight, depends on hosted #618)

`command_drift`:
- `cueapi create`: 6 new flags moved missing → covered (--require-payload-override, --required-keys, --delivery, --alerts, --catch-up, --verification, --on-success-fire). Only `--transport` remains in missing — flagged as refactor scope, not a simple flag-add.
- `cueapi update`: 9 new flags moved missing → covered. missing_flags now empty.
- `cueapi fire`: new entry capturing the 3 covered flags including --send-at.
- `cueapi executions get`: missing_display cleared (PR #589 ported in #26).
- `cueapi executions list`: 4 new filters moved missing → covered (no remaining gap).

`endpoints_missing`:
- All 8 entries from the seed manifest cleared except `POST /v1/worker/heartbeat`.
- That endpoint stays in missing with documented rationale: cueapi-worker is
  the canonical wrapper with proper heartbeat-loop semantics. Direct CLI
  registration is redundant. Decision documented in the manifest entry +
  cueapi workers group docstring.

`ported_pr_history`:
- 9 entries with merge timestamps, replacing the pre-port forward-looking
  notes.
- Each entry cross-references the cueapi-cli PR + the hosted PR (when
  applicable) + the merge timestamp for forensics.

`cli_version_at_audit`: bumped 0.1.x → 0.2.x to reflect the new surface
area.

`last_full_audit`: kept at 2026-05-04 (this update is the post-merge
snapshot of the 2026-05-04 audit, not a fresh audit).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants