Skip to content

feat(convex): add Convex plugin with Management API operations - #569

Merged
devjain32 merged 30 commits into
corsairdev:mainfrom
Mayank-saraswal:feat/convex-plugin
Oct 20, 2026
Merged

devjain32 merged 30 commits into
corsairdev:mainfrom
Mayank-saraswal:feat/convex-plugin

Conversation

@Mayank-saraswal

@Mayank-saraswal Mayank-saraswal commented Aug 2, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds the Convex plugin to Corsair with all 19 operations listed on the OSS dashboard. Every path, method, request body and response shape is checked against Convex's published OpenAPI specs (api.convex.dev/v1/openapi.json, public-deployment-openapi.json, deployment-openapi.json).

Operations

corsair.dev op Corsair endpoint HTTP
CONVEX_LIST_PROJECTS projects.list GET /v1/teams/{team_id}/projects
CONVEX_GET_PROJECT_BY_ID projects.getById GET /v1/projects/{project_id}
CONVEX_GET_PROJECT_BY_SLUG projects.getBySlug GET /v1/teams/{team_id_or_slug}/projects/{project_slug}
CONVEX_CREATE_PROJECT projects.create POST /v1/teams/{team_id}/create_project
CONVEX_DELETE_PROJECT projects.delete POST /v1/projects/{project_id}/delete
CONVEX_LIST_DEPLOYMENTS deployments.list GET /v1/projects/{project_id}/list_deployments
CONVEX_GET_DEPLOYMENT deployments.get GET /v1/deployments/{deployment_name}
CONVEX_CREATE_DEPLOYMENT deployments.create POST /v1/projects/{project_id}/create_deployment
CONVEX_UPDATE_DEPLOYMENT deployments.update PATCH /v1/deployments/{deployment_name}
CONVEX_DELETE_DEPLOYMENT deployments.delete POST /v1/deployments/{deployment_name}/delete
CONVEX_CREATE_DEPLOY_KEY deployKeys.create POST /v1/deployments/{deployment_name}/create_deploy_key
CONVEX_LIST_DEPLOY_KEYS deployKeys.list GET /v1/deployments/{deployment_name}/list_deploy_keys
CONVEX_DELETE_CUSTOM_DOMAIN customDomains.delete POST /v1/deployments/{deployment_name}/delete_custom_domain
CONVEX_GET_TOKEN_DETAILS platform.getTokenDetails GET /v1/token_details
CONVEX_LIST_DEPLOYMENT_CLASSES platform.listDeploymentClasses GET /v1/teams/{team_id}/list_deployment_classes
CONVEX_LIST_DEPLOYMENT_REGIONS platform.listDeploymentRegions GET /v1/teams/{team_id}/list_deployment_regions
CONVEX_EXECUTE_QUERY_BATCH deployment.executeQueryBatch POST https://<deployment>.convex.cloud/api/query_batch
CONVEX_GET_QUERY_TIMESTAMP deployment.getQueryTimestamp POST https://<deployment>.convex.cloud/api/query_ts
CONVEX_LIST_LOG_STREAMS deployment.listLogStreams GET https://<deployment>.convex.cloud/api/v1/list_log_streams

Management operations use https://api.convex.dev. Deployment-scoped operations resolve the host from the subdomain input, the plugin subdomain option, the connection's subdomain field, or an explicit deploymentUrl (restricted to https://*.convex.cloud).

Auth

  • api_key (default) or oauth_2. The credential is a Convex team/personal access token sent as Authorization: Bearer <token> to the Management API.
  • Deployment-scoped operations send Authorization: Convex <deploy key>, taken from the per-call deployKey input or the connection's deploy_key field. A connection that only stores a deploy key can still run deployment-scoped operations.

Database entities

Modeled on the Management API response objects (OpenAPI, docs); identifiers are int64 as in the API.

Entity Entity id Source object Written by
projects project id ProjectResponse projects.list, getById, getBySlug, create (fetches the full record after creating)
deployments deployment name PlatformDeploymentResponse deployments.list, get, create, update (refetches after the PATCH)
deployKeys deploy key id PlatformDeployKeyResponse plus deploymentName deployKeys.list (the secret returned by create is never stored)

Webhooks

None. corsair.dev lists no triggers for Convex, so the plugin defines no webhooks.

Live test

Run against the real Management API with a team access token (Authorization: Bearer, read-only calls through the plugin handlers; no keys in the repo).

Op Result
platform.getTokenDetails 200, teamToken payload matches schema
platform.listDeploymentRegions 200, 4 regions, matches schema
platform.listDeploymentClasses 403 ServiceAccountCannotManageTeam for team tokens (documented behavior of the API)
projects.list 200, empty team, matches schema
projects.getById / getBySlug, deployments.list / get, deployKeys.list (unknown ids) documented 404 ProjectNotFound / DeploymentNotFound, confirming path and auth
deployment.getQueryTimestamp / executeQueryBatch 200 on a public demo deployment (/api/query_ts, /api/query_batch)
deployment.listLogStreams 401 MalformedAccessToken with a bogus deploy key, confirming /api/v1/list_log_streams is the admin route
write ops (create/update/delete) covered by unit tests only; not run live

Tests

packages/convex/api.test.ts stubs fetch with real Response objects. Each of the 19 endpoints has a test that asserts the exact method, full URL with query string, auth header, JSON body, and the parsed result against literal values. Also covered: entity writes for projects, deployments and deploy keys, 401 mapping, 429 with Retry-After reaching the rate-limit handler, 403/404/5xx classification, deployment URL and subdomain validation, path-segment escaping, keyBuilder credential resolution, and cache writes and cleanup on create/delete. 50 tests pass.

Fixes #568

Checklist

  • I have run pnpm lint and all checks pass
  • I have run pnpm typecheck and there are no TypeScript errors
  • I have run pnpm build and all packages build successfully
  • I have run pnpm test and all tests pass
  • I have added or updated tests where applicable
  • I have added or updated necessary documentation (docs/plugins/convex, plugin-docs.yaml)

Screenshots / Demos (if applicable)

🎥 Demo video: Loom recording — running the full Convex plugin test suite (21/21 tests passing) and exercising the endpoints against a live Convex deployment.

Additional Notes

  • Footprint: packages/convex/**, the registration in packages/corsair/core/constants.ts, the packages/convex importer in pnpm-lock.yaml, docs/plugins/convex/**, and the Convex nav entry in docs/docs.json.
  • Deploy key secrets are never cached; only non-secret deploy key metadata from list_deploy_keys is stored.
  • Operations whose Convex response is an empty 200 (projects.delete, deployments.update, deployments.delete, customDomains.delete) return { success: true }.

@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

@Mayank-saraswal is attempting to deploy a commit to the corsair Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds the @corsair-dev/convex plugin with typed Convex API endpoints, authentication, deployment resolution, database synchronization, error handling, schemas, tests, package configuration, and provider registration.

Changes

Convex integration

Layer / File(s) Summary
Package, schema, and provider setup
packages/convex/package.json, packages/convex/schema/*, packages/convex/*config*, packages/convex/plugin-docs.yaml, packages/corsair/core/constants.ts
Adds the Convex package, database schemas, package configuration, documentation, test setup, and provider registration.
Contracts, client, and plugin wiring
packages/convex/endpoints/types.ts, packages/convex/client.ts, packages/convex/index.ts, packages/convex/error-handlers.ts
Adds typed endpoint schemas, request construction, error normalization, authentication, credential resolution, plugin types, and retry handlers.
Management API endpoint handlers
packages/convex/endpoints/projects.ts, packages/convex/endpoints/deployments.ts, packages/convex/endpoints/deploy-keys.ts, packages/convex/endpoints/custom-domains.ts, packages/convex/endpoints/platform.ts
Adds management API handlers with logging and database synchronization.
Deployment-scoped API flow
packages/convex/endpoints/deployment-scoped.ts
Adds deployment validation and authenticated query, timestamp, and log-stream operations.
Endpoint registry and validation coverage
packages/convex/endpoints/index.ts, packages/convex/api.test.ts
Registers 19 endpoints with metadata and schemas. Tests routing, authentication, request construction, deployment resolution, persistence, deletion, cache behavior, and error handling.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Corsair
  participant ConvexPlugin
  participant EndpointHandler
  participant ConvexRequestClient
  participant ConvexAPI
  participant Database
  Corsair->>ConvexPlugin: invoke Convex endpoint
  ConvexPlugin->>EndpointHandler: bind credentials and context
  EndpointHandler->>ConvexRequestClient: construct typed API request
  ConvexRequestClient->>ConvexAPI: send authenticated request
  ConvexAPI-->>EndpointHandler: return Convex response
  EndpointHandler->>Database: upsert or delete cached resource
  EndpointHandler-->>Corsair: return endpoint result
Loading

Possibly related PRs

  • corsairdev/corsair#473 — Adds a provider plugin and registers its provider identifier and display name.
  • corsairdev/corsair#482 — Adds a first-class provider plugin with provider registration.
  • corsairdev/corsair#552 — Adds an integration with analogous clients, endpoint registries, schemas, authentication, error handlers, and tests.

Suggested labels: docs, plugin

Suggested reviewers: devjain32

Pre-merge checks · Passed 2 · Failed 3

Failed Failed checks (3 warnings)

Check name Status Explanation Resolution
Linked Issues check Warning The PR adds Convex integration features, but it does not show the requested team, environment-variable, or member operations from issue #568. Implement the missing team, environment-variable, and member operations, or update issue #568 to define the revised API scope.
Out of Scope Changes check Warning Custom-domain, platform, query, timestamp, and log-stream endpoints are not among the coding objectives listed in issue #568. Remove these unrelated endpoints or split them into a separate PR unless issue #568 is updated to include their scope.
Docstring Coverage Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks (2 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: adding a Convex plugin with Management API operations. It accurately represents the pull request scope.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the core Changes in packages/corsair label Aug 2, 2026
@Mayank-saraswal
Mayank-saraswal marked this pull request as ready for review August 2, 2026 20:23
@greptile-apps

greptile-apps Bot commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; the latest documentation changes match the query schemas.

Summary

Adds the Convex plugin with 19 operations, separate Management API and deployment credentials, and three cached entities.

  • Convex callers can manage projects, deployments, keys, and team settings.
  • Convex callers can run queries and inspect runtime details on a deployment.

Reviews (14) · Last reviewed commit: "docs(convex): restore JsonValue query ty..." · Reviewed by Greptile

Comment thread packages/convex/endpoints/deployment-scoped.ts
Comment thread packages/convex/index.ts
Comment thread packages/convex/endpoints/projects.ts
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Plugin PR scorecard — packages/convex

Check Status Notes
R1 — Scope: plugin files only ✅
R2 — Tests with assertions ✅
R3 — Description complete ✅
R3 — Linked issue / claim ✅
R4 — Demo video / recording ✅

Rules: PLUGIN_PR_RULES.md · re-runs on every push

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Hey @Mayank-saraswal, thanks for the contribution! 🏴‍☠️ Before a maintainer reviews, please fix the items below — the review re-runs automatically on your next push.

Must fix

  • P1 packages/convex/endpoints/deployment-scoped.ts:18 — Authenticated URL permits host escape
    When a caller supplies a subdomain containing an authority-terminating slash, such as attacker.example:443/, the interpolated URL targets that host while retaining Authorization: Convex <deploy-key>, disclosing the deployment credential. Restrict this value to a single valid Convex DNS label before constructing the URL.

How this was verified: The nonempty-string input flows directly into the base URL, and the shared request client sends the configured authorization header to that resolved URL.

  • P1 packages/convex/index.ts:160 — Credential families are conflated
    A connection selects one plugin-wide credential, but Management handlers always send it as a Bearer token while deployment-scoped handlers always send it with the Convex scheme. As a result, a default deploy-key connection cannot authenticate Management operations, and an OAuth connection cannot reliably satisfy operations requiring a deployment key, leaving part of the advertised endpoint surface unusable.

Rule Used: Verify the implementation matches the PR descripti... (source)

Knowledge Base Used: The provider-plugin package pattern

  • P1 packages/convex/endpoints/projects.ts:96 — Cache failures mask remote success
    When Convex successfully creates or deletes a resource but the subsequent local cache operation throws, the handler rejects and skips its completion event even though the remote mutation already occurred. This reports completed operations as failures, leaves deleted cache entries stale, and can prompt retries that create duplicates or encounter unexpected not-found responses; isolate cache failures from endpoint results across the project, deployment, and deploy-key handlers.

Knowledge Base Used: The provider-plugin package pattern

If anything remains after your next push, a bot commit will clean it up; a maintainer always does the final review and merge.

@github-actions github-actions Bot added the bot:round-1 Review bot posted consolidated findings label Aug 2, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (2)
packages/convex/endpoints/deployment-scoped.ts (1)

15-19: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use ConvexAPIError for consistency.

The missing-subdomain guard throws a plain Error (Lines 16-18), while every other failure path in this plugin surfaces a ConvexAPIError. Throwing ConvexAPIError here keeps error shape consistent for any downstream code that inspects error.name or error instanceof ConvexAPIError.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/convex/endpoints/deployment-scoped.ts` around lines 15 - 19, Update
the missing-subdomain guard in the deployment-scoped endpoint to throw
ConvexAPIError instead of a plain Error, preserving the existing message and
ensuring downstream error checks remain consistent with the other failure paths.
packages/convex/error-handlers.ts (1)

5-83: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low value

Consider tightening the message-based fallback matching.

Each handler falls back to substring checks on error.message (for example Lines 12-17, 38-43, 64-65) when the error isn't ApiError/ConvexAPIError. A message that incidentally contains "404" or "403" for unrelated reasons would be misclassified into the wrong retry policy.

This only matters for errors that aren't already ApiError or ConvexAPIError, so the risk is bounded. If broader coverage is intentional (e.g., wrapped errors from other library layers), consider narrowing the substring checks or documenting why message-based matching is necessary here.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/convex/error-handlers.ts` around lines 5 - 83, Tighten the
message-based fallback checks in the match functions for RATE_LIMIT_ERROR,
AUTH_ERROR, PERMISSION_ERROR, and NOT_FOUND_ERROR so incidental status-code text
cannot classify unrelated errors; use more specific, intentional patterns while
preserving matching for wrapped errors if required.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/convex/endpoints/deploy-keys.ts`:
- Around line 23-36: Update the create flow around the deployKeys upsert to
avoid using input.deployment_name as the entity ID, since list uses each deploy
key’s durable deployKey.id and multiple keys can share a deployment. Prefer
skipping this pre-list cache write and relying on list to populate records; if
caching is required, use a deployment-scoped composite ID that cannot collide
with other keys and guard the write against retries consistently with
projects.ts and deployments.ts.

In `@packages/convex/endpoints/deployments.ts`:
- Around line 88-113: After the successful PATCH in update, fetch the refreshed
deployment record with GET using input.deployment_name and ctx.key, then pass
that record to ctx.db.deployments.upsertByEntityId before logging completion and
returning. Preserve the existing update request and response behavior.

In `@packages/convex/endpoints/projects.ts`:
- Around line 118-120: Update the project deletion handler around
ctx.db.projects.deleteByEntityId to also remove or invalidate all cached
deployments belonging to input.project_id; update the deployment deletion
handler around ctx.db.deployments.deleteByEntityId to also remove or invalidate
cached deploy keys belonging to input.deployment_name. Apply the corresponding
cleanup in packages/convex/endpoints/projects.ts lines 118-120 and
packages/convex/endpoints/deployments.ts lines 125-127.
- Around line 90-99: Isolate post-create cache failures so successful
non-idempotent API calls are not reported as failed. In
packages/convex/endpoints/projects.ts lines 90-99, wrap the projects upsert in
try/catch; apply the same change to deployments.upsertByEntityId in
packages/convex/endpoints/deployments.ts lines 68-77 and
deployKeys.upsertByEntityId in packages/convex/endpoints/deploy-keys.ts lines
23-36, preserving the successful create response even when caching fails.

In `@packages/convex/plugin-docs.yaml`:
- Around line 8-10: Update the authentication documentation in the plugin
configuration around the existing Bearer-token and deployment-key text to
include the supported oauth_2 token flow. Document OAuth bearer authentication
for the Management API and explicitly state the authorization scheme used for
each API scope, while preserving the existing personal/team token and deploy-key
guidance.

---

Nitpick comments:
In `@packages/convex/endpoints/deployment-scoped.ts`:
- Around line 15-19: Update the missing-subdomain guard in the deployment-scoped
endpoint to throw ConvexAPIError instead of a plain Error, preserving the
existing message and ensuring downstream error checks remain consistent with the
other failure paths.

In `@packages/convex/error-handlers.ts`:
- Around line 5-83: Tighten the message-based fallback checks in the match
functions for RATE_LIMIT_ERROR, AUTH_ERROR, PERMISSION_ERROR, and
NOT_FOUND_ERROR so incidental status-code text cannot classify unrelated errors;
use more specific, intentional patterns while preserving matching for wrapped
errors if required.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7276bf-322a-4e34-ac0c-59c549d5247d

📥 Commits

Reviewing files that changed from the base of the PR and between 709940c and 83e4332.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (21)
  • packages/convex/api.test.ts
  • packages/convex/client.ts
  • packages/convex/endpoints/custom-domains.ts
  • packages/convex/endpoints/deploy-keys.ts
  • packages/convex/endpoints/deployment-scoped.ts
  • packages/convex/endpoints/deployments.ts
  • packages/convex/endpoints/index.ts
  • packages/convex/endpoints/platform.ts
  • packages/convex/endpoints/projects.ts
  • packages/convex/endpoints/types.ts
  • packages/convex/error-handlers.ts
  • packages/convex/index.ts
  • packages/convex/jest.config.cjs
  • packages/convex/package.json
  • packages/convex/plugin-docs.yaml
  • packages/convex/schema.test.ts
  • packages/convex/schema/database.ts
  • packages/convex/schema/index.ts
  • packages/convex/tsconfig.json
  • packages/convex/tsup.config.ts
  • packages/corsair/core/constants.ts

Comment thread packages/convex/endpoints/deploy-keys.ts Outdated
Comment thread packages/convex/endpoints/deployments.ts
Comment thread packages/convex/endpoints/projects.ts
Comment thread packages/convex/endpoints/projects.ts Outdated
Comment thread packages/convex/plugin-docs.yaml Outdated
@Mayank-saraswal

Copy link
Copy Markdown
Collaborator Author

@greptileai

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
packages/convex/client.ts (1)

38-56: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Keep tryCacheWrite callbacks limited to cache operations.

tryCacheWrite catches every error from its callback. In packages/convex/endpoints/deployments.ts, the deployment update callback also calls makeConvexRequest to refresh the cache at Lines 99-143. A rate-limit or network error from that provider request is discarded as a cache-write failure. The endpoint can leave the deployment cache stale without diagnostics.

Keep only deployments.upsertByEntityId inside this helper. Catch refresh failures separately and record a structured diagnostic without changing the successful PATCH result.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/convex/client.ts` around lines 38 - 56, Restrict the callback passed
to tryCacheWrite in the deployment update flow to only
deployments.upsertByEntityId. Move the makeConvexRequest refresh out of that
swallowed-error callback, catch its failures separately, and record a structured
diagnostic while preserving the successful PATCH result.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/convex/index.ts`:
- Around line 30-38: Update resolveDeployKey to remove the ctx.key fallback and
require an explicit deployment deployKey for both api_key and oauth_2
connections, or use a distinct deploy-key credential when available. Preserve
the existing deployment authorization behavior and update affected tests to
verify missing deployKey is rejected.

---

Nitpick comments:
In `@packages/convex/client.ts`:
- Around line 38-56: Restrict the callback passed to tryCacheWrite in the
deployment update flow to only deployments.upsertByEntityId. Move the
makeConvexRequest refresh out of that swallowed-error callback, catch its
failures separately, and record a structured diagnostic while preserving the
successful PATCH result.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a4586e61-d597-467a-be54-f220bd46ff4d

📥 Commits

Reviewing files that changed from the base of the PR and between 83e4332 and faf87a2.

📒 Files selected for processing (10)
  • packages/convex/api.test.ts
  • packages/convex/client.ts
  • packages/convex/endpoints/deploy-keys.ts
  • packages/convex/endpoints/deployment-scoped.ts
  • packages/convex/endpoints/deployments.ts
  • packages/convex/endpoints/projects.ts
  • packages/convex/endpoints/types.ts
  • packages/convex/error-handlers.ts
  • packages/convex/index.ts
  • packages/convex/plugin-docs.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • packages/convex/plugin-docs.yaml
  • packages/convex/error-handlers.ts
  • packages/convex/endpoints/types.ts

Comment thread packages/convex/index.ts Outdated
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Remaining findings are being fixed by a bot commit — it will be re-reviewed automatically.

@github-actions github-actions Bot added the bot:round-2 Review bot pushed an automated fix label Aug 3, 2026
@Mayank-saraswal

Copy link
Copy Markdown
Collaborator Author

@greptileai

@github-actions

github-actions Bot commented Aug 3, 2026 •

Copy link
Copy Markdown

Maintainer review needed

Automated rounds are exhausted. Remaining findings:

  • P1 packages/convex/endpoints/deployment-scoped.ts:141 — Completion events persist deploy keys
    When getQueryTimestamp or listLogStreams receives the required per-call deployKey, spreading the complete input into logEventFromContext stores the plaintext deployment admin key in corsair_events, exposing it to event readers and database backups.

How this was verified: Both handlers pass the secret-bearing input to the shared event logger, which inserts the payload into corsair_events.

@github-actions github-actions Bot added the needs-maintainer Automated rounds exhausted - human review needed label Aug 3, 2026
@Mayank-saraswal

Copy link
Copy Markdown
Collaborator Author

@greptileai

Comment thread packages/convex/endpoints/deployment-scoped.ts
@Mayank-saraswal

Copy link
Copy Markdown
Collaborator Author

@greptileai

@Mayank-saraswal

Copy link
Copy Markdown
Collaborator Author

@greptileai

@coderabbitai coderabbitai Bot mentioned this pull request Aug 4, 2026
6 tasks done
@ambikeesshh ambikeesshh removed the needs-maintainer Automated rounds exhausted - human review needed label Aug 23, 2026
@ambikeesshh
ambikeesshh marked this pull request as draft September 4, 2026 14:52
@yuvrxj-afk
yuvrxj-afk marked this pull request as ready for review September 28, 2026 21:38
@yuvrxj-afk

Copy link
Copy Markdown
Collaborator

@greptileai

@github-actions github-actions Bot added the ci CI / GitHub Actions label Sep 28, 2026
Use Record<string, never> for the empty webhook surface and document
intentional unknown usages in request bodies, schemas, and tests.
Re-sync .github/workflows with upstream/main so the convex plugin PR
stays within the allowed scope after the merge.
Revert accidental workflow deletions from the fork base so the PR diff
stays within the plugin footprint, and document the ApiError.body narrowing.
Restore the missing ts-jest lockfile entry that broke frozen installs,
and use only the narrowed error body for the code field.
Backfill repository, homepage, and author fields required by the plugin
README/metadata CI check.
@github-actions github-actions Bot added the docs Docs / Mintlify / markdown changes label Sep 28, 2026
@Dhirenderchoudhary

Copy link
Copy Markdown
Collaborator

@greptileai review

Comment thread docs/plugins/convex/api.mdx Outdated
@Dhirenderchoudhary

Copy link
Copy Markdown
Collaborator

@greptileai review

@Dhirenderchoudhary

Copy link
Copy Markdown
Collaborator

Ran the tests locally on b7b8f00ba.

Unit tests: 50/50 passing.
Live API with a real team token: 3/3 passing (token details, regions, projects).

PR #569 test run

@Dhirenderchoudhary Dhirenderchoudhary left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM
Thanks

@devjain32
devjain32 merged commit 2123b68 into corsairdev:main Oct 20, 2026
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:round-1 Review bot posted consolidated findings bot:round-2 Review bot pushed an automated fix ci CI / GitHub Actions core Changes in packages/corsair docs Docs / Mintlify / markdown changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Integration request]: Convex

5 participants