Skip to content

fix(ci): handle successful docs sync transport errors#1415

Merged
parteeksingh24 merged 2 commits intomainfrom
fix-docs-vector-sync-transport
Apr 28, 2026
Merged

fix(ci): handle successful docs sync transport errors#1415
parteeksingh24 merged 2 commits intomainfrom
fix-docs-vector-sync-transport

Conversation

@parteeksingh24
Copy link
Copy Markdown
Contributor

@parteeksingh24 parteeksingh24 commented Apr 28, 2026

Summary by CodeRabbit

  • Bug Fixes
    • Enhanced webhook delivery resilience with improved error recovery that reduces unnecessary retry attempts in certain failure scenarios.

@agentuity-agent
Copy link
Copy Markdown

agentuity-agent Bot commented Apr 28, 2026

The latest Agentuity deployment details.

Project Deployment Preview Updated (UTC)
docs 🟢 Ready (deploy_6960eceada687214b6b8db36dd8154c3) - 2026-04-28T15:57:59Z

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 28, 2026

Warning

Rate limit exceeded

@parteeksingh24 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 50 minutes and 10 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a836c09a-96e3-4ebb-a5fa-20662f6731c8

📥 Commits

Reviewing files that changed from the base of the PR and between cce35af and 77a3154.

📒 Files selected for processing (1)
  • apps/docs/bin/send-webhook.sh
📝 Walkthrough

Walkthrough

The send-webhook.sh script adds error recovery logic that attempts to parse the final line of curl output as JSON when curl fails. If the output contains .status == "ok" with .stats, it treats the operation as successful and exits with code 0, otherwise it retries with exponential backoff.

Changes

Cohort / File(s) Summary
Webhook Script Error Recovery
apps/docs/bin/send-webhook.sh
Adds error recovery mechanism to attempt parsing the final line of curl output as JSON when curl fails. If .status == "ok" condition is found, exits successfully; otherwise proceeds with existing retry logic.
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • LINEAR integration encountered authorization issues. Please disconnect and reconnect the integration in the CodeRabbit UI.

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 and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/docs/bin/send-webhook.sh`:
- Line 72: The current success check only accepts responses where response_json
has both "status":"ok" and "stats", which is too narrow; update the jq predicate
used on response_json (the condition that currently inspects .status and .stats)
to consider other valid success shapes — at minimum treat {"success": true} as
success and accept {"status":"ok"} even when stats is absent; modify the jq
expression used in the if statement that reads response_json so it returns true
if .success == true OR .status == "ok" (with or without .stats) to match
existing repo patterns.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 115812e9-2364-4088-920e-e4584fbc33b1

📥 Commits

Reviewing files that changed from the base of the PR and between d24aa18 and cce35af.

📒 Files selected for processing (1)
  • apps/docs/bin/send-webhook.sh
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (15)
  • GitHub Check: Standalone Agent Test
  • GitHub Check: SDK Integration Test Suite
  • GitHub Check: Storage CLI Tests
  • GitHub Check: Playwright E2E Smoke Test
  • GitHub Check: Template Integration Tests
  • GitHub Check: Postgres SSL Integration Test
  • GitHub Check: Sandbox CLI Tests
  • GitHub Check: Build
  • GitHub Check: Framework Integration Tests (TanStack & Next.js)
  • GitHub Check: Queue CLI Tests
  • GitHub Check: Pack & Upload
  • GitHub Check: Queue SDK Tests
  • GitHub Check: Cloud Deployment Tests
  • GitHub Check: Package Installation & Usage Test
  • GitHub Check: Agentuity Deployment

Comment thread apps/docs/bin/send-webhook.sh Outdated
exit 0
else
response_json=$(printf '%s\n' "$response" | tail -n 1)
if [ -n "$response_json" ] && echo "$response_json" | jq -e '.status == "ok" and .stats' >/dev/null 2>&1; then
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.

⚠️ Potential issue | 🟠 Major

Recovery success predicate is too narrow and can miss valid successful responses.

Line 72 only treats {"status":"ok","stats":...} as success. Existing repo patterns include {"success": true} (packages/auth/src/agentuity/server.ts, Line 465-477), and webhook delivery types don’t require stats (packages/core/src/services/webhook/types.ts, Line 100-125). This can still fail CI after a successful server-side processing.

Proposed fix
-        if [ -n "$response_json" ] && echo "$response_json" | jq -e '.status == "ok" and .stats' >/dev/null 2>&1; then
+        if [ -n "$response_json" ] && echo "$response_json" | jq -e '(.status == "ok" and (.stats != null)) or (.success == true)' >/dev/null 2>&1; then
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if [ -n "$response_json" ] && echo "$response_json" | jq -e '.status == "ok" and .stats' >/dev/null 2>&1; then
if [ -n "$response_json" ] && echo "$response_json" | jq -e '(.status == "ok" and (.stats != null)) or (.success == true)' >/dev/null 2>&1; then
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/docs/bin/send-webhook.sh` at line 72, The current success check only
accepts responses where response_json has both "status":"ok" and "stats", which
is too narrow; update the jq predicate used on response_json (the condition that
currently inspects .status and .stats) to consider other valid success shapes —
at minimum treat {"success": true} as success and accept {"status":"ok"} even
when stats is absent; modify the jq expression used in the if statement that
reads response_json so it returns true if .success == true OR .status == "ok"
(with or without .stats) to match existing repo patterns.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 28, 2026

📦 Canary Packages Published

version: 2.0.9-77a3154

Packages
Package Version URL
@agentuity/auth 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-auth-2.0.9-77a3154.tgz
@agentuity/opencode 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-opencode-2.0.9-77a3154.tgz
@agentuity/runtime 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-runtime-2.0.9-77a3154.tgz
@agentuity/cli 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-cli-2.0.9-77a3154.tgz
@agentuity/react 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-react-2.0.9-77a3154.tgz
@agentuity/schedule 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-schedule-2.0.9-77a3154.tgz
@agentuity/sandbox 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-sandbox-2.0.9-77a3154.tgz
@agentuity/email 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-email-2.0.9-77a3154.tgz
@agentuity/server 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-server-2.0.9-77a3154.tgz
@agentuity/drizzle 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-drizzle-2.0.9-77a3154.tgz
@agentuity/claude-code 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-claude-code-2.0.9-77a3154.tgz
@agentuity/core 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-core-2.0.9-77a3154.tgz
@agentuity/migrate 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-migrate-2.0.9-77a3154.tgz
@agentuity/evals 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-evals-2.0.9-77a3154.tgz
@agentuity/task 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-task-2.0.9-77a3154.tgz
@agentuity/coder 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-coder-2.0.9-77a3154.tgz
@agentuity/keyvalue 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-keyvalue-2.0.9-77a3154.tgz
@agentuity/workbench 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-workbench-2.0.9-77a3154.tgz
@agentuity/schema 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-schema-2.0.9-77a3154.tgz
@agentuity/db 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-db-2.0.9-77a3154.tgz
@agentuity/webhook 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-webhook-2.0.9-77a3154.tgz
@agentuity/vector 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-vector-2.0.9-77a3154.tgz
@agentuity/postgres 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-postgres-2.0.9-77a3154.tgz
@agentuity/queue 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-queue-2.0.9-77a3154.tgz
@agentuity/frontend 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-frontend-2.0.9-77a3154.tgz
@agentuity/coder-tui 2.0.9-77a3154 https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-coder-tui-2.0.9-77a3154.tgz
Install

Add to your package.json:

{
  "dependencies": {
    "@agentuity/auth": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-auth-2.0.9-77a3154.tgz",
    "@agentuity/opencode": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-opencode-2.0.9-77a3154.tgz",
    "@agentuity/runtime": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-runtime-2.0.9-77a3154.tgz",
    "@agentuity/cli": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-cli-2.0.9-77a3154.tgz",
    "@agentuity/react": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-react-2.0.9-77a3154.tgz",
    "@agentuity/schedule": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-schedule-2.0.9-77a3154.tgz",
    "@agentuity/sandbox": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-sandbox-2.0.9-77a3154.tgz",
    "@agentuity/email": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-email-2.0.9-77a3154.tgz",
    "@agentuity/server": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-server-2.0.9-77a3154.tgz",
    "@agentuity/drizzle": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-drizzle-2.0.9-77a3154.tgz",
    "@agentuity/claude-code": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-claude-code-2.0.9-77a3154.tgz",
    "@agentuity/core": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-core-2.0.9-77a3154.tgz",
    "@agentuity/migrate": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-migrate-2.0.9-77a3154.tgz",
    "@agentuity/evals": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-evals-2.0.9-77a3154.tgz",
    "@agentuity/task": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-task-2.0.9-77a3154.tgz",
    "@agentuity/coder": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-coder-2.0.9-77a3154.tgz",
    "@agentuity/keyvalue": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-keyvalue-2.0.9-77a3154.tgz",
    "@agentuity/workbench": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-workbench-2.0.9-77a3154.tgz",
    "@agentuity/schema": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-schema-2.0.9-77a3154.tgz",
    "@agentuity/db": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-db-2.0.9-77a3154.tgz",
    "@agentuity/webhook": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-webhook-2.0.9-77a3154.tgz",
    "@agentuity/vector": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-vector-2.0.9-77a3154.tgz",
    "@agentuity/postgres": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-postgres-2.0.9-77a3154.tgz",
    "@agentuity/queue": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-queue-2.0.9-77a3154.tgz",
    "@agentuity/frontend": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-frontend-2.0.9-77a3154.tgz",
    "@agentuity/coder-tui": "https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-coder-tui-2.0.9-77a3154.tgz"
  }
}

Or install directly:

bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-auth-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-opencode-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-runtime-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-cli-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-react-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-schedule-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-sandbox-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-email-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-server-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-drizzle-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-claude-code-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-core-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-migrate-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-evals-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-task-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-coder-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-keyvalue-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-workbench-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-schema-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-db-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-webhook-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-vector-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-postgres-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-queue-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-frontend-2.0.9-77a3154.tgz
bun add https://agentuity-sdk-objects.t3.storageapi.dev/npm/2.0.9-77a3154/agentuity-coder-tui-2.0.9-77a3154.tgz

@parteeksingh24 parteeksingh24 merged commit ff89dc1 into main Apr 28, 2026
17 of 18 checks passed
@parteeksingh24 parteeksingh24 deleted the fix-docs-vector-sync-transport branch April 28, 2026 15:59
Huijiro added a commit that referenced this pull request Apr 28, 2026
Brings in 10 commits from main on top of the v3 branch:
  - More perf improvements (#1416)
  - Relax stream namespace timestamp fields (#1406)
  - feat: add per-sandbox paused timeout support (#1392)
  - fix(ci): handle successful docs sync transport errors (#1415)
  - Update stale docs (#1404)
  - feat(docs): add Pagefind keyword search (#1412)
  - fix(ci): run release-next tests with test env (#1414)
  - Add coder Hub rpc_ready protocol event (#1413)
  - fix(docs): improve Ask AI query handling (#1411)
  - Move default template from agent pattern to route-only (#1386)

Conflict resolutions:

  Modify/delete (deleted on v3, kept deleted — main's edits dropped):
    - packages/cli/src/cmd/build/vite/vite-asset-server-config.ts
    - packages/runtime/src/middleware.ts
    - packages/runtime/src/services/sandbox/http.ts
    - templates/_base/src/api/index.ts
    - templates/default/package.overlay.json
    - templates/default/src/api/index.ts
    - templates/default/src/web/App.tsx

  File location (apps/docs -> docs rename from v3):
    - docs/src/web/lib/pagefind-search.ts (placed at v3 path)

  Content:
    - .github/workflows/release-next.yaml — deduped the NODE_ENV env block
      on the Unit tests step (both sides added it; kept main's placement
      before run:); kept v3's trailing newline.
    - docs/src/api/streaming/route.ts — kept v3's defensive runtime type
      narrowing for body.model (added by CodeRabbit feedback) but adopted
      main's default model name 'gpt-5.4-mini' to match the rest of the
      docs demo apps.
    - bun.lock — regenerated from the merged package manifests.
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