fix select bridge
This commit is contained in:
BIN
cbm-ui.zip
BIN
cbm-ui.zip
Binary file not shown.
@@ -1,22 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 DeusData
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,154 +0,0 @@
|
||||
# install.ps1 — One-line installer for codebase-memory-mcp (Windows).
|
||||
#
|
||||
# Usage: see README.md for install instructions.
|
||||
#
|
||||
# Environment:
|
||||
# CBM_DOWNLOAD_URL Override base URL for downloads (for testing)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Enforce TLS 1.2+ (older PowerShell defaults to TLS 1.0 which GitHub rejects)
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13
|
||||
|
||||
$Repo = "DeusData/codebase-memory-mcp"
|
||||
$InstallDir = "$env:LOCALAPPDATA\Programs\codebase-memory-mcp"
|
||||
$BinName = "codebase-memory-mcp.exe"
|
||||
$BaseUrl = if ($env:CBM_DOWNLOAD_URL) { $env:CBM_DOWNLOAD_URL } else { "https://github.com/$Repo/releases/latest/download" }
|
||||
|
||||
# Security: reject non-HTTPS download URLs (defense-in-depth)
|
||||
if (-not $BaseUrl.StartsWith("https://") -and -not $BaseUrl.StartsWith("http://localhost") -and -not $BaseUrl.StartsWith("http://127.0.0.1")) {
|
||||
Write-Host "error: refusing non-HTTPS download URL: $BaseUrl" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Detect variant from args (--ui or --standard)
|
||||
$Variant = "standard"
|
||||
$SkipConfig = $false
|
||||
foreach ($arg in $args) {
|
||||
if ($arg -eq "--ui") { $Variant = "ui" }
|
||||
if ($arg -eq "--standard") { $Variant = "standard" }
|
||||
if ($arg -eq "--skip-config") { $SkipConfig = $true }
|
||||
if ($arg -like "--dir=*") { $InstallDir = $arg.Substring(6) }
|
||||
}
|
||||
|
||||
Write-Host "codebase-memory-mcp installer (Windows)"
|
||||
Write-Host " variant: $Variant"
|
||||
Write-Host " target: $InstallDir\$BinName"
|
||||
Write-Host ""
|
||||
|
||||
# Build download URL
|
||||
if ($Variant -eq "ui") {
|
||||
$Archive = "codebase-memory-mcp-ui-windows-amd64.zip"
|
||||
} else {
|
||||
$Archive = "codebase-memory-mcp-windows-amd64.zip"
|
||||
}
|
||||
$Url = "$BaseUrl/$Archive"
|
||||
|
||||
# Download
|
||||
$TmpDir = Join-Path ([System.IO.Path]::GetTempPath()) "cbm-install-$(Get-Random)"
|
||||
New-Item -ItemType Directory -Path $TmpDir -Force | Out-Null
|
||||
|
||||
Write-Host "Downloading $Archive..."
|
||||
try {
|
||||
Invoke-WebRequest -Uri $Url -OutFile "$TmpDir\$Archive" -UseBasicParsing
|
||||
} catch {
|
||||
Write-Host "error: download failed: $_" -ForegroundColor Red
|
||||
Remove-Item -Recurse -Force $TmpDir -ErrorAction SilentlyContinue
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# Checksum verification
|
||||
$ChecksumUrl = "$BaseUrl/checksums.txt"
|
||||
try {
|
||||
Invoke-WebRequest -Uri $ChecksumUrl -OutFile "$TmpDir\checksums.txt" -UseBasicParsing
|
||||
$checksumLine = Get-Content "$TmpDir\checksums.txt" | Where-Object { $_ -like "*$Archive*" }
|
||||
if ($checksumLine) {
|
||||
$expected = ($checksumLine -split '\s+')[0]
|
||||
$actual = (Get-FileHash -Path "$TmpDir\$Archive" -Algorithm SHA256).Hash.ToLower()
|
||||
if ($expected -ne $actual) {
|
||||
Write-Host "error: CHECKSUM MISMATCH!" -ForegroundColor Red
|
||||
Write-Host " expected: $expected"
|
||||
Write-Host " actual: $actual"
|
||||
Remove-Item -Recurse -Force $TmpDir
|
||||
exit 1
|
||||
}
|
||||
Write-Host "Checksum verified."
|
||||
}
|
||||
} catch {
|
||||
Write-Host "warning: could not verify checksum (non-fatal)"
|
||||
}
|
||||
|
||||
# Extract
|
||||
Write-Host "Extracting..."
|
||||
Expand-Archive -Path "$TmpDir\$Archive" -DestinationPath $TmpDir -Force
|
||||
|
||||
$DlBin = Join-Path $TmpDir $BinName
|
||||
if (-not (Test-Path $DlBin)) {
|
||||
# UI variant may have different name in zip
|
||||
$UiBin = Join-Path $TmpDir "codebase-memory-mcp-ui.exe"
|
||||
if (Test-Path $UiBin) {
|
||||
Rename-Item $UiBin $BinName
|
||||
$DlBin = Join-Path $TmpDir $BinName
|
||||
} else {
|
||||
Write-Host "error: binary not found after extraction" -ForegroundColor Red
|
||||
Remove-Item -Recurse -Force $TmpDir
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
# Install
|
||||
New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null
|
||||
$Dest = Join-Path $InstallDir $BinName
|
||||
|
||||
# Handle replace-if-running (rename-aside)
|
||||
if (Test-Path $Dest) {
|
||||
$OldDest = "$Dest.old"
|
||||
Remove-Item $OldDest -Force -ErrorAction SilentlyContinue
|
||||
try {
|
||||
Rename-Item $Dest $OldDest -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Host "warning: could not rename existing binary (may be in use)"
|
||||
}
|
||||
}
|
||||
|
||||
Copy-Item $DlBin $Dest -Force
|
||||
|
||||
# Verify
|
||||
try {
|
||||
$ver = & $Dest --version 2>&1
|
||||
Write-Host "Installed: $ver"
|
||||
} catch {
|
||||
Write-Host "error: installed binary failed to run" -ForegroundColor Red
|
||||
Remove-Item -Recurse -Force $TmpDir
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Configure agents
|
||||
if ($SkipConfig) {
|
||||
Write-Host ""
|
||||
Write-Host "Skipping agent configuration (--skip-config)"
|
||||
} else {
|
||||
Write-Host ""
|
||||
Write-Host "Configuring coding agents..."
|
||||
try {
|
||||
& $Dest install -y 2>&1 | Write-Host
|
||||
} catch {
|
||||
Write-Host "Agent configuration failed (non-fatal)."
|
||||
Write-Host "Run manually: codebase-memory-mcp install"
|
||||
}
|
||||
}
|
||||
|
||||
# Add to PATH (user scope, no admin needed)
|
||||
$UserPath = [Environment]::GetEnvironmentVariable("PATH", "User")
|
||||
if ($UserPath -notlike "*$InstallDir*") {
|
||||
[Environment]::SetEnvironmentVariable("PATH", "$UserPath;$InstallDir", "User")
|
||||
$env:PATH = "$env:PATH;$InstallDir"
|
||||
Write-Host "Added $InstallDir to user PATH"
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
Remove-Item -Recurse -Force $TmpDir -ErrorAction SilentlyContinue
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Done! Restart your terminal and coding agent to start using codebase-memory-mcp."
|
||||
161
dist/assets/index-B04m7avt.js
vendored
Normal file
161
dist/assets/index-B04m7avt.js
vendored
Normal file
File diff suppressed because one or more lines are too long
161
dist/assets/index-DQISApfg.js
vendored
161
dist/assets/index-DQISApfg.js
vendored
File diff suppressed because one or more lines are too long
2
dist/index.html
vendored
2
dist/index.html
vendored
@@ -5,7 +5,7 @@
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>ЭКСА — Ваш мост в мир цифровых активов</title>
|
||||
<script type="module" crossorigin src="/assets/index-DQISApfg.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-B04m7avt.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-CmBRAAIp.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -46,17 +46,23 @@ export function SwapForm() {
|
||||
const isTrxNetwork = fromNetwork === 'TRX'
|
||||
|
||||
const { data: walletData } = useWalletBalance(fromNetwork as Chain)
|
||||
const tokenOptions = walletData ? buildTokensFromBalance(walletData) : TOKENS_LIST
|
||||
const { data: tokensList } = useTokensList()
|
||||
|
||||
const balanceTokenOptions = walletData ? buildTokensFromBalance(walletData) : TOKENS_LIST
|
||||
// На EVM/SOL можно выбирать только монеты из каталога Relay (/api/tokens) — для
|
||||
// остальных не резолвится адрес контракта и котировка вообще не запрашивается.
|
||||
const tokenOptions = isTrxNetwork || !tokensList
|
||||
? balanceTokenOptions
|
||||
: balanceTokenOptions.filter(t => t.symbol === fromNetwork || tokensList.some(tl => tl.chain === fromNetwork && tl.symbol === t.symbol))
|
||||
|
||||
useEffect(() => {
|
||||
if (tokenOptions.length === 0) return
|
||||
setFromToken(t => tokenOptions.find(o => o.symbol === t.symbol) ?? tokenOptions[0])
|
||||
setToToken(t => tokenOptions.find(o => o.symbol === t.symbol) ?? (tokenOptions[1] ?? tokenOptions[0]))
|
||||
}, [walletData, fromNetwork])
|
||||
}, [walletData, fromNetwork, tokensList])
|
||||
|
||||
const debouncedAmount = useDebounce(fromAmount, 500)
|
||||
const { data: addresses } = useWalletAddresses()
|
||||
const { data: tokensList } = useTokensList()
|
||||
|
||||
const parsedAmount = parseFloat(debouncedAmount)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user