@tedbrain/vlink 0.1.90 → 0.1.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -79,7 +79,7 @@ npx --registry=https://registry.npmmirror.com -y @tedbrain/vlink@latest install
79
79
 
80
80
  ## 安装 TedBrain MCP
81
81
 
82
- 已安装原生 vlink 后,可以通过现有 npm 包注册 MCP:
82
+ 一条命令完成原生 vlink 安装、邀请码验证和 MCP 注册:
83
83
 
84
84
  ```bash
85
85
  npx -y @tedbrain/vlink@latest mcp install
@@ -88,9 +88,11 @@ npx -y @tedbrain/vlink@latest mcp install codex
88
88
  ```
89
89
 
90
90
  省略 Agent 时使用 vlink 的交互多选;也支持透传 `--proxy-url` 等原生安装参数。
91
+ 首次使用时按提示输入邀请码;已有有效凭据时直接复用。不需要配置模型供应商或
92
+ 模型 API Key。完成后重启所选 Agent,继续使用其原有模型配置。
91
93
  入口查找 PATH 中的原生 vlink,再检查用户安装目录(支持 `VLINK_INSTALL_DIR`),
92
- 不使用 npm 缓存二进制注册 MCP。缺少原生 vlink 时会提示先执行
93
- `npx -y @tedbrain/vlink@latest install --no-setup`。
94
+ 不使用 npm 缓存二进制注册 MCP。缺少原生 vlink 时自动执行持久安装并跳过模型
95
+ 配置向导,随后用安装返回的绝对路径继续,无需重新打开终端。
94
96
 
95
97
  注册前使用 `vlink update --json` 查询运行时最新正式 release,并要求本机版本
96
98
  不低于该 release。npm 的 `@latest` 标签或包版本不能代替这次检查。
@@ -103,7 +105,13 @@ npx -y @tedbrain/vlink@latest mcp install codex
103
105
  拒绝升级、无法确认 release、版本检查被跳过、升级失败或 Windows 后台替换
104
106
  尚未完成时停止,不注册 MCP。需要升级的非交互环境也会停止,提示手动运行
105
107
  `vlink update --apply` 后重试;`npx -y` 只确认 npm 包获取,不代表同意升级 vlink。
106
- `mcp install --help` 直接显示原生帮助,不查询 release 或触发升级。
108
+ `mcp install --help` 显示帮助,不查询 release、安装程序或触发升级。
109
+
110
+ npm 入口通过原生 `mcp install --login` 在注册前验证当前生效的邀请码。
111
+ 直接运行 `vlink mcp install` 仍可离线预配置。缺少或无效的本地凭据会进入交互登录;非交互
112
+ 环境需事先通过 `vlink mcp login --stdin` 保存有效邀请码。网络、配额或服务故障
113
+ 直接报错,不反复要求登录;显式设置但无效的 `VLINK_INVITE_CODE` 也会报错,需先
114
+ 清除或修正该变量。验证失败或取消登录时不写入 MCP 注册。
107
115
 
108
116
  Agent 最终启动的是持久安装的 `vlink mcp run`,不依赖 npx 缓存。
109
117
  注册项及安装记录仍由 vlink 管理,卸载使用 `vlink mcp uninstall codex`
package/binaries.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
- "version": "0.1.90",
2
+ "version": "0.1.92",
3
3
  "binaries": {
4
- "linux-x86_64": "8c5d243a6554be522d454d0f904710c43a9917cd8d546bacf83b224627db3d93",
5
- "linux-x86_64-glibc2.17": "85c9ce389b45d159a5edd4749b7e9475e6306c3914acaec1b03ce7107d806cbb",
6
- "linux-aarch64": "171dd6c2053797f24f226c41f0b4c1dd3daee92204a06dd031b1da14435ddfc6",
7
- "macos-x86_64": "57454ff4d5a9163c530c6ca23a9b5b9ff238c9df24be104d9348958daad19e59",
8
- "macos-aarch64": "9acbaa7586f1dc7a4f070fb80cdf891f43cddb6e6be7648243f95f6c194a368e",
9
- "windows-x86_64.exe": "8b193d7119bf174aa71fa1023d55d746245e1acd54884d8b06bc89ea0e31aff0",
10
- "windows-aarch64.exe": "144e684b1f640803746c4b512296ad365bb0e7f2ef474aa689a682540e097b0e"
4
+ "linux-x86_64": "825762bf61cf8d06e754b7fbea67741afd0fff21382ba944ff54b7cc0bad9bdc",
5
+ "linux-x86_64-glibc2.17": "922ac12a78da0f1a9cf379462c564389fd265f494c2a194635fc1b53b13ef04c",
6
+ "linux-aarch64": "ed67c4e4d6fa218e2ff3f37cb75019cca6678ecd2d88c48fad5fd647ddefaf88",
7
+ "macos-x86_64": "a39116914a119012c553fca56c5722b405ee5c31d7cd24bfb0333a866a04642d",
8
+ "macos-aarch64": "e7587366e4259a0e6410b14edbf7435c5a6e9a1cbfabb02e732148f30ccb07f3",
9
+ "windows-x86_64.exe": "8232c363a79880e58a6824487c439593047958ad32b30a0e994f612db9dc3c07",
10
+ "windows-aarch64.exe": "74fd9477a86fb324062ae4d45bd9a034d633f253cb19259055a82fc412cbb271"
11
11
  }
12
12
  }
package/mcp-installer.js CHANGED
@@ -4,7 +4,7 @@ const path = require('path');
4
4
  const readline = require('readline');
5
5
  const { spawnSync } = require('child_process');
6
6
  const {
7
- defaultInstallDir, findOnPath, isExecutableFile, isVlinkWrapper, VlinkSetupError
7
+ defaultInstallDir, findOnPath, isExecutableFile, isVlinkWrapper, runInstaller, VlinkSetupError
8
8
  } = require('./installer');
9
9
 
10
10
  const RETRY_HINT = '请手动运行 vlink update --apply,完成后重新执行 MCP 安装。';
@@ -69,9 +69,20 @@ async function runMcpInstaller(args, options = {}) {
69
69
  binary = fallback;
70
70
  }
71
71
  if (!binary) {
72
- throw new VlinkSetupError(
73
- '未找到已安装的原生 vlink。请先运行 npx -y @tedbrain/vlink@latest install --no-setup。'
74
- );
72
+ if (args.includes('--help') || args.includes('-h')) {
73
+ output.write('Usage: npx -y @tedbrain/vlink@latest mcp install [codex|claude] [--proxy-url <URL>]\n' +
74
+ '安装原生 vlink、验证邀请码并注册 MCP;省略 Agent 时交互选择。\n');
75
+ return;
76
+ }
77
+ output.write('[TedBrain] 正在安装原生 vlink,随后继续 MCP 配置,无需重新打开终端。\n');
78
+ const installed = await (options.runInstaller || runInstaller)({
79
+ ...options, env, platform, output, skipSetup: true
80
+ });
81
+ binary = installed?.vlinkPath;
82
+ if (typeof binary !== 'string' || !path.isAbsolute(binary) ||
83
+ !isExecutableFile(binary, platform) || isVlinkWrapper(binary)) {
84
+ throw new VlinkSetupError('原生 vlink 安装未返回有效的程序路径,未安装 MCP。');
85
+ }
75
86
  }
76
87
  binary = path.resolve(binary);
77
88
 
@@ -148,7 +159,7 @@ async function runMcpInstaller(args, options = {}) {
148
159
  }
149
160
  }
150
161
  output.write(`[TedBrain] 使用 ${binary} 安装 MCP\n`);
151
- execute(binary, ['mcp', 'install', ...args], false);
162
+ execute(binary, ['mcp', 'install', ...args, ...(args.includes('--login') ? [] : ['--login'])], false);
152
163
  }
153
164
 
154
165
  module.exports = { runMcpInstaller, confirmUpgrade };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedbrain/vlink",
3
- "version": "0.1.90",
3
+ "version": "0.1.92",
4
4
  "description": "vlink Virtuoso bridge CLI installer. Installs the matching platform binary at npm install time, like Claude Code / Codex.",
5
5
  "license": "UNLICENSED",
6
6
  "bin": {