Files
ttstd-infinite-canvas/scripts/start-canvas.ps1
Codex 9b9a7f4a72 feat(merge): 以官方 main 为基底融合 PR#530 多维表格与本地定制
- 多维表格(canvas-batch-table-node/use-canvas-batch-table/canvas-batch-table 等)以 PR#530 实现为主
- 保留官方 main 全部新功能:banner/画布版本历史/提示词编辑/方舟 Agent Plan/支付导出
- 移植本地定制:ddcat 多参考图校验、万有引力 lxmone 连接错误提示、Description v20(v24)、自建插件(a6api/metaso-h3/antigravity-proxy/lxmone)、seccomp、Windows 脚本
- 迁移版本升至 v24(官方 v20-23 banner/版本历史 + 我们的 Description 列)
- 修复官方缺失的 markdownPlainText import
2026-09-18 14:09:50 +08:00

57 lines
1.7 KiB
PowerShell

[CmdletBinding()]
param()
$ErrorActionPreference = "Stop"
$repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
$localStarter = Join-Path $PSScriptRoot "start-local.ps1"
$healthUrl = "http://127.0.0.1:3000/api/health"
$canvasUrl = "http://localhost:3000/canvas"
function Test-CanvasHttp([string]$Url) {
try {
$response = Invoke-WebRequest -Uri $Url -UseBasicParsing -TimeoutSec 3
return $response.StatusCode -ge 200 -and $response.StatusCode -lt 400
} catch {
return $false
}
}
function Test-ListeningPort([int]$Port) {
try {
return $null -ne (Get-NetTCPConnection -LocalPort $Port -State Listen -ErrorAction Stop | Select-Object -First 1)
} catch {
return $false
}
}
if (Test-CanvasHttp $healthUrl) {
Write-Host "影策画布已经在运行,正在打开..." -ForegroundColor Green
Start-Process $canvasUrl
exit 0
}
$occupiedPorts = @(3000, 8080) | Where-Object { Test-ListeningPort $_ }
if ($occupiedPorts.Count -gt 0) {
throw "端口 $($occupiedPorts -join ', ') 已被其他程序占用,无法安全启动影策。"
}
if (-not (Test-Path -LiteralPath $localStarter)) {
throw "未找到项目启动脚本:$localStarter"
}
Write-Host "正在启动影策前端和后端,请稍候..." -ForegroundColor Cyan
& $localStarter
$deadline = (Get-Date).AddMinutes(3)
do {
Start-Sleep -Seconds 2
if (Test-CanvasHttp $healthUrl) {
Write-Host "影策画布已启动,正在打开浏览器..." -ForegroundColor Green
Start-Process $canvasUrl
exit 0
}
} while ((Get-Date) -lt $deadline)
throw "影策服务已拉起,但 3 分钟内未通过健康检查。请查看打开的前端、后端窗口。"