Skip to content

feat: add account info tools and enhance payment tool#20

Open
batuhanlog wants to merge 6 commits intoStellar-Tools:mainfrom
batuhanlog:feat/account-payment-tools
Open

feat: add account info tools and enhance payment tool#20
batuhanlog wants to merge 6 commits intoStellar-Tools:mainfrom
batuhanlog:feat/account-payment-tools

Conversation

@batuhanlog
Copy link
Copy Markdown

@batuhanlog batuhanlog commented Feb 25, 2026

Summary

This PR adds two missing LangChain tools and significantly enhances the existing payment tool, making Stellar AgentKit a more complete SDK for building Stellar-powered AI agents.


New Features

1. tools/account.ts - Two new LangChain tools

stellar_get_balance

  • Get XLM + all token balances for any Stellar public key
  • Supports testnet and mainnet
  • Returns structured JSON: { publicKey, network, balances: [{ asset, balance }] }

stellar_get_account_info

  • Get full account details: sequence number, thresholds, flags, signers, data entries
  • Useful for AI agents that need to reason about account state before submitting transactions

2. Enhanced tools/stellar.ts - Multi-asset payment support

The existing stellar_send_payment tool only supported native XLM on testnet. It now supports:

  • Custom assets (e.g. USDC, yXLM) via asset_code + asset_issuer params
  • Optional text memo (max 28 bytes) for payment tagging
  • Mainnet support with ALLOW_MAINNET=true env var safety gate
  • Improved error messages with contextual debugging info

3. AgentClient new methods

await agent.sendPayment({ to, amount, asset_code?, asset_issuer?, memo? })
await agent.getBalance(publicKey?)
await agent.getAccountInfo(publicKey?)

4. stellarTools array now exports 6 tools (up from 4)


Bug Fixes (Pre-existing)

  • tools/bridge.ts: Fixed Record<> missing generic syntax
  • tools/contract.ts: Added explicit func parameter types (TS2322)
  • tools/stake.ts: Added explicit func parameter types (TS2322)

README

Added new section with payment + account usage examples, LangChain integration, and mainnet safety docs.

Testing

All TypeScript compilation passes with zero errors (npx tsc --noEmit).


Summary by cubic

Adds two account tools and upgrades payments with multi-asset support, memos, and a mainnet safety gate. Extends AgentClient with account helpers and a testnet-first token launch flow, plus stronger issuer safety and improved docs/tests.

  • New Features

    • Tools: stellar_get_balance and stellar_get_account_info (testnet/mainnet; balances, sequence, signers, thresholds, flags, data entries).
    • Payments: custom assets via asset_code/asset_issuer, optional memo, mainnet gate via ALLOW_MAINNET=true, clearer JSON responses.
    • AgentClient: sendPayment, getBalance, getAccountInfo, and launchToken; stellarTools exports 6 tools; README and docs/api.md include usage examples.
  • Bug Fixes

    • Account tools/AgentClient: handle liquidity_pool_shares; include dataEntries.
    • Payments: require asset_code when asset_issuer is set to avoid unintended native sends.
    • Token launch: lockIssuer sets all thresholds to 0 and blocks extra signers; tests fail fast; .gitignore ignores .env.*; getReserves example is null-safe.
    • CI: add upstream workflow files and update .github/TESTING.md to reflect available workflows.

Written for commit 4931ec6. Summary will update on new commits.

- Add tools/account.ts: stellarGetBalanceTool (XLM + token balances for any address) and stellarGetAccountInfoTool (sequence, signers, thresholds, flags)
- Upgrade tools/stellar.ts: multi-asset payments (not just XLM), optional text memo support, mainnet safety gate (ALLOW_MAINNET=true env var), improved error context
- Add AgentClient.sendPayment(): wraps enhanced payment tool with network/mainnet config
- Add AgentClient.getBalance(): returns structured balance object for any public key
- Add AgentClient.getAccountInfo(): returns full account details for any public key
- Export new account tools in index.ts stellarTools array (6 tools total)
- Fix pre-existing TypeScript errors in tools/bridge.ts (Record<> generic), tools/contract.ts and tools/stake.ts (explicit func parameter types)
- Update README: new features section, comprehensive usage examples for payments, getBalance, getAccountInfo, LangChain integration
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

5 issues found across 16 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="tools/stellar.ts">

<violation number="1" location="tools/stellar.ts:110">
P2: Missing validation for `asset_issuer` without `asset_code` allows silently falling back to native XLM, which can result in unintended asset transfers.</violation>
</file>

<file name="tools/account.ts">

<violation number="1" location="tools/account.ts:47">
P2: Balances of type `liquidity_pool_shares` do not include `asset_code`/`asset_issuer`, so treating every non-native balance as `BalanceLineAsset` yields `undefined:undefined` asset identifiers. Handle `liquidity_pool_shares` separately to avoid invalid asset strings.</violation>

<violation number="2" location="tools/account.ts:79">
P2: Tool description claims it returns data entries, but the implementation only returns a count (dataEntryCount) and omits the entries themselves, creating a mismatch for callers relying on the description.</violation>
</file>

<file name="agent.ts">

<violation number="1" location="agent.ts:208">
P2: Non-native balances are assumed to always have asset_code/asset_issuer. Liquidity pool share balances do not, so this returns `undefined:undefined` and mislabels the asset.</violation>

<violation number="2" location="agent.ts:253">
P2: getAccountInfo claims to return data entries but only returns a count; callers cannot access actual account data entries despite the documented contract.</violation>
</file>

Since this is your first cubic review, here's how it works:

  • cubic automatically reviews your code and comments on bugs and improvements
  • Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
  • Add one-off context when rerunning by tagging @cubic-dev-ai with guidance or docs links (including llms.txt)
  • Ask questions if you need clarification on any suggestion

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread tools/stellar.ts
Comment thread tools/account.ts
Comment thread tools/account.ts
Comment thread agent.ts
Comment thread agent.ts
- tools/account.ts: Handle liquidity_pool_shares balance type separately
  to avoid undefined:undefined asset identifiers (Cubic P2 violation)
- tools/account.ts: Add dataEntries field to stellarGetAccountInfoTool
  to match the documented contract in the tool description
- tools/stellar.ts: Add validation for asset_issuer without asset_code
  to prevent silent fallback to native XLM on unintended transfers
- agent.ts: Handle liquidity_pool_shares in getBalance() method
- agent.ts: Add dataEntries field to getAccountInfo() return value
@daiwikmh
Copy link
Copy Markdown
Contributor

upstream has changed, resolve conflicts

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

12 issues found across 30 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".github/TESTING.md">

<violation number="1" location=".github/TESTING.md:24">
P2: Testing documentation references GitHub Actions workflow files that are not present, creating incorrect CI expectations.</violation>
</file>

<file name="agent.ts">

<violation number="1" location="agent.ts:557">
P1: `lockIssuer` overstates guarantees: only disabling master key (`masterWeight: 0`) may not fully freeze issuer authority if other signers already exist.</violation>
</file>

<file name="tests/unit/tools/contract.test.ts">

<violation number="1" location="tests/unit/tools/contract.test.ts:5">
P2: Unit tests are tautological and disconnected from the contract tool, so they can pass while production behavior regresses.</violation>
</file>

<file name="examples/token-launch-example.ts">

<violation number="1" location="examples/token-launch-example.ts:26">
P2: Token launch examples are not practically runnable: they generate new random accounts and immediately call launchToken, which requires pre-funded existing accounts.</violation>
</file>

<file name="tests/unit/tools/bridge.test.ts">

<violation number="1" location="tests/unit/tools/bridge.test.ts:7">
P2: Unit tests duplicate bridge network/safeguard logic locally and do not exercise `tools/bridge.ts`, so regressions in production bridge behavior may pass undetected.</violation>
</file>

<file name="docs/api.md">

<violation number="1" location="docs/api.md:109">
P2: API reference is out of sync with `AgentClient` by omitting newly exposed methods (`sendPayment`, `getBalance`, `getAccountInfo`).</violation>

<violation number="2" location="docs/api.md:189">
P2: `lp.getReserves()` example is null-unsafe despite nullable return type, risking runtime errors for users copying the docs.</violation>
</file>

<file name="tests/unit/tools/stellar.test.ts">

<violation number="1" location="tests/unit/tools/stellar.test.ts:6">
P2: The new Stellar unit tests are tautological and do not test production behavior, so they can pass while real network/payment logic is broken.</violation>
</file>

<file name="tests/unit/tools/stake.test.ts">

<violation number="1" location="tests/unit/tools/stake.test.ts:5">
P2: Stake unit tests are tautological and do not exercise the real tool implementation, allowing regressions to pass CI.</violation>
</file>

<file name="tests/integration/workflow.test.ts">

<violation number="1" location="tests/integration/workflow.test.ts:10">
P2: The integration test file is tautological and does not execute any real tool/client code, so it can pass even when the new Stellar features are broken.</violation>
</file>

<file name=".gitignore">

<violation number="1" location=".gitignore:11">
P2: `.gitignore` does not ignore `.env.*` files, allowing accidental commits of secret-bearing env variants such as `.env.production`.</violation>
</file>

<file name="test/token-launch-tests.mjs">

<violation number="1" location="test/token-launch-tests.mjs:573">
P2: Test script reports failures but never returns a non-zero exit status, so CI may pass even when tests fail.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread agent.ts
Comment thread .github/TESTING.md Outdated
Comment thread tests/unit/tools/contract.test.ts
Comment thread examples/token-launch-example.ts
Comment thread tests/unit/tools/bridge.test.ts Outdated
Comment thread tests/unit/tools/stellar.test.ts
Comment thread tests/unit/tools/stake.test.ts
Comment thread tests/integration/workflow.test.ts Outdated
Comment thread .gitignore
Comment thread test/token-launch-tests.mjs
- P1: lockIssuer now sets all thresholds to 0 and checks for extra signers
- P2: .gitignore now covers .env.* patterns
- P2: docs/api.md updated with sendPayment, getBalance, getAccountInfo
- P2: getReserves example is now null-safe
- P2: TESTING.md no longer references missing workflow files
- P2: token-launch-tests.mjs exits with non-zero on failure
- P2: token-launch-example.ts clarifies funding requirement
- P2: all unit tests now import and validate actual tool definitions
- P2: integration tests exercise real AgentClient initialization and validation
@gitguardian
Copy link
Copy Markdown

gitguardian bot commented Mar 24, 2026

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

Since your pull request originates from a forked repository, GitGuardian is not able to associate the secrets uncovered with secret incidents on your GitGuardian dashboard.
Skipping this check run and merging your pull request will create secret incidents on your GitGuardian dashboard.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
- - Generic High Entropy Secret 371e4aa tests/integration/workflow.test.ts View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

7 issues found across 11 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="tests/unit/tools/contract.test.ts">

<violation number="1" location="tests/unit/tools/contract.test.ts:24">
P2: Action-type test is self-referential and not coupled to `StellarLiquidityContractTool` schema, so action regressions may pass tests undetected.</violation>
</file>

<file name="agent.ts">

<violation number="1" location="agent.ts:574">
P0: Issuer lock sets all thresholds to 0, which can remove signature requirements instead of freezing the account.</violation>
</file>

<file name="tests/integration/workflow.test.ts">

<violation number="1" location="tests/integration/workflow.test.ts:41">
P2: Hardcoded Stellar private seeds are committed in test code, creating a security-sensitive secret exposure pattern.</violation>
</file>

<file name="tests/unit/tools/stellar.test.ts">

<violation number="1" location="tests/unit/tools/stellar.test.ts:22">
P2: Network support test is tautological and not coupled to `stellarSendPaymentTool` schema/validation, so regressions in accepted networks will go undetected.</violation>
</file>

<file name="docs/api.md">

<violation number="1" location="docs/api.md:217">
P2: `sendPayment()` API docs omit the required `ALLOW_MAINNET=true` safety gate for mainnet, causing likely runtime failures for documented mainnet usage.</violation>

<violation number="2" location="docs/api.md:228">
P2: `sendPayment` docs under-specify asset parameter rules: they omit that `asset_code` is also required when `asset_issuer` is provided.</violation>
</file>

<file name="tests/unit/tools/bridge.test.ts">

<violation number="1" location="tests/unit/tools/bridge.test.ts:23">
P2: Global `process.env` mutation is restored only on success; failed assertion can skip cleanup and leak env state to other tests.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread agent.ts
// Set master weight to 0 - this makes the account immutable
masterWeight: 0
masterWeight: 0,
lowThreshold: 0,
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P0: Issuer lock sets all thresholds to 0, which can remove signature requirements instead of freezing the account.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At agent.ts, line 574:

<comment>Issuer lock sets all thresholds to 0, which can remove signature requirements instead of freezing the account.</comment>

<file context>
@@ -546,14 +552,28 @@ export class AgentClient {
           Operation.setOptions({
-            masterWeight: 0
+            masterWeight: 0,
+            lowThreshold: 0,
+            medThreshold: 0,
+            highThreshold: 0
</file context>
Fix with Cubic

Comment on lines +24 to 29
expect(validActions).toHaveLength(5);
expect(validActions).toContain('swap');
expect(validActions).toContain('deposit');
expect(validActions).toContain('withdraw');
expect(validActions).toContain('get_share_id');
expect(validActions).toContain('get_reserves');
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P2: Action-type test is self-referential and not coupled to StellarLiquidityContractTool schema, so action regressions may pass tests undetected.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tests/unit/tools/contract.test.ts, line 24:

<comment>Action-type test is self-referential and not coupled to `StellarLiquidityContractTool` schema, so action regressions may pass tests undetected.</comment>

<file context>
@@ -1,32 +1,32 @@
-    
+
     it('should support all valid contract actions', () => {
+      expect(validActions).toHaveLength(5);
       expect(validActions).toContain('swap');
       expect(validActions).toContain('deposit');
</file context>
Suggested change
expect(validActions).toHaveLength(5);
expect(validActions).toContain('swap');
expect(validActions).toContain('deposit');
expect(validActions).toContain('withdraw');
expect(validActions).toContain('get_share_id');
expect(validActions).toContain('get_reserves');
for (const action of validActions) {
expect(StellarLiquidityContractTool.schema.safeParse({ action }).success).toBe(true);
}
expect(StellarLiquidityContractTool.schema.safeParse({ action: 'invalid_action' }).success).toBe(false);
Fix with Cubic

await expect(
agent.launchToken({
code: 'TEST',
issuerSecret: 'SCZANGBA5YHTNYVVV3C7CAZMCLPT4R3YNWECOUL6XELXHBCHJ3MGQOOY',
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P2: Hardcoded Stellar private seeds are committed in test code, creating a security-sensitive secret exposure pattern.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tests/integration/workflow.test.ts, line 41:

<comment>Hardcoded Stellar private seeds are committed in test code, creating a security-sensitive secret exposure pattern.</comment>

<file context>
@@ -1,77 +1,80 @@
+      await expect(
+        agent.launchToken({
+          code: 'TEST',
+          issuerSecret: 'SCZANGBA5YHTNYVVV3C7CAZMCLPT4R3YNWECOUL6XELXHBCHJ3MGQOOY',
+          distributorSecret: 'SCZANGBA5YHTNYVVV3C7CAZMCLPT4R3YNWECOUL6XELXHBCHJ3MGQOOY',
+          initialSupply: '1000',
</file context>
Fix with Cubic

Comment on lines +22 to +24
const validNetworks = ['testnet', 'mainnet'];
expect(validNetworks).toContain('testnet');
expect(validNetworks).toContain('mainnet');
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P2: Network support test is tautological and not coupled to stellarSendPaymentTool schema/validation, so regressions in accepted networks will go undetected.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tests/unit/tools/stellar.test.ts, line 22:

<comment>Network support test is tautological and not coupled to `stellarSendPaymentTool` schema/validation, so regressions in accepted networks will go undetected.</comment>

<file context>
@@ -1,22 +1,27 @@
+
+  describe('Network Support', () => {
+    it('should support testnet and mainnet network values', () => {
+      const validNetworks = ['testnet', 'mainnet'];
+      expect(validNetworks).toContain('testnet');
+      expect(validNetworks).toContain('mainnet');
</file context>
Suggested change
const validNetworks = ['testnet', 'mainnet'];
expect(validNetworks).toContain('testnet');
expect(validNetworks).toContain('mainnet');
const schema = stellarSendPaymentTool.schema;
expect(() => schema.parse({ recipient: 'GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF', amount: '1', network: 'testnet' })).not.toThrow();
expect(() => schema.parse({ recipient: 'GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF', amount: '1', network: 'mainnet' })).not.toThrow();
Fix with Cubic

Comment thread docs/api.md
to: string; // Recipient Stellar address (G...)
amount: string; // Amount to send (e.g. "100")
asset_code?: string; // Asset code for custom tokens (e.g. "USDC"). Omit for native XLM
asset_issuer?: string; // Required when asset_code is set. Issuer public key
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P2: sendPayment docs under-specify asset parameter rules: they omit that asset_code is also required when asset_issuer is provided.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/api.md, line 228:

<comment>`sendPayment` docs under-specify asset parameter rules: they omit that `asset_code` is also required when `asset_issuer` is provided.</comment>

<file context>
@@ -210,6 +214,95 @@ console.log(`Share Token ID: ${shareId}`);
+  to: string;           // Recipient Stellar address (G...)
+  amount: string;       // Amount to send (e.g. "100")
+  asset_code?: string;  // Asset code for custom tokens (e.g. "USDC"). Omit for native XLM
+  asset_issuer?: string; // Required when asset_code is set. Issuer public key
+  memo?: string;        // Optional text memo (max 28 bytes)
+}
</file context>
Suggested change
asset_issuer?: string; // Required when asset_code is set. Issuer public key
asset_issuer?: string; // Must be used together with asset_code (asset_code is required when asset_issuer is set). Issuer public key
Fix with Cubic

Comment thread docs/api.md

---

## 💸 sendPayment()
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P2: sendPayment() API docs omit the required ALLOW_MAINNET=true safety gate for mainnet, causing likely runtime failures for documented mainnet usage.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/api.md, line 217:

<comment>`sendPayment()` API docs omit the required `ALLOW_MAINNET=true` safety gate for mainnet, causing likely runtime failures for documented mainnet usage.</comment>

<file context>
@@ -210,6 +214,95 @@ console.log(`Share Token ID: ${shareId}`);
 
 ---
 
+## 💸 sendPayment()
+
+Sends XLM or any Stellar asset to another account.
</file context>
Fix with Cubic

Comment on lines +23 to 37
delete process.env.ALLOW_MAINNET_BRIDGE;

await expect(
bridgeTokenTool.func({
amount: "100",
toAddress: "0x742d35Cc6Db050e3797bf604dC8a98c13a0e002E",
fromNetwork: "stellar-mainnet",
})
).rejects.toThrow(/[Mm]ainnet/);

// Restore
if (originalEnv !== undefined) {
process.env.ALLOW_MAINNET_BRIDGE = originalEnv;
}
});
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 24, 2026

Choose a reason for hiding this comment

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

P2: Global process.env mutation is restored only on success; failed assertion can skip cleanup and leak env state to other tests.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tests/unit/tools/bridge.test.ts, line 23:

<comment>Global `process.env` mutation is restored only on success; failed assertion can skip cleanup and leak env state to other tests.</comment>

<file context>
@@ -1,80 +1,39 @@
+  describe('Mainnet Safety', () => {
+    it('should block mainnet bridging when ALLOW_MAINNET_BRIDGE is not set', async () => {
+      const originalEnv = process.env.ALLOW_MAINNET_BRIDGE;
+      delete process.env.ALLOW_MAINNET_BRIDGE;
+
+      await expect(
</file context>
Suggested change
delete process.env.ALLOW_MAINNET_BRIDGE;
await expect(
bridgeTokenTool.func({
amount: "100",
toAddress: "0x742d35Cc6Db050e3797bf604dC8a98c13a0e002E",
fromNetwork: "stellar-mainnet",
})
).rejects.toThrow(/[Mm]ainnet/);
// Restore
if (originalEnv !== undefined) {
process.env.ALLOW_MAINNET_BRIDGE = originalEnv;
}
});
delete process.env.ALLOW_MAINNET_BRIDGE;
try {
await expect(
bridgeTokenTool.func({
amount: "100",
toAddress: "0x742d35Cc6Db050e3797bf604dC8a98c13a0e002E",
fromNetwork: "stellar-mainnet",
})
).rejects.toThrow(/[Mm]ainnet/);
} finally {
if (originalEnv !== undefined) {
process.env.ALLOW_MAINNET_BRIDGE = originalEnv;
} else {
delete process.env.ALLOW_MAINNET_BRIDGE;
}
}
Fix with Cubic

@batuhanlog
Copy link
Copy Markdown
Author

Resolved merge conflicts with upstream/main and fixed all 12 cubic-dev-ai review issues. P1: lockIssuer now sets all thresholds to 0 and checks for extra signers. All P2s addressed (gitignore, docs, tests, examples).

@daiwikmh
Copy link
Copy Markdown
Contributor

daiwikmh commented Apr 2, 2026

Your secret is pushed in the pr

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.

2 participants