feat(cues): client.cues.fire(send_at=...) (hosted PR #618 port)#30
Closed
mikemolinet wants to merge 2 commits into
Closed
feat(cues): client.cues.fire(send_at=...) (hosted PR #618 port)#30mikemolinet wants to merge 2 commits into
mikemolinet wants to merge 2 commits into
Conversation
Adds optional `send_at` kwarg to `client.cues.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 — no error for a few-ms-late caller). Tests: 3 new (4 → 7 in TestFire). Pinned: send_at omitted from body when default None; 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)
This was referenced May 4, 2026
govindkavaturi-art
pushed a commit
that referenced
this pull request
May 6, 2026
#32) * ci(test): spin up cueapi-core locally instead of hitting staging with ARGUS_STAGING_KEY The `test` job's `pytest tests/` runs the SDK's CRUD tests against a real CueAPI server. Previously that server was remote staging, authenticated by `secrets.ARGUS_STAGING_KEY`. Argus was retired 2026-05-02 (cueapi PR #539) and that key/user is no longer valid — every PR's `test` job has been red for ~3 days with `AuthenticationError: Invalid API key`, blocking PRs #30 and #31 (and any future SDK PRs). This switches the job to the same self-contained pattern that's already proven by the passing `sdk-integration` job: clone cueapi-core, install, migrate, boot uvicorn locally, register a fresh test user via POST /v1/auth/register (gated by ALLOW_REGISTER=true), capture the key, plumb it through the existing `CUEAPI_STAGING_URL` / `CUEAPI_STAGING_API_KEY` env vars (no SDK code change needed — `tests/conftest.py` already reads them from env). Workflow-only diff. No SDK behavior change. Note: `notify-merge` still references `secrets.ARGUS_CUEAPI_KEY` for the post-merge prod telemetry cue. That key is also stale, but the step runs after auto-merge so it doesn't gate the PR — leaving for a follow-up that needs a new prod key minted by an operator. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ci(test): replace alembic with Base.metadata.create_all (matches cueapi-core conftest) First push failed because OSS migration set ends at 023 while the User model declares an `api_key_encrypted` column with no migration backing it. That's a parity drift in cueapi-core (private migration 019 in the hosted repo includes the column; the OSS port renamed/replaced it with the alert-webhook bits but kept the column on the model). `alembic upgrade head` produced a schema missing that column → register endpoint 500'd on the User SELECT. Switch the CI bootstrap to model-driven schema init via `Base.metadata.create_all`, which is the exact pattern cueapi-core's own `tests/conftest.py` uses (and which is robust to model/migration drift because the model is the source of truth for tests). Imports the same model list as conftest so all tables register before create_all runs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
Closing in favor of #33 (cueapi-secondary's broader scope: #618 send_at + #632 exit_criteria + #683 idempotency_key in a single PR, with body-vs-header cascade fix + xfail on staging-replay verification already shipped). #33 subsumes the send_at port from this PR + adds two more features. Coordinated via cue (token CUEAPI-SECONDARY-LANE-OVERLAP-FLAG). |
auto-merge was automatically disabled
May 7, 2026 01:27
Pull request was closed
mikemolinet
added a commit
that referenced
this pull request
May 9, 2026
…t recent ports (#36) Manifest was 3 days stale; many endpoints listed as missing have been ported since the last audit. Moved from endpoints_missing → endpoints_covered (with PR refs): - POST /v1/cues/{id}/fire (PR #23; in-flight kwargs in #33) - POST /v1/executions/{id}/replay (PR #25) - GET /v1/executions/claimable (PR #23) - POST /v1/executions/{id}/claim (PR #23) - POST /v1/executions/claim (PR #23) - GET /v1/workers + DELETE /v1/workers/{id} (PR #26) - GET /v1/usage (PR #26) - POST /v1/agents + GET/PATCH/DELETE /v1/agents/{ref} + GET /v1/agents/{ref}/webhook-secret + GET /v1/agents/{ref}/inbox + /sent (PR #27) - POST /v1/messages + GET/read/ack (PR #28) Added in-flight refs (open PRs): - GET /v1/agents/roster (in-flight PR #35; cueapi #630 parity) - GET /v1/agents/{ref}/presence (in-flight PR #35; cueapi #662 parity) - send_at + exit_criteria + idempotency_key kwargs on fire (PR #33) - send_at kwarg on messages.send (PR #34) New endpoints_missing items (post-audit): - POST /v1/agents/{ref}/webhook-secret/regenerate (destructive; tracked) - DELETE /v1/messages bulk (cueapi #650; bounded by cueapi-cli upstream) - POST /v1/executions/{id}/live-claim (cueapi #664; handler-runtime, not SDK) New "in_flight_ports_2026_05_07" section listing all 4 currently-open SDK PRs with PR-overlap notes (PR #30/#33 lane-flagged with cueapi-main). Bumped sdk_version_at_audit 0.1.3 → 0.2.x. This refresh closes the Backlog row "Refresh cueapi-python parity-manifest.json" filed earlier today (Self-flag 2026-05-07). Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Parity port for hosted cueapi/cueapi#618. Adds optional
send_atkwarg toclient.cues.fire()for per-fire scheduling.Behavior
dispatch_outbox.scheduled_at <= now(). Past timestamps are forgiving (server treats as 'fire now' — idempotent, no error).FireRequest.send_atisOptional[datetime]; Pydantic parses ISO strings cleanly.Tests
3 new (4 → 7 in TestFire). Pinned:
None(nonullleakage)Depends on
cueapi/cueapi#618 merging to staging → prod for user-visible behavior. PR can merge independently — sending an unknown
send_atfield against an old server is silently ignored.Companion
cueapi-cli parity PR ships the same surface as
cueapi fire --send-at.🤖 Generated with Claude Code