Skip to content

Release @yellow-org/sdk and @yellow-org/sdk-compat#598

Open
philanton wants to merge 1 commit intomainfrom
feat/npm-yellow-org
Open

Release @yellow-org/sdk and @yellow-org/sdk-compat#598
philanton wants to merge 1 commit intomainfrom
feat/npm-yellow-org

Conversation

@philanton
Copy link
Contributor

@philanton philanton commented Mar 2, 2026

Summary by CodeRabbit

  • New Features

    • Session Key Operations: added methods for signing, submitting, and fetching channel/app session key states; new quorum signature helper.
    • Client config extended with channelSessionKeySigner; App/session APIs expanded with last-state/error helpers.
  • Documentation

    • Rebranded docs, examples, and Quick Start to the new SDK package names; added compatibility guidance and updated usage samples and integration notes.
  • Chores

    • Renamed packages to the new SDK namespace, updated peer/dev dependencies, and simplified build/dev scripts and package metadata.

@philanton philanton requested a review from a team as a code owner March 2, 2026 14:19
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 2, 2026

Warning

Rate limit exceeded

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

⌛ 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 1b86a5a and 48b5361.

⛔ Files ignored due to path filters (2)
  • sdk/ts-compat/package-lock.json is excluded by !**/package-lock.json
  • sdk/ts/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • sdk/ts/README.md
📝 Walkthrough

Walkthrough

Rebrands TS packages from @erc7824/nitrolite* to @yellow-org/sdk*/@yellow-org/sdk-compat, updates docs and imports, simplifies build scripts, and adds session-key APIs, helpers, and related type/config surface changes in the compat layer.

Changes

Cohort / File(s) Summary
Compat README & Packaging
sdk/ts-compat/README.md, sdk/ts-compat/package.json
Rebrand to @yellow-org/sdk-compat; update badges, install/import examples, peer/dev deps to @yellow-org/sdk; document new session-key helpers and public API (e.g., toSessionKeyQuorumSignature, getLastAppSessionsListError).
Compat Source Imports
sdk/ts-compat/src/client.ts, sdk/ts-compat/src/config.ts
Switch imports from @erc7824/nitrolite@yellow-org/sdk for signers, app/session types, and utilities (ChannelSessionKeyStateSigner, StateSigner, TransactionSigner, AppDefinitionV1, Option, withBlockchainRPC).
SDK README & Package Scripts
sdk/ts/README.md, sdk/ts/package.json
Rebrand to @yellow-org/sdk; update examples and related-project links; simplify build/dev scripts (remove codegen/validate steps, adjust watch/test flow) and add yellow keywords.
Public API & Docs Updates (examples, types)
sdk/ts-compat/..., sdk/ts/...
Examples, docs, and exported type references updated to new module paths and new method signatures; RPC/App session types extended (e.g., RPCAppDefinition.application, AccountInfo.balances); config types extended with channelSessionKeySigner fields.

Sequence Diagram(s)

sequenceDiagram
  participant App as Client/App
  participant Compat as "@yellow-org/sdk-compat"
  participant SDK as "@yellow-org/sdk"
  participant Chain as Blockchain/RPC

  App->>Compat: signChannelSessionKeyState(state)
  Compat->>SDK: toSessionKeyQuorumSignature(state.signature)
  SDK-->>Compat: quorumSignature
  Compat->>SDK: submitChannelSessionKeyState(state, quorumSignature)
  SDK->>Chain: broadcast signed session key state
  Chain-->>SDK: txReceipt
  SDK-->>Compat: txReceipt
  Compat-->>App: result / getLastChannelKeyStates()
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • philanton
  • alessio

Poem

🐰 I left an old import trail behind,
New names and keys I hopped to find.
I signed a state, then sent it wide,
Docs refreshed — I twitched with pride.
Hop—merge—deploy, the rabbit chimed.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: rebranding and releasing packages from @erc7824/nitrolite to @yellow-org/sdk and @yellow-org/sdk-compat across multiple files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/npm-yellow-org

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.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request primarily focuses on a significant rebranding effort, transitioning the SDK packages from @erc7824/nitrolite to @yellow-org/sdk and its compatibility layer. Beyond the name change, it introduces new session key management features to the compatibility SDK, refines documentation, and streamlines the build process, all aimed at enhancing clarity, functionality, and developer experience under the new brand identity.

Highlights

  • Package Renaming: The core SDK package has been renamed from @erc7824/nitrolite to @yellow-org/sdk, and its compatibility layer from @erc7824/nitrolite-compat to @yellow-org/sdk-compat. This change is reflected across all relevant files, including package.json, package-lock.json, README.md files, and import statements within the source code.
  • SDK Documentation Updates: The README.md files for both the core SDK and the compat SDK have been extensively updated to reflect the new package names, provide clearer installation instructions, and introduce new API methods. The core SDK's README.md now includes a note guiding users of the old version to the new compat SDK.
  • API Enhancements in Compat SDK: The @yellow-org/sdk-compat package now exposes new methods for session key operations, such as signChannelSessionKeyState, submitChannelSessionKeyState, getLastChannelKeyStates, signSessionKeyState, submitSessionKeyState, and getLastKeyStates. Additionally, getLastAppSessionsListError() has been added to the client methods, and the CompatClientConfig interface now supports channelSessionKeySigner.
  • Build Process Streamlining: The build scripts in sdk/ts/package.json have been simplified by removing codegen and validate steps from the main build commands, indicating a potential change in the project's code generation or validation workflow.
  • Dependency and Keyword Updates: Package dependencies and keywords have been updated to align with the new branding. The package-lock.json files reflect the new package names and versions, and new keywords like yellow and yellow-org have been added to the package.json files.
Changelog
  • sdk/ts-compat/README.md
    • Updated package names in license badges, architectural diagrams, installation instructions, and import examples.
    • Added getLastAppSessionsListError() to the list of client methods.
    • Introduced a new 'Session Key Operations' section detailing methods like signChannelSessionKeyState and submitSessionKeyState.
    • Expanded NitroliteClientConfig interface to include channelSessionKeySigner options.
    • Revised descriptions for 'RPC Stubs' and 'Auth Helpers' sections for better clarity on their functionality.
    • Modified RPCAppDefinition to include an application field and AccountInfo to use balances: LedgerBalance[].
    • Updated transpilePackages configuration for Next.js to reflect new package names.
    • Adjusted peer dependency version for @yellow-org/sdk.
  • sdk/ts-compat/package-lock.json
    • Updated package name from @erc7824/nitrolite-compat to @yellow-org/sdk-compat and its version.
    • Modified peer dependency reference from @erc7824/nitrolite to @yellow-org/sdk.
    • Removed the direct link for node_modules/@erc7824/nitrolite.
    • Added a direct link for node_modules/@yellow-org/sdk.
  • sdk/ts-compat/package.json
    • Renamed the package from @erc7824/nitrolite-compat to @yellow-org/sdk-compat and updated its version.
    • Added 'yellow' to the package keywords.
    • Updated peer dependency from @erc7824/nitrolite to @yellow-org/sdk.
    • Updated dev dependency from @erc7824/nitrolite to @yellow-org/sdk.
  • sdk/ts-compat/src/client.ts
    • Updated import paths for core SDK components and types from @erc7824/nitrolite to @yellow-org/sdk.
  • sdk/ts-compat/src/config.ts
    • Updated import path for Option and withBlockchainRPC from @erc7824/nitrolite to @yellow-org/sdk.
  • sdk/ts/README.md
    • Changed the main title from 'Clearnode TypeScript SDK' to 'Yellow TypeScript SDK'.
    • Updated npm version and license badges to reflect @yellow-org/sdk.
    • Removed the 'Documentation' section and its associated links.
    • Removed the 'Build with AI' section.
    • Added a note guiding old developers to the @yellow-org/sdk-compat package.
    • Updated installation commands to use @yellow-org/sdk.
    • Modified import statements in all code examples to use @yellow-org/sdk.
    • Updated 'Related Projects' section with new package names and links.
  • sdk/ts/package-lock.json
    • Updated package name from @erc7824/nitrolite to @yellow-org/sdk and its version.
  • sdk/ts/package.json
    • Renamed the package from @erc7824/nitrolite to @yellow-org/sdk.
    • Removed codegen and validate scripts from the scripts section.
    • Simplified build, build:prod, build:full, and dev scripts by removing codegen and validate steps.
    • Added 'yellow' and 'yellow-org' to the package keywords.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@codecov
Copy link

codecov bot commented Mar 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
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 `@sdk/ts/package.json`:
- Line 23: The package.json "test:types" npm script currently runs "npm run
validate", but the "validate" script was removed causing the script to fail;
update the package.json by either removing the "test:types" entry or changing
its command to a valid script such as "npm run typecheck" (or whichever existing
type-checking script you maintain) so the "test:types" script points to an
actual script name; locate the "test:types" key in package.json and replace "npm
run validate" with the correct target (e.g., "npm run typecheck") or delete the
"test:types" script if it's no longer needed.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1f978b8 and bd172fc.

⛔ Files ignored due to path filters (2)
  • sdk/ts-compat/package-lock.json is excluded by !**/package-lock.json
  • sdk/ts/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (6)
  • sdk/ts-compat/README.md
  • sdk/ts-compat/package.json
  • sdk/ts-compat/src/client.ts
  • sdk/ts-compat/src/config.ts
  • sdk/ts/README.md
  • sdk/ts/package.json

"lint": "eslint src --ext .ts",
"typecheck": "tsc --noEmit",
"test": "jest",
"test:types": "npm run validate",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Broken script reference: test:types calls removed validate script.

The test:types script runs npm run validate, but according to the AI summary, the validate script was removed. This will cause npm run test:types to fail.

🐛 Proposed fix: remove or update the broken script

Either remove the script entirely:

-        "test:types": "npm run validate",

Or update it to run typecheck instead:

-        "test:types": "npm run validate",
+        "test:types": "npm run typecheck",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk/ts/package.json` at line 23, The package.json "test:types" npm script
currently runs "npm run validate", but the "validate" script was removed causing
the script to fail; update the package.json by either removing the "test:types"
entry or changing its command to a valid script such as "npm run typecheck" (or
whichever existing type-checking script you maintain) so the "test:types" script
points to an actual script name; locate the "test:types" key in package.json and
replace "npm run validate" with the correct target (e.g., "npm run typecheck")
or delete the "test:types" script if it's no longer needed.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request appears to be a rebranding effort, renaming packages from @erc7824/nitrolite to @yellow-org/sdk. The changes primarily involve updating package names, dependencies, and documentation. I've identified a few critical and high-severity issues related to inconsistencies between package.json and package-lock.json files, which could disrupt the build and publishing processes. Additionally, I have a suggestion to improve the wording in a README file for better clarity and professionalism.

Copy link
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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
sdk/ts-compat/README.md (2)

188-191: ⚠️ Potential issue | 🟡 Minor

wallet is undefined in the direct v1 client snippet

The example references wallet without defining it. The parameter should be the wallet address extracted from the walletClient that was passed to NitroliteClient.create().

Suggested doc fix
 const v1Client = client.innerClient;
-await v1Client.getHomeChannel(wallet, 'usdc');
+await v1Client.getHomeChannel(walletClient.account!.address, 'usdc');
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk/ts-compat/README.md` around lines 188 - 191, The example uses an
undefined variable `wallet` when calling `v1Client.getHomeChannel`; update the
snippet to pass the wallet address obtained from the `walletClient` that was
passed into `NitroliteClient.create()` (i.e., extract the address from the
`walletClient` instance and pass that value to
`client.innerClient.getHomeChannel`), referencing `client.innerClient`,
`getHomeChannel`, `walletClient`, and `NitroliteClient.create()` to locate where
to change the code.

71-75: ⚠️ Potential issue | 🟡 Minor

Add missing Address type import to the deposit example

The code snippet at lines 71-75 uses as Address but doesn't import it. Since @yellow-org/sdk-compat doesn't re-export Address, it must be imported directly from viem for the example to compile.

Suggested fix
 import { NitroliteClient, blockchainRPCsFromEnv } from '@yellow-org/sdk-compat';
+import type { Address } from 'viem';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk/ts-compat/README.md` around lines 71 - 75, The README deposit example
uses a type assertion "as Address" but doesn't import Address; update the
example to import Address from viem and ensure the snippet includes that import
so the call to client.deposit(tokenAddress as Address, amount) type-checks;
specifically, add an import for Address from "viem" near the top of the example
and keep the tokenAddress/amount and client.deposit usage unchanged.
🧹 Nitpick comments (1)
sdk/ts-compat/README.md (1)

262-284: Make the two error-handling snippets self-contained

AllowanceError is imported in the first snippet but used in the second snippet. This is easy to miscopy.

Suggested doc fix
-import { getUserFacingMessage, AllowanceError } from '@yellow-org/sdk-compat';
+import { getUserFacingMessage } from '@yellow-org/sdk-compat';
+import { NitroliteClient, AllowanceError } from '@yellow-org/sdk-compat';
 try {
   await client.deposit(token, amount);
 } catch (err) {
   const typed = NitroliteClient.classifyError(err);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sdk/ts-compat/README.md` around lines 262 - 284, The two examples are not
self-contained because AllowanceError is only imported in the first snippet but
referenced in the second; update the second snippet that uses
NitroliteClient.classifyError and AllowanceError to include the necessary import
(or show a combined import block) so readers can copy it directly; specifically
ensure the second snippet includes imports for AllowanceError (and
getUserFacingMessage if used), references NitroliteClient.classifyError and
client.deposit as shown, and demonstrates checking "instanceof AllowanceError"
with a clear, copy-paste-ready import line.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@sdk/ts-compat/README.md`:
- Around line 188-191: The example uses an undefined variable `wallet` when
calling `v1Client.getHomeChannel`; update the snippet to pass the wallet address
obtained from the `walletClient` that was passed into `NitroliteClient.create()`
(i.e., extract the address from the `walletClient` instance and pass that value
to `client.innerClient.getHomeChannel`), referencing `client.innerClient`,
`getHomeChannel`, `walletClient`, and `NitroliteClient.create()` to locate where
to change the code.
- Around line 71-75: The README deposit example uses a type assertion "as
Address" but doesn't import Address; update the example to import Address from
viem and ensure the snippet includes that import so the call to
client.deposit(tokenAddress as Address, amount) type-checks; specifically, add
an import for Address from "viem" near the top of the example and keep the
tokenAddress/amount and client.deposit usage unchanged.

---

Nitpick comments:
In `@sdk/ts-compat/README.md`:
- Around line 262-284: The two examples are not self-contained because
AllowanceError is only imported in the first snippet but referenced in the
second; update the second snippet that uses NitroliteClient.classifyError and
AllowanceError to include the necessary import (or show a combined import block)
so readers can copy it directly; specifically ensure the second snippet includes
imports for AllowanceError (and getUserFacingMessage if used), references
NitroliteClient.classifyError and client.deposit as shown, and demonstrates
checking "instanceof AllowanceError" with a clear, copy-paste-ready import line.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7a5b7fb and 1b86a5a.

📒 Files selected for processing (1)
  • sdk/ts-compat/README.md

@philanton philanton force-pushed the feat/npm-yellow-org branch from 48b5361 to 569d221 Compare March 2, 2026 17:11
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