Skip to content

chore(deps): bump whatsapp-rust-bridge#13

Open
kkzaadev wants to merge 3 commits into
oxidezap:mainfrom
kkzaadev:wire-bridge-label-receipt-wantedprekeycount
Open

chore(deps): bump whatsapp-rust-bridge#13
kkzaadev wants to merge 3 commits into
oxidezap:mainfrom
kkzaadev:wire-bridge-label-receipt-wantedprekeycount

Conversation

@kkzaadev

@kkzaadev kkzaadev commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Wires baileyrs to the bridge surface added in WhiskeySockets/whatsapp-rust-bridge#19 — the baileyrs-side companion to that PR. Source-only; package.json intentionally excluded.

Depends on WhiskeySockets/whatsapp-rust-bridge#19. The new bindings/events must be merged and published in the bridge before this typechecks against the published whatsapp-rust-bridge.

Two commits to the branch, matching the two bridge syncs.

Changes

  • events: adapt label_edit_update / label_association_update → upstream labels.edit / labels.association; add the canonical types.
  • receipts: map Sent ReceiptType ("sent"); route sendReceipt/sendReceipts type 'played'client.markPlayed (#737, was a no-op warning).
  • chat: route chatModify({ contact })client.saveContact (#742); route chatModify({ clear })client.clearChat (#755); adapt incoming clear_chat_updatemessages.delete { jid, all: true } (the chat-clear surface, per the upstream messageDelete dispatcher comment).
  • newsletter: add newsletterMute(jid, mute)client.newsletterMute (#757).
  • events (noop): adapt user_status_mute_update as a documented noop — forwarded by the bridge for surface completeness, but Baileys has no status-mute event to map it onto (#760).
  • contacts: surface verifiedName on OnWhatsAppResult (#741). fetchUserInfo passes through the new devices list automatically (#776).
  • api: wantedPreKeyCount on SocketConfig threaded through createWhatsAppClient (#695).

Notes

  • package.json intentionally not included.
  • Verified locally: bun run build (tsc) passes against the freshly-built bridge.

Summary by CodeRabbit

Release Notes

  • New Features
    • Added label editing and association management for linked devices.
    • Introduced chat clearing functionality to remove messages while preserving conversations.
    • Expanded receipt type support to include sent and played status types.
    • Added newsletter muting capability.
    • Enabled display of verified business contact information.
    • Enhanced contact management with save functionality.

…ption

Mirrors the bridge surface added in WhiskeySockets/whatsapp-rust-bridge#19;
depends on that PR's new events/types being merged and published.

- events: adapt `label_edit_update` / `label_association_update` and dispatch to
  upstream `labels.edit` / `labels.association` (Label / ChatLabelAssociation)
- receipts: map the new `Sent` ReceiptType ("sent") in RECEIPT_TYPE_MAP and the
  CanonicalReceipt union
- api: thread `wantedPreKeyCount` from SocketConfig through to createWhatsAppClient
@coderabbitai

coderabbitai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds canonical label events and bridge adapters, Baileys dispatchers for labels and chatClear, receipt-type normalization for "sent", optional pre-key batch configuration, contact-save in chatModify, verifiedName in onWhatsApp, played-receipt handling, and newsletter mute method.

Changes

Socket enhancements

Layer / File(s) Summary
Label canonical event types and receipt update
src/Bridge/types.ts
Introduces CanonicalLabelEdit and CanonicalLabelAssociation interfaces, adds CanonicalChatClear, and extends CanonicalReceipt.receiptType with 'sent'; updates CanonicalEvent union.
Label bridge-to-canonical adapters
src/Bridge/schema.ts
Adds label_edit_update and label_association_update adapters that validate identifiers and emit canonical events or noop; adds clear_chat_update and user_status_mute_update; normalizes Sent/sent'sent'.
Label event Baileys dispatchers
src/Socket/events.ts
Adds DISPATCHERS for labelEdit (emits labels.edit), labelAssociation (emits labels.association with LabelAssociationType.Chat and add/remove from labeled), and chatClear (emits messages.delete with all: true).
Pre-key batch count configuration
src/Types/Socket.ts, src/Socket/index.ts
Adds optional wantedPreKeyCount to SocketConfig (JSDoc) and forwards fullConfig.wantedPreKeyCount ?? null to createWhatsAppClient during initialization.
Chat contact, onWhatsApp, played receipts, newsletter
src/Socket/chat-actions.ts, src/Socket/contacts.ts, src/Socket/messages.ts, src/Socket/newsletter.ts
chatModify adds a contact branch calling client.saveContact; OnWhatsAppResult gains verifiedName; sendReceipt/sendReceipts add played handling via client.markPlayed; adds newsletterMute(jid, mute) method.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

A rabbit hops through label lands,
Syncs edits, maps receipts with tiny hands,
Pre-keys counted, contacts saved in tune,
Played marks play, newsletters mute soon—
🐇✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title 'chore(deps): bump whatsapp-rust-bridge' is misleading; the changeset primarily wires bridge label events, receipts, contacts, and config features, not just a dependency bump. Update the title to reflect the main change: e.g., 'Wire bridge label events, receipts, contacts, and config' or 'feat: support label edit/association, played receipts, and verified names'.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

✨ Finishing Touches
🧪 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 and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/Bridge/schema.ts`:
- Around line 294-316: The new adapter keys label_edit_update and
label_association_update added to ADAPTERS conflict with the
WhatsAppEvent['type'] union (typed via AdapterMap) and will cause TS2353 if
those discriminators are not present in the installed whatsapp-rust-bridge
types; either upgrade/pin whatsapp-rust-bridge so its d.ts includes
"label_edit_update" and "label_association_update" (and update package-lock.json
to a version that exports them) or guard these entries behind a
runtime/type-safe check (temporarily remove or conditionally register
ADAPTERS.label_edit_update and ADAPTERS.label_association_update until the
dependency is bumped) so the build doesn’t reference event strings not present
in the installed typings.
🪄 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: 82426c3f-1d80-41cd-bd19-f00d2f77b3ac

📥 Commits

Reviewing files that changed from the base of the PR and between c6bc2b8 and 11693c8.

📒 Files selected for processing (5)
  • src/Bridge/schema.ts
  • src/Bridge/types.ts
  • src/Socket/events.ts
  • src/Socket/index.ts
  • src/Types/Socket.ts

Comment thread src/Bridge/schema.ts
Comment on lines +294 to +316
label_edit_update: data => {
const labelId = asString(data.label_id)
if (!labelId) return { type: 'noop', bridgeType: 'label_edit_update' }
const action = extractAction(data)
// `predefinedId` is proto `predefined_id` (a number); upstream `Label`
// wants it as a string. Dual-read the spelling, then stringify.
const predefined = asNumber(action?.predefinedId ?? action?.predefined_id)
return {
type: 'labelEdit',
labelId,
name: asString(action?.name) ?? '',
color: asNumber(action?.color) ?? 0,
deleted: asBoolOr(action?.deleted, false),
predefinedId: predefined != null ? String(predefined) : undefined
}
},
label_association_update: data => {
const labelId = asString(data.label_id)
const chatJid = asJidString(data.chat_jid)
if (!labelId || !chatJid) return { type: 'noop', bridgeType: 'label_association_update' }
// `action.labeled === true` → label added to the chat, else removed.
return { type: 'labelAssociation', labelId, chatJid, labeled: asBoolOr(extractAction(data)?.labeled, true) }
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical | 🏗️ Heavy lift

❓ Verification inconclusive

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) Show relevant part of schema.ts around the reported lines
sed -n '250,360p' src/Bridge/schema.ts | nl -ba

# 2) Find where ADAPTERS and AdapterMap are declared and how TS2353 is triggered
rg -n "ADAPTERS|satisfies AdapterMap|AdapterMap|WhatsAppEvent\\['type'\\]|WhatsAppEvent" src/Bridge/schema.ts src/Bridge -S

# 3) Search for label_edit_update / label_association_update in the repo
rg -n "label_edit_update|label_association_update" -S .

# 4) Check package.json and lockfile for whatsapp-rust-bridge version
ls -la
rg -n "\"whatsapp-rust-bridge\"|whatsapp-rust-bridge" package.json pnpm-lock.yaml yarn.lock package-lock.json -S || true

Repository: oxidezap/baileyrs

Length of output: 104


🏁 Script executed:

ls -la

Repository: oxidezap/baileyrs

Length of output: 1403


🏁 Script executed:

#!/bin/bash
set -euo pipefail

sed -n '250,360p' src/Bridge/schema.ts | nl -ba

rg -n "ADAPTERS|satisfies AdapterMap|AdapterMap|WhatsAppEvent\\['type'\\]|WhatsAppEvent" src/Bridge/schema.ts src/Bridge -S

rg -n "label_edit_update|label_association_update" -S .

ls -la
rg -n "\"whatsapp-rust-bridge\"|whatsapp-rust-bridge" package.json pnpm-lock.yaml yarn.lock package-lock.json -S || true

Repository: oxidezap/baileyrs

Length of output: 104


🏁 Script executed:

#!/bin/bash
set -euo pipefail

sed -n '250,360p' src/Bridge/schema.ts | nl -ba

rg -n "ADAPTERS|satisfies AdapterMap|AdapterMap|WhatsAppEvent\\['type'\\]|WhatsAppEvent" src/Bridge/schema.ts src/Bridge -S

rg -n "label_edit_update|label_association_update" -S .

ls -la
rg -n "\"whatsapp-rust-bridge\"|whatsapp-rust-bridge" package.json pnpm-lock.yaml yarn.lock package-lock.json -S || true

Repository: oxidezap/baileyrs

Length of output: 104


🏁 Script executed:

...

Repository: oxidezap/baileyrs

Length of output: 105


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Context around the reported lines
sed -n '260,340p' src/Bridge/schema.ts | nl -ba

# Find the type-level constraints that would trigger TS2353
rg -n "ADAPTERS|satisfies AdapterMap|type AdapterMap|interface AdapterMap|WhatsAppEvent\\b|\\['type'\\]" src/Bridge/schema.ts src/Bridge -S

# See how often these keys appear elsewhere
rg -n "label_edit_update|label_association_update" -S .

# Determine the current whatsapp-rust-bridge version from manifests/lockfiles
ls -la
rg -n "\"whatsapp-rust-bridge\"|whatsapp-rust-bridge" package.json pnpm-lock.yaml yarn.lock package-lock.json -S || true

Repository: oxidezap/baileyrs

Length of output: 104


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Print schema.ts around the reported lines with line numbers (no `nl` available)
sed -n '260,340p' src/Bridge/schema.ts | awk '{printf "%6d\t%s\n", NR+259, $0}'

# Locate the type constraints and where the adapter map is defined
rg -n "ADAPTERS|AdapterMap|satisfies AdapterMap|WhatsAppEvent\\b|\\['type'\\]" src/Bridge/schema.ts src/Bridge -S

# Check whether the specific adapter keys exist elsewhere
rg -n "label_edit_update|label_association_update" -S src/Bridge src || true

# Get whatsapp-rust-bridge version info from package.json / lockfile
cat package.json
rg -n "\"whatsapp-rust-bridge\"" package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null || true

Repository: oxidezap/baileyrs

Length of output: 13085


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) Inspect ADAPTERS declaration and the satisfies clause location
sed -n '90,160p' src/Bridge/schema.ts | awk '{printf "%6d\t%s\n", NR+89, $0}'
sed -n '450,520p' src/Bridge/schema.ts | awk '{printf "%6d\t%s\n", NR+449, $0}'

# 2) Check whether node_modules (and whatsapp-rust-bridge typings) exist in this sandbox
ls -la node_modules >/dev/null 2>&1 && echo "node_modules exists" || echo "node_modules missing"

if [ -d "node_modules/whatsapp-rust-bridge" ]; then
  # 3) Search typings for the specific discriminator strings
  rg -n "label_edit_update|label_association_update" node_modules/whatsapp-rust-bridge -S || true
  # 4) Show where WhatsAppEvent type is declared (roughly)
  rg -n "export type WhatsAppEvent|type WhatsAppEvent|interface WhatsAppEvent" node_modules/whatsapp-rust-bridge -S || true
fi

# 3) Open the drift test to understand how it reads the WhatsAppEvent union from installed .d.ts
sed -n '1,120p' src/Bridge/__tests__/dts-drift.test.ts | awk '{printf "%6d\t%s\n", NR, $0}'

Repository: oxidezap/baileyrs

Length of output: 10937


🌐 Web query:

whatsapp-rust-bridge label_edit_update label_association_update

💡 Result:

I couldn’t find any authoritative documentation or source code in whatsapp-rust-bridge (or its referenced variants) that defines the exact labels you provided: “label_edit_update” and “label_association_update”. The only relevant “label” items found were about WhatsApp label app-state syncing and unrelated “label*_update” identifiers in other ecosystems (e.g., HubSpot CRM association labels, Gmail API label updates), which appear to be different domains. What I can say from the sources: 1) whatsapp-rust-bridge is an ongoing Rust/WASM project, but the specific event/handler names “label_edit_update” and “label_association_update” are not surfaced in the material located by this search. 2) There is evidence that some WhatsApp stacks expose label app-state events/handlers in general (e.g., a PR titled “Forward WhatsApp label appstate events to webhooks”). However, it does not confirm those exact identifier strings. If you tell me where these strings appear (e.g., a particular repository path, a file name like constants.ts, protobuf field names, or a webhook payload example), I can do a targeted second pass to identify the precise mapping to whatsapp-rust-bridge’s API/event system.

Citations:


🌐 Web query:

whatsapp_rust_bridge.d.ts "label_edit_update"

💡 Result:

I couldn’t find any source that mentions the symbol/label “label_edit_update” inside whatsapp_rust_bridge.d.ts (or anywhere else in the searched repositories/docs). The search results surfaced the package/type definition files’ presence (e.g., a generated whatsapp_rust_bridge.d.ts under a published npm package), but not the specific string “label_edit_update”. If you can share either (a) the exact npm package name/version that contains whatsapp_rust_bridge.d.ts, or (b) paste the contents of whatsapp_rust_bridge.d.ts (or at least the section around where you expect “label_edit_update”), I can pinpoint whether that member exists, what its TypeScript type is, and where it maps in Rust/wasm.

Citations:


Bridge adapter keys likely don’t exist in whatsapp-rust-bridge’s WhatsAppEvent['type'] union (TS2353).

src/Bridge/schema.ts adds ADAPTERS.label_edit_update and ADAPTERS.label_association_update (lines 294-316), but ADAPTERS is typed as satisfies AdapterMap where AdapterMap is keyed by WhatsAppEvent['type']. If the installed whatsapp-rust-bridge typings don’t include these exact discriminator strings in whatsapp_rust_bridge.d.ts, the build will fail (TS2353 / related type errors).

Check node_modules/whatsapp-rust-bridge/pkg/whatsapp_rust_bridge.d.ts for label_edit_update and label_association_update. If missing, bump/pin whatsapp-rust-bridge so the union includes them and update package-lock.json (the lockfile contains entries for both 0.6.0-alpha.36 and 0.5.4). Otherwise, temporarily gate these adapters until the dependency version used in CI exports the required event types.

🧰 Tools
🪛 GitHub Actions: Build Project / 0_build.txt

[error] 294-294: TypeScript compilation failed (tsc). TS2353: Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Actions: Build Project / build

[error] 294-294: TypeScript (TS2353) build failed. Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Actions: Linting Check / 0_check-lint.txt

[error] 294-294: TypeScript build failed (tsc). TS2353: Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Actions: Linting Check / check-lint

[error] 294-294: TypeScript (tsc) error TS2353: Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Actions: Run Tests / 0_run-tests.txt

[error] 294-294: TypeScript error TS2353: Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'. The build command 'tsc -P tsconfig.build.json' failed.

🪛 GitHub Actions: Run Tests / run-tests

[error] 294-294: TypeScript (tsc) error TS2353: Object literal may only specify known properties. Property 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Check: build

[failure] 310-310:
Parameter 'data' implicitly has an 'any' type.


[failure] 294-294:
Parameter 'data' implicitly has an 'any' type.


[failure] 294-294:
Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Check: check-lint

[failure] 310-310:
Parameter 'data' implicitly has an 'any' type.


[failure] 294-294:
Parameter 'data' implicitly has an 'any' type.


[failure] 294-294:
Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🪛 GitHub Check: run-tests

[failure] 310-310:
Parameter 'data' implicitly has an 'any' type.


[failure] 294-294:
Parameter 'data' implicitly has an 'any' type.


[failure] 294-294:
Object literal may only specify known properties, and 'label_edit_update' does not exist in type 'AdapterMap'.

🤖 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 `@src/Bridge/schema.ts` around lines 294 - 316, The new adapter keys
label_edit_update and label_association_update added to ADAPTERS conflict with
the WhatsAppEvent['type'] union (typed via AdapterMap) and will cause TS2353 if
those discriminators are not present in the installed whatsapp-rust-bridge
types; either upgrade/pin whatsapp-rust-bridge so its d.ts includes
"label_edit_update" and "label_association_update" (and update package-lock.json
to a version that exports them) or guard these entries behind a
runtime/type-safe check (temporarily remove or conditionally register
ADAPTERS.label_edit_update and ADAPTERS.label_association_update until the
dependency is bumped) so the build doesn’t reference event strings not present
in the installed typings.

Baileyrs-side companion to the whatsapp-rust-bridge 3b2bfa3 sync
(sync-log 045/047/051).

- receipts: route sendReceipt/sendReceipts type 'played' -> client.markPlayed
  for voice/video-note played receipts (#737); was previously a no-op warning.
  Doc comment moves 'played' from "Not supported" to "Supported via bridge".
- chat-actions: route chatModify({ contact }) -> client.saveContact for
  contact save/rename (#742); drop 'contact' from the unsupported list.
  contact: null (removal) has no bridge/core path yet, so it is ignored.
- contacts: surface verifiedName on OnWhatsAppResult, mapped in onWhatsApp
  from the bridge's verified_name (#741).

package.json intentionally not included.
@kkzaadev kkzaadev changed the title Wire bridge label events, ReceiptType "sent", and wantedPreKeyCount option Wire bridge label events, played/sent receipts, saveContact, verified name, and wantedPreKeyCount Jun 9, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@src/Socket/chat-actions.ts`:
- Around line 53-58: The call to client.saveContact in
src/Socket/chat-actions.ts fails TypeScript because WasmWhatsAppClient in
whatsapp-rust-bridge@0.6.0-alpha.36 has no saveContact definition; either
upgrade the bridge dependency to a version that exports saveContact or add a
local declaration merging for the WasmWhatsAppClient interface that declares
saveContact(jid: string, fullName?: string, firstName?: string,
saveOnPrimaryAddressbook?: boolean): Promise<void> so the call type-checks;
update package.json and lockfile if bumping the bridge, or add the interface
augmentation file (e.g., global .d.ts) referencing WasmWhatsAppClient to expose
saveContact.

In `@src/Socket/messages.ts`:
- Around line 228-238: The code calls WasmWhatsAppClient.markPlayed(...) (in
sendReceipt/sendReceipts handling type 'played') but that API does not exist in
whatsapp-rust-bridge@0.6.0-alpha.36; replace the markPlayed invocation with the
existing readMessages(...) call using the same keys shape (the keys object you
build for played receipts matches readMessages), i.e., call (await
ctx.getClient()).readMessages(keys) instead of markPlayed, and update any
related type references from markPlayed to readMessages to satisfy TypeScript
and bridge typings (references: sendReceipt, sendReceipts, WasmWhatsAppClient,
readMessages, markChatAsRead).
🪄 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: 7325b191-89b3-4adf-b735-492fb19de719

📥 Commits

Reviewing files that changed from the base of the PR and between 11693c8 and b68e142.

📒 Files selected for processing (3)
  • src/Socket/chat-actions.ts
  • src/Socket/contacts.ts
  • src/Socket/messages.ts

Comment on lines +53 to +58
await client.saveContact(
jid,
mod.contact.fullName ?? undefined,
mod.contact.firstName ?? undefined,
mod.contact.saveOnPrimaryAddressbook ?? true
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the current bridge version in package.json and verify method availability

echo "=== Current bridge version in package.json ==="
cat package.json | jq -r '.dependencies["whatsapp-rust-bridge"]'

echo -e "\n=== Searching for saveContact usage in codebase ==="
rg -n "saveContact" --type ts

echo -e "\n=== Checking bridge type definitions ==="
fd -e d.ts -e ts "node_modules/whatsapp-rust-bridge" --exec cat {} \; | rg -A5 -B5 "saveContact|WasmWhatsAppClient" || echo "Bridge types not found or method not defined"

Repository: oxidezap/baileyrs

Length of output: 323


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== node_modules/whatsapp-rust-bridge existence ==="
if [ -d "node_modules/whatsapp-rust-bridge" ]; then
  echo "node_modules/whatsapp-rust-bridge exists"
  ls -la node_modules/whatsapp-rust-bridge | head
else
  echo "node_modules/whatsapp-rust-bridge does NOT exist"
fi

echo -e "\n=== List lockfiles ==="
ls -ლა package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null || true

echo -e "\n=== Resolved bridge version from lockfile (best-effort) ==="
if [ -f "pnpm-lock.yaml" ]; then
  rg -n "whatsapp-rust-bridge" pnpm-lock.yaml | head -n 20
elif [ -f "yarn.lock" ]; then
  rg -n "whatsapp-rust-bridge" yarn.lock | head -n 20
elif [ -f "package-lock.json" ]; then
  rg -n "whatsapp-rust-bridge" package-lock.json | head -n 20
else
  echo "No lockfile found."
fi

echo -e "\n=== Search for WasmWhatsAppClient typings in repo (excluding node_modules) ==="
rg -n "WasmWhatsAppClient" --type ts --type d.ts --hidden -g'!**/node_modules/**' || true

echo -e "\n=== Search for saveContact in repo (excluding node_modules) ==="
rg -n "saveContact" --type ts --type d.ts --hidden -g'!**/node_modules/**' || true

Repository: oxidezap/baileyrs

Length of output: 906


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== List lockfiles (correct flags) ==="
ls -la package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null || true

echo -e "\n=== Detect likely lockfile name(s) ==="
find . -maxdepth 2 -type f -name "*lock*" -print | head -n 50

# Determine which lockfile exists
LOCKFILE=""
if [ -f "pnpm-lock.yaml" ]; then LOCKFILE="pnpm-lock.yaml"; fi
if [ -f "yarn.lock" ] && [ -z "$LOCKFILE" ]; then LOCKFILE="yarn.lock"; fi
if [ -f "package-lock.json" ] && [ -z "$LOCKFILE" ]; then LOCKFILE="package-lock.json"; fi
echo -e "\n=== Using lockfile: ${LOCKFILE:-<none>} ==="

if [ -n "$LOCKFILE" ]; then
  echo -e "\n=== Lines referencing whatsapp-rust-bridge in $LOCKFILE ==="
  rg -n "whatsapp-rust-bridge" "$LOCKFILE" | head -n 80
fi

echo -e "\n=== Attempt to fetch/install package tarball contents (npm pack) ==="
# Best-effort: if network/npm is unavailable, this will fail and we’ll fall back to web_search later.
rm -rf /tmp/whatsapp-rust-bridge-tmp && mkdir -p /tmp/whatsapp-rust-bridge-tmp
cd /tmp/whatsapp-rust-bridge-tmp

npm pack whatsapp-rust-bridge@0.6.0-alpha.36 >/tmp/pack_stdout.txt 2>/tmp/pack_stderr.txt || true
echo "npm pack stderr (tail):"
tail -n 30 /tmp/pack_stderr.txt || true

TARBALL="$(ls -1 *.tgz 2>/dev/null | head -n 1 || true)"
echo -e "\nPacked tarball: ${TARBALL:-<none>}"

if [ -n "${TARBALL:-}" ]; then
  tar -xzf "$TARBALL"
  echo -e "\n=== Extracted package top-level ==="
  ls -la | head

  echo -e "\n=== Search extracted typings for WasmWhatsAppClient/saveContact ==="
  rg -n "WasmWhatsAppClient|saveContact" . --hidden || true

  echo -e "\n=== List .d.ts files that mention WasmWhatsAppClient ==="
  rg -n --files-with-matches "WasmWhatsAppClient" . --hidden || true
fi

Repository: oxidezap/baileyrs

Length of output: 3106


🏁 Script executed:

#!/bin/bash
set -euo pipefail

WORKDIR="/tmp/whatsapp-bridge-inspect-0.6.0-alpha.36"
rm -rf "$WORKDIR"
mkdir -p "$WORKDIR"
cd "$WORKDIR"

npm pack whatsapp-rust-bridge@0.6.0-alpha.36 >/tmp/pack2_stdout.txt 2>/tmp/pack2_stderr.txt || true
TARBALL="$(ls -1 *.tgz | head -n 1)"
tar -xzf "$TARBALL"

echo "=== Search for saveContact in extracted typings ==="
rg -n "saveContact" . || true

echo -e "\n=== Search for any 'save' methods on WasmWhatsAppClient (context) ==="
rg -n "interface WasmWhatsAppClient|class WasmWhatsAppClient|save[A-Za-z0-9_]*\\(" package/pkg/whatsapp_rust_bridge.d.ts || true

echo -e "\n=== If saveContact exists, show surrounding declaration ==="
# Print a small context block around any saveContact occurrences (if any)
if rg -n "saveContact" package/pkg/whatsapp_rust_bridge.d.ts >/dev/null 2>&1; then
  rg -n -C 5 "saveContact" package/pkg/whatsapp_rust_bridge.d.ts
fi

Repository: oxidezap/baileyrs

Length of output: 320


Bridge method saveContact is missing from WasmWhatsAppClient typings (whatsapp-rust-bridge@0.6.0-alpha.36).

The call to client.saveContact(...) in src/Socket/chat-actions.ts won’t type-check: the whatsapp-rust-bridge@0.6.0-alpha.36 TypeScript definitions (dist/index.d.ts / pkg/whatsapp_rust_bridge.d.ts) contain WasmWhatsAppClient but no saveContact method, so CI compilation is expected to fail unless the bridge dependency is bumped to a version that exports this API (or the code is switched to an existing method).

🧰 Tools
🪛 GitHub Check: build

[failure] 53-53:
Property 'saveContact' does not exist on type 'WasmWhatsAppClient'.

🪛 GitHub Check: check-lint

[failure] 53-53:
Property 'saveContact' does not exist on type 'WasmWhatsAppClient'.

🪛 GitHub Check: run-tests

[failure] 53-53:
Property 'saveContact' does not exist on type 'WasmWhatsAppClient'.

🤖 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 `@src/Socket/chat-actions.ts` around lines 53 - 58, The call to
client.saveContact in src/Socket/chat-actions.ts fails TypeScript because
WasmWhatsAppClient in whatsapp-rust-bridge@0.6.0-alpha.36 has no saveContact
definition; either upgrade the bridge dependency to a version that exports
saveContact or add a local declaration merging for the WasmWhatsAppClient
interface that declares saveContact(jid: string, fullName?: string, firstName?:
string, saveOnPrimaryAddressbook?: boolean): Promise<void> so the call
type-checks; update package.json and lockfile if bumping the bridge, or add the
interface augmentation file (e.g., global .d.ts) referencing WasmWhatsAppClient
to expose saveContact.

Source: Linters/SAST tools

Comment thread src/Socket/messages.ts
Comment on lines +228 to +238
} else if (type === 'played') {
// Voice/video-note played receipts. The bridge (and core) pick the wire
// type (`played` vs `played-self` for newsletters) and the `participant`
// attr from the chat jid, so we just hand over the keys — same shape as
// readMessages.
const keys = messageIds.map(id => ({
remoteJid: jid,
id,
...(participant ? { participant } : {})
}))
await (await ctx.getClient()).markPlayed(keys)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for markPlayed method in bridge types

echo "=== Searching for markPlayed in codebase ==="
rg -n "markPlayed" --type ts

echo -e "\n=== Checking bridge type definitions for markPlayed ==="
fd -e d.ts -e ts "node_modules/whatsapp-rust-bridge" --exec cat {} \; | rg -A5 -B5 "markPlayed|readMessages" || echo "Method not found in bridge types"

Repository: oxidezap/baileyrs

Length of output: 340


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== node_modules/whatsapp-rust-bridge existence ==="
ls -la node_modules/whatsapp-rust-bridge 2>/dev/null || echo "node_modules/whatsapp-rust-bridge not present"

echo -e "\n=== Count of .d.ts files under bridge package ==="
if [ -d node_modules/whatsapp-rust-bridge ]; then
  find node_modules/whatsapp-rust-bridge -name "*.d.ts" | wc -l
else
  echo 0
fi

echo -e "\n=== Search for markPlayed in bridge package ==="
if [ -d node_modules/whatsapp-rust-bridge ]; then
  rg -n "markPlayed" node_modules/whatsapp-rust-bridge --hidden --glob '!*node_modules/**/node_modules/*' || echo "No markPlayed symbol found"
else
  echo "Skipping (bridge package missing)"
fi

echo -e "\n=== Search for readMessages / played receipt related symbols in bridge package ==="
if [ -d node_modules/whatsapp-rust-bridge ]; then
  rg -n "readMessages|played|receipt" node_modules/whatsapp-rust-bridge --hidden --glob '!*node_modules/**/node_modules/*' | head -n 50 || echo "No related symbols found"
else
  echo "Skipping (bridge package missing)"
fi

Repository: oxidezap/baileyrs

Length of output: 413


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Find WasmWhatsAppClient import/definition in repo ==="
rg -n "WasmWhatsAppClient" -S --hidden --glob '!.git/*' .

echo -e "\n=== Search for markPlayed in repo (all files) ==="
rg -n "markPlayed" -S --hidden --glob '!.git/*' . 

echo -e "\n=== Search for readMessages / played receipt related methods ==="
rg -n "readMessages|played.*receipt|mark.*Played" -S --hidden --glob '!.git/*' src

echo -e "\n=== Inspect TypeScript client wrapper/type exports (candidate files) ==="
# Common patterns: bridge wrapper types might live near src/bridge or in a generated types folder.
ls -ლა src | head -n 200 || true
fd -e ts -e d.ts "WasmWhatsAppClient" -S src node_modules 2>/dev/null || true

Repository: oxidezap/baileyrs

Length of output: 4307


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== src/Socket/messages.ts (context around readMessages/sendReceipt/sendReceipts) ==="
sed -n '170,310p' src/Socket/messages.ts | nl -ba

echo -e "\n=== src/Socket/types.ts ==="
sed -n '1,120p' src/Socket/types.ts | nl -ba

echo -e "\n=== src/Socket/index.ts (type alias usage) ==="
sed -n '1,80p' src/Socket/index.ts | nl -ba

Repository: oxidezap/baileyrs

Length of output: 208


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== src/Socket/messages.ts (context around readMessages/sendReceipt/sendReceipts) ==="
sed -n '170,310p' src/Socket/messages.ts | cat -n

echo -e "\n=== src/Socket/types.ts ==="
sed -n '1,140p' src/Socket/types.ts | cat -n

echo -e "\n=== src/Socket/index.ts (type alias usage) ==="
sed -n '1,120p' src/Socket/index.ts | cat -n

Repository: oxidezap/baileyrs

Length of output: 12158


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "=== package.json ==="
cat package.json | rg -n "whatsapp-rust-bridge|dependencies|devDependencies" -n || true
echo -e "\n=== Full dependency lines mentioning whatsapp-rust-bridge (package-lock/yarn/pnpm) ==="
ls -la | rg -n "package-lock.json|yarn.lock|pnpm-lock.yaml" || true
rg -n "\"whatsapp-rust-bridge\"|whatsapp-rust-bridge" package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null || true

Repository: oxidezap/baileyrs

Length of output: 884


🌐 Web query:

whatsapp-rust-bridge 0.6.0-alpha.36 WasmWhatsAppClient markPlayed

💡 Result:

I couldn’t find any authoritative/public source that documents the symbol WasmWhatsAppClient.markPlayed specifically for whatsapp-rust-bridge version 0.6.0-alpha.36. The only clearly documented “markPlayed” function I found in the broader WhatsApp ecosystem is in the WPPConnect JS libraries (separate project), e.g. WPP.chat.markPlayed/WAJS.chat.markPlayed are exported there to mark a message as played [1][2]. What I did find about whatsapp-rust-bridge versions: - Public metadata I found for whatsapp-rust-bridge was for version 0.6.0-alpha.25 (not alpha.36) [3]. - I found the main whatsapp-rust-bridge GitHub repo, but the search results shown didn’t surface a 0.6.0-alpha.36 release tag/changelog entry nor the exact WasmWhatsAppClient.markPlayed method definition for that version [4]. For “markPlayed” behavior in WhatsApp clients generally, there is an upstream concept of sending a “played” receipt; for example, whatsmeow has code that uses receipt type “played” via MarkRead with ptt=true [5]. If you want, paste the repository link (or the generated WASM/TS bindings file) that contains WasmWhatsAppClient, or the relevant snippet from alpha.36, and I can map exactly what markPlayed does and how it’s wired to the underlying receipt/protocol for that specific release.

Citations:


🌐 Web query:

unpkg whatsapp-rust-bridge@0.6.0-alpha.36 WasmWhatsAppClient markPlayed

💡 Result:

I couldn’t find authoritative evidence that a symbol named WasmWhatsAppClient (with a method/property markPlayed) exists in whatsapp-rust-bridge@0.6.0-alpha.36. What I could verify from sources: 1) The public JS API concept of “mark message as played” is present in wppconnect/wa-js under chat.markPlayed, but that is not part of whatsapp-rust-bridge [1][2]. 2) For whatsapp-rust-bridge, I found commit activity and general package pages, but the search results available to me did not expose the unpkg/module source for whatsapp-rust-bridge@0.6.0-alpha.36, nor any code that mentions WasmWhatsAppClient or markPlayed in that version [3][4]. Therefore, I can’t reliably answer what unpkg whatsapp-rust-bridge@0.6.0-alpha.36 exports regarding WasmWhatsAppClient.markPlayed. If you want, paste the output of this from your environment (or the relevant unpkg file contents) and I’ll pinpoint the exact export/method names: - https://unpkg.com/whatsapp-rust-bridge@0.6.0-alpha.36/ - https://unpkg.com/whatsapp-rust-bridge@0.6.0-alpha.36/dist/index.js (or whatever entry file exists) - any file containing WasmWhatsAppClient or markPlayed.

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== npm pack whatsapp-rust-bridge@0.6.0-alpha.36 ==="
rm -f /tmp/whatsapp-rust-bridge-*.tgz
if command -v npm >/dev/null 2>&1; then
  npm pack whatsapp-rust-bridge@0.6.0-alpha.36 --silent
else
  echo "npm not available"
  exit 0
fi

TARBALL="$(ls -1 *.tgz 2>/dev/null | head -n 1 || true)"
if [ -z "${TARBALL:-}" ]; then
  # maybe npm created in cwd with a name, but pattern might differ; search recursively in cwd
  TARBALL="$(find . -maxdepth 2 -type f -name "whatsapp-rust-bridge-*.tgz" | head -n 1 || true)"
fi
echo -e "\nTarball: ${TARBALL:-<none>}"

if [ -z "${TARBALL:-}" ]; then
  exit 0
fi

echo -e "\n=== Inspect tarball contents (look for d.ts / WasmWhatsAppClient / markPlayed) ==="
mkdir -p /tmp/bridge_inspect
tar -xzf "$TARBALL" -C /tmp/bridge_inspect

# Count and list declaration files
echo -e "\n-- .d.ts files --"
find /tmp/bridge_inspect -type f -name "*.d.ts" | wc -l
find /tmp/bridge_inspect -type f -name "*.d.ts" | head -n 50

echo -e "\n-- Search for WasmWhatsAppClient in package --"
rg -n "WasmWhatsAppClient" /tmp/bridge_inspect --hidden --no-ignore  || echo "No WasmWhatsAppClient string found"

echo -e "\n-- Search for markPlayed in package declarations/runtime --"
rg -n "markPlayed" /tmp/bridge_inspect --hidden --no-ignore || echo "No markPlayed string found"

echo -e "\n-- Search for played receipt helpers (played/read) --"
rg -n "played.*receipt|receipt.*played|Read.*played|mark.*played|Played" /tmp/bridge_inspect --hidden --no-ignore | head -n 80 || true

Repository: oxidezap/baileyrs

Length of output: 50374


🏁 Script executed:

#!/bin/bash
set -euo pipefail

TAR_DIR="/tmp/bridge_inspect"
DTS="$TAR_DIR/package/pkg/whatsapp_rust_bridge.d.ts"

echo "=== Sanity: declaration file exists ==="
ls -ლა "$DTS" 2>/dev/null || (echo "missing $DTS"; exit 1)

echo -e "\n=== Methods containing 'read' in WasmWhatsAppClient declarations ==="
rg -n "readMessages|markRead|mark.*Read|played|mark.*Played|Receipt" "$DTS" | head -n 200

echo -e "\n=== Extract WasmWhatsAppClient interface section around readMessages ==="
LINE_READ=$(rg -n "readMessages" "$DTS" | head -n 1 | cut -d: -f1 || true)
if [ -n "${LINE_READ:-}" ]; then
  START=$((LINE_READ-40))
  END=$((LINE_READ+80))
  sed -n "${START},${END}p" "$DTS" | nl -ba | head -n 200
else
  echo "No readMessages found in $DTS"
fi

echo -e "\n=== Extract WasmWhatsAppClient class section around readMessages (if present) ==="
LINE_READ_C=$(rg -n "class WasmWhatsAppClient" "$DTS" | head -n 1 | cut -d: -f1 || true)
if [ -n "${LINE_READ_C:-}" ]; then
  sed -n "${LINE_READ_C},$((LINE_READ_C+220))p" "$DTS" | nl -ba | head -n 220
fi

echo -e "\n=== Search for literal 'markPlayed' in d.ts only ==="
rg -n "markPlayed" "$DTS" || echo "markPlayed not present in d.ts"

Repository: oxidezap/baileyrs

Length of output: 167


🏁 Script executed:

#!/bin/bash
set -euo pipefail

TARBALL="whatsapp-rust-bridge-0.6.0-alpha.36.tgz"
if [ ! -f "$TARBALL" ]; then
  echo "Missing $TARBALL in cwd. Please re-run npm pack first."
  exit 1
fi

rm -rf /tmp/bridge_inspect
mkdir -p /tmp/bridge_inspect
tar -xzf "$TARBALL" -C /tmp/bridge_inspect

echo "=== Dump candidate d.ts paths ==="
find /tmp/bridge_inspect -type f -name "*whatsapp_rust_bridge*.d.ts" -o -name "*.d.ts" | head -n 50

DTS="$(find /tmp/bridge_inspect -type f -name "whatsapp_rust_bridge.d.ts" | head -n 1 || true)"
if [ -z "${DTS:-}" ]; then
  echo "Could not find whatsapp_rust_bridge.d.ts under /tmp/bridge_inspect"
  exit 1
fi

echo -e "\nUsing: $DTS"

echo -e "\n=== Literal markPlayed occurrences in d.ts ==="
rg -n "markPlayed" "$DTS" || echo "markPlayed not present in d.ts"

echo -e "\n=== Receipt/played/read-related declarations (read/played/receipt) ==="
rg -n "readMessages|markRead|played|receipt|read.*self" "$DTS" | head -n 200

echo -e "\n=== Show WasmWhatsAppClient interface snippet around readMessages (if found) ==="
if rg -n "readMessages" "$DTS" >/dev/null; then
  LINE_READ=$(rg -n "readMessages" "$DTS" | head -n 1 | cut -d: -f1)
  START=$((LINE_READ-60))
  END=$((LINE_READ+140))
  sed -n "${START},${END}p" "$DTS" | cat -n
else
  echo "No readMessages in d.ts"
fi

Repository: oxidezap/baileyrs

Length of output: 8376


🏁 Script executed:

#!/bin/bash
set -euo pipefail

DTS="/tmp/bridge_inspect/package/pkg/whatsapp_rust_bridge.d.ts"
if [ ! -f "$DTS" ]; then
  echo "Missing $DTS"
  exit 1
fi

echo "=== Methods containing 'Played'/'played' in name ==="
rg -n "played" "$DTS" | head -n 80

echo -e "\n=== Methods containing 'mark' in name ==="
rg -n "mark[A-Za-z0-9_]*\\(" "$DTS" | head -n 120

echo -e "\n=== Lines mentioning 'readMessages' and surrounding receipt comments ==="
LINE=$(rg -n "readMessages\\(" "$DTS" | head -n 1 | cut -d: -f1)
if [ -n "${LINE:-}" ]; then
  START=$((LINE-120))
  END=$((LINE+140))
  sed -n "${START},${END}p" "$DTS" | nl -ba | head -n 220
fi

Repository: oxidezap/baileyrs

Length of output: 416


🏁 Script executed:

#!/bin/bash
set -euo pipefail

DTS="/tmp/bridge_inspect/package/pkg/whatsapp_rust_bridge.d.ts"
if [ ! -f "$DTS" ]; then
  echo "Missing $DTS"
  exit 1
fi

echo "=== Methods containing 'Receipt' ==="
rg -n "Receipt" "$DTS" | head -n 120

echo -e "\n=== Methods containing 'read' and 'receipt' keywords near each other ==="
rg -n "readMessages|played|receipt" "$DTS" | head -n 200

echo -e "\n=== Methods around readMessages declaration ==="
LINE=$(rg -n "readMessages\\(" "$DTS" | head -n 1 | cut -d: -f1 || true)
if [ -n "${LINE:-}" ]; then
  START=$((LINE-80))
  END=$((LINE+120))
  sed -n "${START},${END}p" "$DTS" | cat -n | head -n 220
fi

echo -e "\n=== Methods containing 'mark' (case-insensitive) besides markChatAsRead ==="
rg -n -i "mark[A-Za-z0-9_]*\\(" "$DTS" | head -n 120

Repository: oxidezap/baileyrs

Length of output: 11274


Fix missing bridge API: WasmWhatsAppClient.markPlayed doesn’t exist (bridge 0.6.0-alpha.36).

src/Socket/messages.ts calls client.markPlayed(...) in both sendReceipt (type played) and sendReceipts (type played), but whatsapp-rust-bridge@0.6.0-alpha.36’s WasmWhatsAppClient type declarations contain readMessages(...) and markChatAsRead(...)—there is no markPlayed symbol—so TypeScript will fail compilation.

🧰 Tools
🪛 GitHub Check: build

[failure] 238-238:
Property 'markPlayed' does not exist on type 'WasmWhatsAppClient'.

🪛 GitHub Check: check-lint

[failure] 238-238:
Property 'markPlayed' does not exist on type 'WasmWhatsAppClient'.

🪛 GitHub Check: run-tests

[failure] 238-238:
Property 'markPlayed' does not exist on type 'WasmWhatsAppClient'.

🤖 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 `@src/Socket/messages.ts` around lines 228 - 238, The code calls
WasmWhatsAppClient.markPlayed(...) (in sendReceipt/sendReceipts handling type
'played') but that API does not exist in whatsapp-rust-bridge@0.6.0-alpha.36;
replace the markPlayed invocation with the existing readMessages(...) call using
the same keys shape (the keys object you build for played receipts matches
readMessages), i.e., call (await ctx.getClient()).readMessages(keys) instead of
markPlayed, and update any related type references from markPlayed to
readMessages to satisfy TypeScript and bridge typings (references: sendReceipt,
sendReceipts, WasmWhatsAppClient, readMessages, markChatAsRead).

Source: Linters/SAST tools

Baileyrs-side companion to the whatsapp-rust-bridge 20189cb0 sync
(sync-log 055-107).

- chat: route chatModify({ clear }) -> client.clearChat (#755); adapt incoming
  clear_chat_update -> messages.delete { jid, all: true }
- newsletter: add newsletterMute(jid, mute) -> client.newsletterMute (#757)
- events: noop-adapt user_status_mute_update -- forwarded for surface
  completeness, but Baileys has no status-mute event to map it onto (#760)

package.json intentionally not included.
@kkzaadev kkzaadev changed the title Wire bridge label events, played/sent receipts, saveContact, verified name, and wantedPreKeyCount chore(deps): bump whatsapp-rust-bridge Jun 10, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
src/Bridge/schema.ts (1)

294-316: ⚠️ Potential issue | 🔴 Critical

Build still blocked on missing bridge event types (same as prior review).

The TS2353 / implicit any failures remain because label_edit_update, label_association_update, clear_chat_update, and user_status_mute_update don't exist in the installed WhatsAppEvent['type'] union. Per the PR description, this depends on merging and publishing whatsapp-rust-bridge#19 first. Until that dependency is resolved and package.json updated, the build cannot pass.

Also applies to: 424-433

🤖 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 `@src/Bridge/schema.ts` around lines 294 - 316, The TypeScript errors come from
using event keys (label_edit_update, label_association_update,
clear_chat_update, user_status_mute_update) that are not yet in the
WhatsAppEvent['type'] union; to unblock the build, temporarily widen the
handlers map type so TS stops asserting those missing keys: locate the handlers
object in schema.ts (the object that contains label_edit_update /
label_association_update etc.) and cast the entire object to a permissive type
(e.g., unknown as Record<string, unknown> or any) or export it as such, so the
compiler won’t require those keys to exist on WhatsAppEvent['type']; after
whatsapp-rust-bridge#19 is merged and package.json updated, remove the cast and
restore the stricter type bound to WhatsAppEvent['type'].
🤖 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 `@src/Socket/chat-actions.ts`:
- Around line 25-26: The comment claiming "Fully supported" for actions
including contact and clear is inaccurate because client.saveContact and
client.clearChat aren't available in the current
whatsapp-rust-bridge@0.6.0-alpha.36; update the doc comment in
src/Socket/chat-actions.ts to either remove contact and clear from the "Fully
supported" list or add a short note stating these two require a bridge
dependency bump to a version that exports client.saveContact and
client.clearChat (reference symbols: contact, clear, client.saveContact,
client.clearChat, whatsapp-rust-bridge@0.6.0-alpha.36), and ensure this change
is made in the same PR that updates the bridge dependency.

---

Duplicate comments:
In `@src/Bridge/schema.ts`:
- Around line 294-316: The TypeScript errors come from using event keys
(label_edit_update, label_association_update, clear_chat_update,
user_status_mute_update) that are not yet in the WhatsAppEvent['type'] union; to
unblock the build, temporarily widen the handlers map type so TS stops asserting
those missing keys: locate the handlers object in schema.ts (the object that
contains label_edit_update / label_association_update etc.) and cast the entire
object to a permissive type (e.g., unknown as Record<string, unknown> or any) or
export it as such, so the compiler won’t require those keys to exist on
WhatsAppEvent['type']; after whatsapp-rust-bridge#19 is merged and package.json
updated, remove the cast and restore the stricter type bound to
WhatsAppEvent['type'].
🪄 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: 44d4deb3-b966-4ba1-b9ae-9208404e21fc

📥 Commits

Reviewing files that changed from the base of the PR and between b68e142 and 7a88c3f.

📒 Files selected for processing (5)
  • src/Bridge/schema.ts
  • src/Bridge/types.ts
  • src/Socket/chat-actions.ts
  • src/Socket/events.ts
  • src/Socket/newsletter.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/Bridge/types.ts

Comment on lines +25 to +26
* Fully supported: archive, pin, mute, star, markRead, delete, deleteForMe, pushNameSetting, contact, clear
* Not yet in bridge (app-state patches): disableLinkPreviews, labels, quickReply

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Documentation claims are premature without bridge dependency update.

The updated documentation marks contact and clear as "Fully supported," but both client.saveContact and client.clearChat are missing from the current whatsapp-rust-bridge@0.6.0-alpha.36 types. This documentation should be updated in the same PR that bumps the bridge dependency, or carry a note that it requires an updated bridge version.

🤖 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 `@src/Socket/chat-actions.ts` around lines 25 - 26, The comment claiming "Fully
supported" for actions including contact and clear is inaccurate because
client.saveContact and client.clearChat aren't available in the current
whatsapp-rust-bridge@0.6.0-alpha.36; update the doc comment in
src/Socket/chat-actions.ts to either remove contact and clear from the "Fully
supported" list or add a short note stating these two require a bridge
dependency bump to a version that exports client.saveContact and
client.clearChat (reference symbols: contact, clear, client.saveContact,
client.clearChat, whatsapp-rust-bridge@0.6.0-alpha.36), and ensure this change
is made in the same PR that updates the bridge dependency.

Source: Linters/SAST tools

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