Skip to content

Merge develop: BSC wallet attach + accumulated develop work#7840

Merged
lalalune merged 36 commits into
mainfrom
develop
May 20, 2026
Merged

Merge develop: BSC wallet attach + accumulated develop work#7840
lalalune merged 36 commits into
mainfrom
develop

Conversation

@lalalune
Copy link
Copy Markdown
Member

Summary

Promote develop (36 commits) to main. The user-visible win:

  • feat(cloud): let OAuth users attach a wallet to buy crypto credits (74d23ff6e4) — fixes the /bsc dead-end where OAuth-signed-in users (Google / Discord / GitHub / Magic Link / Passkey) couldn't pay because user.wallet_address was unset and there was no path to set it. Adds POST /api/users/me/wallet/attach (SIWE-verified) and an "Verify your BSC wallet" card on /bsc that drives connect → sign → attach → invalidate before handing off to the existing purchase flow. 6 unit tests on the route + 3 Playwright e2e tests on /bsc.

Other commits in this batch: doc tidies, benchmark fixes (Cerebras max_tokens, JSON extraction for Qwen, xlam dataset trust flag), runtime EventType doc alignment.

Test plan

  • CI on develop is green at HEAD (74d23ff6e4).
  • Cloud CF Deploy fires on main → production Pages deploy serves the new /bsc with the attach card for OAuth users.
  • Smoke test live https://elizacloud.ai/bsc while signed in via Google: the page now shows "Verify your BSC wallet" instead of the dead Pay button.
  • Connect a BSC wallet → sign → see toast "Wallet verified — you can pay now" → card swaps to the existing purchase UI → buy with BSC promo.

🤖 Generated with Claude Code

Shaw and others added 30 commits May 19, 2026 17:27
# Conflicts:
#	packages/agent/src/services/remote-plugin-adapter.test.ts
#	packages/cloud-shared/src/lib/services/eliza-app/onboarding-chat.ts
#	packages/examples/smartglasses/hardware-smoke.ts
#	plugins/plugin-smartglasses/src/ui/SmartglassesView.tsx
…le-merge

# Conflicts:
#	packages/cloud-shared/src/lib/services/eliza-app/onboarding-chat.ts
#	packages/examples/smartglasses/hardware-evidence.ts
#	packages/examples/smartglasses/hardware-smoke.ts
…le-merge

# Conflicts:
#	packages/agent/src/__tests__/plugin-tui-view-coverage.test.ts
Removes the now-deprecated REST API, Plugin Registry, Launch Resources,
old CLI, examples-gallery, product/, and prototypes/ sections plus the
what-you-can-build.mdx landing in favor of the new 8-track structure.

Rewrites docs.json nav around the 8 tracks (Agent, Agent App, Plugin,
Framework, Framework App, elizaOS, Cloud, Training & Sim) and a focused
Get Started / CLI / Reference. Rewrites index.mdx to point users at the
tracks rather than feature-grab-bag cards.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…taset converters

fused_turboquant is incompatible with the Qwen3.5 hybrid linear+full
attention architecture (18 linear + 6 full attention layers). Remove it
from three places:
- run_pipeline.py default quantizers + optimize_for_eliza1.py call
- finetune_all_tiers.py QUANT_PIPELINE
- model_registry.py quantization_after for all Qwen3.5/3.6 tiers

Converter fixes:
- convert_hermes_to_eliza.py: strip trope prefixes from assistant
  context messages so multi-turn history doesn't teach trope openings
- convert_openclaw_to_eliza.py: same _strip_trope_prefix addition

New:
- convert_xlam_to_eliza.py: converter for Salesforce/xlam-function-calling-60k
- datasets.yaml: add hermes-fc-v2, openclaw-operator, openhermes-2.5

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds tracks/{agent,agent-app,plugin,framework,framework-app,elizaos,
cloud,training}/ with an overview and the core sub-pages per track.
Each page pulls from real packages/ source (linked) rather than
restating older marketing prose.

CLI section reduced to just `create-project` and `create-plugin`, since
that's what users actually run; everything else is project scripts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Delete packages/docs/api-reference.mdx (REST API surface is gone)
- Drop residual packages/docs/{product,prototypes,examples,docs} dirs
- Bulk-rewrite internal links: /cli-reference -> /cli, /what-you-can-build
  -> /tracks/overview, /examples-gallery -> /tracks/overview,
  /plugin-registry/* -> /plugins/overview or /connectors, /rest/* dropped
- Fix discord.gg/eliza -> discord.gg/elizaos in tutorials and contributing
- Normalize ElizaOS -> elizaOS in user-facing text (keeps code identifiers)
- Update docs.test.js expected dirs to match new structure (tracks/, cli/,
  connectors/ replace examples/)

All 13 docs tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rompt extraction

Two bugs in the native tool-call benchmark pipeline:

1. native_tool_call_bench.py render_prompt: Qwen3.5 chat template line 120
   iterates `tool_call.arguments|items`, expecting a dict. Multi-turn
   trajectory records have OpenAI-style messages where function.arguments
   is a JSON string (not yet parsed). Parse string → dict before applying
   the chat template.

2. benchmark_vs_cerebras.py _load_prompts: looked for record["messages"] but
   eliza_native_v1 format places messages at record["request"]["messages"].
   Added fallback to check both locations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
User flagged that package READMEs were drifting from code. Audited and
updated the high-impact ones:

- packages/core/README.md: drop phantom plugin-config helper docs
  (collectSettings, loadPluginConfig, etc. — never existed in src/)
- packages/app/README.md: remove bogus build:desktop/dev:desktop scripts;
  point at the actual root-level Electrobun commands
- packages/app-core/README.md: rewrite — referenced README files that
  don't exist (src/onboarding/README.md, connection/README.md) and a
  connection/ directory that doesn't exist; describe actual subdirs
- packages/robot/README.md: drop stale "coming in Wave 7/8" promises;
  document the real scripts (robot:bridge:mock, mujoco, robot:demo)
- packages/cloud-api/README.md: new — layout, dev, link to Cloud track
- packages/cloud-frontend/README.md: new — dashboard surface + dev
- packages/benchmarks/README.md: new — 70+ harness inventory + runner
- packages/os/README.md: new — Linux + AOSP layout, variants, flashing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
_parse_json_object used rfind("}") to find the end of the JSON object,
which broke when the model appended Qwen <tool_call> XML blocks after the
eliza JSON. Use balanced-brace walking instead so the slice ends at the
correct closing brace, ignoring any trailing XML.

Fixes 142/144 parse_errors in tool_call bucket — the model correctly
outputs eliza_native_v1 JSON tool calls; the parser was discarding them.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Shaw and others added 6 commits May 20, 2026 04:22
gpt-oss-120b completions were truncating at 512 tokens (finish_reason=length)
causing quality comparisons to score against incomplete answers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Salesforce/xlam-function-calling-60k is now available as standard
parquet — trust_remote_code is no longer supported/needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Delete plugins/registry.md (user said remove plugin registry)
- Delete connectors/owner-vs-agent-audit.md and agents/owner-role.md
  (internal audit notes, not user docs)
- Refine tracks/elizaos/linux.mdx + install.mdx with the real OS
  CLAUDE.md guidance: v1 USB-only, channels (alpha/beta/stable/Enterprise),
  signed-flasher requirements, release-manifest generation step, honest
  hardening status
- Wire all 28 previously-orphan pages into the docs.json nav
  (lifeops-setup, developer-docs, autonomous-mode, training, wallet,
  emotes, themes, sandbox, local-models, media-generation, documents,
  triggers, registry, whatsapp, beginners-user-guide, bluebubbles,
  zalouser, dashboard settings/talk-mode, electrobun-startup, etc.)
- Re-point dead /plugins/registry internal links at /tracks/plugin/publish

Result: 188 pages, all in nav, zero orphans. 13/13 docs tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
gpt-oss-120b tool-call responses exceed 1024 tokens on complex
multi-tool prompts; 2048 eliminates finish_reason=length truncations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ents.ts

External fact-check caught drift: the EventType enum block in
runtime/events.mdx documented events that don't exist (RUN_COMPLETED,
RUN_FAILED, MESSAGE_UPDATED, ROOM_UPDATED, VOICE_STARTED, VOICE_ENDED,
ACTION_FAILED, EVALUATOR_FAILED, MODEL_FAILED, SERVICE_STARTED/STOPPED/
ERROR) and used colon-case "message:received" strings when the real
enum values are uppercase "MESSAGE_RECEIVED".

Rewrite the enum block verbatim from packages/core/src/types/events.ts:
- Drop the phantom events.
- Add the missing ones: CHANNEL_CLEARED, REACTION_RECEIVED, POST_GENERATED,
  INTERACTION_RECEIVED, EMBEDDING_GENERATION_{REQUESTED,COMPLETED,FAILED},
  CONTROL_MESSAGE, FORM_FIELD_{CONFIRMED,CANCELLED}, HOOK_* (15 hooks),
  PIPELINE_HOOK_METRIC, DISCORD/TELEGRAM/X platform channels.
- Fix the handler-registration example: RUN_COMPLETED -> RUN_ENDED.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The /bsc promo and any other direct-crypto-payments surface require
`user.wallet_address` to be set. That field is only assigned when a user
signs in via SIWE/SIWS — Google / Discord / GitHub / Magic Link / Passkey
signups never get one, and there was no path to add one later. The pay
button on /bsc was permanently dead for those accounts.

Add `POST /api/users/me/wallet/attach`: takes a SIWE message + signature,
validates against the existing nonce store, asserts the address isn't
already bound to a different user, then writes wallet_address /
wallet_chain_type / wallet_verified onto the authed user. The repository
update method already exists; we just route it.

Conflict policy: a wallet bound to another account returns 409
`wallet_taken`. The wallet-keyed account wins; OAuth users hitting this
must use the existing account.

UI: when the authed user has no wallet_address, /bsc swaps the purchase
card for an AttachWalletCard that drives connect -> sign -> POST
attach -> invalidate user-profile. After the mutation succeeds, the page
re-renders with the existing DirectCryptoCreditCard unchanged.

Coverage:
- 6 backend unit tests on the route (94% line coverage), covering
  already_attached / 400 / 401 / wallet_taken / happy path / same-user
  race window.
- 3 Playwright e2e tests on /bsc covering purchase, OAuth-no-wallet
  attach, and HTML-fallback safety.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: caef1c6b-4431-4df3-a80e-a39656dea1bb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

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.

@lalalune lalalune merged commit 79b5b4b into main May 20, 2026
65 of 79 checks passed
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 20, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

@github-actions
Copy link
Copy Markdown
Contributor

LifeOps Multi-Tier Benchmark

Suite: smoke — Tiers requested: large,frontier

large

LifeOps Multi-Tier Benchmark

Tier: large
Suite: smoke

frontier

LifeOps Multi-Tier Benchmark

Tier: frontier
Suite: smoke

Artifacts: lifeops-multi-tier-large-26161221350, lifeops-multi-tier-frontier-26161221350

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant