@tokenbuddy/tb-admin 1.0.31 → 1.0.33
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/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +280 -19
- package/dist/src/cli.js.map +1 -1
- package/dist/src/client.d.ts +82 -2
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +93 -0
- package/dist/src/client.js.map +1 -1
- package/dist/src/provider.d.ts +120 -0
- package/dist/src/provider.d.ts.map +1 -0
- package/dist/src/provider.js +73 -0
- package/dist/src/provider.js.map +1 -0
- package/dist/src/seller.d.ts +104 -0
- package/dist/src/seller.d.ts.map +1 -0
- package/dist/src/seller.js +283 -0
- package/dist/src/seller.js.map +1 -0
- package/dist/src/ui-actions.d.ts +25 -0
- package/dist/src/ui-actions.d.ts.map +1 -1
- package/dist/src/ui-actions.js +81 -11
- package/dist/src/ui-actions.js.map +1 -1
- package/dist/src/ui-server.d.ts.map +1 -1
- package/dist/src/ui-server.js +15 -2
- package/dist/src/ui-server.js.map +1 -1
- package/dist/src/ui-state.d.ts +77 -2
- package/dist/src/ui-state.d.ts.map +1 -1
- package/dist/src/ui-state.js +242 -14
- package/dist/src/ui-state.js.map +1 -1
- package/dist/src/ui-static.d.ts.map +1 -1
- package/dist/src/ui-static.js +98 -20
- package/dist/src/ui-static.js.map +1 -1
- package/dist/src/vendor-client.d.ts +23 -0
- package/dist/src/vendor-client.d.ts.map +1 -0
- package/dist/src/vendor-client.js +2 -0
- package/dist/src/vendor-client.js.map +1 -0
- package/dist/src/vendor-commands.d.ts +35 -0
- package/dist/src/vendor-commands.d.ts.map +1 -0
- package/dist/src/vendor-commands.js +33 -0
- package/dist/src/vendor-commands.js.map +1 -0
- package/package.json +1 -1
- package/src/cli.ts +305 -31
- package/src/client.ts +118 -2
- package/src/provider.ts +150 -0
- package/src/seller.ts +362 -0
- package/src/ui-actions.ts +89 -11
- package/src/ui-server.ts +15 -1
- package/src/ui-state.ts +293 -15
- package/src/ui-static.ts +98 -20
- package/src/vendor-client.ts +23 -0
- package/src/vendor-commands.ts +65 -0
- package/tests/admin.test.ts +81 -3
- package/tests/seller.test.ts +337 -0
- package/tests/ui-state-fleet.test.ts +257 -0
- package/tests/ui-static-row.test.ts +202 -0
- package/tests/vendor-cli.test.ts +241 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-server.d.ts","sourceRoot":"","sources":["../../src/ui-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-server.d.ts","sourceRoot":"","sources":["../../src/ui-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAmE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAgBD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8BrG"}
|
package/dist/src/ui-server.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as http from "http";
|
|
2
2
|
import { randomBytes } from "crypto";
|
|
3
3
|
import { URL } from "url";
|
|
4
|
+
import { RegistryVendorClient } from "./client.js";
|
|
4
5
|
import { AdminUiState } from "./ui-state.js";
|
|
5
6
|
import { UiActions } from "./ui-actions.js";
|
|
6
7
|
import { adminUiHtml } from "./ui-static.js";
|
|
@@ -12,7 +13,7 @@ export async function startAdminUiServer(options) {
|
|
|
12
13
|
const jobs = new Map();
|
|
13
14
|
const server = http.createServer(async (req, res) => {
|
|
14
15
|
try {
|
|
15
|
-
await routeRequest(req, res, state, actions, jobs);
|
|
16
|
+
await routeRequest(req, res, options, state, actions, jobs);
|
|
16
17
|
}
|
|
17
18
|
catch (err) {
|
|
18
19
|
sendJson(res, 500, { error: err.message || "internal error" });
|
|
@@ -33,7 +34,7 @@ export async function startAdminUiServer(options) {
|
|
|
33
34
|
}
|
|
34
35
|
return { server, url };
|
|
35
36
|
}
|
|
36
|
-
async function routeRequest(req, res, state, actions, jobs) {
|
|
37
|
+
async function routeRequest(req, res, options, state, actions, jobs) {
|
|
37
38
|
const parsed = new URL(req.url || "/", "http://127.0.0.1");
|
|
38
39
|
if (req.method === "GET" && parsed.pathname === "/") {
|
|
39
40
|
sendHtml(res, adminUiHtml());
|
|
@@ -56,6 +57,18 @@ async function routeRequest(req, res, state, actions, jobs) {
|
|
|
56
57
|
sendJson(res, 200, await state.bootstrapConfig());
|
|
57
58
|
return;
|
|
58
59
|
}
|
|
60
|
+
if (req.method === "GET" && parsed.pathname === "/api/vendor/release-requests") {
|
|
61
|
+
const profile = state.activeBootstrapProfile();
|
|
62
|
+
const baseUrl = options.url || profile.profile?.url;
|
|
63
|
+
const token = options.token || profile.profile?.token;
|
|
64
|
+
if (!baseUrl || !token) {
|
|
65
|
+
throw new Error("No bootstrap profile found. Configure an admin profile or pass --url and --token.");
|
|
66
|
+
}
|
|
67
|
+
const limit = parsed.searchParams.get("limit") || undefined;
|
|
68
|
+
const client = new RegistryVendorClient(baseUrl, token);
|
|
69
|
+
sendJson(res, 200, await client.listReleaseRequests(limit ? Number(limit) : 20));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
59
72
|
if (req.method === "GET" && parsed.pathname === "/api/sellers") {
|
|
60
73
|
sendJson(res, 200, await state.sellers());
|
|
61
74
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-server.js","sourceRoot":"","sources":["../../src/ui-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-server.js","sourceRoot":"","sources":["../../src/ui-server.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ui-state.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import { ConfigManager } from "./config.js";
|
|
1
|
+
import { ConfigManager, type AdminProfile } from "./config.js";
|
|
2
2
|
import type { SellerRegistryDocument, SellerRegistryEntry } from "./bootstrap-registry.js";
|
|
3
3
|
export type RegistryStatus = "active" | "draining" | "offline" | "pending" | "unknown";
|
|
4
4
|
export type NodeStatus = RegistryStatus | "busy_capacity" | "auth_unknown";
|
|
5
5
|
export type UpstreamStatus = "healthy" | "degraded" | "unhealthy" | "unknown";
|
|
6
|
+
/**
|
|
7
|
+
* Step 13 v1.1: dataSource 标记一行 seller 在 fly.io apps list vs
|
|
8
|
+
* registry /registry/sellers 两个独立查询里的出现情况. UI 据此决定
|
|
9
|
+
* 标红 / 立即下线 / Apply 按钮. 详细见
|
|
10
|
+
* docs/processes/seller-fleet-data-sources.md.
|
|
11
|
+
*/
|
|
12
|
+
export type SellerDataSource = "fly" | "registry" | "both";
|
|
6
13
|
export interface SellerRow {
|
|
7
14
|
id: string;
|
|
8
15
|
name: string;
|
|
@@ -39,6 +46,37 @@ export interface SellerRow {
|
|
|
39
46
|
modelsCount?: number;
|
|
40
47
|
};
|
|
41
48
|
error?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Step 13 v1.1: 数据源标记. UI 据此决定:
|
|
51
|
+
* - "fly" → 灰点 + 「未发布」+ Apply 按钮 (走 vendor-bootstrap stage)
|
|
52
|
+
* - "registry" → 整行标红 + 立即下线按钮 (registry-only = 重大事故)
|
|
53
|
+
* - "both" → 正常色 + Activate / Drain 走 vendor path
|
|
54
|
+
*/
|
|
55
|
+
dataSource: SellerDataSource;
|
|
56
|
+
/**
|
|
57
|
+
* Step 13 v1.1: 标红告警 (registry-only). UI 整行用 .registry-alert
|
|
58
|
+
* class 标红, tooltip 提示事故 + 立即下线.
|
|
59
|
+
*/
|
|
60
|
+
registryAlert?: boolean;
|
|
61
|
+
/** Step 13 v1.1: 标红原因 (中文短句, UI tooltip 显示). */
|
|
62
|
+
alertReason?: string;
|
|
63
|
+
/** Step 13 v1.1: "未发布" 提示 (fly-only 行的 publishHint 按钮 caption). */
|
|
64
|
+
publishHint?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Step 13 v1.1: 立即下线按钮 caption (registry-only 行). 文案
|
|
67
|
+
* 必须含 "registry-only" 让用户知道这**不**删 fly app. 详见 spec.
|
|
68
|
+
*/
|
|
69
|
+
removeHint?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Step 13 v1.1: 关联的 fly app (raw, 来源 flyctl apps list --json).
|
|
72
|
+
* fly-only 行一定有值; both 行有值; registry-only 行 undefined.
|
|
73
|
+
*/
|
|
74
|
+
flyApp?: {
|
|
75
|
+
name: string;
|
|
76
|
+
status?: string;
|
|
77
|
+
owner?: string;
|
|
78
|
+
latestDeployAt?: string;
|
|
79
|
+
};
|
|
42
80
|
}
|
|
43
81
|
export interface SellerModelRow {
|
|
44
82
|
upstreamModel: string;
|
|
@@ -113,6 +151,17 @@ export interface AdminUiStateOptions {
|
|
|
113
151
|
token?: string;
|
|
114
152
|
fetchJson?: (url: string, init?: RequestInit) => Promise<unknown>;
|
|
115
153
|
balanceFetch?: typeof fetch;
|
|
154
|
+
/**
|
|
155
|
+
* Step 13 v1.1: flyctl apps list --json 替代. 默认调 seller.ts 的
|
|
156
|
+
* runFlyctlJson 真 spawn flyctl. 测试用 closure 注入 fake 数据.
|
|
157
|
+
* 返回的 SellerAppJson 形如 { name, status, owner, latestDeployAt }.
|
|
158
|
+
*/
|
|
159
|
+
flyApps?: () => Promise<import("./seller.js").SellerAppJson[]>;
|
|
160
|
+
}
|
|
161
|
+
interface ProfileMatch {
|
|
162
|
+
name?: string;
|
|
163
|
+
profile?: AdminProfile;
|
|
164
|
+
localProfile?: boolean;
|
|
116
165
|
}
|
|
117
166
|
export declare class AdminUiState {
|
|
118
167
|
private readonly configManager;
|
|
@@ -122,7 +171,20 @@ export declare class AdminUiState {
|
|
|
122
171
|
constructor(options: AdminUiStateOptions);
|
|
123
172
|
bootstrap(): Promise<BootstrapSummary>;
|
|
124
173
|
bootstrapConfig(): Promise<BootstrapConfigSummary>;
|
|
174
|
+
/**
|
|
175
|
+
* Step 13 v1.1: 双源 seller list.
|
|
176
|
+
* - flyApps: flyctl apps list --json (走 fly token)
|
|
177
|
+
* - fetchRegistry: GET <registry>/registry/sellers (走 vendor key)
|
|
178
|
+
* **不**做 union / dedupe / merge. 渲染时按 (fly ∩ registry / fly /
|
|
179
|
+
* registry) 标 dataSource, registry-only 行整行标红. 详见
|
|
180
|
+
* docs/processes/seller-fleet-data-sources.md.
|
|
181
|
+
*/
|
|
125
182
|
sellers(): Promise<SellerRow[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Step 13 v1.1: 拉 flyctl apps list --json. 默认走 seller.ts 真实
|
|
185
|
+
* flyctl spawn, 测试或受限环境可注入 options.flyApps closure.
|
|
186
|
+
*/
|
|
187
|
+
private fetchFlyApps;
|
|
126
188
|
sellerDetail(id: string): Promise<SellerDetail>;
|
|
127
189
|
rawSellerConfig(id: string): Promise<{
|
|
128
190
|
entry: SellerRegistryEntry;
|
|
@@ -130,11 +192,24 @@ export declare class AdminUiState {
|
|
|
130
192
|
config: any;
|
|
131
193
|
}>;
|
|
132
194
|
fetchRegistry(): Promise<SellerRegistryDocument>;
|
|
133
|
-
|
|
195
|
+
activeBootstrapProfile(): ProfileMatch;
|
|
134
196
|
private matchSellerProfile;
|
|
197
|
+
/**
|
|
198
|
+
* Step 13 v1.1: seller snapshot.
|
|
199
|
+
* - 双源数据已经定好 (dataSource 由调用方传入)
|
|
200
|
+
* - nodeStatus = fetch <seller.url>/manifest 200 → active, 否则 unknown
|
|
201
|
+
* (**不**用 registry entry.status 决定绿点)
|
|
202
|
+
* - registry-only 行 (dataSource="registry") → 标红 (registryAlert=true)
|
|
203
|
+
*/
|
|
135
204
|
private sellerSnapshot;
|
|
205
|
+
/**
|
|
206
|
+
* Step 13 v1.1: 探 `<entry.url>/manifest` 拿绿点. 200/204 → true;
|
|
207
|
+
* 任何非 2xx / 网络错 → false. 3s timeout 避免列表卡死.
|
|
208
|
+
*/
|
|
209
|
+
private probeManifest;
|
|
136
210
|
private fetchSellerAdminJson;
|
|
137
211
|
private balanceSnapshot;
|
|
138
212
|
}
|
|
139
213
|
export declare function maskApiKey(value: unknown): string | undefined;
|
|
214
|
+
export {};
|
|
140
215
|
//# sourceMappingURL=ui-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-state.d.ts","sourceRoot":"","sources":["../../src/ui-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"ui-state.d.ts","sourceRoot":"","sources":["../../src/ui-state.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ui-state.js
CHANGED
|
@@ -71,18 +71,144 @@ export class AdminUiState {
|
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Step 13 v1.1: 双源 seller list.
|
|
76
|
+
* - flyApps: flyctl apps list --json (走 fly token)
|
|
77
|
+
* - fetchRegistry: GET <registry>/registry/sellers (走 vendor key)
|
|
78
|
+
* **不**做 union / dedupe / merge. 渲染时按 (fly ∩ registry / fly /
|
|
79
|
+
* registry) 标 dataSource, registry-only 行整行标红. 详见
|
|
80
|
+
* docs/processes/seller-fleet-data-sources.md.
|
|
81
|
+
*/
|
|
74
82
|
async sellers() {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
const [flyApps, registryDoc] = await Promise.all([
|
|
84
|
+
this.fetchFlyApps().catch((err) => {
|
|
85
|
+
return { __error: err.message };
|
|
86
|
+
}),
|
|
87
|
+
this.fetchRegistry().catch((err) => {
|
|
88
|
+
return { __error: err.message, sellers: [] };
|
|
89
|
+
})
|
|
90
|
+
]);
|
|
91
|
+
// Step 13: 算两个索引.
|
|
92
|
+
// flyByName: app.name -> SellerAppJson (UI 用, 不会重复)
|
|
93
|
+
// registryByKey: entry.id / entry.app -> entry (UI 用, 不会重复)
|
|
94
|
+
// 行数 = max(fly 数量, registry 数量); 双源都有时合并到 1 行.
|
|
95
|
+
const flyByName = new Map();
|
|
96
|
+
if (Array.isArray(flyApps)) {
|
|
97
|
+
for (const app of flyApps) {
|
|
98
|
+
if (app?.name) {
|
|
99
|
+
flyByName.set(app.name, app);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const registryById = new Map();
|
|
104
|
+
const registryByApp = new Map();
|
|
105
|
+
for (const entry of registryDoc.sellers || []) {
|
|
106
|
+
if (entry.id)
|
|
107
|
+
registryById.set(entry.id, entry);
|
|
108
|
+
if (entry.app)
|
|
109
|
+
registryByApp.set(entry.app, entry);
|
|
110
|
+
}
|
|
111
|
+
// Step 13: 4 类行 (dataSource 决定):
|
|
112
|
+
// - fly ∩ registry: 同一行 (both)
|
|
113
|
+
// - fly only: dataSource=fly, 灰点 + "未发布" 提示
|
|
114
|
+
// - registry only: dataSource=registry, **整行标红** + 立即下线按钮
|
|
115
|
+
// - 都出现但 key 不 match (e.g. registry 没填 app 字段): 也当 both
|
|
116
|
+
// (按 entry.url host 兜底 match)
|
|
117
|
+
const rows = [];
|
|
118
|
+
const consumedFly = new Set();
|
|
119
|
+
const consumedRegistry = new Set();
|
|
120
|
+
// Phase 1: registry first (因为有 id + url + 详细 metadata)
|
|
121
|
+
for (const entry of registryDoc.sellers || []) {
|
|
122
|
+
const flyMatch = entry.app ? flyByName.get(entry.app) : undefined;
|
|
123
|
+
const dataSource = flyMatch ? "both" : "registry";
|
|
124
|
+
if (flyMatch) {
|
|
125
|
+
consumedFly.add(flyMatch.name);
|
|
126
|
+
}
|
|
127
|
+
consumedRegistry.add(entry.id);
|
|
128
|
+
const snapshot = await this.sellerSnapshot(entry, flyMatch, dataSource);
|
|
129
|
+
rows.push(snapshot.row);
|
|
130
|
+
}
|
|
131
|
+
// Phase 2: fly-only apps (registry 没有)
|
|
132
|
+
for (const app of flyByName.values()) {
|
|
133
|
+
if (consumedFly.has(app.name))
|
|
134
|
+
continue;
|
|
135
|
+
const stubEntry = {
|
|
136
|
+
id: app.name,
|
|
137
|
+
name: app.name,
|
|
138
|
+
app: app.name,
|
|
139
|
+
url: `https://${app.name}.fly.dev`,
|
|
140
|
+
supportedProtocols: [],
|
|
141
|
+
paymentMethods: [],
|
|
142
|
+
models: []
|
|
143
|
+
};
|
|
144
|
+
const snapshot = await this.sellerSnapshot(stubEntry, app, "fly");
|
|
145
|
+
rows.push(snapshot.row);
|
|
146
|
+
}
|
|
147
|
+
return rows;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Step 13 v1.1: 拉 flyctl apps list --json. 默认走 seller.ts 真实
|
|
151
|
+
* flyctl spawn, 测试或受限环境可注入 options.flyApps closure.
|
|
152
|
+
*/
|
|
153
|
+
async fetchFlyApps() {
|
|
154
|
+
if (this.options.flyApps) {
|
|
155
|
+
return await this.options.flyApps();
|
|
156
|
+
}
|
|
157
|
+
// 默认路径: 走 SellerCommandRunner.ls(true) 真 spawn flyctl.
|
|
158
|
+
// 避免在 ui-state.ts 里 import 整个 seller module 引入循环依赖,
|
|
159
|
+
// 走 dynamic import; 失败 fallback 返空数组 (UI 不会崩, 只是
|
|
160
|
+
// 标 dataSource="registry" + 标红).
|
|
161
|
+
try {
|
|
162
|
+
const mod = await import("./seller.js");
|
|
163
|
+
const cfg = this.configManager.load();
|
|
164
|
+
const profile = cfg.profiles[this.options.profile || "default"];
|
|
165
|
+
const env = {
|
|
166
|
+
...process.env,
|
|
167
|
+
...(profile?.url ? { TB_REGISTRY_URL: profile.url } : {}),
|
|
168
|
+
...(profile?.token ? { TB_REGISTRY_TOKEN: profile.token } : {})
|
|
169
|
+
};
|
|
170
|
+
const runner = new mod.SellerCommandRunner(this.configManager);
|
|
171
|
+
const result = await runner.ls(true);
|
|
172
|
+
if (result && typeof result === "object" && "apps" in result) {
|
|
173
|
+
return result.apps;
|
|
174
|
+
}
|
|
175
|
+
return [];
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
78
180
|
}
|
|
79
181
|
async sellerDetail(id) {
|
|
182
|
+
// Step 13 v1.1: detail 页也走双源. 先看 entry 在不在 registry,
|
|
183
|
+
// 不在则查 fly list (registry-only 行, 标红 detail).
|
|
80
184
|
const document = await this.fetchRegistry();
|
|
81
|
-
|
|
185
|
+
let entry = document.sellers.find((seller) => seller.id === id || seller.name === id || seller.app === id);
|
|
186
|
+
let dataSource = "registry";
|
|
187
|
+
let flyApp;
|
|
82
188
|
if (!entry) {
|
|
83
|
-
|
|
189
|
+
const flyApps = await this.fetchFlyApps().catch(() => []);
|
|
190
|
+
const flyMatch = flyApps.find((app) => app.name === id || app.name === `tb-seller-${id}` || app.name === id.replace(/^tb-seller-/, ""));
|
|
191
|
+
if (!flyMatch) {
|
|
192
|
+
throw new Error(`seller \`${id}\` not found in fly.io apps or bootstrap registry`);
|
|
193
|
+
}
|
|
194
|
+
entry = {
|
|
195
|
+
id: flyMatch.name,
|
|
196
|
+
name: flyMatch.name,
|
|
197
|
+
app: flyMatch.name,
|
|
198
|
+
url: `https://${flyMatch.name}.fly.dev`,
|
|
199
|
+
supportedProtocols: [],
|
|
200
|
+
paymentMethods: [],
|
|
201
|
+
models: []
|
|
202
|
+
};
|
|
203
|
+
flyApp = flyMatch;
|
|
204
|
+
dataSource = "fly";
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const flyApps = await this.fetchFlyApps().catch(() => []);
|
|
208
|
+
flyApp = entry.app ? flyApps.find((app) => app.name === entry.app) : undefined;
|
|
209
|
+
dataSource = flyApp ? "both" : "registry";
|
|
84
210
|
}
|
|
85
|
-
const snapshot = await this.sellerSnapshot(entry);
|
|
211
|
+
const snapshot = await this.sellerSnapshot(entry, flyApp, dataSource);
|
|
86
212
|
const config = snapshot.config?.config || snapshot.config || {};
|
|
87
213
|
const upstreams = snapshot.upstreams || {};
|
|
88
214
|
return {
|
|
@@ -185,19 +311,82 @@ export class AdminUiState {
|
|
|
185
311
|
}
|
|
186
312
|
return {};
|
|
187
313
|
}
|
|
188
|
-
|
|
314
|
+
/**
|
|
315
|
+
* Step 13 v1.1: seller snapshot.
|
|
316
|
+
* - 双源数据已经定好 (dataSource 由调用方传入)
|
|
317
|
+
* - nodeStatus = fetch <seller.url>/manifest 200 → active, 否则 unknown
|
|
318
|
+
* (**不**用 registry entry.status 决定绿点)
|
|
319
|
+
* - registry-only 行 (dataSource="registry") → 标红 (registryAlert=true)
|
|
320
|
+
*/
|
|
321
|
+
async sellerSnapshot(entry, flyApp, dataSource) {
|
|
189
322
|
const match = this.matchSellerProfile(entry);
|
|
190
|
-
const baseRow = baseSellerRow(entry, match.name);
|
|
191
|
-
|
|
323
|
+
const baseRow = baseSellerRow(entry, match.name, dataSource, flyApp);
|
|
324
|
+
// Step 13: 立即下线 / Apply 按钮 hint 文案
|
|
325
|
+
if (dataSource === "registry") {
|
|
326
|
+
baseRow.registryAlert = true;
|
|
327
|
+
baseRow.alertReason = "registry 收录了但 fly app 失踪 — 严重事故, 立即下线";
|
|
328
|
+
baseRow.removeHint = "立即下线 (registry-only)";
|
|
329
|
+
}
|
|
330
|
+
else if (dataSource === "fly") {
|
|
331
|
+
baseRow.publishHint = "未发布 — 可申请发布 (走 vendor-bootstrap stage)";
|
|
332
|
+
}
|
|
333
|
+
if (dataSource === "fly") {
|
|
334
|
+
// fly-only 行没 registry entry, 也可能没 profile. 仍然跑 manifest
|
|
335
|
+
// probe (entry.url 来自 flyApp 推断 https://<name>.fly.dev), 但
|
|
336
|
+
// 没 profile 时只算 "unknown" (灰点) — 因为 vendor 没法管控一个
|
|
337
|
+
// 还没发布的 instance, 不该 throw auth_unknown 把 UI 卡死.
|
|
338
|
+
const manifestOk = await this.probeManifest(entry.url);
|
|
192
339
|
return {
|
|
193
340
|
row: {
|
|
194
341
|
...baseRow,
|
|
195
|
-
nodeStatus: "
|
|
342
|
+
nodeStatus: manifestOk ? "active" : "unknown",
|
|
343
|
+
error: manifestOk ? undefined : "未发布到 registry, /manifest 探测失败 (不视为事故)"
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
if (dataSource === "both" && !match.profile) {
|
|
348
|
+
// both 但 vendor profile 缺 — 还是 unknown (灰点), 1.0.31 老行为
|
|
349
|
+
// 会落 auth_unknown, 现在用 unknown 让 UI 不会显得像 "鉴权失败".
|
|
350
|
+
return {
|
|
351
|
+
row: {
|
|
352
|
+
...baseRow,
|
|
353
|
+
nodeStatus: "unknown",
|
|
196
354
|
error: "No matching local admin profile"
|
|
197
355
|
}
|
|
198
356
|
};
|
|
199
357
|
}
|
|
358
|
+
// Step 13: 绿点 = fetch <entry.url>/manifest 200 OK
|
|
359
|
+
// (registry-only 行 skip 这个 fetch, 因为 entry.url 可能指向死链)
|
|
360
|
+
if (dataSource === "registry") {
|
|
361
|
+
return {
|
|
362
|
+
row: {
|
|
363
|
+
...baseRow,
|
|
364
|
+
nodeStatus: "unknown"
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
}
|
|
200
368
|
try {
|
|
369
|
+
// 绿点路径: 优先 <entry.url>/manifest (无 auth 公共 endpoint).
|
|
370
|
+
// fallback: 走 vendor token 调 /operator/status (老 1.0.31 行为).
|
|
371
|
+
const manifestOk = await this.probeManifest(entry.url);
|
|
372
|
+
if (manifestOk) {
|
|
373
|
+
return {
|
|
374
|
+
row: {
|
|
375
|
+
...baseRow,
|
|
376
|
+
nodeStatus: "active"
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
// /manifest 失败: 试 /operator/status (老路径, 需要 vendor profile)
|
|
381
|
+
if (!match.profile) {
|
|
382
|
+
return {
|
|
383
|
+
row: {
|
|
384
|
+
...baseRow,
|
|
385
|
+
nodeStatus: "auth_unknown",
|
|
386
|
+
error: "No matching local admin profile (post /manifest fallback)"
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
}
|
|
201
390
|
const [status, service, upstreams, config] = await Promise.all([
|
|
202
391
|
this.fetchSellerAdminJson(match.profile, "/operator/status").catch((err) => ({ error: err.message })),
|
|
203
392
|
this.fetchSellerAdminJson(match.profile, "/operator/admin/service").catch((err) => ({ error: err.message })),
|
|
@@ -225,6 +414,27 @@ export class AdminUiState {
|
|
|
225
414
|
};
|
|
226
415
|
}
|
|
227
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Step 13 v1.1: 探 `<entry.url>/manifest` 拿绿点. 200/204 → true;
|
|
419
|
+
* 任何非 2xx / 网络错 → false. 3s timeout 避免列表卡死.
|
|
420
|
+
*/
|
|
421
|
+
async probeManifest(url) {
|
|
422
|
+
try {
|
|
423
|
+
const controller = new AbortController();
|
|
424
|
+
const timer = setTimeout(() => controller.abort(), 3000);
|
|
425
|
+
const target = url.replace(/\/+$/, "") + "/manifest";
|
|
426
|
+
const res = await fetch(target, {
|
|
427
|
+
method: "GET",
|
|
428
|
+
signal: controller.signal,
|
|
429
|
+
headers: { "Content-Type": "application/json" }
|
|
430
|
+
});
|
|
431
|
+
clearTimeout(timer);
|
|
432
|
+
return res.status >= 200 && res.status < 300;
|
|
433
|
+
}
|
|
434
|
+
catch {
|
|
435
|
+
return false;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
228
438
|
async fetchSellerAdminJson(profile, pathName) {
|
|
229
439
|
return this.fetchJson(`${trimSlash(profile.url)}${pathName}`, {
|
|
230
440
|
headers: {
|
|
@@ -253,7 +463,16 @@ export class AdminUiState {
|
|
|
253
463
|
}
|
|
254
464
|
}
|
|
255
465
|
async function defaultFetchJson(url, init) {
|
|
256
|
-
|
|
466
|
+
// Step 13 v1.1: 3s timeout 避免坏 host / DNS 卡死整个 admin web.
|
|
467
|
+
const controller = new AbortController();
|
|
468
|
+
const timer = setTimeout(() => controller.abort(), 3000);
|
|
469
|
+
let response;
|
|
470
|
+
try {
|
|
471
|
+
response = await fetch(url, { ...init, signal: controller.signal });
|
|
472
|
+
}
|
|
473
|
+
finally {
|
|
474
|
+
clearTimeout(timer);
|
|
475
|
+
}
|
|
257
476
|
if (!response.ok) {
|
|
258
477
|
const text = await response.text();
|
|
259
478
|
throw new Error(`HTTP Error ${response.status}: ${text || response.statusText}`);
|
|
@@ -261,7 +480,7 @@ async function defaultFetchJson(url, init) {
|
|
|
261
480
|
const text = await response.text();
|
|
262
481
|
return text ? JSON.parse(text) : {};
|
|
263
482
|
}
|
|
264
|
-
function baseSellerRow(entry, profile) {
|
|
483
|
+
function baseSellerRow(entry, profile, dataSource = "registry", flyApp) {
|
|
265
484
|
return {
|
|
266
485
|
id: entry.id,
|
|
267
486
|
name: entry.id,
|
|
@@ -270,7 +489,9 @@ function baseSellerRow(entry, profile) {
|
|
|
270
489
|
profile: profile || entry.profile,
|
|
271
490
|
url: entry.url,
|
|
272
491
|
registryStatus: registryStatus(entry.status),
|
|
273
|
-
|
|
492
|
+
// Step 13 v1.1: 绿点 base 改 unknown, 真正值由 sellerSnapshot
|
|
493
|
+
// 拿 /manifest 200 决定. 老逻辑直接复用 entry.status 是错的.
|
|
494
|
+
nodeStatus: "unknown",
|
|
274
495
|
region: entry.region,
|
|
275
496
|
upstreamDomain: hostName(entry.url) || "unknown",
|
|
276
497
|
upstreamStatus: "unknown",
|
|
@@ -278,7 +499,14 @@ function baseSellerRow(entry, profile) {
|
|
|
278
499
|
specs: {
|
|
279
500
|
region: entry.region,
|
|
280
501
|
modelsCount: entry.modelsCount ?? entry.models?.length ?? entry.sampleModels?.length
|
|
281
|
-
}
|
|
502
|
+
},
|
|
503
|
+
dataSource,
|
|
504
|
+
flyApp: flyApp ? {
|
|
505
|
+
name: flyApp.name,
|
|
506
|
+
status: flyApp.status,
|
|
507
|
+
owner: flyApp.owner,
|
|
508
|
+
latestDeployAt: flyApp.latestDeployAt
|
|
509
|
+
} : undefined
|
|
282
510
|
};
|
|
283
511
|
}
|
|
284
512
|
function mergeSellerRow(base, entry, status, service, upstreams, config, balance) {
|