@dotobokuri/fleet-console 1.5.0 → 1.5.2

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 (61) hide show
  1. package/AGENTS.md +1 -1
  2. package/dist/cli-bin.mjs +179 -47
  3. package/dist/cli.mjs +179 -47
  4. package/dist/client/assets/{_baseUniq-Bx4tjoo0.js → _baseUniq-DZtdSbAI.js} +1 -1
  5. package/dist/client/assets/{arc-D2VjIIjy.js → arc-DtGJnR7c.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-Q4EWVU46-BZwp8oQE.js → architectureDiagram-Q4EWVU46-LArxXm6l.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-DXYQGD6D-BFOEZdvM.js → blockDiagram-DXYQGD6D-QIMR_huT.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-AHTNJAMY-CSR3Fk7i.js → c4Diagram-AHTNJAMY-CZtY_K-W.js} +1 -1
  9. package/dist/client/assets/channel-B00fySL1.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-CS98Xbj0.js → chunk-4BX2VUAB-BGzO5-sq.js} +1 -1
  11. package/dist/client/assets/{chunk-4TB4RGXK-CS16wI2h.js → chunk-4TB4RGXK-WdZ6ouQ-.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-CIO8gXOu.js → chunk-55IACEB6-DWqU4cvi.js} +1 -1
  13. package/dist/client/assets/{chunk-EDXVE4YY-Dp62WKTv.js → chunk-EDXVE4YY-DKVvBdal.js} +1 -1
  14. package/dist/client/assets/{chunk-FMBD7UC4-P-iX66To.js → chunk-FMBD7UC4-hFxQ1nPT.js} +1 -1
  15. package/dist/client/assets/{chunk-OYMX7WX6-KYR0A13Y.js → chunk-OYMX7WX6-CODPvRHn.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-Bxf_1qP2.js → chunk-QZHKN3VN-DZEyU080.js} +1 -1
  17. package/dist/client/assets/{chunk-YZCP3GAM-fOywdyl7.js → chunk-YZCP3GAM-CbT2_Nto.js} +1 -1
  18. package/dist/client/assets/classDiagram-6PBFFD2Q-YQ7U8SzS.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-HSJHXN6E-YQ7U8SzS.js +1 -0
  20. package/dist/client/assets/clone-BAW9t59_.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-CFVfzokO.js → cose-bilkent-S5V4N54A-XzqSqD-C.js} +1 -1
  22. package/dist/client/assets/{dagre-KV5264BT-CfFJpw9h.js → dagre-KV5264BT-CgF9Z5iF.js} +1 -1
  23. package/dist/client/assets/{diagram-5BDNPKRD-ULNbraD0.js → diagram-5BDNPKRD-oKxvNLqy.js} +1 -1
  24. package/dist/client/assets/{diagram-G4DWMVQ6-BbMRdy0R.js → diagram-G4DWMVQ6-D0Tf7aYg.js} +1 -1
  25. package/dist/client/assets/{diagram-MMDJMWI5-xMtFUvhH.js → diagram-MMDJMWI5-XTM7fwZ-.js} +1 -1
  26. package/dist/client/assets/{diagram-TYMM5635-zoxhe65u.js → diagram-TYMM5635-DEOQIgV5.js} +1 -1
  27. package/dist/client/assets/{erDiagram-SMLLAGMA-Bsi2YaEX.js → erDiagram-SMLLAGMA-Cx909qfM.js} +1 -1
  28. package/dist/client/assets/{flowDiagram-DWJPFMVM-CJi0VEgQ.js → flowDiagram-DWJPFMVM-CHyV1yID.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-T4ZO3ILL-C6zhjR-p.js → ganttDiagram-T4ZO3ILL-BTzCi2HJ.js} +1 -1
  30. package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-BWwF6PIg.js → gitGraphDiagram-UUTBAWPF-CEulcOho.js} +1 -1
  31. package/dist/client/assets/{graph-B_LOrVuH.js → graph-DVXKTCe8.js} +1 -1
  32. package/dist/client/assets/{index-CUwIAcWy.js → index-CwNYg7kD.js} +126 -126
  33. package/dist/client/assets/{index-qy_LXUbN.css → index-rZEjC7rF.css} +1 -1
  34. package/dist/client/assets/{infoDiagram-42DDH7IO-lGXnGt9J.js → infoDiagram-42DDH7IO-EHnanSdn.js} +1 -1
  35. package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BOLdpalb.js → ishikawaDiagram-UXIWVN3A-DxlZOIcm.js} +1 -1
  36. package/dist/client/assets/{journeyDiagram-VCZTEJTY-BL3YNELi.js → journeyDiagram-VCZTEJTY-Dl4o2ry6.js} +1 -1
  37. package/dist/client/assets/{kanban-definition-6JOO6SKY-hr-sYeeB.js → kanban-definition-6JOO6SKY-wW9OL1Nm.js} +1 -1
  38. package/dist/client/assets/{layout-BZ-MMmoc.js → layout-LYsLWyYG.js} +1 -1
  39. package/dist/client/assets/{linear-DC89C5fp.js → linear-CQknB12x.js} +1 -1
  40. package/dist/client/assets/{mermaid.core-CwFfQIZ3.js → mermaid.core-iv2IeunS.js} +4 -4
  41. package/dist/client/assets/{min-CQCIo8ng.js → min-kPNBJbij.js} +1 -1
  42. package/dist/client/assets/{mindmap-definition-QFDTVHPH-DST5EYZ1.js → mindmap-definition-QFDTVHPH-D0mgmaro.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-DEJITSTG-B1cKU1RL.js → pieDiagram-DEJITSTG-BuyDCQjg.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-34T5L4WZ-BAoS3KE9.js → quadrantDiagram-34T5L4WZ-CWWBRKlz.js} +1 -1
  45. package/dist/client/assets/{requirementDiagram-MS252O5E-1Dy-goiy.js → requirementDiagram-MS252O5E-BIgPKlbk.js} +1 -1
  46. package/dist/client/assets/{sankeyDiagram-XADWPNL6-BiGdJMmS.js → sankeyDiagram-XADWPNL6-q2RMkD0h.js} +1 -1
  47. package/dist/client/assets/{sequenceDiagram-FGHM5R23-BF2eGtl0.js → sequenceDiagram-FGHM5R23-oD9DHVCm.js} +1 -1
  48. package/dist/client/assets/{stateDiagram-FHFEXIEX-Bbe8i846.js → stateDiagram-FHFEXIEX-fSJWdemp.js} +1 -1
  49. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Dhn8tFKg.js +1 -0
  50. package/dist/client/assets/{timeline-definition-GMOUNBTQ-C57TZcAM.js → timeline-definition-GMOUNBTQ-DGqMN4UU.js} +1 -1
  51. package/dist/client/assets/{vennDiagram-DHZGUBPP-CCLKJVMf.js → vennDiagram-DHZGUBPP-BX6MaNWJ.js} +1 -1
  52. package/dist/client/assets/{wardley-RL74JXVD-CkN25AoB.js → wardley-RL74JXVD-DaYQb95X.js} +1 -1
  53. package/dist/client/assets/{wardleyDiagram-NUSXRM2D-D7-EokFc.js → wardleyDiagram-NUSXRM2D-tB4_TAZs.js} +1 -1
  54. package/dist/client/assets/{xychartDiagram-5P7HB3ND-Dr1PKcCW.js → xychartDiagram-5P7HB3ND-CMd9bJvb.js} +1 -1
  55. package/dist/client/index.html +2 -2
  56. package/package.json +1 -1
  57. package/dist/client/assets/channel-DEE95baa.js +0 -1
  58. package/dist/client/assets/classDiagram-6PBFFD2Q-C48o24xA.js +0 -1
  59. package/dist/client/assets/classDiagram-v2-HSJHXN6E-C48o24xA.js +0 -1
  60. package/dist/client/assets/clone-UUGnmCaX.js +0 -1
  61. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-C5NCIJbi.js +0 -1
package/dist/cli.mjs CHANGED
@@ -1094,10 +1094,10 @@ function mergeDefs(...defs) {
1094
1094
  function cloneDef(schema) {
1095
1095
  return mergeDefs(schema._zod.def);
1096
1096
  }
1097
- function getElementAtPath(obj, path18) {
1098
- if (!path18)
1097
+ function getElementAtPath(obj, path19) {
1098
+ if (!path19)
1099
1099
  return obj;
1100
- return path18.reduce((acc, key) => acc?.[key], obj);
1100
+ return path19.reduce((acc, key) => acc?.[key], obj);
1101
1101
  }
1102
1102
  function promiseAllObject(promisesObj) {
1103
1103
  const keys = Object.keys(promisesObj);
@@ -1506,11 +1506,11 @@ function explicitlyAborted(x, startIndex = 0) {
1506
1506
  }
1507
1507
  return false;
1508
1508
  }
1509
- function prefixIssues(path18, issues) {
1509
+ function prefixIssues(path19, issues) {
1510
1510
  return issues.map((iss) => {
1511
1511
  var _a3;
1512
1512
  (_a3 = iss).path ?? (_a3.path = []);
1513
- iss.path.unshift(path18);
1513
+ iss.path.unshift(path19);
1514
1514
  return iss;
1515
1515
  });
1516
1516
  }
@@ -1657,16 +1657,16 @@ function flattenError(error51, mapper = (issue2) => issue2.message) {
1657
1657
  }
1658
1658
  function formatError(error51, mapper = (issue2) => issue2.message) {
1659
1659
  const fieldErrors = { _errors: [] };
1660
- const processError = (error52, path18 = []) => {
1660
+ const processError = (error52, path19 = []) => {
1661
1661
  for (const issue2 of error52.issues) {
1662
1662
  if (issue2.code === "invalid_union" && issue2.errors.length) {
1663
- issue2.errors.map((issues) => processError({ issues }, [...path18, ...issue2.path]));
1663
+ issue2.errors.map((issues) => processError({ issues }, [...path19, ...issue2.path]));
1664
1664
  } else if (issue2.code === "invalid_key") {
1665
- processError({ issues: issue2.issues }, [...path18, ...issue2.path]);
1665
+ processError({ issues: issue2.issues }, [...path19, ...issue2.path]);
1666
1666
  } else if (issue2.code === "invalid_element") {
1667
- processError({ issues: issue2.issues }, [...path18, ...issue2.path]);
1667
+ processError({ issues: issue2.issues }, [...path19, ...issue2.path]);
1668
1668
  } else {
1669
- const fullpath = [...path18, ...issue2.path];
1669
+ const fullpath = [...path19, ...issue2.path];
1670
1670
  if (fullpath.length === 0) {
1671
1671
  fieldErrors._errors.push(mapper(issue2));
1672
1672
  } else {
@@ -1693,17 +1693,17 @@ function formatError(error51, mapper = (issue2) => issue2.message) {
1693
1693
  }
1694
1694
  function treeifyError(error51, mapper = (issue2) => issue2.message) {
1695
1695
  const result = { errors: [] };
1696
- const processError = (error52, path18 = []) => {
1696
+ const processError = (error52, path19 = []) => {
1697
1697
  var _a3, _b;
1698
1698
  for (const issue2 of error52.issues) {
1699
1699
  if (issue2.code === "invalid_union" && issue2.errors.length) {
1700
- issue2.errors.map((issues) => processError({ issues }, [...path18, ...issue2.path]));
1700
+ issue2.errors.map((issues) => processError({ issues }, [...path19, ...issue2.path]));
1701
1701
  } else if (issue2.code === "invalid_key") {
1702
- processError({ issues: issue2.issues }, [...path18, ...issue2.path]);
1702
+ processError({ issues: issue2.issues }, [...path19, ...issue2.path]);
1703
1703
  } else if (issue2.code === "invalid_element") {
1704
- processError({ issues: issue2.issues }, [...path18, ...issue2.path]);
1704
+ processError({ issues: issue2.issues }, [...path19, ...issue2.path]);
1705
1705
  } else {
1706
- const fullpath = [...path18, ...issue2.path];
1706
+ const fullpath = [...path19, ...issue2.path];
1707
1707
  if (fullpath.length === 0) {
1708
1708
  result.errors.push(mapper(issue2));
1709
1709
  continue;
@@ -1735,8 +1735,8 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
1735
1735
  }
1736
1736
  function toDotPath(_path) {
1737
1737
  const segs = [];
1738
- const path18 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
1739
- for (const seg of path18) {
1738
+ const path19 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
1739
+ for (const seg of path19) {
1740
1740
  if (typeof seg === "number")
1741
1741
  segs.push(`[${seg}]`);
1742
1742
  else if (typeof seg === "symbol")
@@ -14400,13 +14400,13 @@ function resolveRef(ref, ctx) {
14400
14400
  if (!ref.startsWith("#")) {
14401
14401
  throw new Error("External $ref is not supported, only local refs (#/...) are allowed");
14402
14402
  }
14403
- const path18 = ref.slice(1).split("/").filter(Boolean);
14404
- if (path18.length === 0) {
14403
+ const path19 = ref.slice(1).split("/").filter(Boolean);
14404
+ if (path19.length === 0) {
14405
14405
  return ctx.rootSchema;
14406
14406
  }
14407
14407
  const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions";
14408
- if (path18[0] === defsKey) {
14409
- const key = path18[1];
14408
+ if (path19[0] === defsKey) {
14409
+ const key = path19[1];
14410
14410
  if (!key || !ctx.defs[key]) {
14411
14411
  throw new Error(`Reference not found: ${ref}`);
14412
14412
  }
@@ -33482,6 +33482,10 @@ function writeAggregateObserverEvents(req, res, workspaces, store2, resolveWorks
33482
33482
  }
33483
33483
  const unsubscribers = options.subscribeAll ? [
33484
33484
  store2.subscribeAll((event) => {
33485
+ if (isSessionUpdatedEvent(event)) {
33486
+ writeEvent(res, 0, event.type, { session: event.session });
33487
+ return;
33488
+ }
33485
33489
  writeEvent(res, event.id, event.type, { tenant: resolvedWorkspaceSnapshot(resolveWorkspace, event.tenantId), event });
33486
33490
  })
33487
33491
  ] : workspaces.map(
@@ -33504,6 +33508,9 @@ function writeEvent(res, id, event, data) {
33504
33508
 
33505
33509
  `);
33506
33510
  }
33511
+ function isSessionUpdatedEvent(event) {
33512
+ return event.type === "session:updated" && "session" in event;
33513
+ }
33507
33514
  function workspaceSnapshot(workspace) {
33508
33515
  return {
33509
33516
  tenantId: workspace.tenantId,
@@ -33539,6 +33546,7 @@ function createConsoleObservabilityStore(deps = {}) {
33539
33546
  const truncationByTenant = /* @__PURE__ */ new Map();
33540
33547
  const jobsByTenant = /* @__PURE__ */ new Map();
33541
33548
  const terminalSessionsById = /* @__PURE__ */ new Map();
33549
+ const terminalSequenceByTheater = /* @__PURE__ */ new Map();
33542
33550
  const listenersByTenant = /* @__PURE__ */ new Map();
33543
33551
  const allListeners = /* @__PURE__ */ new Set();
33544
33552
  let nextObservedId = 1;
@@ -33702,13 +33710,18 @@ function createConsoleObservabilityStore(deps = {}) {
33702
33710
  function createPendingTerminalSession(input) {
33703
33711
  if (!path9__default.isAbsolute(input.cwd)) throw new Error("Terminal session cwd must be absolute");
33704
33712
  const createdAt = input.createdAt ?? now();
33713
+ const canonicalCwd = canonicalizeTheaterPathSync(input.cwd);
33714
+ const theaterId = workspaceHash(canonicalCwd);
33715
+ const sequence = (terminalSequenceByTheater.get(theaterId) ?? 0) + 1;
33716
+ terminalSequenceByTheater.set(theaterId, sequence);
33705
33717
  const state = {
33706
33718
  sessionId: input.sessionId,
33707
33719
  cwd: input.cwd,
33708
- canonicalCwd: canonicalizeTheaterPathSync(input.cwd),
33720
+ canonicalCwd,
33709
33721
  cwdLabel: path9__default.basename(input.cwd) || input.cwd,
33722
+ sequence,
33710
33723
  createdAt,
33711
- theaterId: workspaceHash(canonicalizeTheaterPathSync(input.cwd)),
33724
+ theaterId,
33712
33725
  terminalSessionId: input.sessionId,
33713
33726
  status: "starting"
33714
33727
  };
@@ -33724,6 +33737,21 @@ function createConsoleObservabilityStore(deps = {}) {
33724
33737
  session.status = status;
33725
33738
  return toTerminalSessionInfo(session);
33726
33739
  }
33740
+ function renameTerminalSession(sessionId, rawLabel) {
33741
+ const session = terminalSessionsById.get(sessionId);
33742
+ if (!session) return null;
33743
+ const label = rawLabel.trim().slice(0, 200);
33744
+ if (label.length === 0) {
33745
+ delete session.label;
33746
+ } else {
33747
+ session.label = label;
33748
+ }
33749
+ return toTerminalSessionInfo(session);
33750
+ }
33751
+ function notifySessionUpdated(session) {
33752
+ const event = { type: "session:updated", session };
33753
+ for (const listener of allListeners) listener(event);
33754
+ }
33727
33755
  function removeTerminalSession(sessionId) {
33728
33756
  return terminalSessionsById.delete(sessionId);
33729
33757
  }
@@ -33735,6 +33763,7 @@ function createConsoleObservabilityStore(deps = {}) {
33735
33763
  truncationByTenant.clear();
33736
33764
  jobsByTenant.clear();
33737
33765
  terminalSessionsById.clear();
33766
+ terminalSequenceByTheater.clear();
33738
33767
  listenersByTenant.clear();
33739
33768
  allListeners.clear();
33740
33769
  }
@@ -33754,6 +33783,8 @@ function createConsoleObservabilityStore(deps = {}) {
33754
33783
  pushEvents,
33755
33784
  register,
33756
33785
  createPendingTerminalSession,
33786
+ notifySessionUpdated,
33787
+ renameTerminalSession,
33757
33788
  subscribe,
33758
33789
  subscribeAll,
33759
33790
  updateTerminalSessionStatus,
@@ -33835,6 +33866,8 @@ function toTerminalSessionInfo(state) {
33835
33866
  sessionId: state.sessionId,
33836
33867
  terminalSessionId: state.terminalSessionId,
33837
33868
  cwdLabel: state.cwdLabel,
33869
+ sequence: state.sequence,
33870
+ label: state.label,
33838
33871
  status: state.status,
33839
33872
  createdAt: state.createdAt,
33840
33873
  theaterId: state.theaterId,
@@ -34166,6 +34199,77 @@ async function runNativeCommand(bin, args) {
34166
34199
  const result = await execFileAsync(bin, [...args], { timeout: DIALOG_TIMEOUT_MS });
34167
34200
  return { stdout: result.stdout, stderr: result.stderr };
34168
34201
  }
34202
+ var DEFAULT_WINDOWS_PATHEXT = ".COM;.EXE;.BAT;.CMD";
34203
+ var WINDOWS_PATH_SEPARATOR = ";";
34204
+ var WINDOWS_SHIM_EXTENSIONS = /* @__PURE__ */ new Set([".cmd", ".bat"]);
34205
+ var CMD_EXPANSION_SENSITIVE_PATTERN = /[%^]/;
34206
+ function resolvePathBinary(command2, env, options = {}) {
34207
+ const platform = options.platform ?? process.platform;
34208
+ const isWindows2 = platform === "win32";
34209
+ const pathValue = isWindows2 ? env.Path ?? env.PATH ?? "" : env.PATH ?? "";
34210
+ const pathExts = isWindows2 ? parsePathExt(env.PATHEXT) : [""];
34211
+ const resolved = findOnPath(command2, pathValue, pathExts, platform, options.exists ?? fs4__default.existsSync);
34212
+ return resolved ? wrapWindowsShim(resolved, env, platform) : void 0;
34213
+ }
34214
+ function wrapWindowsShim(resolved, env, platform) {
34215
+ if (platform !== "win32" || !WINDOWS_SHIM_EXTENSIONS.has(path9__default.extname(resolved).toLowerCase())) {
34216
+ return { bin: resolved, prefixArgs: [] };
34217
+ }
34218
+ rejectCmdExpansionSensitiveShim(resolved);
34219
+ return {
34220
+ bin: env.ComSpec ?? "cmd.exe",
34221
+ prefixArgs: ["/d", "/s", "/c", "call", forceWindowsArgQuoting(resolved)]
34222
+ };
34223
+ }
34224
+ function rejectCmdExpansionSensitiveShim(resolved) {
34225
+ if (CMD_EXPANSION_SENSITIVE_PATTERN.test(resolved)) {
34226
+ throw new Error(`Refusing to run Windows shim path with cmd.exe expansion-sensitive characters (% or ^): ${resolved}`);
34227
+ }
34228
+ }
34229
+ function forceWindowsArgQuoting(value) {
34230
+ return `${value} `;
34231
+ }
34232
+ function findOnPath(bin, pathValue, pathExts, platform, exists) {
34233
+ const pathSeparator = platform === "win32" ? WINDOWS_PATH_SEPARATOR : path9__default.delimiter;
34234
+ if (hasPathSeparator(bin, platform) || path9__default.isAbsolute(bin)) {
34235
+ return resolveWithExtensions(bin, pathExts, platform, exists);
34236
+ }
34237
+ for (const entry of pathValue.split(pathSeparator)) {
34238
+ const searchDir = entry.length === 0 ? "." : entry;
34239
+ const candidate = resolveWithExtensions(path9__default.join(searchDir, bin), pathExts, platform, exists);
34240
+ if (candidate) {
34241
+ return candidate;
34242
+ }
34243
+ }
34244
+ return void 0;
34245
+ }
34246
+ function resolveWithExtensions(candidate, pathExts, platform, exists) {
34247
+ if (platform !== "win32" || path9__default.extname(candidate).length > 0) {
34248
+ return exists(candidate) ? candidate : void 0;
34249
+ }
34250
+ for (const ext of pathExts) {
34251
+ if (ext.length === 0) {
34252
+ continue;
34253
+ }
34254
+ const withExt = `${candidate}${ext}`;
34255
+ if (exists(withExt)) {
34256
+ return withExt;
34257
+ }
34258
+ }
34259
+ return exists(candidate) ? candidate : void 0;
34260
+ }
34261
+ function hasPathSeparator(value, platform) {
34262
+ if (value.includes("/")) {
34263
+ return true;
34264
+ }
34265
+ return platform === "win32" && value.includes("\\");
34266
+ }
34267
+ function parsePathExt(pathExt) {
34268
+ const raw = pathExt && pathExt.trim().length > 0 ? pathExt : DEFAULT_WINDOWS_PATHEXT;
34269
+ return raw.split(WINDOWS_PATH_SEPARATOR).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
34270
+ }
34271
+
34272
+ // src/terminal/launch.ts
34169
34273
  var DEFAULT_TERMINAL_CWD_FALLBACK = os22__default.homedir;
34170
34274
  var TERMINAL_TERM = "xterm-256color";
34171
34275
  var FLEET_HEADLESS_NATIVE_FLAGS = ["--headless", "--native"];
@@ -34176,16 +34280,26 @@ function createDefaultTerminalLaunchResolver(deps = {}) {
34176
34280
  const execPath = deps.execPath ?? process4.execPath;
34177
34281
  const homedir2 = deps.homedir ?? DEFAULT_TERMINAL_CWD_FALLBACK;
34178
34282
  const exists = deps.exists ?? fs4__default.existsSync;
34283
+ const platform = deps.platform ?? process4.platform;
34179
34284
  const release = deps.release ?? readFleetConsoleRelease();
34180
34285
  return (selectedCwd, context) => {
34181
34286
  const cwd = selectedCwd || baseCwd || homedir2();
34182
34287
  if (context?.kind === "shell") {
34183
- return { bin: resolveUserShell(env), args: [], cwd, env: buildShellLaunchEnv(env) };
34288
+ const shell = resolveWindowsLaunchBinary(resolveUserShell(env, platform), [], env, exists, platform, "user shell");
34289
+ return { bin: shell.bin, args: shell.args, cwd, env: buildShellLaunchEnv(env) };
34184
34290
  }
34185
34291
  const launchEnv = buildLaunchEnv(env, cwd, context?.sessionId);
34186
34292
  const override = parseTerminalCommand(env.FLEET_TERMINAL_CMD);
34187
34293
  if (override) {
34188
- return { ...override, cwd, env: launchEnv };
34294
+ const resolvedOverride = resolveWindowsLaunchBinary(
34295
+ override.bin,
34296
+ override.args,
34297
+ env,
34298
+ exists,
34299
+ platform,
34300
+ "FLEET_TERMINAL_CMD"
34301
+ );
34302
+ return { ...resolvedOverride, cwd, env: launchEnv };
34189
34303
  }
34190
34304
  if (release.channel === "local") {
34191
34305
  const localCli = resolveSiblingFleetCliEntry(release.packageRoot, exists);
@@ -34196,7 +34310,15 @@ function createDefaultTerminalLaunchResolver(deps = {}) {
34196
34310
  }
34197
34311
  return { bin: execPath, args: [localCli, ...FLEET_HEADLESS_NATIVE_FLAGS], cwd, env: launchEnv };
34198
34312
  }
34199
- return { bin: "fleet", args: [...FLEET_HEADLESS_NATIVE_FLAGS], cwd, env: launchEnv };
34313
+ const stableFleet = resolveWindowsLaunchBinary(
34314
+ "fleet",
34315
+ [...FLEET_HEADLESS_NATIVE_FLAGS],
34316
+ env,
34317
+ exists,
34318
+ platform,
34319
+ "fleet stable terminal binary"
34320
+ );
34321
+ return { ...stableFleet, cwd, env: launchEnv };
34200
34322
  };
34201
34323
  }
34202
34324
  function startTerminalShell(launch, size) {
@@ -34209,11 +34331,21 @@ function startTerminalShell(launch, size) {
34209
34331
  name: TERMINAL_TERM
34210
34332
  });
34211
34333
  }
34212
- function resolveUserShell(env) {
34334
+ function resolveUserShell(env, platform) {
34213
34335
  if (env.SHELL) return env.SHELL;
34214
- if (process4.platform === "win32") return env.ComSpec || "powershell.exe";
34336
+ if (platform === "win32") return env.ComSpec || "powershell.exe";
34215
34337
  return "/bin/bash";
34216
34338
  }
34339
+ function resolveWindowsLaunchBinary(bin, args, env, exists, platform, label) {
34340
+ if (platform !== "win32") {
34341
+ return { bin, args };
34342
+ }
34343
+ const resolved = resolvePathBinary(bin, env, { exists, platform });
34344
+ if (!resolved) {
34345
+ throw new Error(`${label} "${bin}" was not found on PATH; provide an absolute path or install it before launching a terminal session.`);
34346
+ }
34347
+ return { bin: resolved.bin, args: [...resolved.prefixArgs, ...args] };
34348
+ }
34217
34349
  function resolveSiblingFleetCliEntry(consolePackageRoot, exists = fs4__default.existsSync) {
34218
34350
  const candidate = expectedSiblingFleetCliEntry(consolePackageRoot);
34219
34351
  return exists(candidate) ? candidate : null;
@@ -34245,15 +34377,11 @@ function buildShellLaunchEnv(env) {
34245
34377
  // src/terminal/session-manager.ts
34246
34378
  var DEFAULT_COLS = 80;
34247
34379
  var DEFAULT_ROWS = 24;
34248
- var DEFAULT_GRACE_MS = 18e4;
34249
34380
  var DEFAULT_SCROLLBACK_LIMIT = 512;
34250
34381
  var WS_OPEN_STATE = 1;
34251
34382
  function createTerminalSessionManager(deps) {
34252
34383
  const startShell = deps.startShell ?? startTerminalShell;
34253
- const graceMs = deps.graceMs ?? DEFAULT_GRACE_MS;
34254
34384
  const scrollbackLimit = deps.scrollbackLimit ?? DEFAULT_SCROLLBACK_LIMIT;
34255
- const setTimeoutImpl = deps.setTimeout ?? setTimeout;
34256
- const clearTimeoutImpl = deps.clearTimeout ?? clearTimeout;
34257
34385
  const sessions = /* @__PURE__ */ new Map();
34258
34386
  function canAttach() {
34259
34387
  return true;
@@ -34263,10 +34391,6 @@ function createTerminalSessionManager(deps) {
34263
34391
  if (session.activeSocket && session.activeSocket !== socket) {
34264
34392
  session.activeSocket.close(4e3, "terminal_replaced");
34265
34393
  }
34266
- if (session.graceTimer) {
34267
- clearTimeoutImpl(session.graceTimer);
34268
- session.graceTimer = null;
34269
- }
34270
34394
  session.activeSocket = socket;
34271
34395
  session.pty.resize(session.cols, session.rows);
34272
34396
  replayScrollback(session, socket);
@@ -34298,7 +34422,6 @@ function createTerminalSessionManager(deps) {
34298
34422
  disposables: [],
34299
34423
  scrollback: [],
34300
34424
  activeSocket: null,
34301
- graceTimer: null,
34302
34425
  cols: DEFAULT_COLS,
34303
34426
  rows: DEFAULT_ROWS
34304
34427
  };
@@ -34338,7 +34461,6 @@ function createTerminalSessionManager(deps) {
34338
34461
  function detachSocket(session, socket) {
34339
34462
  if (session.activeSocket !== socket) return;
34340
34463
  session.activeSocket = null;
34341
- session.graceTimer = setTimeoutImpl(() => removeSession(session), graceMs);
34342
34464
  }
34343
34465
  function replayScrollback(session, socket) {
34344
34466
  for (const chunk of session.scrollback) {
@@ -34354,10 +34476,6 @@ function createTerminalSessionManager(deps) {
34354
34476
  }
34355
34477
  function killSession(session, options = {}) {
34356
34478
  const killPty = options.killPty ?? true;
34357
- if (session.graceTimer) {
34358
- clearTimeoutImpl(session.graceTimer);
34359
- session.graceTimer = null;
34360
- }
34361
34479
  session.activeSocket?.close(4001, "terminal_closed");
34362
34480
  session.activeSocket = null;
34363
34481
  for (const disposable of session.disposables) disposable.dispose();
@@ -34499,7 +34617,7 @@ var MAX_BODY_BYTES = 1024 * 1024;
34499
34617
  function createConsoleServer(deps = {}) {
34500
34618
  const host = deps.host ?? DEFAULT_HOST;
34501
34619
  const port = deps.port ?? DEFAULT_PORT;
34502
- const version2 = deps.version ?? (typeof __PKG_VERSION__ === "string" ? __PKG_VERSION__ : "0.0.0-dev");
34620
+ const version2 = deps.version ?? readFleetConsoleRelease().version;
34503
34621
  const channel = readConsoleChannel();
34504
34622
  const carrierRegistry = createCarrierRegistry();
34505
34623
  registerDefaultCarriers(carrierRegistry);
@@ -34519,7 +34637,6 @@ function createConsoleServer(deps = {}) {
34519
34637
  const terminalSessions = createTerminalSessionManager({
34520
34638
  launch: deps.terminalLaunch ?? createDefaultTerminalLaunchResolver(),
34521
34639
  startShell: deps.terminalStartShell,
34522
- graceMs: deps.terminalGraceMs,
34523
34640
  maxSessions: deps.maxTerminalSessions,
34524
34641
  // PTY가 종료되면(예: fleet-cli 종료) 콘솔 세션 목록에서도 제거해 잔존/재실행을 막는다.
34525
34642
  onSessionExit: (sessionId) => observability.removeTerminalSession(sessionId)
@@ -34580,7 +34697,7 @@ function createConsoleServer(deps = {}) {
34580
34697
  }
34581
34698
  const terminalSessionItemMatch = pathname.match(/^\/terminal\/sessions\/([^/]+)$/);
34582
34699
  if (terminalSessionItemMatch) {
34583
- handleTerminalSessionItem(req, res, decodeURIComponent(terminalSessionItemMatch[1] ?? ""));
34700
+ runAsyncHandler(handleTerminalSessionItem(req, res, decodeURIComponent(terminalSessionItemMatch[1] ?? "")), res);
34584
34701
  return;
34585
34702
  }
34586
34703
  if (pathname === "/observer/theaters") {
@@ -34776,8 +34893,8 @@ function createConsoleServer(deps = {}) {
34776
34893
  }
34777
34894
  await createTerminalSessionForCwd(cwd, res);
34778
34895
  }
34779
- function handleTerminalSessionItem(req, res, sessionId) {
34780
- if (req.method !== "DELETE") {
34896
+ async function handleTerminalSessionItem(req, res, sessionId) {
34897
+ if (req.method !== "DELETE" && req.method !== "PATCH") {
34781
34898
  writeJson(res, 405, { error: "Method not allowed" });
34782
34899
  return;
34783
34900
  }
@@ -34785,6 +34902,21 @@ function createConsoleServer(deps = {}) {
34785
34902
  writeJson(res, 401, { error: "unauthorized" });
34786
34903
  return;
34787
34904
  }
34905
+ if (req.method === "PATCH") {
34906
+ const body = await readJsonBody(req);
34907
+ if (!body || body.label !== void 0 && typeof body.label !== "string") {
34908
+ writeJson(res, 400, { error: "invalid_session_label" });
34909
+ return;
34910
+ }
34911
+ const updated = observability.renameTerminalSession(sessionId, body.label ?? "");
34912
+ if (!updated) {
34913
+ writeJson(res, 404, { error: "session_not_found" });
34914
+ return;
34915
+ }
34916
+ observability.notifySessionUpdated(updated);
34917
+ writeJson(res, 200, updated);
34918
+ return;
34919
+ }
34788
34920
  terminalSessions.terminate(sessionId);
34789
34921
  observability.removeTerminalSession(sessionId);
34790
34922
  writeJson(res, 200, { ok: true });
@@ -1 +1 @@
1
- import{aW as L,bs as ln,aG as A,aU as P,aF as W,bt as gn,bu as dn,bv as hn,bw as z,bx as pn,bn as An,by as m,aX as N,b0 as U,b3 as T,bz as _n,a_ as on,bA as wn,bq as On,aH as V,bo as vn,bB as I}from"./mermaid.core-CwFfQIZ3.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||L(n)&&ln(n)==Pn}function yn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var B=P?P.prototype:void 0,H=B?B.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return yn(n,k)+"";if(x(n))return H?H.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function Rn(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function In(n,r,e){return r===r?Rn(n,r,e):cn(n,Tn,e)}function Sn(n,r){var e=n==null?0:n.length;return!!e&&In(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Ln.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fn=/\\(\\)?/g,Gn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Fn,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Gn(Dn(n))}function R(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[R(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||z(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Un(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Bn(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Bn;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Xn="__lodash_hash_undefined__";function Yn(n){return this.__data__.set(n,Xn),this}function Jn(n){return this.__data__.has(n)}function y(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}y.prototype.add=y.prototype.push=Yn;y.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&zn?new y:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Qn(r,function(O,v){if(!tn(o,v)&&(p===O||f(p,O,e,i,t)))return o.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",X=P?P.prototype:void 0,S=X?X.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(S)return S.call(n)==S.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Z(n),a=u.length,h=Z(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],v=r[d];if(i)var D=s?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(D===void 0?O===v||f(O,v,e,i,t):D)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var b=n.constructor,E=r.constructor;b!=E&&"constructor"in n&&"constructor"in r&&!(typeof b=="function"&&b instanceof b&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,Y="[object Arguments]",J="[object Array]",c="[object Object]",wr=Object.prototype,Q=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==Y?c:a,h=h==Y?c:h;var g=a==c,l=h==c,d=a==h;if(d&&U(n)){if(!U(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function F(n,r,e,i,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Or(n,r,e,i,F,f)}var vr=1,Pr=2;function yr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?F(h,a,vr|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function br(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=br(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||yr(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=R(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||z(n)))}function Rr(n,r){return n!=null&&Tr(n,r,cr)}var Ir=1,Sr=2;function Lr(n,r){return $(n)&&sn(r)?un(R(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Rr(e,n):F(r,i,Ir|Sr)}}function xr(n){return function(r){return r?.[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(R(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Lr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&vn(n,r,M)}function Fr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var G=Fr(Cr);function Gr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:G;return e(n,Gr(r))}function Dr(n,r){var e=[];return G(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Xr(n,r,e){var i=A(n)?Un:mr,f=arguments.length<3;return i(n,an(r),e,f,G)}var Nr=1/0,Ur=I&&1/C(new I([,-0]))[1]==Nr?function(n){return new I(n)}:bn,Br=200;function Yr(n,r,e){var i=-1,f=Sn,t=n.length,s=!0,u=[],a=u;if(t>=Br){var h=r?null:Ur(n);if(h)return C(h);s=!1,f=tn,a=new y}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{G as a,Kr as b,an as c,yn as d,rn as e,Zn as f,qn as g,En as h,x as i,Z as j,M as k,Yr as l,Zr as m,qr as n,cn as o,Gr as p,Cr as q,Xr as r,Bn as s,Tr as t,j as u,R as v,nn as w,Rr as x,Dn as y};
1
+ import{aW as L,bs as ln,aG as A,aU as P,aF as W,bt as gn,bu as dn,bv as hn,bw as z,bx as pn,bn as An,by as m,aX as N,b0 as U,b3 as T,bz as _n,a_ as on,bA as wn,bq as On,aH as V,bo as vn,bB as I}from"./mermaid.core-iv2IeunS.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||L(n)&&ln(n)==Pn}function yn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var B=P?P.prototype:void 0,H=B?B.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return yn(n,k)+"";if(x(n))return H?H.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function Rn(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function In(n,r,e){return r===r?Rn(n,r,e):cn(n,Tn,e)}function Sn(n,r){var e=n==null?0:n.length;return!!e&&In(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Ln.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fn=/\\(\\)?/g,Gn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Fn,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Gn(Dn(n))}function R(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[R(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||z(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Un(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Bn(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Bn;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Xn="__lodash_hash_undefined__";function Yn(n){return this.__data__.set(n,Xn),this}function Jn(n){return this.__data__.has(n)}function y(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}y.prototype.add=y.prototype.push=Yn;y.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&zn?new y:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Qn(r,function(O,v){if(!tn(o,v)&&(p===O||f(p,O,e,i,t)))return o.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",X=P?P.prototype:void 0,S=X?X.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(S)return S.call(n)==S.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Z(n),a=u.length,h=Z(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],v=r[d];if(i)var D=s?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(D===void 0?O===v||f(O,v,e,i,t):D)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var b=n.constructor,E=r.constructor;b!=E&&"constructor"in n&&"constructor"in r&&!(typeof b=="function"&&b instanceof b&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,Y="[object Arguments]",J="[object Array]",c="[object Object]",wr=Object.prototype,Q=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==Y?c:a,h=h==Y?c:h;var g=a==c,l=h==c,d=a==h;if(d&&U(n)){if(!U(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function F(n,r,e,i,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Or(n,r,e,i,F,f)}var vr=1,Pr=2;function yr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?F(h,a,vr|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function br(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=br(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||yr(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=R(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||z(n)))}function Rr(n,r){return n!=null&&Tr(n,r,cr)}var Ir=1,Sr=2;function Lr(n,r){return $(n)&&sn(r)?un(R(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Rr(e,n):F(r,i,Ir|Sr)}}function xr(n){return function(r){return r?.[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(R(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Lr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&vn(n,r,M)}function Fr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var G=Fr(Cr);function Gr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:G;return e(n,Gr(r))}function Dr(n,r){var e=[];return G(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Xr(n,r,e){var i=A(n)?Un:mr,f=arguments.length<3;return i(n,an(r),e,f,G)}var Nr=1/0,Ur=I&&1/C(new I([,-0]))[1]==Nr?function(n){return new I(n)}:bn,Br=200;function Yr(n,r,e){var i=-1,f=Sn,t=n.length,s=!0,u=[],a=u;if(t>=Br){var h=r?null:Ur(n);if(h)return C(h);s=!1,f=tn,a=new y}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{G as a,Kr as b,an as c,yn as d,rn as e,Zn as f,qn as g,En as h,x as i,Z as j,M as k,Yr as l,Zr as m,qr as n,cn as o,Gr as p,Cr as q,Xr as r,Bn as s,Tr as t,j as u,R as v,nn as w,Rr as x,Dn as y};
@@ -1 +1 @@
1
- import{$ as ln,a0 as an,a1 as G,a2 as q,a3 as z,a4 as un,a5 as y,a6 as tn,a7 as K,a8 as _,a9 as rn,aa as o,ab as on,ac as sn,ad as fn}from"./mermaid.core-CwFfQIZ3.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,B,a){var O=I-l,i=D-h,n=B-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function V(l,h,I,D,v,A,B){var a=l-I,O=h-D,i=(B?A:-A)/K(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,C=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*K(on(0,T*T*R-P*P)),$=(P*g-m*S)/R,j=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=$-C,e=j-t,r=w-C,F=p-t;return x*x+e*e>r*r+F*F&&($=w,j=p),{cx:$,cy:j,x01:-n,y01:-d,x11:$*(v/T-1),y11:j*(v/T-1)}}function hn(){var l=cn,h=yn,I=z(0),D=null,v=gn,A=dn,B=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,C=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(C>tn-y)a.moveTo(s*G(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*G(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=C,S=C,$=B.apply(this,arguments)/2,j=$>y&&(D?+D.apply(this,arguments):K(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(j>y){var F=sn(j/u*q($)),L=sn(j/s*q($));(P-=F*2)>y?(F*=t?1:-1,R+=F,T-=F):(P=0,R=T=(f+c)/2),(S-=L*2)>y?(L*=t?1:-1,m+=L,g-=L):(S=0,m=g=(f+c)/2)}var H=s*G(m),J=s*q(m),M=u*G(T),N=u*q(T);if(w>y){var Q=s*G(g),U=s*q(g),W=u*G(R),X=u*q(R),E;if(C<an)if(E=pn(H,J,W,X,Q,U,M,N)){var Y=H-E[0],Z=J-E[1],b=Q-E[0],k=U-E[1],nn=1/q(fn((Y*b+Z*k)/(K(Y*Y+Z*Z)*K(b*b+k*k)))/2),en=K(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=V(W,X,H,J,s,x,t),r=V(Q,U,M,N,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(H,J),a.arc(0,0,s,m,g,!t)):a.moveTo(H,J),!(u>y)||!(P>y)?a.lineTo(M,N):p>y?(e=V(M,N,Q,U,u,-p,t),r=V(H,J,W,X,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[G(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:z(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:z(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:z(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:z(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:z(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:z(+n),i):A},i.padAngle=function(n){return arguments.length?(B=typeof n=="function"?n:z(+n),i):B},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{$ as ln,a0 as an,a1 as G,a2 as q,a3 as z,a4 as un,a5 as y,a6 as tn,a7 as K,a8 as _,a9 as rn,aa as o,ab as on,ac as sn,ad as fn}from"./mermaid.core-iv2IeunS.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,B,a){var O=I-l,i=D-h,n=B-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function V(l,h,I,D,v,A,B){var a=l-I,O=h-D,i=(B?A:-A)/K(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,C=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*K(on(0,T*T*R-P*P)),$=(P*g-m*S)/R,j=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=$-C,e=j-t,r=w-C,F=p-t;return x*x+e*e>r*r+F*F&&($=w,j=p),{cx:$,cy:j,x01:-n,y01:-d,x11:$*(v/T-1),y11:j*(v/T-1)}}function hn(){var l=cn,h=yn,I=z(0),D=null,v=gn,A=dn,B=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,C=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(C>tn-y)a.moveTo(s*G(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*G(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=C,S=C,$=B.apply(this,arguments)/2,j=$>y&&(D?+D.apply(this,arguments):K(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(j>y){var F=sn(j/u*q($)),L=sn(j/s*q($));(P-=F*2)>y?(F*=t?1:-1,R+=F,T-=F):(P=0,R=T=(f+c)/2),(S-=L*2)>y?(L*=t?1:-1,m+=L,g-=L):(S=0,m=g=(f+c)/2)}var H=s*G(m),J=s*q(m),M=u*G(T),N=u*q(T);if(w>y){var Q=s*G(g),U=s*q(g),W=u*G(R),X=u*q(R),E;if(C<an)if(E=pn(H,J,W,X,Q,U,M,N)){var Y=H-E[0],Z=J-E[1],b=Q-E[0],k=U-E[1],nn=1/q(fn((Y*b+Z*k)/(K(Y*Y+Z*Z)*K(b*b+k*k)))/2),en=K(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=V(W,X,H,J,s,x,t),r=V(Q,U,M,N,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(H,J),a.arc(0,0,s,m,g,!t)):a.moveTo(H,J),!(u>y)||!(P>y)?a.lineTo(M,N):p>y?(e=V(M,N,Q,U,u,-p,t),r=V(H,J,W,X,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[G(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:z(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:z(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:z(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:z(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:z(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:z(+n),i):A},i.padAngle=function(n){return arguments.length?(B=typeof n=="function"?n:z(+n),i):B},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};