@yuku123/z-team-component 0.2.80 → 0.2.81

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.
Files changed (51) hide show
  1. package/dist/ChangeLogView-_bRZ55Yi.js +542 -0
  2. package/dist/ComponentDoc-BWciPDcn.js +3998 -0
  3. package/dist/InvitationManagementPage-X9t4igh7.js +495 -0
  4. package/dist/OnboardingPage-D2sVawTW.js +393 -0
  5. package/dist/ScheduledTasks-CdCX5FlH.js +9407 -0
  6. package/dist/SystemShell-Bd0UpmAs.js +689 -0
  7. package/dist/_commonjsHelpers-B52_cu2H.js +26 -0
  8. package/dist/api-BKjWEmUY.js +20 -0
  9. package/dist/api-CIhVblfa.js +2155 -0
  10. package/dist/browser-jb_PFvU3.js +1538 -0
  11. package/dist/createWorkspaceWsHandler-BWP5S5X3.js +12951 -0
  12. package/dist/ctc-sso-DtJHC-2M.js +117 -0
  13. package/dist/echarts-B1OU1xr4.js +16 -0
  14. package/dist/history-BlrA1eaW.js +41 -0
  15. package/dist/index-B_LJRFsK.js +339 -0
  16. package/dist/index-BgIheStI.js +133 -0
  17. package/dist/index-Bn6u-XqL.js +242 -0
  18. package/dist/index-BohoJQPr.js +7631 -0
  19. package/dist/index-BydWNuk5.js +1229 -0
  20. package/dist/index-C815hPWS.js +430 -0
  21. package/dist/index-CPXlkVYF.js +118 -0
  22. package/dist/index-CUVdeb8y.js +638 -0
  23. package/dist/index-CdsD23Cm.js +914 -0
  24. package/dist/index-CijskN6t.js +316 -0
  25. package/dist/index-CkhoaNnF.js +137 -0
  26. package/dist/index-Cvx6rrxD.js +956 -0
  27. package/dist/index-Cwr5Slv1.js +480 -0
  28. package/dist/index-CxFAICql.js +42050 -0
  29. package/dist/index-D6i_zovv.js +574 -0
  30. package/dist/index-D8aigFpH.js +9583 -0
  31. package/dist/index-DK70mOTz.js +143 -0
  32. package/dist/index-DSoOHdTf.js +178 -0
  33. package/dist/index-DT80Pwa_.js +5893 -0
  34. package/dist/index-DWsfQMp8.js +208 -0
  35. package/dist/index-DZoJnRKu.js +112 -0
  36. package/dist/index-DhDdFRHC.js +279 -0
  37. package/dist/index-DimSOV0E.js +1143 -0
  38. package/dist/index-Dm3wmB0K.js +435 -0
  39. package/dist/index-DsP2ysav.js +93 -0
  40. package/dist/index-Dwm0j8qF.js +2936 -0
  41. package/dist/index-DzS6-D3M.js +1640 -0
  42. package/dist/index-RVaaSElI.js +2700 -0
  43. package/dist/index-cdB5K3gx.js +814 -0
  44. package/dist/index-nU-V276i.js +170 -0
  45. package/dist/index-uF04Ucsi.js +8 -0
  46. package/dist/index.js +10 -0
  47. package/dist/index.module-CAa-2T7m.js +72 -0
  48. package/dist/index.module-UI0iz8K0.js +42 -0
  49. package/dist/{menuPermission-D9NGpBZP.js → menuPermission-Uzk46Gto.js} +1 -1
  50. package/dist/pages.js +1 -1
  51. package/package.json +1 -1
@@ -0,0 +1,2155 @@
1
+ import { message as K } from "antd";
2
+ function m(e) {
3
+ return e == null || e === "" ? "" : typeof e == "string" ? e : String(e);
4
+ }
5
+ function Qe(e) {
6
+ const n = m(e);
7
+ return n === "" ? null : n;
8
+ }
9
+ function Ge(e, n) {
10
+ return m(e) === m(n);
11
+ }
12
+ function Ze(e) {
13
+ const n = m(e);
14
+ return n !== "" && n.startsWith("-");
15
+ }
16
+ function le(e) {
17
+ const n = m(e);
18
+ return n !== "" && pe(n, "0") > 0;
19
+ }
20
+ function pe(e, n) {
21
+ const t = m(e), s = m(n);
22
+ if (t === s)
23
+ return 0;
24
+ if (t === "")
25
+ return 1;
26
+ if (s === "")
27
+ return -1;
28
+ try {
29
+ const o = BigInt(t), d = BigInt(s);
30
+ return o < d ? -1 : 1;
31
+ } catch {
32
+ return t < s ? -1 : 1;
33
+ }
34
+ }
35
+ const fe = 101012001;
36
+ function me() {
37
+ const e = typeof window < "u" && window.ZTEAM_SSO_BASE || "";
38
+ return e ? e.replace(/\/+$/, "") : typeof window > "u" ? "http://localhost" : window.location.origin;
39
+ }
40
+ function ye() {
41
+ const e = new URL(window.location.href);
42
+ e.searchParams.has("_from_login") || e.searchParams.set("_from_login", "1");
43
+ const n = `${me()}/login?redirect=${encodeURIComponent(
44
+ e.toString()
45
+ )}`;
46
+ window.location.href = n;
47
+ }
48
+ const g = { credentials: "include" };
49
+ function L(e, n = "error") {
50
+ n === "warning" ? K.warning(e) : K.error(e);
51
+ }
52
+ typeof window < "u" && window.addEventListener(
53
+ "unhandledrejection",
54
+ (e) => {
55
+ const n = e.reason;
56
+ n && typeof n == "object" && n._apiUserError && e.preventDefault();
57
+ }
58
+ );
59
+ let V = !1;
60
+ const Q = "登录已失效,请重新登录";
61
+ function $e(e) {
62
+ if (!e) return !1;
63
+ if (Number(e.code) === fe) return !0;
64
+ const n = typeof e.message == "string" ? e.message : "";
65
+ return /登录(?:已)?(?:失效|过期)|重新登录|未登录/.test(n);
66
+ }
67
+ function G() {
68
+ if (!V) {
69
+ V = !0;
70
+ try {
71
+ Ee();
72
+ } catch {
73
+ }
74
+ try {
75
+ localStorage.removeItem("ft_token"), localStorage.removeItem("USER_INFO"), delete window.USER_INFO;
76
+ } catch {
77
+ }
78
+ ye();
79
+ }
80
+ throw {
81
+ _apiUserError: !0,
82
+ userMessage: Q,
83
+ message: Q
84
+ };
85
+ }
86
+ function Z(e, n) {
87
+ return e.status === 401 ? "登录已失效,请重新登录" : e.status === 403 ? "没有权限访问该资源" : e.status === 404 ? "接口不存在,请确认后端已启动且路径为 /z-team" : e.status >= 500 ? "服务暂时不可用,请稍后重试" : (e.status >= 400, n);
88
+ }
89
+ const ne = "/z-team", he = typeof window < "u" && /(zteam[-.]ft\.(zteam\.local|zteam\.local)|team\.zteam\.local)/i.test(
90
+ window.location.hostname
91
+ ), x = he, ge = `${x ? "/kapi" : ""}${ne}/api`, Se = `${x ? "/kapi" : ""}${ne}`, we = `${Se}/v1/scenario-instances`, Te = window.ENV_TYPE || window.envType || "", w = ge, Xe = `${x ? "/kapi" : ""}/z-team-evolution/api`, Ye = `${x ? "/kapi" : ""}/z-team-bench/api`, Ce = Te || "local";
92
+ async function T(e, n) {
93
+ try {
94
+ const t = {
95
+ // ⚠ 显式 Accept(2026-10-23, TASK-20261023-001):后端 SsoInterceptor 只看
96
+ // Accept / Content-Type 是否含 application/json ⇒ 裸 fetch 不带 Accept 会落
97
+ // 302 分支(跳登录页 ⇒ 200 + text/html ⇒ res.json() 抛错)。
98
+ // init?.headers 在最后 ⇒ 调用方仍可用自己的 Accept 覆盖(如 SSE 的 text/event-stream)。
99
+ Accept: "application/json",
100
+ "project-env": Ce,
101
+ ...n == null ? void 0 : n.headers
102
+ };
103
+ return await fetch(e, { ...g, ...n, headers: t });
104
+ } catch {
105
+ const t = "无法连接服务器,请确认 Java 服务已启动(如 127.0.0.1:8080)且前端代理 /z-team 已配置";
106
+ throw L(t), { _apiUserError: !0, userMessage: t, message: t };
107
+ }
108
+ }
109
+ async function C(e, n) {
110
+ e.status === 401 && G();
111
+ const t = await e.text().catch(() => "");
112
+ let s = {};
113
+ if (t)
114
+ try {
115
+ s = JSON.parse(t);
116
+ } catch {
117
+ if (!e.ok) {
118
+ const o = Z(e, n);
119
+ throw L(
120
+ e.status >= 500 ? o : `${o}(HTTP ${e.status},响应非 JSON)`
121
+ ), {
122
+ _apiUserError: !0,
123
+ userMessage: o,
124
+ message: o
125
+ };
126
+ }
127
+ return t;
128
+ }
129
+ if ($e(s) && G(), typeof s.success == "boolean") {
130
+ if (s.success)
131
+ return s.data !== void 0 ? s.data : !0;
132
+ const o = s.message || // z-team 另有 7 个 admin controller 挂 bench Result({code,msg,data,success})
133
+ s.msg || s.detail || n;
134
+ throw L(o), {
135
+ _apiUserError: !0,
136
+ userMessage: o,
137
+ message: o
138
+ };
139
+ }
140
+ if (!e.ok) {
141
+ const o = s.detail || s.message || Z(e, n);
142
+ throw L(o), {
143
+ _apiUserError: !0,
144
+ userMessage: o,
145
+ message: o
146
+ };
147
+ }
148
+ return s;
149
+ }
150
+ const Ie = /_+([a-z0-9])/gi;
151
+ function _e(e) {
152
+ return e.replace(Ie, (n, t) => t.toUpperCase());
153
+ }
154
+ function B(e) {
155
+ if (Array.isArray(e)) return e.map((n) => B(n));
156
+ if (e && typeof e == "object" && !(e instanceof Date)) {
157
+ const n = {};
158
+ for (const [t, s] of Object.entries(e))
159
+ n[_e(t)] = B(s);
160
+ return n;
161
+ }
162
+ return e;
163
+ }
164
+ async function en(e, n) {
165
+ return B(await C(e, n));
166
+ }
167
+ async function be() {
168
+ try {
169
+ const e = await T(`${w}/sso/attach-ctc-token`, {
170
+ ...g,
171
+ method: "POST"
172
+ });
173
+ if (!e.ok)
174
+ return !1;
175
+ const n = await e.json().catch(() => null);
176
+ return !!(n && n.success);
177
+ } catch {
178
+ return !1;
179
+ }
180
+ }
181
+ async function nn(e, n) {
182
+ const t = n != null && n.trim() !== "" ? { result: n } : void 0, s = await T(`${w}/tasks/${e}/complete`, {
183
+ ...g,
184
+ method: "POST",
185
+ headers: { "Content-Type": "application/json" },
186
+ body: t ? JSON.stringify(t) : void 0
187
+ });
188
+ return C(s, "完成任务失败");
189
+ }
190
+ async function tn(e, n) {
191
+ const t = await T(`${w}/tasks/${e}/suspend`, {
192
+ ...g,
193
+ method: "POST",
194
+ headers: { "Content-Type": "application/json" },
195
+ body: void 0
196
+ });
197
+ return C(t, "挂起任务失败");
198
+ }
199
+ async function sn(e, n) {
200
+ const t = await T(`${w}/tasks/${e}/cancel`, {
201
+ ...g,
202
+ method: "POST",
203
+ headers: { "Content-Type": "application/json" },
204
+ body: void 0
205
+ });
206
+ return C(t, "取消任务失败");
207
+ }
208
+ async function on(e) {
209
+ const n = await T(`${w}/tasks/${e}/continue`, {
210
+ ...g,
211
+ method: "POST",
212
+ headers: { "Content-Type": "application/json" }
213
+ });
214
+ return C(n, "继续执行失败");
215
+ }
216
+ async function an(e) {
217
+ const n = await T(`${w}/tasks/${e}/reset`, {
218
+ ...g,
219
+ method: "POST",
220
+ headers: { "Content-Type": "application/json" }
221
+ });
222
+ return C(n, "重置执行失败");
223
+ }
224
+ async function rn(e) {
225
+ const n = await T(`${w}/tasks/${e}`, g);
226
+ return C(n, "加载任务失败");
227
+ }
228
+ const cn = "http://127.0.0.1/kapi/z-webide/inspect";
229
+ let p = null, k = [], R = [], A = 0, X = "", D = null, P = 0, h = null, te = "disconnected";
230
+ function M(e) {
231
+ te = e, R.forEach((n) => n(e));
232
+ }
233
+ function Y() {
234
+ return A !== 0 && A !== "";
235
+ }
236
+ function Ae(e, n = "") {
237
+ const t = window.location.protocol === "https:" ? "wss:" : "ws:", s = window.location.host, o = n ? `?token=${encodeURIComponent(n)}` : "";
238
+ return `${t}//${s}${we}/${e}/ws${o}`;
239
+ }
240
+ function dn(e) {
241
+ return R.push(e), e(te), () => {
242
+ R = R.filter((n) => n !== e);
243
+ };
244
+ }
245
+ function Ue(e, n = "", t) {
246
+ if (p && (p.readyState === WebSocket.CONNECTING || p.readyState === WebSocket.OPEN) && A === e)
247
+ return;
248
+ p && (p.onclose = null, p.close(), p = null), h != null && (clearTimeout(h), h = null);
249
+ const s = Ae(e, n);
250
+ A = e, X = n, t && (D = t), M("connecting"), p = new WebSocket(s), p.onopen = () => {
251
+ P = 0, M("connected"), console.log("[WS] connected");
252
+ }, p.onmessage = (o) => {
253
+ try {
254
+ const d = JSON.parse(o.data);
255
+ console.log("[WS recv]", d.type, d), k.forEach((u) => u(d));
256
+ } catch {
257
+ }
258
+ }, p.onerror = () => {
259
+ console.warn("[WS] connection error:", s);
260
+ }, p.onclose = (o) => {
261
+ const d = o.wasClean;
262
+ if (p = null, M("disconnected"), !Y()) return;
263
+ P += 1;
264
+ const u = Math.min(3e3 * P, 3e4);
265
+ console.warn(
266
+ `[WS] closed (clean=${d}), reconnect #${P} in ${u}ms`
267
+ ), h = setTimeout(() => {
268
+ h = null, Y() && (Ue(A, X), D == null || D());
269
+ }, u);
270
+ };
271
+ }
272
+ function un(e) {
273
+ return k.push(e), () => {
274
+ k = k.filter((n) => n !== e);
275
+ };
276
+ }
277
+ async function ln(e) {
278
+ await be().catch(() => {
279
+ }), p && p.readyState === WebSocket.OPEN && p.send(JSON.stringify(e));
280
+ }
281
+ function Ee() {
282
+ A = 0, h != null && (clearTimeout(h), h = null), p && (p.onclose = null, p.close(), p = null), P = 0, M("disconnected"), k = [], R = [];
283
+ }
284
+ const c = {
285
+ credentials: "include",
286
+ // 强制标识为 XHR/fetch API 请求,使后端 SsoInterceptor 走 JSON 401 分支
287
+ // 而不是返回 302 跳到 SSO 登录页(避免 fetch follow redirect 后拿到 SPA HTML 导致解析失败)
288
+ headers: { Accept: "application/json" }
289
+ }, v = "zindexer_admin_token";
290
+ function pn() {
291
+ return typeof localStorage > "u" ? "" : localStorage.getItem(v) || "";
292
+ }
293
+ function fn(e) {
294
+ if (typeof localStorage > "u") return;
295
+ const n = (e || "").trim();
296
+ if (!n) {
297
+ localStorage.removeItem(v);
298
+ return;
299
+ }
300
+ localStorage.setItem(v, n);
301
+ }
302
+ function mn() {
303
+ typeof localStorage > "u" || localStorage.removeItem(v);
304
+ }
305
+ function I(e = {}) {
306
+ const n = (typeof localStorage < "u" ? localStorage.getItem(v) : "") || "";
307
+ return {
308
+ ...c,
309
+ ...e,
310
+ headers: {
311
+ ...c.headers || {},
312
+ ...e.headers || {},
313
+ ...n ? { "X-Indexer-Token": n } : {}
314
+ }
315
+ };
316
+ }
317
+ class Oe extends Error {
318
+ constructor(n) {
319
+ super(n), this._apiUserError = !0, this.name = "ApiUserError", this.userMessage = n;
320
+ }
321
+ }
322
+ function yn(e) {
323
+ return e instanceof Oe ? !0 : !!(e && typeof e == "object" && e._apiUserError);
324
+ }
325
+ function S(e, n = "error") {
326
+ console[n === "warning" ? "warn" : "error"]("[api]", e);
327
+ }
328
+ typeof window < "u" && window.addEventListener(
329
+ "unhandledrejection",
330
+ (e) => {
331
+ const n = e.reason;
332
+ n && typeof n == "object" && n._apiUserError && e.preventDefault();
333
+ }
334
+ );
335
+ function ee(e, n) {
336
+ return e.status === 401 ? "登录已失效,请重新登录" : e.status === 403 ? "没有权限访问该资源" : e.status === 404 ? "接口不存在,请确认后端已启动且路径为 /z-team" : e.status >= 500 ? "服务暂时不可用,请稍后重试" : (e.status >= 400, n);
337
+ }
338
+ const Pe = "/z-team", ke = typeof window < "u" && window.ZTEAM_USE_KAPI === !0, se = ke, oe = `${se ? "/kapi" : ""}${Pe}/api`, Re = window.ENV_TYPE || window.envType || "", r = oe, ve = `${se ? "/kapi" : ""}/z-team-evolution/api`;
339
+ async function je(e) {
340
+ const n = new FormData();
341
+ n.append("file", e);
342
+ const t = await i(`${r}/common/upload-image`, {
343
+ method: "POST",
344
+ body: n
345
+ }), s = await a(t, "上传图片失败"), o = typeof (s == null ? void 0 : s.url) == "string" ? s.url : "";
346
+ if (!o) {
347
+ const d = "上传图片失败:响应缺少图片地址";
348
+ throw S(d), { _apiUserError: !0, userMessage: d, message: d };
349
+ }
350
+ return o;
351
+ }
352
+ async function $n(e) {
353
+ return Promise.all(e.map((n) => je(n)));
354
+ }
355
+ const Ne = Re || "local";
356
+ async function i(e, n) {
357
+ try {
358
+ const t = {
359
+ // ⚠ 显式 Accept(2026-10-23, TASK-20261023-001):后端 SsoInterceptor 只看
360
+ // Accept / Content-Type 是否含 application/json ⇒ 裸 fetch 不带 Accept 会落
361
+ // 302 分支(跳登录页 ⇒ 200 + text/html ⇒ res.json() 抛错)。
362
+ // init?.headers 在最后 ⇒ 调用方仍可用自己的 Accept 覆盖(如 SSE 的 text/event-stream)。
363
+ Accept: "application/json",
364
+ ...c.headers,
365
+ "project-env": Ne,
366
+ ...n == null ? void 0 : n.headers
367
+ };
368
+ return await fetch(e, { ...c, ...n, headers: t });
369
+ } catch {
370
+ const t = "无法连接服务器,请确认 Java 服务已启动(如 127.0.0.1:8080)且前端代理 /z-team 已配置";
371
+ throw S(t), { _apiUserError: !0, userMessage: t, message: t };
372
+ }
373
+ }
374
+ function ae(e) {
375
+ const n = e.id ?? e.staff_id ?? e.staffId ?? e.user_id ?? e.userId;
376
+ return {
377
+ // FE-PRECISION-FIX: 雪花 ID 保持字符串,禁止走 Number()
378
+ id: m(n),
379
+ username: String(e.username ?? ""),
380
+ display_name: String(e.display_name ?? e.displayName ?? ""),
381
+ avatar: String(e.avatar ?? "👤"),
382
+ created_at: String(e.created_at ?? e.createdAt ?? ""),
383
+ is_global_admin: !!(e.is_global_admin ?? e.globalAdmin ?? e.global_admin ?? !1)
384
+ };
385
+ }
386
+ async function a(e, n) {
387
+ const t = await e.text().catch(() => "");
388
+ let s = {};
389
+ if (t)
390
+ try {
391
+ s = JSON.parse(t);
392
+ } catch {
393
+ if (!e.ok) {
394
+ const u = ee(e, n);
395
+ throw S(
396
+ e.status >= 500 ? u : `${u}(HTTP ${e.status},响应非 JSON)`
397
+ ), {
398
+ _apiUserError: !0,
399
+ userMessage: u,
400
+ message: u
401
+ };
402
+ }
403
+ return t;
404
+ }
405
+ const o = s.status_code ?? s.statusCode, d = s.success === !0 || typeof o == "number" && o >= 200 && o < 300;
406
+ if (typeof s.success == "boolean" || typeof o == "number") {
407
+ if (d)
408
+ return s.data !== void 0 ? s.data : !0;
409
+ const u = s.message || s.msg || s.detail || n;
410
+ throw S(u), {
411
+ _apiUserError: !0,
412
+ userMessage: u,
413
+ message: u
414
+ };
415
+ }
416
+ if (!e.ok) {
417
+ const u = s.detail || s.message || ee(e, n);
418
+ throw S(u), {
419
+ _apiUserError: !0,
420
+ userMessage: u,
421
+ message: u
422
+ };
423
+ }
424
+ return s;
425
+ }
426
+ async function hn(e, n) {
427
+ const t = await fetch("/kapi/z-ctc/api/ctc/authn/login", {
428
+ ...c,
429
+ method: "POST",
430
+ headers: { Accept: "application/json", "Content-Type": "application/json" },
431
+ credentials: "include",
432
+ body: JSON.stringify({ identifier: e, password: n })
433
+ }), s = await a(t, "登录失败"), o = (s == null ? void 0 : s.userInfo) ?? (s == null ? void 0 : s.user_info) ?? (s == null ? void 0 : s.user) ?? s, d = ae(o);
434
+ return { token: (s == null ? void 0 : s.token) ?? "", user: d };
435
+ }
436
+ async function gn(e) {
437
+ const n = await fetch("/kapi/z-ctc/api/ctc/authn/whoami", {
438
+ headers: { Accept: "application/json" },
439
+ ...c,
440
+ credentials: "include"
441
+ }), t = await a(
442
+ n,
443
+ "获取用户信息失败"
444
+ );
445
+ return ae(t);
446
+ }
447
+ async function Sn(e) {
448
+ await a(
449
+ await fetch("/kapi/z-ctc/api/ctc/authn/logout", {
450
+ headers: { Accept: "application/json" },
451
+ ...c,
452
+ method: "POST",
453
+ credentials: "include"
454
+ }),
455
+ "退出失败"
456
+ );
457
+ try {
458
+ localStorage.removeItem("token"), localStorage.removeItem("z_team_token"), localStorage.removeItem("userInfo"), localStorage.removeItem("USER_INFO");
459
+ } catch {
460
+ }
461
+ }
462
+ const b = /* @__PURE__ */ new Map(), qe = 300 * 1e3, De = 30 * 1e3;
463
+ async function wn(e, n) {
464
+ const t = `${e}`, s = b.get(t);
465
+ if (s) {
466
+ const o = s.failed ? De : qe;
467
+ if (Date.now() - s.at < o)
468
+ return { codes: s.codes, failed: s.failed };
469
+ b.delete(t);
470
+ }
471
+ try {
472
+ const o = await fetch(
473
+ `/kapi/z-ctc/api/ctc/authz/users/permissions?userId=${e}`,
474
+ {
475
+ headers: {
476
+ Accept: "application/json",
477
+ Authorization: `Bearer ${n}`
478
+ }
479
+ }
480
+ );
481
+ if (!o.ok)
482
+ return b.set(t, { codes: [], failed: !0, at: Date.now() }), { codes: [], failed: !0 };
483
+ const d = await o.json(), u = (d == null ? void 0 : d.data) ?? d;
484
+ if (!Array.isArray(u))
485
+ return b.set(t, { codes: [], failed: !0, at: Date.now() }), { codes: [], failed: !0 };
486
+ const l = u.map((f) => (f == null ? void 0 : f.resource_code) ?? (f == null ? void 0 : f.resourceCode)).filter((f) => typeof f == "string" && f);
487
+ return b.set(t, { codes: l, failed: !1, at: Date.now() }), { codes: l, failed: !1 };
488
+ } catch {
489
+ return b.set(t, { codes: [], failed: !0, at: Date.now() }), { codes: [], failed: !0 };
490
+ }
491
+ }
492
+ async function Tn(e = "", n) {
493
+ const t = new URLSearchParams();
494
+ e && t.set("token", e), n && t.set("create_time_start", n);
495
+ const s = t.toString(), o = await i(
496
+ `${r}/scenario-instances/${s ? `?${s}` : ""}`,
497
+ c
498
+ );
499
+ return a(o, "获取项目列表失败");
500
+ }
501
+ async function Cn(e = "") {
502
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/scenarios${n}`, c);
503
+ return a(t, "获取场景列表失败");
504
+ }
505
+ async function Je(e, n = "") {
506
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = {
507
+ ...e,
508
+ extend_params: { ...e.extend_params, skip_init_task: "true" }
509
+ }, o = await i(`${r}/scenario-instances/${t}`, {
510
+ ...c,
511
+ method: "POST",
512
+ headers: { "Content-Type": "application/json" },
513
+ body: JSON.stringify(s)
514
+ }), d = await a(o, "创建项目失败");
515
+ return U(d);
516
+ }
517
+ const In = Je;
518
+ function U(e) {
519
+ return {
520
+ // FE-PRECISION-FIX: 雪花 ID 是 19 位 bigint, Number() 会丢末位精度
521
+ // (后端 Jackson Long→String 已序列化为字符串, 这里保持字符串避免回退到 Number)
522
+ id: e.id == null ? "" : String(e.id),
523
+ name: String(e.name ?? ""),
524
+ description: String(e.description ?? ""),
525
+ workspace_path: String(e.workspace_path ?? e.workspacePath ?? ""),
526
+ status: String(e.status ?? "ACTIVE"),
527
+ created_at: String(e.created_at ?? e.createdAt ?? ""),
528
+ mode: e.mode != null ? String(e.mode) : void 0,
529
+ // FEATURE-ID-AS-STRING: 雪花 ID 一律 string, 严禁 Number() (JS Number 精度会丢末位)
530
+ scenario_id: e.scenario_id != null ? String(e.scenario_id) : e.scenarioId != null ? String(e.scenarioId) : void 0,
531
+ scenario_code: e.scenario_code != null ? String(e.scenario_code) : e.scenarioCode != null ? String(e.scenarioCode) : void 0,
532
+ scenario_name: e.scenario_name != null ? String(e.scenario_name) : e.scenarioName != null ? String(e.scenarioName) : void 0,
533
+ role: e.role != null ? String(e.role) : void 0,
534
+ llm_code: e.llm_code != null ? String(e.llm_code) : e.llmCode != null ? String(e.llmCode) : void 0,
535
+ close_feedback: J(e, "close_feedback"),
536
+ close_tags: J(e, "close_tags"),
537
+ close_time: J(e, "close_time"),
538
+ close_user: J(e, "close_user"),
539
+ members: Array.isArray(e.members) ? e.members.map((n) => String(n)) : void 0,
540
+ parent_id: Le(e)
541
+ };
542
+ }
543
+ function J(e, n) {
544
+ const t = n.replace(/_([a-z])/g, (u, l) => l.toUpperCase());
545
+ if (e[n] != null) return e[n];
546
+ if (e[t] != null) return e[t];
547
+ const s = e.close_info ?? e.closeInfo;
548
+ if (s) {
549
+ if (s[n] != null) return s[n];
550
+ if (s[t] != null) return s[t];
551
+ }
552
+ const o = e.ext;
553
+ if (!o) return;
554
+ const d = o.params;
555
+ if (d)
556
+ return d[n] ?? void 0;
557
+ }
558
+ function Le(e) {
559
+ const n = e.ext;
560
+ if (!n) return;
561
+ const t = n.params;
562
+ if (!t) return;
563
+ const s = t.parent_id;
564
+ if (s == null) return;
565
+ const o = m(s);
566
+ return o === "" ? void 0 : o;
567
+ }
568
+ async function _n(e, n) {
569
+ const t = await i(
570
+ `${r}/scenario-instances/${e}/llm-code`,
571
+ {
572
+ ...c,
573
+ method: "PUT",
574
+ headers: { "Content-Type": "application/json" },
575
+ body: JSON.stringify({ llmCode: n || null })
576
+ }
577
+ ), s = await a(t, "设置模型失败");
578
+ return U(s);
579
+ }
580
+ const bn = "qa_support";
581
+ function An(e) {
582
+ const n = e.futureTeamProjectId ?? e.future_team_project_id ?? "", t = m(String(n).trim());
583
+ return le(t) ? t : null;
584
+ }
585
+ async function Un(e, n, t) {
586
+ const s = new URLSearchParams({
587
+ ticketId: e,
588
+ futureTeamProjectId: String(n),
589
+ stage: t
590
+ }), o = await i(`${r}/dev-brain/agent/update-z-team`, {
591
+ method: "POST",
592
+ headers: {
593
+ "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
594
+ },
595
+ body: s.toString()
596
+ });
597
+ await a(o, "回写工单关联工程失败");
598
+ }
599
+ async function En(e) {
600
+ const n = await i(
601
+ `${r}/scenario-instances/${e}/team/`,
602
+ c
603
+ );
604
+ return a(n, "获取团队成员失败");
605
+ }
606
+ async function On(e, n) {
607
+ const t = await i(`${r}/scenario-instances/${e}/team/`, {
608
+ ...c,
609
+ method: "POST",
610
+ headers: { "Content-Type": "application/json" },
611
+ body: JSON.stringify(n)
612
+ });
613
+ return a(t, "添加成员失败");
614
+ }
615
+ async function Pn(e, n) {
616
+ const t = await i(
617
+ `${r}/scenario-instances/${e}/team/${n}`,
618
+ {
619
+ ...c,
620
+ method: "DELETE"
621
+ }
622
+ );
623
+ return a(t, "移除成员失败");
624
+ }
625
+ async function kn(e) {
626
+ const n = await i(
627
+ `${r}/scenario-instances/${e}/team/available-agents`,
628
+ c
629
+ );
630
+ return a(n, "获取Agent列表失败");
631
+ }
632
+ async function Rn(e) {
633
+ const n = await i(
634
+ `${r}/scenario-instances/${e}/team/available-humans`,
635
+ c
636
+ );
637
+ return a(n, "获取用户列表失败");
638
+ }
639
+ async function vn(e) {
640
+ const n = await i(
641
+ `${r}/scenario-instances/${e}/skills`,
642
+ c
643
+ );
644
+ return a(n, "获取技能列表失败");
645
+ }
646
+ async function jn(e) {
647
+ const n = await i(
648
+ `${r}/scenario-instances/${e}/all-skills`,
649
+ c
650
+ );
651
+ return a(n, "获取全部技能列表失败");
652
+ }
653
+ async function Nn(e, n) {
654
+ const t = await i(`${r}/scenario-instances/${e}/skills`, {
655
+ ...c,
656
+ method: "POST",
657
+ headers: { "Content-Type": "application/json" },
658
+ body: JSON.stringify({ skill_id: n })
659
+ });
660
+ return a(t, "添加技能失败");
661
+ }
662
+ async function qn(e, n) {
663
+ const t = await i(
664
+ `${r}/scenario-instances/${e}/skills/${n}`,
665
+ {
666
+ ...c,
667
+ method: "DELETE"
668
+ }
669
+ );
670
+ return a(t, "移除技能失败");
671
+ }
672
+ async function Dn(e, n) {
673
+ const t = await i(
674
+ `${r}/scenario-instances/${e}/agent-skills/refresh`,
675
+ {
676
+ ...c,
677
+ method: "POST",
678
+ headers: { "Content-Type": "application/json" },
679
+ body: JSON.stringify({ agent_skills_path: n })
680
+ }
681
+ );
682
+ return a(t, "刷新技能失败");
683
+ }
684
+ async function Jn(e) {
685
+ const n = await i(
686
+ `${r}/scenario-instances/${e}/all-agent-skills/refresh`,
687
+ {
688
+ ...c,
689
+ method: "POST"
690
+ }
691
+ );
692
+ return a(n, "刷新所有技能失败");
693
+ }
694
+ async function Ln(e, n = 50, t) {
695
+ let s = `${r}/scenario-instances/${e}/messages?limit=${n}`;
696
+ t && (s += `&before=${t}`);
697
+ const o = await i(s, c);
698
+ return a(o, "加载聊天记录失败,请稍后重试");
699
+ }
700
+ async function Mn(e, n, t = "") {
701
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
702
+ `${r}/scenario-instances/${e}/messages/${n}/read${s}`,
703
+ {
704
+ ...c,
705
+ method: "POST"
706
+ }
707
+ );
708
+ return a(o, "标记已读失败");
709
+ }
710
+ async function xn(e, n, t = "") {
711
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
712
+ `${r}/scenario-instances/${e}/messages${s}`,
713
+ {
714
+ ...c,
715
+ method: "POST",
716
+ headers: { "Content-Type": "application/json" },
717
+ body: JSON.stringify(n)
718
+ }
719
+ );
720
+ return a(o, "发送消息失败");
721
+ }
722
+ async function zn(e, n) {
723
+ const t = await i(
724
+ `${r}/scenario-instances/${e}/cancel/${n}`,
725
+ { ...c, method: "POST" }
726
+ ), s = await a(t, "取消失败");
727
+ if (s != null && s.warning)
728
+ throw new Error(String(s.warning));
729
+ return s;
730
+ }
731
+ async function Fn(e, n) {
732
+ const t = await i(
733
+ `${r}/scenario-instances/${e}/cancel/${n}/queue`,
734
+ { ...c, method: "POST" }
735
+ );
736
+ return a(t, "停止队列失败");
737
+ }
738
+ async function Bn(e) {
739
+ const n = await i(
740
+ `${r}/scenario-instances/${e}/executions`,
741
+ c
742
+ );
743
+ return a(n, "获取执行列表失败");
744
+ }
745
+ async function Wn(e, n = "") {
746
+ const t = n ? `?subdir=${encodeURIComponent(n)}` : "", s = await i(
747
+ `${r}/scenario-instances/${e}/workspace/tree${t}`,
748
+ c
749
+ );
750
+ return a(s, "获取文件树失败");
751
+ }
752
+ async function Hn() {
753
+ const e = await i(`${r}/workspace/env`, c);
754
+ return a(e, "获取环境信息失败");
755
+ }
756
+ async function Kn(e) {
757
+ const n = await i(
758
+ `${r}/scenario-instances/${e}/workspace/sync-from-prod`,
759
+ {
760
+ ...c,
761
+ method: "POST",
762
+ headers: { "Content-Type": "application/json" }
763
+ }
764
+ );
765
+ return a(n, "同步失败");
766
+ }
767
+ async function Vn(e, n) {
768
+ const t = await i(
769
+ `${r}/scenario-instances/${e}/workspace/file?file_path=${encodeURIComponent(
770
+ n
771
+ )}`,
772
+ c
773
+ );
774
+ return a(t, "获取文件内容失败");
775
+ }
776
+ async function Qn(e, n, t) {
777
+ const s = await i(
778
+ `${r}/scenario-instances/${e}/workspace/file?file_path=${encodeURIComponent(
779
+ n
780
+ )}`,
781
+ {
782
+ ...c,
783
+ method: "POST",
784
+ headers: { "Content-Type": "application/json" },
785
+ body: JSON.stringify({ content: t })
786
+ }
787
+ );
788
+ return a(s, "保存文件失败");
789
+ }
790
+ async function Gn(e, n, t) {
791
+ const s = await i(
792
+ `${r}/scenario-instances/${e}/workspace/rename`,
793
+ {
794
+ ...c,
795
+ method: "PUT",
796
+ headers: { "Content-Type": "application/json" },
797
+ body: JSON.stringify({ old_path: n, new_name: t })
798
+ }
799
+ );
800
+ return a(s, "重命名失败");
801
+ }
802
+ async function Zn(e, n, t) {
803
+ const s = await i(
804
+ `${r}/scenario-instances/${e}/workspace/new-file`,
805
+ {
806
+ ...c,
807
+ method: "POST",
808
+ headers: { "Content-Type": "application/json" },
809
+ body: JSON.stringify({ parent_path: n, name: t })
810
+ }
811
+ );
812
+ return a(s, "新建文件失败");
813
+ }
814
+ async function Xn(e, n, t) {
815
+ const s = await i(
816
+ `${r}/scenario-instances/${e}/workspace/new-folder`,
817
+ {
818
+ ...c,
819
+ method: "POST",
820
+ headers: { "Content-Type": "application/json" },
821
+ body: JSON.stringify({ parent_path: n, name: t })
822
+ }
823
+ );
824
+ return a(s, "新建文件夹失败");
825
+ }
826
+ async function Yn(e, n) {
827
+ const t = await i(
828
+ `${r}/scenario-instances/${e}/workspace/delete`,
829
+ {
830
+ ...c,
831
+ method: "POST",
832
+ headers: { "Content-Type": "application/json" },
833
+ body: JSON.stringify({ path: n })
834
+ }
835
+ );
836
+ return a(t, "删除失败");
837
+ }
838
+ async function et(e, n, t) {
839
+ const s = new FormData();
840
+ s.append("file", t), s.append("parent_path", n);
841
+ const o = await i(
842
+ `${r}/scenario-instances/${e}/workspace/upload-file`,
843
+ {
844
+ ...c,
845
+ method: "POST",
846
+ body: s
847
+ }
848
+ );
849
+ return a(o, "上传文件失败");
850
+ }
851
+ async function nt(e, n, t) {
852
+ const s = new FormData();
853
+ t.forEach((d) => s.append("files", d)), s.append("parent_path", n);
854
+ const o = await i(
855
+ `${r}/scenario-instances/${e}/workspace/upload-folder`,
856
+ {
857
+ ...c,
858
+ method: "POST",
859
+ body: s
860
+ }
861
+ );
862
+ return a(o, "上传文件夹失败");
863
+ }
864
+ async function tt(e, n) {
865
+ const t = await i(
866
+ `${r}/scenario-instances/${e}/workspace/download?file_path=${encodeURIComponent(
867
+ n
868
+ )}`,
869
+ c
870
+ );
871
+ if (!t.ok) throw new Error("下载失败");
872
+ return t.blob();
873
+ }
874
+ async function Me(e, n = "") {
875
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
876
+ `${r}/scenario-instances/${e}${t}`,
877
+ c
878
+ ), o = await a(s, "获取项目失败"), d = o.status === "FOUND" ? "FOUND" : "NOT_FOUND", u = o.scenario_instance ?? o.scenarioInstance ?? null;
879
+ return {
880
+ status: d,
881
+ scenarioInstance: u ? U(u) : null
882
+ };
883
+ }
884
+ async function xe(e, n = "") {
885
+ const t = await Me(e, n);
886
+ if (t.status === "NOT_FOUND" || !t.scenarioInstance)
887
+ throw {
888
+ _apiUserError: !0,
889
+ userMessage: "项目不存在",
890
+ message: "项目不存在"
891
+ };
892
+ return t.scenarioInstance;
893
+ }
894
+ async function ze(e, n = "") {
895
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
896
+ `${r}/scenario-instances/${e}/join-self${t}`,
897
+ {
898
+ ...c,
899
+ method: "POST"
900
+ }
901
+ ), o = await a(s, "加入工程失败");
902
+ return U(o);
903
+ }
904
+ async function st(e, n = "") {
905
+ return await xe(e, n), ze(e, n);
906
+ }
907
+ async function ot(e) {
908
+ const n = await i(`${r}/scenario-instances/${e}`, {
909
+ ...c,
910
+ method: "DELETE"
911
+ });
912
+ return a(n, "删除项目失败");
913
+ }
914
+ async function at(e, n, t = "") {
915
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
916
+ `${r}/scenario-instances/${e}/fork${s}`,
917
+ {
918
+ ...c,
919
+ method: "POST",
920
+ headers: { "Content-Type": "application/json" },
921
+ body: JSON.stringify({ mode: n })
922
+ }
923
+ ), d = await a(o, "Fork 项目失败");
924
+ return U(d);
925
+ }
926
+ async function rt(e, n) {
927
+ const t = await i(`${r}/scenario-instances/${e}`, {
928
+ ...c,
929
+ method: "PATCH",
930
+ headers: { "Content-Type": "application/json" },
931
+ body: JSON.stringify(n)
932
+ }), s = await a(t, "更新项目失败");
933
+ return U(s);
934
+ }
935
+ async function it(e) {
936
+ const n = await i(
937
+ `${r}/scenario-instances/${e}/retry-image-parse`,
938
+ {
939
+ ...c,
940
+ method: "POST",
941
+ headers: { "Content-Type": "application/json" }
942
+ }
943
+ ), s = await a(n, "图片重新解析失败");
944
+ return {
945
+ success: !!s.success,
946
+ message: s.message
947
+ };
948
+ }
949
+ async function ct(e, n, t = "") {
950
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
951
+ `${r}/scenario-instances/${e}/task-sessions/${n}${s}`,
952
+ {
953
+ ...c,
954
+ method: "POST",
955
+ headers: { "Content-Type": "application/json" }
956
+ }
957
+ );
958
+ return a(o, "创建任务会话失败");
959
+ }
960
+ async function dt(e, n, t = 50, s, o = "") {
961
+ let d = `${r}/scenario-instances/${e}/task-sessions/${n}/messages?limit=${t}`;
962
+ s && (d += `&before=${s}`), o && (d += `&token=${encodeURIComponent(o)}`);
963
+ const u = await i(d, c);
964
+ return a(u, "获取任务消息失败");
965
+ }
966
+ async function ut(e, n, t, s = "", o) {
967
+ const d = s ? `?token=${encodeURIComponent(s)}` : "", u = { content: t };
968
+ o && o.length > 0 && (u.image_urls = o);
969
+ const l = await i(
970
+ `${r}/scenario-instances/${e}/task-sessions/${n}/messages${d}`,
971
+ {
972
+ ...c,
973
+ method: "POST",
974
+ headers: { "Content-Type": "application/json" },
975
+ body: JSON.stringify(u)
976
+ }
977
+ );
978
+ return a(l, "发送任务消息失败");
979
+ }
980
+ async function lt(e = "") {
981
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/admin/scenarios${n}`, c);
982
+ return a(t, "获取场景列表失败");
983
+ }
984
+ async function pt(e, n, t = "") {
985
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
986
+ `${r}/admin/agents/${encodeURIComponent(
987
+ e
988
+ )}/identity/test-login${s}`,
989
+ {
990
+ ...c,
991
+ method: "POST",
992
+ headers: { "Content-Type": "application/json" },
993
+ body: JSON.stringify(n)
994
+ }
995
+ );
996
+ return a(o, "测试登录失败");
997
+ }
998
+ async function ft(e = "") {
999
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1000
+ `${r}/admin/agents/identity-envs${n}`,
1001
+ c
1002
+ );
1003
+ return a(t, "获取身份绑定环境列表失败");
1004
+ }
1005
+ async function mt(e, n = "") {
1006
+ const t = new URLSearchParams();
1007
+ e && t.set("envCode", e), n && t.set("token", n);
1008
+ const s = t.toString() ? `?${t.toString()}` : "", o = await i(
1009
+ `${r}/admin/agents/ctc-members${s}`,
1010
+ c
1011
+ );
1012
+ return a(o, "获取成员列表失败") ?? [];
1013
+ }
1014
+ async function yt(e, n, t = "") {
1015
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(`${r}/admin/agents/${e}/move${s}`, {
1016
+ ...c,
1017
+ method: "POST",
1018
+ headers: { "Content-Type": "application/json" },
1019
+ body: JSON.stringify(n)
1020
+ });
1021
+ return a(o, "移动 Agent 分类失败");
1022
+ }
1023
+ async function $t(e = "") {
1024
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/admin/agents/models${n}`, c);
1025
+ return a(t, "获取模型列表失败");
1026
+ }
1027
+ function W(e) {
1028
+ const n = Object.entries(e).filter(([, t]) => t !== void 0 && t !== "").map(([t, s]) => `${t}=${encodeURIComponent(s)}`);
1029
+ return n.length ? `?${n.join("&")}` : "";
1030
+ }
1031
+ async function ht(e, n = "") {
1032
+ const t = await i(
1033
+ `${r}/admin/agents/${encodeURIComponent(
1034
+ e
1035
+ )}/ontology${W({ token: n })}`,
1036
+ c
1037
+ );
1038
+ return (await a(
1039
+ t,
1040
+ "获取前置处理配置失败"
1041
+ ) ?? []).map((o) => ({
1042
+ ...o,
1043
+ nodeInfo: { ...o.nodeInfo, dataPrepareEnabled: !1 }
1044
+ }));
1045
+ }
1046
+ async function gt(e, n = "") {
1047
+ const t = await i(
1048
+ `${r}/admin/agents/ontology/ontologies${W({
1049
+ ontologyType: e,
1050
+ token: n
1051
+ })}`,
1052
+ c
1053
+ );
1054
+ return a(t, "获取本体列表失败") ?? [];
1055
+ }
1056
+ async function St(e, n = "") {
1057
+ const t = await i(
1058
+ `${r}/admin/agents/ontology/knowledges${W({
1059
+ ontologyCode: e,
1060
+ token: n
1061
+ })}`,
1062
+ c
1063
+ );
1064
+ return a(t, "获取知识列表失败") ?? [];
1065
+ }
1066
+ async function wt(e, n, t = "") {
1067
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(`${r}/admin/skills/${e}/move${s}`, {
1068
+ ...c,
1069
+ method: "POST",
1070
+ headers: { "Content-Type": "application/json" },
1071
+ body: JSON.stringify(n)
1072
+ });
1073
+ return a(o, "移动 Skill 分类失败");
1074
+ }
1075
+ async function Tt(e = "", n = "") {
1076
+ const t = new URLSearchParams();
1077
+ e && t.append("keyword", e), n && t.append("token", n);
1078
+ const s = t.toString() ? `?${t.toString()}` : "", o = await i(
1079
+ `${r}/admin/profiles/ctc-staff${s}`,
1080
+ c
1081
+ );
1082
+ return a(o, "获取员工列表失败");
1083
+ }
1084
+ async function Ct(e, n, t = "", s = "") {
1085
+ const o = new URLSearchParams();
1086
+ o.append("profileScope", e), o.append("memberType", n), t && o.append("scenarioCode", t), s && o.append("token", s);
1087
+ const d = o.toString() ? `?${o.toString()}` : "", u = await i(`${r}/admin/profiles${d}`, c);
1088
+ return a(u, "获取画像列表失败");
1089
+ }
1090
+ async function It(e, n = "") {
1091
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/admin/profiles${t}`, {
1092
+ ...c,
1093
+ method: "POST",
1094
+ headers: { "Content-Type": "application/json" },
1095
+ body: JSON.stringify(e)
1096
+ });
1097
+ return a(s, "保存画像失败");
1098
+ }
1099
+ async function _t(e, n, t, s = "", o = "") {
1100
+ const d = new URLSearchParams();
1101
+ s && d.append("scenarioCode", s), o && d.append("token", o);
1102
+ const u = d.toString() ? `?${d.toString()}` : "", l = await i(
1103
+ `${r}/admin/profiles/${encodeURIComponent(
1104
+ e
1105
+ )}/${encodeURIComponent(n)}/${encodeURIComponent(t)}${u}`,
1106
+ {
1107
+ ...c,
1108
+ method: "DELETE"
1109
+ }
1110
+ );
1111
+ return a(l, "删除画像失败");
1112
+ }
1113
+ async function bt(e = "", n = "") {
1114
+ const t = new URLSearchParams();
1115
+ e && t.append("scenarioCode", e), n && t.append("token", n);
1116
+ const s = t.toString() ? `?${t.toString()}` : "", o = await i(`${r}/admin/human-on-calls${s}`, c);
1117
+ return a(o, "获取值班信息失败");
1118
+ }
1119
+ async function At(e, n, t, s = "") {
1120
+ const o = s ? `?token=${encodeURIComponent(s)}` : "", d = await i(`${r}/admin/human-on-calls/batch${o}`, {
1121
+ ...c,
1122
+ method: "POST",
1123
+ headers: { "Content-Type": "application/json" },
1124
+ body: JSON.stringify({ scenarioCode: e, dayOfWeek: n, onCalls: t })
1125
+ });
1126
+ return a(d, "保存值班信息失败");
1127
+ }
1128
+ async function Ut(e, n, t, s = "") {
1129
+ const o = s ? `?token=${encodeURIComponent(s)}` : "", d = await i(
1130
+ `${r}/admin/human-on-calls/${encodeURIComponent(
1131
+ e
1132
+ )}/${t}/${encodeURIComponent(n)}${o}`,
1133
+ { ...c, method: "DELETE" }
1134
+ );
1135
+ return a(d, "删除值班信息失败");
1136
+ }
1137
+ async function Et(e = {}, n = "") {
1138
+ const t = [];
1139
+ e.scenarioCode && t.push(`scenario_code=${encodeURIComponent(e.scenarioCode)}`), e.status && t.push(`status=${encodeURIComponent(e.status)}`), n && t.push(`token=${encodeURIComponent(n)}`);
1140
+ const s = t.length > 0 ? `?${t.join("&")}` : "", o = await i(
1141
+ `${r}/admin/scenario-instances/refresh-all-skills${s}`,
1142
+ {
1143
+ ...c,
1144
+ method: "POST"
1145
+ }
1146
+ );
1147
+ return a(o, "全量刷新技能失败");
1148
+ }
1149
+ async function Ot(e, n = "") {
1150
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1151
+ `${r}/admin/scenario-instances/${e}/refresh-skills${t}`,
1152
+ {
1153
+ ...c,
1154
+ method: "POST"
1155
+ }
1156
+ );
1157
+ return a(s, "刷新技能失败");
1158
+ }
1159
+ function E(e) {
1160
+ const n = (...s) => {
1161
+ for (const o of s) {
1162
+ const d = e[o];
1163
+ if (d != null && d !== "") return String(d);
1164
+ }
1165
+ return "";
1166
+ }, t = e.shared;
1167
+ return {
1168
+ id: e.id,
1169
+ userId: n("user_id", "userId"),
1170
+ // FE-PRECISION-FIX: agentHubAgentId 声明为 Id,禁止 Number()(会按 float64 抹掉末位)
1171
+ agentHubAgentId: e.agent_hub_agent_id != null ? m(e.agent_hub_agent_id) : e.agenthub_agent_id != null ? m(e.agenthub_agent_id) : e.agentHubAgentId != null ? m(e.agentHubAgentId) : null,
1172
+ agentCode: n("agent_code", "agentCode"),
1173
+ displayName: n("display_name", "displayName"),
1174
+ avatar: e.avatar == null ? null : String(e.avatar),
1175
+ shared: t == null ? void 0 : Number(t),
1176
+ isLocal: e.isLocal,
1177
+ localAgentId: e.localAgentId,
1178
+ localAgentType: e.localAgentType,
1179
+ createTime: e.create_time == null ? e.createTime : String(e.create_time),
1180
+ updateTime: e.update_time == null ? e.updateTime : String(e.update_time)
1181
+ };
1182
+ }
1183
+ async function Pt(e = "") {
1184
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/personal-agents${n}`, c), s = await a(t, "获取个人 Agent 列表失败");
1185
+ return (Array.isArray(s) ? s : []).map((o) => E(o));
1186
+ }
1187
+ async function kt(e, n = "") {
1188
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/personal-agents${t}`, {
1189
+ ...c,
1190
+ method: "POST",
1191
+ headers: { "Content-Type": "application/json" },
1192
+ body: JSON.stringify({ display_name: e })
1193
+ });
1194
+ return E(
1195
+ await a(s, "创建个人 Agent 失败")
1196
+ );
1197
+ }
1198
+ async function Rt(e, n, t, s, o = "") {
1199
+ const d = o ? `?token=${encodeURIComponent(o)}` : "", u = await i(`${r}/personal-agents/ensure${d}`, {
1200
+ ...c,
1201
+ method: "POST",
1202
+ headers: { "Content-Type": "application/json" },
1203
+ body: JSON.stringify({
1204
+ agenthub_agent_id: e,
1205
+ agent_code: n,
1206
+ display_name: t,
1207
+ avatar: s ?? ""
1208
+ })
1209
+ });
1210
+ return E(
1211
+ await a(u, "创建个人 Agent 失败")
1212
+ );
1213
+ }
1214
+ async function vt(e, n = "") {
1215
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/personal-agents/${e}${t}`, {
1216
+ ...c,
1217
+ method: "DELETE"
1218
+ });
1219
+ return a(s, "删除个人 Agent 失败");
1220
+ }
1221
+ async function jt(e, n, t = "") {
1222
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(`${r}/personal-agents/${e}${s}`, {
1223
+ ...c,
1224
+ method: "PUT",
1225
+ headers: { "Content-Type": "application/json" },
1226
+ body: JSON.stringify({ display_name: n })
1227
+ });
1228
+ return E(
1229
+ await a(o, "重命名个人 Agent 失败")
1230
+ );
1231
+ }
1232
+ async function Nt(e = "") {
1233
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1234
+ `${r}/personal-agents/shared${n}`,
1235
+ c
1236
+ ), s = await a(
1237
+ t,
1238
+ "获取共享 Agent 列表失败"
1239
+ );
1240
+ return (Array.isArray(s) ? s : []).map(
1241
+ (o) => E(o)
1242
+ );
1243
+ }
1244
+ async function qt(e, n, t = "") {
1245
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(`${r}/personal-agents/${e}/share${s}`, {
1246
+ ...c,
1247
+ method: "PUT",
1248
+ headers: { "Content-Type": "application/json" },
1249
+ body: JSON.stringify({ shared: n })
1250
+ });
1251
+ return E(
1252
+ await a(o, "切换共享状态失败")
1253
+ );
1254
+ }
1255
+ async function Dt(e, n = "") {
1256
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1257
+ `${r}/personal-agents/${e}/sessions${t}`,
1258
+ c
1259
+ ), o = await a(
1260
+ s,
1261
+ "获取会话列表失败"
1262
+ ), d = o == null ? void 0 : o.sessions;
1263
+ return {
1264
+ sessions: (Array.isArray(d) ? d : []).map(j),
1265
+ isOwner: (o == null ? void 0 : o.isOwner) === !0,
1266
+ userMeta: (o == null ? void 0 : o.userMeta) ?? {}
1267
+ };
1268
+ }
1269
+ async function Jt(e, n = "新会话", t = "", s) {
1270
+ const o = t ? `?token=${encodeURIComponent(t)}` : "", d = await i(
1271
+ `${r}/personal-agents/${e}/sessions${o}`,
1272
+ {
1273
+ ...c,
1274
+ method: "POST",
1275
+ headers: { "Content-Type": "application/json" },
1276
+ body: JSON.stringify({
1277
+ title: n,
1278
+ ...s ? {
1279
+ projectSpaceId: String(s.id),
1280
+ projectSpaceTitle: s.title
1281
+ } : {}
1282
+ })
1283
+ }
1284
+ );
1285
+ return j(
1286
+ await a(d, "创建会话失败")
1287
+ );
1288
+ }
1289
+ function j(e) {
1290
+ const n = e ?? {}, t = (...l) => {
1291
+ for (const f of l) {
1292
+ const O = n[f];
1293
+ if (O != null && O !== "") return String(O);
1294
+ }
1295
+ return "";
1296
+ }, s = n.project_space_id ?? n.projectSpaceId, o = n.project_space_title ?? n.projectSpaceTitle, d = t("create_time", "createTime"), u = t("update_time", "updateTime");
1297
+ return {
1298
+ id: m(n.id),
1299
+ personalAgentId: m(n.personal_agent_id ?? n.personalAgentId),
1300
+ userId: t("user_id", "userId"),
1301
+ title: t("title"),
1302
+ projectSpaceId: s != null && s !== "" ? m(s) : null,
1303
+ projectSpaceTitle: o != null && o !== "" ? String(o) : null,
1304
+ summary: t("summary") || null,
1305
+ createTime: d || void 0,
1306
+ updateTime: u || void 0
1307
+ };
1308
+ }
1309
+ async function Lt(e, n = "") {
1310
+ const t = n ? `&token=${encodeURIComponent(n)}` : "", s = await i(
1311
+ `${r}/personal-agents/sessions/search?keyword=${encodeURIComponent(
1312
+ e
1313
+ )}&limit=50${t}`,
1314
+ c
1315
+ ), o = await a(s, "搜索会话失败");
1316
+ return (Array.isArray(o) ? o : []).map((d) => {
1317
+ const u = d ?? {}, l = String(u.matchField || "title");
1318
+ return {
1319
+ session: j(u.session),
1320
+ matchField: l === "id" || l === "content" ? l : "title",
1321
+ snippet: u.snippet != null && u.snippet !== "" ? String(u.snippet) : void 0
1322
+ };
1323
+ });
1324
+ }
1325
+ async function Mt(e = "") {
1326
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1327
+ `${r}/personal-agents/sessions/all${n}`,
1328
+ c
1329
+ ), s = await a(t, "获取聊天记录失败");
1330
+ return (Array.isArray(s) ? s : []).map(j);
1331
+ }
1332
+ async function xt(e, n, t = "", s) {
1333
+ const o = t ? `?token=${encodeURIComponent(t)}` : "", d = await i(
1334
+ `${r}/personal-agents/${e}/sessions/${n}${o}`,
1335
+ {
1336
+ ...c,
1337
+ method: "PUT",
1338
+ headers: { "Content-Type": "application/json" },
1339
+ body: JSON.stringify(
1340
+ s ? { projectSpaceId: String(s.id), projectSpaceTitle: s.title } : { clearProjectSpace: !0 }
1341
+ )
1342
+ }
1343
+ );
1344
+ return j(
1345
+ await a(d, "会话归组失败")
1346
+ );
1347
+ }
1348
+ async function zt(e) {
1349
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/personal-agents/models${n}`, c);
1350
+ return a(t, "获取模型列表失败");
1351
+ }
1352
+ async function Ft(e) {
1353
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1354
+ `${r}/personal-agents/custom-models${n}`,
1355
+ c
1356
+ );
1357
+ return a(t, "获取自定义模型失败");
1358
+ }
1359
+ async function Bt(e, n, t = "") {
1360
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
1361
+ `${r}/personal-agents/${e}/sessions/${n}${s}`,
1362
+ { ...c, method: "DELETE" }
1363
+ );
1364
+ return a(o, "删除会话失败");
1365
+ }
1366
+ async function Wt(e, n, t, s = "") {
1367
+ const o = s ? `?token=${encodeURIComponent(s)}` : "", d = await i(
1368
+ `${r}/personal-agents/${e}/sessions/${n}${o}`,
1369
+ {
1370
+ ...c,
1371
+ method: "PUT",
1372
+ headers: { "Content-Type": "application/json" },
1373
+ body: JSON.stringify({ title: t })
1374
+ }
1375
+ );
1376
+ return a(d, "重命名会话失败");
1377
+ }
1378
+ async function Ht(e, n, t = "") {
1379
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
1380
+ `${r}/personal-agents/${e}/sessions/${n}/messages${s}`,
1381
+ c
1382
+ );
1383
+ return a(o, "获取消息历史失败");
1384
+ }
1385
+ async function Kt(e, n, t, s, o, d, u, l, f) {
1386
+ const O = s ? `?token=${encodeURIComponent(s)}` : "", re = `${r}/personal-agents/${e}/sessions/${n}/chat/stream${O}`;
1387
+ try {
1388
+ const $ = await fetch(re, {
1389
+ ...c,
1390
+ method: "POST",
1391
+ headers: { Accept: "text/event-stream", "Content-Type": "application/json" },
1392
+ body: JSON.stringify(f ? { message: t, llmCode: f } : { message: t })
1393
+ });
1394
+ if (!$.ok || !$.body) {
1395
+ const F = await $.text().catch(() => "");
1396
+ d(new Error(F || `HTTP ${$.status}`));
1397
+ return;
1398
+ }
1399
+ const ie = $.body.getReader(), ce = new TextDecoder();
1400
+ let z = "", N = "";
1401
+ for (; ; ) {
1402
+ const { done: F, value: de } = await ie.read();
1403
+ if (F) break;
1404
+ z += ce.decode(de, { stream: !0 });
1405
+ const H = z.split(`
1406
+ `);
1407
+ z = H.pop() || "";
1408
+ for (const ue of H) {
1409
+ const _ = ue.trim();
1410
+ if (!_) {
1411
+ N = "";
1412
+ continue;
1413
+ }
1414
+ if (!_.startsWith(":")) {
1415
+ if (_.startsWith("event:")) {
1416
+ N = _.slice(6).trim();
1417
+ continue;
1418
+ }
1419
+ if (_.startsWith("data:")) {
1420
+ const q = _.slice(5).trim();
1421
+ if (N === "replace") {
1422
+ l && l(q), N = "";
1423
+ continue;
1424
+ }
1425
+ if (q.startsWith("[error]")) {
1426
+ d(new Error(q.slice(7).trim()));
1427
+ return;
1428
+ }
1429
+ o(q);
1430
+ }
1431
+ }
1432
+ }
1433
+ }
1434
+ u();
1435
+ } catch ($) {
1436
+ d($ instanceof Error ? $ : new Error(String($)));
1437
+ }
1438
+ }
1439
+ const Fe = "http://127.0.0.1:28080";
1440
+ async function Vt(e) {
1441
+ await fetch(`${Fe}/v1/sessions/${e}`, {
1442
+ method: "DELETE"
1443
+ });
1444
+ }
1445
+ async function Qt(e = {}) {
1446
+ const n = new URLSearchParams(), { name: t, scenarioInstanceId: s, page: o = 1, size: d = 50, token: u = "" } = e;
1447
+ t && n.set("name", t), s != null && s !== "" && n.set("scenarioInstanceId", String(s)), n.set("page", String(o)), n.set("size", String(d)), u && n.set("token", u);
1448
+ const l = n.toString(), f = await i(
1449
+ `${r}/admin/tasks${l ? `?${l}` : ""}`,
1450
+ c
1451
+ );
1452
+ return a(f, "获取任务列表失败");
1453
+ }
1454
+ function Be(e) {
1455
+ const n = new URLSearchParams();
1456
+ Object.entries(e).forEach(([s, o]) => {
1457
+ o != null && o !== "" && n.append(s, String(o));
1458
+ });
1459
+ const t = n.toString();
1460
+ return t ? `?${t}` : "";
1461
+ }
1462
+ async function Gt(e) {
1463
+ const n = await i(
1464
+ `${r}/admin/tool-call-logs/timeline${Be(e)}`,
1465
+ c
1466
+ );
1467
+ return a(n, "查询工具调用时间轴统计失败");
1468
+ }
1469
+ async function Zt(e) {
1470
+ const n = [];
1471
+ e.date && n.push(`date=${encodeURIComponent(e.date)}`), e.scenarioCode && n.push(`scenarioCode=${encodeURIComponent(e.scenarioCode)}`), e.token && n.push(`token=${encodeURIComponent(e.token)}`);
1472
+ const t = n.length > 0 ? `?${n.join("&")}` : "", s = await i(
1473
+ `${r}/admin/statistics/token-daily${t}`,
1474
+ c
1475
+ );
1476
+ return a(s, "获取 Token 单日统计失败");
1477
+ }
1478
+ async function Xt(e = "z-team") {
1479
+ const n = await i(
1480
+ `${r}/change-log/versions?repo=${encodeURIComponent(e)}`,
1481
+ c
1482
+ );
1483
+ return a(n, "获取变更日志版本列表失败");
1484
+ }
1485
+ async function Yt(e, n, t = "z-team") {
1486
+ const s = new URLSearchParams();
1487
+ e != null && s.set("versionId", String(e)), s.set("repo", t);
1488
+ const o = await i(
1489
+ `${r}/change-log/detail?${s.toString()}`,
1490
+ c
1491
+ );
1492
+ return a(o, "获取变更日志详情失败");
1493
+ }
1494
+ async function es(e) {
1495
+ const n = await i(
1496
+ `${ve}/evolution/records/${e}/reset`,
1497
+ { ...c, method: "POST" }
1498
+ );
1499
+ return a(n, "操作失败");
1500
+ }
1501
+ function y(e) {
1502
+ const n = new URLSearchParams();
1503
+ Object.entries(e).forEach(([s, o]) => {
1504
+ o != null && o !== "" && n.append(s, String(o));
1505
+ });
1506
+ const t = n.toString();
1507
+ return t ? `?${t}` : "";
1508
+ }
1509
+ async function ns(e) {
1510
+ const n = await i(
1511
+ `${r}/admin/qa-eval/closed-instances${y({
1512
+ close_date: e.closeDate,
1513
+ close_date_start: e.closeDateStart,
1514
+ close_date_end: e.closeDateEnd,
1515
+ scenario_code: e.scenarioCode,
1516
+ token: e.token
1517
+ })}`,
1518
+ c
1519
+ ), t = await a(
1520
+ n,
1521
+ "获取已关单实例列表失败"
1522
+ );
1523
+ return Array.isArray(t == null ? void 0 : t.list) ? t.list : [];
1524
+ }
1525
+ async function ts(e) {
1526
+ const n = await i(
1527
+ `${r}/admin/qa-eval/overview${y({
1528
+ close_date: e.closeDate,
1529
+ close_date_start: e.closeDateStart,
1530
+ close_date_end: e.closeDateEnd,
1531
+ scenario_code: e.scenarioCode,
1532
+ token: e.token
1533
+ })}`,
1534
+ c
1535
+ );
1536
+ return a(n, "获取 QA 评测总览失败");
1537
+ }
1538
+ async function ss(e, n = "") {
1539
+ const t = await i(
1540
+ `${r}/admin/qa-eval/report/${e}/cancel${y({
1541
+ token: n
1542
+ })}`,
1543
+ { ...c, method: "POST" }
1544
+ );
1545
+ return a(t, "取消评测失败");
1546
+ }
1547
+ async function os(e, n, t = "") {
1548
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
1549
+ `${r}/admin/scenario-templates/preview${s}`,
1550
+ {
1551
+ ...c,
1552
+ method: "POST",
1553
+ headers: { "Content-Type": "application/json" },
1554
+ body: JSON.stringify({ html: e, data: n })
1555
+ }
1556
+ );
1557
+ if (!o.ok) throw new Error(`HTTP ${o.status}`);
1558
+ return o.text();
1559
+ }
1560
+ async function as(e, n = "") {
1561
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1562
+ `${r}/tasks/${e}/human-assist${t}`,
1563
+ { ...c, method: "GET" }
1564
+ );
1565
+ return a(s, "查询人机协助卡片失败");
1566
+ }
1567
+ async function rs(e, n, t, s = "") {
1568
+ const o = s ? `?token=${encodeURIComponent(s)}` : "", d = await i(
1569
+ `${r}/scenario-instances/${e}/card-forms/${n}/submit${o}`,
1570
+ {
1571
+ ...c,
1572
+ method: "POST",
1573
+ headers: { "Content-Type": "application/json" },
1574
+ body: JSON.stringify({ value: t })
1575
+ }
1576
+ );
1577
+ return a(d, "提交卡片表单失败");
1578
+ }
1579
+ async function is(e, n, t = "") {
1580
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
1581
+ `${r}/tasks/${e}/submit-assist${s}`,
1582
+ {
1583
+ ...c,
1584
+ method: "POST",
1585
+ headers: { "Content-Type": "application/json" },
1586
+ body: JSON.stringify({ value: n })
1587
+ }
1588
+ );
1589
+ return a(o, "提交人机协助任务失败");
1590
+ }
1591
+ function cs(e) {
1592
+ return webIdeFetch(`/instances/${e}`, { method: "DELETE" });
1593
+ }
1594
+ async function ds(e = "") {
1595
+ const n = await i(
1596
+ `${r}/admin/runtime-monitor/schedule${y({ token: e })}`,
1597
+ c
1598
+ );
1599
+ return a(n, "查询定时任务概览失败");
1600
+ }
1601
+ async function us(e) {
1602
+ const n = new URLSearchParams();
1603
+ n.set("scenarioCode", e.scenarioCode), e.startDate && n.set("startDate", e.startDate), e.endDate && n.set("endDate", e.endDate), e.creatorId && n.set("creatorId", e.creatorId), e.tagFilters && Object.keys(e.tagFilters).length > 0 && n.set("tagFilters", JSON.stringify(e.tagFilters)), e.groupBy && n.set("groupBy", e.groupBy), e.token && n.set("token", e.token);
1604
+ const t = await i(
1605
+ `${r}/admin/statistics/business?${n.toString()}`,
1606
+ c
1607
+ ), s = await a(t, "业务指标查询失败");
1608
+ return {
1609
+ total: Number((s == null ? void 0 : s.total) ?? 0),
1610
+ trend: Array.isArray(s == null ? void 0 : s.trend) ? s.trend : [],
1611
+ ranking: Array.isArray(s == null ? void 0 : s.ranking) ? s.ranking : [],
1612
+ tagCoverage: (s == null ? void 0 : s.tagCoverage) ?? void 0,
1613
+ creatorDistribution: Array.isArray(s == null ? void 0 : s.creatorDistribution) ? s.creatorDistribution : void 0,
1614
+ dailyAvg: (s == null ? void 0 : s.dailyAvg) ?? void 0,
1615
+ activeCreators: (s == null ? void 0 : s.activeCreators) ?? void 0
1616
+ };
1617
+ }
1618
+ async function ls(e, n = "") {
1619
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1620
+ `${r}/admin/scenario-tags/values/${e}${t}`,
1621
+ {
1622
+ ...c,
1623
+ method: "DELETE"
1624
+ }
1625
+ );
1626
+ return a(s, "删除标签值失败");
1627
+ }
1628
+ async function ps(e, n, t) {
1629
+ const s = await i(
1630
+ `${r}/scenario-instances/${e}/workspace/git-clone`,
1631
+ {
1632
+ ...c,
1633
+ method: "POST",
1634
+ headers: { "Content-Type": "application/json" },
1635
+ body: JSON.stringify({
1636
+ parent_path: n,
1637
+ url: t.url,
1638
+ branch: t.branch ?? "",
1639
+ folder_name: t.folderName ?? ""
1640
+ })
1641
+ }
1642
+ );
1643
+ return a(s, "Git Clone 失败");
1644
+ }
1645
+ async function fs() {
1646
+ const e = await i(
1647
+ `${r}/scenarios/biz-consult-domains`,
1648
+ c
1649
+ );
1650
+ return a(e, "获取业务域选项失败");
1651
+ }
1652
+ async function ms(e = "") {
1653
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1654
+ `${r}/admin/statistics/current-dept${n}`,
1655
+ c
1656
+ );
1657
+ return a(t, "获取当前用户部门信息失败");
1658
+ }
1659
+ function We(e) {
1660
+ const n = new URLSearchParams();
1661
+ Object.entries(e).forEach(([s, o]) => {
1662
+ o != null && o !== "" && n.append(s, String(o));
1663
+ });
1664
+ const t = n.toString();
1665
+ return t ? `?${t}` : "";
1666
+ }
1667
+ async function ys(e) {
1668
+ const n = await i(
1669
+ `${r}/admin/evaluation/instances/${e.id}/snapshot-preview${We({
1670
+ section: e.section,
1671
+ page: e.page,
1672
+ size: e.size,
1673
+ task_id: e.taskId,
1674
+ token: e.token
1675
+ })}`,
1676
+ c
1677
+ );
1678
+ return a(n, "获取快照预览失败");
1679
+ }
1680
+ const He = typeof window < "u" && window.ZTEAM_WEBIDE_ADMIN_BASE || "http://localhost/kapi/webide/admin";
1681
+ async function Ke(e, n) {
1682
+ try {
1683
+ const t = await fetch(`${He}${e}`, {
1684
+ credentials: "include",
1685
+ headers: {
1686
+ Accept: "application/json",
1687
+ "Content-Type": "application/json"
1688
+ },
1689
+ ...n
1690
+ });
1691
+ return t.ok ? t.json() : {};
1692
+ } catch {
1693
+ return {};
1694
+ }
1695
+ }
1696
+ function $s(e) {
1697
+ return Ke(`/presets/${e}`, { method: "DELETE" });
1698
+ }
1699
+ const hs = oe;
1700
+ async function gs(e) {
1701
+ const n = new FormData();
1702
+ n.append("file", e);
1703
+ const t = await i(`${r}/common/upload-video`, {
1704
+ method: "POST",
1705
+ body: n
1706
+ }), s = await a(t, "上传视频失败"), o = typeof (s == null ? void 0 : s.url) == "string" ? s.url : "";
1707
+ if (!o) {
1708
+ const d = "上传视频失败:响应缺少视频地址";
1709
+ throw S(d), { _apiUserError: !0, userMessage: d, message: d };
1710
+ }
1711
+ return o;
1712
+ }
1713
+ function Ss() {
1714
+ const e = "登录已失效,请重新登录";
1715
+ throw S(e), { _apiUserError: !0, userMessage: e, message: e };
1716
+ }
1717
+ async function ws(e) {
1718
+ const n = await i(
1719
+ `${r}/scenario-instances/${e}/interaction-mode`,
1720
+ { ...c }
1721
+ ), t = await a(
1722
+ n,
1723
+ "查询交互模式失败"
1724
+ );
1725
+ return (t == null ? void 0 : t.mode) ?? "dispatch";
1726
+ }
1727
+ async function Ts(e, n) {
1728
+ const t = await i(
1729
+ `${r}/scenario-instances/${e}/interaction-mode`,
1730
+ {
1731
+ ...c,
1732
+ method: "PUT",
1733
+ headers: { "Content-Type": "application/json" },
1734
+ body: JSON.stringify({ mode: n })
1735
+ }
1736
+ ), s = await a(
1737
+ t,
1738
+ "切换交互模式失败"
1739
+ );
1740
+ return (s == null ? void 0 : s.mode) ?? n;
1741
+ }
1742
+ async function Cs(e = "") {
1743
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1744
+ `${r}/admin/indexer/overview${n}`,
1745
+ I()
1746
+ );
1747
+ return a(t, "获取索引概览失败");
1748
+ }
1749
+ async function Is(e = "") {
1750
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/admin/indexer/repos${n}`, I()), s = await a(
1751
+ t,
1752
+ "获取索引仓库列表失败"
1753
+ );
1754
+ return Array.isArray(s == null ? void 0 : s.repos) ? s.repos : [];
1755
+ }
1756
+ async function _s(e, n = "") {
1757
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/admin/indexer/repos${t}`, I({
1758
+ method: "POST",
1759
+ headers: { "Content-Type": "application/json" },
1760
+ body: JSON.stringify(e)
1761
+ }));
1762
+ return a(s, "保存索引仓库失败");
1763
+ }
1764
+ async function bs(e, n = "") {
1765
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1766
+ `${r}/admin/indexer/repos/${encodeURIComponent(e)}${t}`,
1767
+ I({ method: "DELETE" })
1768
+ );
1769
+ return a(s, "删除索引仓库失败");
1770
+ }
1771
+ async function As(e, n, t = "") {
1772
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(
1773
+ `${r}/admin/indexer/repos/${encodeURIComponent(
1774
+ e
1775
+ )}/enabled${s}`,
1776
+ I({
1777
+ method: "PUT",
1778
+ headers: { "Content-Type": "application/json" },
1779
+ body: JSON.stringify({ enabled: n })
1780
+ })
1781
+ );
1782
+ return a(o, "切换仓库启停失败");
1783
+ }
1784
+ async function Us(e, n = "") {
1785
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1786
+ `${r}/admin/indexer/repos/${encodeURIComponent(
1787
+ e
1788
+ )}/rebuild${t}`,
1789
+ I({ method: "POST" })
1790
+ );
1791
+ return a(s, "触发重建失败");
1792
+ }
1793
+ async function Es(e = "") {
1794
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/admin/indexer/poll${n}`, I({
1795
+ method: "POST"
1796
+ }));
1797
+ return a(t, "触发轮询失败");
1798
+ }
1799
+ async function Os(e = "") {
1800
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(
1801
+ `${r}/admin/notify-channel/list${n}`,
1802
+ c
1803
+ ), s = await a(
1804
+ t,
1805
+ "获取消息渠道状态失败"
1806
+ );
1807
+ return Array.isArray(s == null ? void 0 : s.channels) ? s.channels : [];
1808
+ }
1809
+ async function Ps(e, n = "") {
1810
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/admin/notify-channel/test${t}`, {
1811
+ ...c,
1812
+ method: "POST",
1813
+ headers: { "Content-Type": "application/json" },
1814
+ body: JSON.stringify(e)
1815
+ });
1816
+ return a(s, "测试发送失败");
1817
+ }
1818
+ async function ks(e, n = "") {
1819
+ const t = await i(
1820
+ `${r}/admin/schedule-task${y({
1821
+ token: n,
1822
+ task_type: e.taskType,
1823
+ page: e.page,
1824
+ size: e.size
1825
+ })}`,
1826
+ c
1827
+ );
1828
+ return a(t, "查询定时任务模版失败");
1829
+ }
1830
+ async function Rs(e, n = "") {
1831
+ const t = await i(
1832
+ `${r}/admin/schedule-task${y({ token: n })}`,
1833
+ {
1834
+ ...c,
1835
+ method: "POST",
1836
+ headers: { "Content-Type": "application/json" },
1837
+ body: JSON.stringify(e)
1838
+ }
1839
+ );
1840
+ return a(t, "新建定时任务模版失败");
1841
+ }
1842
+ async function vs(e, n, t = "") {
1843
+ const s = await i(
1844
+ `${r}/admin/schedule-task/${encodeURIComponent(
1845
+ e
1846
+ )}${y({ token: t })}`,
1847
+ {
1848
+ ...c,
1849
+ method: "PUT",
1850
+ headers: { "Content-Type": "application/json" },
1851
+ body: JSON.stringify(n)
1852
+ }
1853
+ );
1854
+ return a(s, "更新定时任务模版失败");
1855
+ }
1856
+ async function js(e, n, t = "") {
1857
+ const s = await i(
1858
+ `${r}/admin/schedule-task/${encodeURIComponent(
1859
+ e
1860
+ )}/toggle${y({ token: t })}`,
1861
+ {
1862
+ ...c,
1863
+ method: "POST",
1864
+ headers: { "Content-Type": "application/json" },
1865
+ body: JSON.stringify({ enabled: n })
1866
+ }
1867
+ );
1868
+ return a(s, "切换模版状态失败");
1869
+ }
1870
+ async function Ns(e, n = "") {
1871
+ const t = await i(
1872
+ `${r}/admin/schedule-task/${encodeURIComponent(
1873
+ e
1874
+ )}/activate${y({ token: n })}`,
1875
+ { ...c, method: "POST" }
1876
+ );
1877
+ return a(t, "激活模版失败");
1878
+ }
1879
+ async function qs(e, n = "") {
1880
+ const t = await i(
1881
+ `${r}/admin/schedule-task/${encodeURIComponent(
1882
+ e
1883
+ )}${y({ token: n })}`,
1884
+ { ...c, method: "DELETE" }
1885
+ );
1886
+ return a(t, "删除模版失败");
1887
+ }
1888
+ async function Ds(e, n = "") {
1889
+ const t = await i(
1890
+ `${r}/admin/schedule-task/${encodeURIComponent(
1891
+ e
1892
+ )}/run${y({ token: n })}`,
1893
+ { ...c, method: "POST" }
1894
+ );
1895
+ return a(t, "手动执行失败");
1896
+ }
1897
+ async function Js(e, n = "") {
1898
+ const t = await i(
1899
+ `${r}/admin/schedule-task/history-all${y({
1900
+ token: n,
1901
+ task_type: e.taskType,
1902
+ page: e.page,
1903
+ size: e.size
1904
+ })}`,
1905
+ c
1906
+ );
1907
+ return a(t, "查询运行记录失败");
1908
+ }
1909
+ async function Ls(e, n, t, s, o = "") {
1910
+ const d = o ? `?token=${encodeURIComponent(o)}` : "", u = await i(
1911
+ `${r}/admin/permissions/users/${e}/roles${d}`,
1912
+ {
1913
+ ...c,
1914
+ method: "PUT",
1915
+ headers: { "Content-Type": "application/json" },
1916
+ body: JSON.stringify({ staffName: n, accountNo: t, roleIds: s })
1917
+ }
1918
+ );
1919
+ return a(u, "更新用户角色失败");
1920
+ }
1921
+ async function Ms(e, n = "") {
1922
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1923
+ `${r}/admin/permissions/users/${e}/detail${t}`,
1924
+ c
1925
+ );
1926
+ return a(s, "获取用户授权详情失败");
1927
+ }
1928
+ async function xs(e = "") {
1929
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", t = await i(`${r}/admin/roles${n}`, c);
1930
+ return a(t, "获取角色列表失败") ?? [];
1931
+ }
1932
+ async function zs(e, n = "") {
1933
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(
1934
+ `${r}/admin/roles/${e}${t}`,
1935
+ c
1936
+ );
1937
+ return a(s, "获取角色详情失败");
1938
+ }
1939
+ async function Fs(e, n = "") {
1940
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/admin/roles${t}`, {
1941
+ ...c,
1942
+ method: "POST",
1943
+ headers: { "Content-Type": "application/json" },
1944
+ body: JSON.stringify(e)
1945
+ });
1946
+ return a(s, "创建角色失败");
1947
+ }
1948
+ async function Bs(e, n, t = "") {
1949
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(`${r}/admin/roles/${e}${s}`, {
1950
+ ...c,
1951
+ method: "PUT",
1952
+ headers: { "Content-Type": "application/json" },
1953
+ body: JSON.stringify(n)
1954
+ });
1955
+ return a(o, "更新角色失败");
1956
+ }
1957
+ async function Ws(e, n = "") {
1958
+ const t = n ? `?token=${encodeURIComponent(n)}` : "", s = await i(`${r}/admin/roles/${e}${t}`, {
1959
+ ...c,
1960
+ method: "DELETE"
1961
+ });
1962
+ return a(s, "删除角色失败");
1963
+ }
1964
+ async function Hs(e, n, t = "") {
1965
+ const s = t ? `?token=${encodeURIComponent(t)}` : "", o = await i(`${r}/admin/roles/${e}/users${s}`, {
1966
+ ...c,
1967
+ method: "PUT",
1968
+ headers: { "Content-Type": "application/json" },
1969
+ body: JSON.stringify({ users: n })
1970
+ });
1971
+ return a(o, "更新角色成员失败");
1972
+ }
1973
+ export {
1974
+ Nn as $,
1975
+ Bn as A,
1976
+ w as B,
1977
+ ut as C,
1978
+ dt as D,
1979
+ st as E,
1980
+ ct as F,
1981
+ Kn as G,
1982
+ Wn as H,
1983
+ Hn as I,
1984
+ Fn as J,
1985
+ yn as K,
1986
+ zn as L,
1987
+ ln as M,
1988
+ tt as N,
1989
+ nt as O,
1990
+ et as P,
1991
+ bn as Q,
1992
+ Yn as R,
1993
+ Xn as S,
1994
+ oe as T,
1995
+ Zn as U,
1996
+ Gn as V,
1997
+ Qn as W,
1998
+ Vn as X,
1999
+ Jn as Y,
2000
+ Dn as Z,
2001
+ qn as _,
2002
+ T as a,
2003
+ _n as a$,
2004
+ jn as a0,
2005
+ vn as a1,
2006
+ Mn as a2,
2007
+ Ln as a3,
2008
+ Pn as a4,
2009
+ On as a5,
2010
+ kn as a6,
2011
+ Rn as a7,
2012
+ En as a8,
2013
+ rt as a9,
2014
+ cs as aA,
2015
+ xt as aB,
2016
+ lt as aC,
2017
+ us as aD,
2018
+ ms as aE,
2019
+ cn as aF,
2020
+ Ss as aG,
2021
+ ve as aH,
2022
+ Rt as aI,
2023
+ fs as aJ,
2024
+ Lt as aK,
2025
+ mt as aL,
2026
+ Se as aM,
2027
+ wn as aN,
2028
+ Xe as aO,
2029
+ as as aP,
2030
+ is as aQ,
2031
+ rs as aR,
2032
+ rn as aS,
2033
+ on as aT,
2034
+ an as aU,
2035
+ nn as aV,
2036
+ tn as aW,
2037
+ sn as aX,
2038
+ r as aY,
2039
+ ws as aZ,
2040
+ Ts as a_,
2041
+ at as aa,
2042
+ ot as ab,
2043
+ Tn as ac,
2044
+ U as ad,
2045
+ hn as ae,
2046
+ Vt as af,
2047
+ Pt as ag,
2048
+ Nt as ah,
2049
+ kt as ai,
2050
+ vt as aj,
2051
+ jt as ak,
2052
+ qt as al,
2053
+ Mt as am,
2054
+ Jt as an,
2055
+ Tt as ao,
2056
+ je as ap,
2057
+ gs as aq,
2058
+ Ht as ar,
2059
+ $t as as,
2060
+ zt as at,
2061
+ Ft as au,
2062
+ Dt as av,
2063
+ Wt as aw,
2064
+ Bt as ax,
2065
+ Kt as ay,
2066
+ Cn as az,
2067
+ Un as b,
2068
+ a as b0,
2069
+ Ae as b1,
2070
+ hs as b2,
2071
+ es as b3,
2072
+ it as b4,
2073
+ ps as b5,
2074
+ Ye as b6,
2075
+ ht as b7,
2076
+ gt as b8,
2077
+ St as b9,
2078
+ xs as bA,
2079
+ zs as bB,
2080
+ Fs as bC,
2081
+ Bs as bD,
2082
+ Ws as bE,
2083
+ Hs as bF,
2084
+ Ms as bG,
2085
+ Ls as bH,
2086
+ ss as bI,
2087
+ ns as bJ,
2088
+ ts as bK,
2089
+ Ot as bL,
2090
+ Et as bM,
2091
+ os as bN,
2092
+ ds as bO,
2093
+ Js as bP,
2094
+ ks as bQ,
2095
+ vs as bR,
2096
+ Rs as bS,
2097
+ js as bT,
2098
+ Ns as bU,
2099
+ Ds as bV,
2100
+ qs as bW,
2101
+ wt as bX,
2102
+ Zt as bY,
2103
+ ls as bZ,
2104
+ $s as b_,
2105
+ yt as ba,
2106
+ ft as bb,
2107
+ pt as bc,
2108
+ G as bd,
2109
+ $e as be,
2110
+ Qt as bf,
2111
+ Gt as bg,
2112
+ ys as bh,
2113
+ Ct as bi,
2114
+ _t as bj,
2115
+ It as bk,
2116
+ pn as bl,
2117
+ Is as bm,
2118
+ Cs as bn,
2119
+ Us as bo,
2120
+ As as bp,
2121
+ bs as bq,
2122
+ Es as br,
2123
+ fn as bs,
2124
+ mn as bt,
2125
+ _s as bu,
2126
+ Os as bv,
2127
+ Ps as bw,
2128
+ bt as bx,
2129
+ At as by,
2130
+ Ut as bz,
2131
+ Je as c,
2132
+ In as d,
2133
+ gn as e,
2134
+ g as f,
2135
+ B as g,
2136
+ Xt as h,
2137
+ le as i,
2138
+ Yt as j,
2139
+ Ge as k,
2140
+ $n as l,
2141
+ Sn as m,
2142
+ en as n,
2143
+ dn as o,
2144
+ An as p,
2145
+ Ue as q,
2146
+ ye as r,
2147
+ xn as s,
2148
+ m as t,
2149
+ C as u,
2150
+ un as v,
2151
+ Ee as w,
2152
+ Ze as x,
2153
+ pe as y,
2154
+ Qe as z
2155
+ };