@springbrand/cli 0.1.4 → 0.1.5-alpha.1
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 +13 -22
- package/dist/commands/connect.d.ts +4 -2
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +184 -64
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +24 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/lib/auth.d.ts +1 -1
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +2 -2
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/command-code-config.d.ts +1 -1
- package/dist/lib/command-code-config.d.ts.map +1 -1
- package/dist/lib/command-code-config.js +3 -3
- package/dist/lib/command-code-config.js.map +1 -1
- package/dist/lib/connect-all-summary.d.ts.map +1 -1
- package/dist/lib/connect-all-summary.js +8 -2
- package/dist/lib/connect-all-summary.js.map +1 -1
- package/dist/lib/connect-all.d.ts +3 -1
- package/dist/lib/connect-all.d.ts.map +1 -1
- package/dist/lib/connect-all.js +14 -6
- package/dist/lib/connect-all.js.map +1 -1
- package/dist/lib/connect-auth.d.ts +4 -3
- package/dist/lib/connect-auth.d.ts.map +1 -1
- package/dist/lib/connect-auth.js +14 -48
- package/dist/lib/connect-auth.js.map +1 -1
- package/dist/lib/connect-preflight.d.ts +1 -0
- package/dist/lib/connect-preflight.d.ts.map +1 -1
- package/dist/lib/connect-preflight.js +12 -7
- package/dist/lib/connect-preflight.js.map +1 -1
- package/dist/lib/connect-result.d.ts +139 -0
- package/dist/lib/connect-result.d.ts.map +1 -0
- package/dist/lib/connect-result.js +151 -0
- package/dist/lib/connect-result.js.map +1 -0
- package/dist/lib/connect-runtime.d.ts +1 -1
- package/dist/lib/connect-runtime.d.ts.map +1 -1
- package/dist/lib/connect-runtime.js +4 -2
- package/dist/lib/connect-runtime.js.map +1 -1
- package/dist/lib/cursor-config.d.ts +1 -1
- package/dist/lib/cursor-config.d.ts.map +1 -1
- package/dist/lib/cursor-config.js +3 -3
- package/dist/lib/cursor-config.js.map +1 -1
- package/dist/lib/doctor-checks.d.ts.map +1 -1
- package/dist/lib/doctor-checks.js +2 -4
- package/dist/lib/doctor-checks.js.map +1 -1
- package/dist/lib/doctor-machine.d.ts.map +1 -1
- package/dist/lib/doctor-machine.js +10 -2
- package/dist/lib/doctor-machine.js.map +1 -1
- package/dist/lib/doctor-repairs.d.ts.map +1 -1
- package/dist/lib/doctor-repairs.js +7 -8
- package/dist/lib/doctor-repairs.js.map +1 -1
- package/dist/lib/doctor-report.d.ts +161 -5
- package/dist/lib/doctor-report.d.ts.map +1 -1
- package/dist/lib/doctor-report.js +4 -1
- package/dist/lib/doctor-report.js.map +1 -1
- package/dist/lib/harness-spec.d.ts +2 -0
- package/dist/lib/harness-spec.d.ts.map +1 -1
- package/dist/lib/harness-spec.js +23 -7
- package/dist/lib/harness-spec.js.map +1 -1
- package/dist/lib/omp-config.d.ts +1 -1
- package/dist/lib/omp-config.d.ts.map +1 -1
- package/dist/lib/omp-config.js +3 -3
- package/dist/lib/omp-config.js.map +1 -1
- package/dist/lib/pi-config.d.ts +1 -1
- package/dist/lib/pi-config.d.ts.map +1 -1
- package/dist/lib/pi-config.js +3 -3
- package/dist/lib/pi-config.js.map +1 -1
- package/dist/lib/registration-detect.d.ts +2 -2
- package/dist/lib/registration-detect.d.ts.map +1 -1
- package/dist/lib/registration-detect.js +60 -43
- package/dist/lib/registration-detect.js.map +1 -1
- package/dist/lib/workbuddy-config.d.ts +1 -1
- package/dist/lib/workbuddy-config.d.ts.map +1 -1
- package/dist/lib/workbuddy-config.js +3 -3
- package/dist/lib/workbuddy-config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,35 +15,26 @@ npm run build
|
|
|
15
15
|
npm link
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
## 推荐安装流程:
|
|
18
|
+
## 推荐安装流程:OAuth-first
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
`sp connect <client>` 是默认入口。没有显式 API key 时,CLI 写入 Host 的原生 MCP 配置并交给该 Host 完成 OAuth;新用户可以在浏览器注册并授权,已有 SpringBrand 会话会直接复用。CLI 不会把 keyless 安装自动转成 `sp auth login`。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
安装提示词应只执行一次 connect,然后读取机器结果中的 `next_action`(或 `nextAction`)。Host 需要浏览器授权或重载时,结果会给出该 Host 的精确动作;Agent 不得猜测登录命令、切换 Host 或切换认证方式。授权或重载后只运行一次继续命令:
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
sp
|
|
25
|
+
sp connect codex --json
|
|
26
|
+
sp doctor --harness codex --json
|
|
26
27
|
```
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
只有 `connect` 返回 `outcome: "verified"`,或继续执行后的 doctor 结果 `ready: true`,才能报告安装完成。`auth_pending`、`needs_reload`、`failed` 和 `unsupported` 都是非成功状态。
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
sp auth login
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
CLI 会打开 SpringBrand 的 API key 页面。未注册用户先注册并登录,已有账号的用户直接在页面中创建或复制 API key,然后把 key 粘贴回 CLI。开发环境要根据安装端点打开对应的页面:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
sp auth login --url https://devconnector.springbrand.ai/mcp
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
保存 key 后再连接客户端:
|
|
31
|
+
如果用户明确提供 API key,它优先于保存的凭据并走独立的 key 路径:
|
|
41
32
|
|
|
42
33
|
```bash
|
|
43
|
-
sp connect codex
|
|
34
|
+
SPRINGBRAND_API_KEY='…' sp connect codex --json
|
|
44
35
|
```
|
|
45
36
|
|
|
46
|
-
|
|
37
|
+
key 无效、撤销、跨环境或暂时不可验证时,CLI 保留在 key 路径并返回安全的恢复动作;不会打开 OAuth,也不会覆盖原先可用的保存 key。`sp auth login` 仍是用户主动管理 API key 的命令,不是 connect 的自动 fallback。
|
|
47
38
|
|
|
48
39
|
## 发布 alpha
|
|
49
40
|
|
|
@@ -130,10 +121,10 @@ sp connect cursor --url http://127.0.0.1:8789/mcp # 覆盖端点(本地开
|
|
|
130
121
|
|
|
131
122
|
`hermes` 仍被插件仓库阻塞,见 TODO。
|
|
132
123
|
|
|
133
|
-
|
|
124
|
+
两种认证形态由客户端能力决定:
|
|
134
125
|
|
|
135
|
-
- **
|
|
136
|
-
- **
|
|
126
|
+
- **OAuth(默认)**:不提供 key 时,写入的条目只有 URL,由客户端自己的 MCP OAuth 完成注册、登录和授权。
|
|
127
|
+
- **API key(显式)**:只有本次命令的 `--api-key` 或 `SPRINGBRAND_API_KEY` 会选择 key 路径;CLI 不会从保存的 key 配置自动改变 keyless landing flow。选中 key 后,CLI 把它写进 `Authorization: Bearer`(或 Host 的等价安全引用),并禁止 OAuth fallback。
|
|
137
128
|
|
|
138
129
|
**`Authorization: Bearer` 是 Gateway 唯一读取 key 的位置**(`src/auth/mcp-api-key.ts` 的 `classifyMcpAuthorization`),key 写进别的请求头等于没带凭据,客户端会被推回 OAuth。Codex 与 Grok 例外地传环境变量名而非 key 本身:前者用 `--bearer-token-env-var`,后者在加载时展开 `${SPRINGBRAND_API_KEY}`,两者都由客户端自己拼成 Bearer,key 因此不进 argv 与配置文件。
|
|
139
130
|
|
|
@@ -151,7 +142,7 @@ key 形态是 `sbk_v1_<dev|production>_<id>_<secret>`,环境段决定它能用
|
|
|
151
142
|
sp doctor --json
|
|
152
143
|
```
|
|
153
144
|
|
|
154
|
-
该模式输出单个版本化 JSON 文档,顶层包含 `schema_version`、`verdict`、`checks`、`hosts` 和 `repairs`。`hosts` 中每个客户端都固定包含 `detected`、`mcp_configured`、`auth`、`skills`、`tools`、`restart_required` 和 `failed_phase`;阶段状态只能是 `pass`、`warn`、`fail`、`skip` 或 `unknown`。`failed_phase` 按固定的检测、配置、认证、Skill、工具、重启顺序指出第一个失败阶段,未失败时为 `null`。破坏性读取变化会提升 `schema_version`;新增可选字段保持向前兼容。
|
|
145
|
+
该模式输出单个版本化 JSON 文档,顶层包含 `schema_version`、`verdict`、`ready`、`checks`、`hosts` 和 `repairs`。`ready: true` 才表示选定 Host 的 MCP 身份、认证、健康检查和加载状态都已通过。`hosts` 中每个客户端都固定包含 `detected`、`mcp_configured`、`auth`、`skills`、`tools`、`restart_required` 和 `failed_phase`;阶段状态只能是 `pass`、`warn`、`fail`、`skip` 或 `unknown`。`failed_phase` 按固定的检测、配置、认证、Skill、工具、重启顺序指出第一个失败阶段,未失败时为 `null`。破坏性读取变化会提升 `schema_version`;新增可选字段保持向前兼容。
|
|
155
146
|
|
|
156
147
|
`--json` 与 `--pretty` 不能同时使用,也不能重复指定;这类输入错误退出码为 `3`。正常诊断仍使用既有退出码:`0` 表示没有 Harness 失败,`1` 表示至少一个 Harness 失败,`2` 表示 doctor 自身无法完成。机器模式的 JSON verdict 用于定位问题,退出码仍是自动化的首要信号。
|
|
157
148
|
|
|
@@ -3,7 +3,7 @@ import type { Command } from 'commander';
|
|
|
3
3
|
import type { TakeHoistedCliInstall } from '../lib/cli-install.js';
|
|
4
4
|
import type { AgentClient, ConnectAuthMode } from '../lib/connect-runtime.js';
|
|
5
5
|
/** Skill install only: no key handoff or post-install callback to honour. */
|
|
6
|
-
export declare function connectOpenClaw(options: Omit<NativeConnectOptions, 'keyAuthOnly' | 'onPostInstallFailed'>): Promise<
|
|
6
|
+
export declare function connectOpenClaw(options: Omit<NativeConnectOptions, 'keyAuthOnly' | 'onPostInstallFailed'>): Promise<ConnectAuthMode | undefined>;
|
|
7
7
|
/** Writes mcp.json directly — no `cursor mcp add` exists. */
|
|
8
8
|
export declare function connectCursor(options: {
|
|
9
9
|
apiKey?: string;
|
|
@@ -12,7 +12,7 @@ export declare function connectCursor(options: {
|
|
|
12
12
|
verbose?: boolean;
|
|
13
13
|
authTimeoutMs?: number;
|
|
14
14
|
onPostInstallFailed?: () => void;
|
|
15
|
-
}): Promise<
|
|
15
|
+
}): Promise<ConnectAuthMode | undefined>;
|
|
16
16
|
export declare function launchAgent(client: AgentClient): Promise<void>;
|
|
17
17
|
export declare function connectHarness(harness: AgentClient, options: NativeConnectOptions): Promise<ConnectAuthMode | undefined>;
|
|
18
18
|
export declare function registerConnect(program: Command): void;
|
|
@@ -25,6 +25,8 @@ export interface NativeConnectOptions {
|
|
|
25
25
|
keyAuthOnly?: boolean;
|
|
26
26
|
/** Headless --all: bounds sign-in spawns and bars interactive CLI login. */
|
|
27
27
|
authTimeoutMs?: number;
|
|
28
|
+
/** Single-host machine mode: write the registration and return the native OAuth action. */
|
|
29
|
+
deferOAuth?: boolean;
|
|
28
30
|
/** Internal only: false leaves the global npm tree untouched. */
|
|
29
31
|
cliInstall?: boolean;
|
|
30
32
|
/** Set by `--all`: the CLI install already ran once, upfront. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAyE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAyE,MAAM,2BAA2B,CAAC;AAsiBrJ,6EAA6E;AAC7E,wBAAsB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,qBAAqB,CAAC,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAmEtJ;AAsPD,6DAA6D;AAC7D,wBAAsB,aAAa,CAAC,OAAO,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAEvC;AAqBD,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;AAuDD,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAI9H;AA+JD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiDtD;AAeD,MAAM,WAAW,oBAAoB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,sEAAsE;IACtE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC"}
|