@axiom-lattice/react-sdk 8.0.0 → 8.1.0

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 (103) hide show
  1. package/dist/{AgentDetailSideApp-XIHTVZQ6.mjs → AgentDetailSideApp-J64Y7RKT.mjs} +11 -11
  2. package/dist/AgentGovernanceWorkbench-N5DMTNRS.mjs +24 -0
  3. package/dist/{LangfuseDashboard-PYKA7XQ6.mjs → LangfuseDashboard-INSDUIPR.mjs} +2 -2
  4. package/dist/{MessageGraph-PYBCVFGD.mjs → MessageGraph-LEWE7BDE.mjs} +7 -7
  5. package/dist/{ReactChart-TN5VMVHH.mjs → ReactChart-SBFZNQ2L.mjs} +7 -7
  6. package/dist/SkillFlow-U6I2VRDK.mjs +14 -0
  7. package/dist/{TasksSideApp-C6XFEGZ7.mjs → TasksSideApp-GPD7GCPM.mjs} +8 -8
  8. package/dist/ThreadMaintenancePanel-TNWSDFIP.mjs +12 -0
  9. package/dist/{TopologyRuntimeView-R262O6TK.mjs → TopologyRuntimeView-QHOSBVWW.mjs} +8 -8
  10. package/dist/WorkflowAutomationView-5Q4ONV3C.mjs +22 -0
  11. package/dist/{chunk-ATU3HLYK.mjs → chunk-24KHOHEI.mjs} +742 -583
  12. package/dist/chunk-24KHOHEI.mjs.map +1 -0
  13. package/dist/{chunk-QFH5BFAB.mjs → chunk-5N54V24W.mjs} +5 -5
  14. package/dist/{chunk-BS6EXA72.mjs → chunk-5SGLNRLH.mjs} +4 -4
  15. package/dist/{chunk-5OZ7L6I3.mjs → chunk-7PNKDQYG.mjs} +3 -3
  16. package/dist/{chunk-6YTFHBP4.mjs → chunk-CD2UMRM5.mjs} +2 -2
  17. package/dist/{chunk-IGY2PP3H.mjs → chunk-GPB3TMDZ.mjs} +4 -4
  18. package/dist/{chunk-NEXWD46N.mjs → chunk-IK53JBJ6.mjs} +3 -3
  19. package/dist/{chunk-PPOYWDJA.mjs → chunk-LNTNCTWO.mjs} +3 -3
  20. package/dist/{chunk-UJS5NABN.mjs → chunk-OY2LSB3A.mjs} +7 -7
  21. package/dist/{chunk-TAIUUSGV.mjs → chunk-RON4XT5J.mjs} +4 -4
  22. package/dist/{chunk-WXSL425B.mjs → chunk-TLAIIWGR.mjs} +8 -8
  23. package/dist/{chunk-Q2222EXS.mjs → chunk-U22DSLN6.mjs} +10 -10
  24. package/dist/{chunk-XWMOF3KE.mjs → chunk-XAOJDKE7.mjs} +3 -3
  25. package/dist/{chunk-5CG4N4VQ.mjs → chunk-ZKYJP3RO.mjs} +3 -3
  26. package/dist/{embed-page-AgentDetailSideApp-NK6VQBXS.js → embed-page-AgentDetailSideApp-6MHCQZ2W.js} +1 -1
  27. package/dist/{embed-page-AgentGovernanceWorkbench-TKVV2GA6.js → embed-page-AgentGovernanceWorkbench-DZRR5VSK.js} +1 -1
  28. package/dist/{embed-page-LangfuseDashboard-EYK2T2VK.js → embed-page-LangfuseDashboard-JWH5JGLY.js} +1 -1
  29. package/dist/{embed-page-MessageGraph-P73B52OR.js → embed-page-MessageGraph-DJSV5HLH.js} +1 -1
  30. package/dist/{embed-page-ReactChart-LK6DUA4R.js → embed-page-ReactChart-RSR3JSF6.js} +1 -1
  31. package/dist/{embed-page-SkillFlow-54RIT6M2.js → embed-page-SkillFlow-JZGJAG3O.js} +1 -1
  32. package/dist/{embed-page-TasksSideApp-RK64OPAA.js → embed-page-TasksSideApp-4LIXWO44.js} +1 -1
  33. package/dist/{embed-page-ThreadMaintenancePanel-PI3U76W3.js → embed-page-ThreadMaintenancePanel-7CWGP3ZK.js} +1 -1
  34. package/dist/{embed-page-TopologyRuntimeView-X6QPRQE2.js → embed-page-TopologyRuntimeView-AVSCNALN.js} +1 -1
  35. package/dist/{embed-page-WorkflowAutomationView-3PE6YCRK.js → embed-page-WorkflowAutomationView-RFYT2AIZ.js} +1 -1
  36. package/dist/{embed-page-chunk-GYO2ELMI.js → embed-page-chunk-2XFJOQHZ.js} +1 -1
  37. package/dist/{embed-page-chunk-UV6IYDW5.js → embed-page-chunk-7CDMVSAB.js} +1 -1
  38. package/dist/{embed-page-chunk-US46Q3B7.js → embed-page-chunk-EVZKWKMQ.js} +2 -2
  39. package/dist/{embed-page-chunk-KF3HZ4TX.js → embed-page-chunk-IQ75BKOM.js} +1 -1
  40. package/dist/{embed-page-chunk-MEY3NEJZ.js → embed-page-chunk-JGFRDPYZ.js} +1 -1
  41. package/dist/{embed-page-chunk-OKZPPZMF.js → embed-page-chunk-KKUDX33F.js} +1 -1
  42. package/dist/{embed-page-chunk-YWJQVBZV.js → embed-page-chunk-PJJCN6GS.js} +1 -1
  43. package/dist/{embed-page-chunk-767LVAGR.js → embed-page-chunk-QJKFXJNR.js} +1 -1
  44. package/dist/{embed-page-chunk-EB43T3BJ.js → embed-page-chunk-TTFIPBIV.js} +130 -130
  45. package/dist/{embed-page-chunk-BD7DUF2M.js → embed-page-chunk-U5A5D7IS.js} +1 -1
  46. package/dist/embed-page-en-HDSVQ4O6.js +1 -0
  47. package/dist/embed-page-en-TSCGSJAI.js +1 -0
  48. package/dist/embed-page-zh-IR652A6J.js +1 -0
  49. package/dist/embed-page-zh-Q22DIOB3.js +1 -0
  50. package/dist/embed-page.js +1 -1
  51. package/dist/{en-DQDMGSNU.mjs → en-46QZD2TW.mjs} +12 -3
  52. package/dist/en-46QZD2TW.mjs.map +1 -0
  53. package/dist/{en-ANSLFEBD.mjs → en-5PDWSPXV.mjs} +3 -2
  54. package/dist/en-5PDWSPXV.mjs.map +1 -0
  55. package/dist/index.d.mts +13 -3
  56. package/dist/index.d.ts +13 -3
  57. package/dist/index.js +1859 -1680
  58. package/dist/index.js.map +1 -1
  59. package/dist/index.mjs +14 -14
  60. package/dist/web-app.js +26 -6
  61. package/dist/web-app.js.map +1 -1
  62. package/dist/web-app.mjs +2 -2
  63. package/dist/{zh-BKAP45UO.mjs → zh-2SMAXRUF.mjs} +12 -3
  64. package/dist/zh-2SMAXRUF.mjs.map +1 -0
  65. package/dist/{zh-JFU5VIZ6.mjs → zh-6DVLMOZW.mjs} +3 -2
  66. package/dist/zh-6DVLMOZW.mjs.map +1 -0
  67. package/package.json +3 -3
  68. package/dist/AgentGovernanceWorkbench-ZCKD22PH.mjs +0 -24
  69. package/dist/SkillFlow-XIMU6EET.mjs +0 -14
  70. package/dist/ThreadMaintenancePanel-KJYC7ZWN.mjs +0 -12
  71. package/dist/WorkflowAutomationView-2JN3WT7G.mjs +0 -22
  72. package/dist/chunk-ATU3HLYK.mjs.map +0 -1
  73. package/dist/embed-page-en-27OIE2UA.js +0 -1
  74. package/dist/embed-page-en-X6B6RVNL.js +0 -1
  75. package/dist/embed-page-zh-EQ5X2M32.js +0 -1
  76. package/dist/embed-page-zh-FXQGY5HD.js +0 -1
  77. package/dist/en-ANSLFEBD.mjs.map +0 -1
  78. package/dist/en-DQDMGSNU.mjs.map +0 -1
  79. package/dist/zh-BKAP45UO.mjs.map +0 -1
  80. package/dist/zh-JFU5VIZ6.mjs.map +0 -1
  81. /package/dist/{AgentDetailSideApp-XIHTVZQ6.mjs.map → AgentDetailSideApp-J64Y7RKT.mjs.map} +0 -0
  82. /package/dist/{AgentGovernanceWorkbench-ZCKD22PH.mjs.map → AgentGovernanceWorkbench-N5DMTNRS.mjs.map} +0 -0
  83. /package/dist/{LangfuseDashboard-PYKA7XQ6.mjs.map → LangfuseDashboard-INSDUIPR.mjs.map} +0 -0
  84. /package/dist/{MessageGraph-PYBCVFGD.mjs.map → MessageGraph-LEWE7BDE.mjs.map} +0 -0
  85. /package/dist/{ReactChart-TN5VMVHH.mjs.map → ReactChart-SBFZNQ2L.mjs.map} +0 -0
  86. /package/dist/{SkillFlow-XIMU6EET.mjs.map → SkillFlow-U6I2VRDK.mjs.map} +0 -0
  87. /package/dist/{TasksSideApp-C6XFEGZ7.mjs.map → TasksSideApp-GPD7GCPM.mjs.map} +0 -0
  88. /package/dist/{ThreadMaintenancePanel-KJYC7ZWN.mjs.map → ThreadMaintenancePanel-TNWSDFIP.mjs.map} +0 -0
  89. /package/dist/{TopologyRuntimeView-R262O6TK.mjs.map → TopologyRuntimeView-QHOSBVWW.mjs.map} +0 -0
  90. /package/dist/{WorkflowAutomationView-2JN3WT7G.mjs.map → WorkflowAutomationView-5Q4ONV3C.mjs.map} +0 -0
  91. /package/dist/{chunk-QFH5BFAB.mjs.map → chunk-5N54V24W.mjs.map} +0 -0
  92. /package/dist/{chunk-BS6EXA72.mjs.map → chunk-5SGLNRLH.mjs.map} +0 -0
  93. /package/dist/{chunk-5OZ7L6I3.mjs.map → chunk-7PNKDQYG.mjs.map} +0 -0
  94. /package/dist/{chunk-6YTFHBP4.mjs.map → chunk-CD2UMRM5.mjs.map} +0 -0
  95. /package/dist/{chunk-IGY2PP3H.mjs.map → chunk-GPB3TMDZ.mjs.map} +0 -0
  96. /package/dist/{chunk-NEXWD46N.mjs.map → chunk-IK53JBJ6.mjs.map} +0 -0
  97. /package/dist/{chunk-PPOYWDJA.mjs.map → chunk-LNTNCTWO.mjs.map} +0 -0
  98. /package/dist/{chunk-UJS5NABN.mjs.map → chunk-OY2LSB3A.mjs.map} +0 -0
  99. /package/dist/{chunk-TAIUUSGV.mjs.map → chunk-RON4XT5J.mjs.map} +0 -0
  100. /package/dist/{chunk-WXSL425B.mjs.map → chunk-TLAIIWGR.mjs.map} +0 -0
  101. /package/dist/{chunk-Q2222EXS.mjs.map → chunk-U22DSLN6.mjs.map} +0 -0
  102. /package/dist/{chunk-XWMOF3KE.mjs.map → chunk-XAOJDKE7.mjs.map} +0 -0
  103. /package/dist/{chunk-5CG4N4VQ.mjs.map → chunk-ZKYJP3RO.mjs.map} +0 -0
@@ -19,11 +19,11 @@ import {
19
19
  useTenantBranding,
20
20
  useWorkspaceContext,
21
21
  useWorkspaceContextOptional
22
- } from "./chunk-XWMOF3KE.mjs";
22
+ } from "./chunk-XAOJDKE7.mjs";
23
23
  import {
24
24
  CreateSkillModal,
25
25
  useApi
26
- } from "./chunk-5OZ7L6I3.mjs";
26
+ } from "./chunk-7PNKDQYG.mjs";
27
27
  import {
28
28
  AxiomLatticeProvider,
29
29
  DEFAULT_MIDDLEWARE_TYPES,
@@ -34,7 +34,7 @@ import {
34
34
  useClient,
35
35
  useLatticeChatShellContext,
36
36
  useOptionalClient
37
- } from "./chunk-5CG4N4VQ.mjs";
37
+ } from "./chunk-ZKYJP3RO.mjs";
38
38
  import {
39
39
  XMarkdown_default,
40
40
  formatErrorMessage,
@@ -43,7 +43,7 @@ import {
43
43
  import {
44
44
  useLocale,
45
45
  useT
46
- } from "./chunk-QFH5BFAB.mjs";
46
+ } from "./chunk-5N54V24W.mjs";
47
47
 
48
48
  // src/AppRegistry.ts
49
49
  var AppRegistryImpl = class {
@@ -4467,7 +4467,7 @@ var EntityListView = ({
4467
4467
  };
4468
4468
 
4469
4469
  // src/components/Auth/TenantModelProvidersModal.tsx
4470
- import { useMemo as useMemo5, useRef as useRef11, useState as useState19 } from "react";
4470
+ import { useEffect as useEffect15, useMemo as useMemo5, useRef as useRef11, useState as useState19 } from "react";
4471
4471
  import {
4472
4472
  Alert,
4473
4473
  Button as Button2,
@@ -4484,11 +4484,14 @@ import {
4484
4484
  Tag,
4485
4485
  Tooltip as Tooltip3,
4486
4486
  Typography,
4487
- message as message2
4487
+ message as message2,
4488
+ theme as theme2
4488
4489
  } from "antd";
4489
4490
  import {
4490
4491
  Activity,
4491
4492
  Boxes,
4493
+ ChevronDown,
4494
+ ChevronUp,
4492
4495
  Edit2,
4493
4496
  Eye,
4494
4497
  EyeOff,
@@ -4497,6 +4500,7 @@ import {
4497
4500
  LightbulbOff,
4498
4501
  Plus as Plus3,
4499
4502
  RefreshCw,
4503
+ Search,
4500
4504
  Trash2
4501
4505
  } from "lucide-react";
4502
4506
  import { parseModelKey as parseModelKey2 } from "@axiom-lattice/protocols";
@@ -4635,6 +4639,12 @@ var API_STYLE_OPTIONS = [
4635
4639
  value: "responses"
4636
4640
  }
4637
4641
  ];
4642
+ var DEFAULT_KINDS = ["chat", "embedding", "asr"];
4643
+ var KIND_LABEL_KEY = {
4644
+ chat: "auth.modelProviders.kindChat",
4645
+ embedding: "auth.modelProviders.kindEmbedding",
4646
+ asr: "auth.modelProviders.kindAsr"
4647
+ };
4638
4648
  function describeProbeFailure(error, t) {
4639
4649
  switch (error) {
4640
4650
  case "UPSTREAM_AUTH_FAILED":
@@ -4711,10 +4721,30 @@ var ProviderModelsModal = ({
4711
4721
  onTestModel
4712
4722
  }) => {
4713
4723
  const t = useT();
4724
+ const [query, setQuery] = useState19("");
4714
4725
  const isSync = state2.kind === "sync";
4715
4726
  const live = state2.kind === "sync" ? state2.live : null;
4716
- const selectableIds = (live ?? []).filter((model) => !configuredIds.includes(model.id)).map((model) => model.id);
4717
- return /* @__PURE__ */ jsx10(
4727
+ const normalizedQuery = query.trim().toLowerCase();
4728
+ const visibleLive = (live ?? []).filter((model) => {
4729
+ if (!normalizedQuery) return true;
4730
+ return model.id.toLowerCase().includes(normalizedQuery) || (model.displayName ?? "").toLowerCase().includes(normalizedQuery) || (model.ownedBy ?? "").toLowerCase().includes(normalizedQuery);
4731
+ });
4732
+ const selectableIds = visibleLive.filter((model) => !configuredIds.includes(model.id)).map((model) => model.id);
4733
+ const visibleModels = useMemo5(() => {
4734
+ if (!normalizedQuery) return models;
4735
+ return models.filter(
4736
+ (model) => model.modelKey.toLowerCase().includes(normalizedQuery) || (model.displayName ?? "").toLowerCase().includes(normalizedQuery) || (model.providerName ?? "").toLowerCase().includes(normalizedQuery)
4737
+ );
4738
+ }, [models, normalizedQuery]);
4739
+ useEffect15(() => {
4740
+ if (state2.kind !== "sync") return;
4741
+ const visible = new Set(selectableIds);
4742
+ const pruned = state2.selected.filter((id) => visible.has(id));
4743
+ if (pruned.length !== state2.selected.length) {
4744
+ onSelectionChange(pruned);
4745
+ }
4746
+ }, [state2, selectableIds, onSelectionChange]);
4747
+ return /* @__PURE__ */ jsxs7(
4718
4748
  Modal2,
4719
4749
  {
4720
4750
  title: state2.title,
@@ -4726,249 +4756,270 @@ var ProviderModelsModal = ({
4726
4756
  cancelButtonProps: isSync ? void 0 : { style: { display: "none" } },
4727
4757
  width: 640,
4728
4758
  destroyOnClose: true,
4729
- children: isSync && live === null ? /* @__PURE__ */ jsxs7(Space, { children: [
4730
- /* @__PURE__ */ jsx10(Spin2, { size: "small" }),
4731
- /* @__PURE__ */ jsx10(Text, { type: "secondary", children: t("auth.modelProviders.readingUpstream") })
4732
- ] }) : isSync ? /* @__PURE__ */ jsxs7(Fragment2, { children: [
4733
- /* @__PURE__ */ jsxs7(Space, { style: { marginBottom: 12 }, wrap: true, children: [
4759
+ children: [
4760
+ !(isSync && live === null) && /* @__PURE__ */ jsx10(
4761
+ Input2,
4762
+ {
4763
+ allowClear: true,
4764
+ value: query,
4765
+ onChange: (event) => setQuery(event.target.value),
4766
+ placeholder: t("auth.modelProviders.searchModels"),
4767
+ prefix: /* @__PURE__ */ jsx10(Search, { size: 14 }),
4768
+ style: { marginBottom: 12 }
4769
+ }
4770
+ ),
4771
+ isSync && live === null ? /* @__PURE__ */ jsxs7(Space, { children: [
4772
+ /* @__PURE__ */ jsx10(Spin2, { size: "small" }),
4773
+ /* @__PURE__ */ jsx10(Text, { type: "secondary", children: t("auth.modelProviders.readingUpstream") })
4774
+ ] }) : isSync ? /* @__PURE__ */ jsxs7(Fragment2, { children: [
4775
+ /* @__PURE__ */ jsxs7(Space, { style: { marginBottom: 12 }, wrap: true, children: [
4776
+ /* @__PURE__ */ jsx10(
4777
+ Button2,
4778
+ {
4779
+ size: "small",
4780
+ disabled: selectableIds.length === 0,
4781
+ onClick: () => onSelectionChange(selectableIds),
4782
+ children: t("auth.modelProviders.selectAllNew")
4783
+ }
4784
+ ),
4785
+ /* @__PURE__ */ jsx10(Button2, { size: "small", onClick: () => onSelectionChange([]), children: t("auth.modelProviders.clear") }),
4786
+ /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.newSelected", {
4787
+ selected: state2.selected.length,
4788
+ // Selection is pruned to the visible set, so the visible total
4789
+ // is the one that makes the numbers add up.
4790
+ total: selectableIds.length
4791
+ }) }),
4792
+ state2.removed.length > 0 && /* @__PURE__ */ jsx10(Text, { type: "warning", style: { fontSize: 12 }, children: t("auth.modelProviders.droppedBanner", {
4793
+ count: state2.removed.length
4794
+ }) })
4795
+ ] }),
4734
4796
  /* @__PURE__ */ jsx10(
4735
- Button2,
4797
+ List2,
4736
4798
  {
4737
4799
  size: "small",
4738
- disabled: selectableIds.length === 0,
4739
- onClick: () => onSelectionChange(selectableIds),
4740
- children: t("auth.modelProviders.selectAllNew")
4800
+ dataSource: visibleLive,
4801
+ style: { maxHeight: 360, overflowY: "auto" },
4802
+ locale: {
4803
+ emptyText: normalizedQuery ? t("auth.modelProviders.noSearchResults") : t("auth.modelProviders.noModelsYet")
4804
+ },
4805
+ renderItem: (model) => {
4806
+ const isConfigured = configuredIds.includes(model.id);
4807
+ return /* @__PURE__ */ jsx10(List2.Item, { children: isConfigured ? /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4808
+ /* @__PURE__ */ jsx10(Tag, { children: t("auth.modelProviders.configured") }),
4809
+ /* @__PURE__ */ jsx10(Text, { children: model.id })
4810
+ ] }) : /* @__PURE__ */ jsxs7(
4811
+ Checkbox,
4812
+ {
4813
+ checked: state2.selected.includes(model.id),
4814
+ onChange: (event) => onSelectionChange(
4815
+ event.target.checked ? [...state2.selected, model.id] : state2.selected.filter((id) => id !== model.id)
4816
+ ),
4817
+ children: [
4818
+ /* @__PURE__ */ jsx10(Text, { children: model.id }),
4819
+ model.ownedBy && /* @__PURE__ */ jsx10(
4820
+ Text,
4821
+ {
4822
+ type: "secondary",
4823
+ style: { marginLeft: 8, fontSize: 12 },
4824
+ children: model.ownedBy
4825
+ }
4826
+ )
4827
+ ]
4828
+ }
4829
+ ) });
4830
+ }
4741
4831
  }
4742
- ),
4743
- /* @__PURE__ */ jsx10(Button2, { size: "small", onClick: () => onSelectionChange([]), children: t("auth.modelProviders.clear") }),
4744
- /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.newSelected", {
4745
- selected: state2.selected.length,
4746
- total: selectableIds.length
4747
- }) }),
4748
- state2.removed.length > 0 && /* @__PURE__ */ jsx10(Text, { type: "warning", style: { fontSize: 12 }, children: t("auth.modelProviders.droppedBanner", {
4749
- count: state2.removed.length
4750
- }) })
4751
- ] }),
4752
- /* @__PURE__ */ jsx10(
4832
+ )
4833
+ ] }) : /* @__PURE__ */ jsx10(
4753
4834
  List2,
4754
4835
  {
4755
4836
  size: "small",
4756
- dataSource: live ?? [],
4837
+ dataSource: visibleModels,
4757
4838
  style: { maxHeight: 360, overflowY: "auto" },
4839
+ locale: {
4840
+ emptyText: normalizedQuery ? t("auth.modelProviders.noSearchResults") : t("auth.modelProviders.noModelsYet")
4841
+ },
4758
4842
  renderItem: (model) => {
4759
- const isConfigured = configuredIds.includes(model.id);
4760
- return /* @__PURE__ */ jsx10(List2.Item, { children: isConfigured ? /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4761
- /* @__PURE__ */ jsx10(Tag, { children: t("auth.modelProviders.configured") }),
4762
- /* @__PURE__ */ jsx10(Text, { children: model.id })
4763
- ] }) : /* @__PURE__ */ jsxs7(
4764
- Checkbox,
4843
+ const modelId = modelIdOf(model);
4844
+ return /* @__PURE__ */ jsx10(
4845
+ List2.Item,
4765
4846
  {
4766
- checked: state2.selected.includes(model.id),
4767
- onChange: (event) => onSelectionChange(
4768
- event.target.checked ? [...state2.selected, model.id] : state2.selected.filter((id) => id !== model.id)
4769
- ),
4770
- children: [
4771
- /* @__PURE__ */ jsx10(Text, { children: model.id }),
4772
- model.ownedBy && /* @__PURE__ */ jsx10(
4773
- Text,
4774
- {
4775
- type: "secondary",
4776
- style: { marginLeft: 8, fontSize: 12 },
4777
- children: model.ownedBy
4778
- }
4779
- )
4780
- ]
4781
- }
4782
- ) });
4783
- }
4784
- }
4785
- )
4786
- ] }) : /* @__PURE__ */ jsx10(
4787
- List2,
4788
- {
4789
- size: "small",
4790
- dataSource: models,
4791
- style: { maxHeight: 360, overflowY: "auto" },
4792
- locale: { emptyText: t("auth.modelProviders.noModelsYet") },
4793
- renderItem: (model) => {
4794
- const modelId = modelIdOf(model);
4795
- return /* @__PURE__ */ jsx10(
4796
- List2.Item,
4797
- {
4798
- actions: [
4799
- ...model.kind === "embedding" ? [
4847
+ actions: [
4848
+ ...model.kind === "embedding" ? [
4849
+ /* @__PURE__ */ jsx10(
4850
+ Button2,
4851
+ {
4852
+ type: "text",
4853
+ size: "small",
4854
+ icon: /* @__PURE__ */ jsx10(Activity, { size: 14 }),
4855
+ "aria-label": t(
4856
+ "auth.modelProviders.embeddingTestAria"
4857
+ ),
4858
+ onClick: () => onTestModel(modelId)
4859
+ },
4860
+ "test"
4861
+ )
4862
+ ] : [],
4800
4863
  /* @__PURE__ */ jsx10(
4801
4864
  Button2,
4802
4865
  {
4803
4866
  type: "text",
4804
4867
  size: "small",
4805
- icon: /* @__PURE__ */ jsx10(Activity, { size: 14 }),
4806
- "aria-label": t(
4807
- "auth.modelProviders.embeddingTestAria"
4808
- ),
4809
- onClick: () => onTestModel(modelId)
4868
+ icon: /* @__PURE__ */ jsx10(Edit2, { size: 14 }),
4869
+ "aria-label": t("auth.modelProviders.ariaEditModelConfig"),
4870
+ onClick: () => onEditModel(modelId)
4810
4871
  },
4811
- "test"
4872
+ "config"
4873
+ ),
4874
+ /* @__PURE__ */ jsx10(
4875
+ Popconfirm,
4876
+ {
4877
+ title: t("auth.modelProviders.removeModelTitle", {
4878
+ modelId
4879
+ }),
4880
+ description: model.isDefault ? t("auth.modelProviders.removeDefaultModel") : t("auth.modelProviders.referencesStopResolving"),
4881
+ okText: t("auth.modelProviders.remove"),
4882
+ okButtonProps: { danger: true },
4883
+ disabled: model.isDefault,
4884
+ onConfirm: () => onRemoveModel(modelId),
4885
+ children: /* @__PURE__ */ jsx10(
4886
+ Button2,
4887
+ {
4888
+ type: "text",
4889
+ size: "small",
4890
+ danger: true,
4891
+ disabled: model.isDefault,
4892
+ "aria-label": model.isDefault ? t("auth.modelProviders.ariaDefaultNotRemovable") : t("auth.modelProviders.ariaRemoveModel", { modelId }),
4893
+ icon: /* @__PURE__ */ jsx10(Trash2, { size: 14 })
4894
+ }
4895
+ )
4896
+ },
4897
+ "remove"
4812
4898
  )
4813
- ] : [],
4814
- /* @__PURE__ */ jsx10(
4815
- Button2,
4816
- {
4817
- type: "text",
4818
- size: "small",
4819
- icon: /* @__PURE__ */ jsx10(Edit2, { size: 14 }),
4820
- "aria-label": t("auth.modelProviders.ariaEditModelConfig"),
4821
- onClick: () => onEditModel(modelId)
4822
- },
4823
- "config"
4824
- ),
4825
- /* @__PURE__ */ jsx10(
4826
- Popconfirm,
4827
- {
4828
- title: t("auth.modelProviders.removeModelTitle", {
4829
- modelId
4830
- }),
4831
- description: model.isDefault ? t("auth.modelProviders.removeDefaultModel") : t("auth.modelProviders.referencesStopResolving"),
4832
- okText: t("auth.modelProviders.remove"),
4833
- okButtonProps: { danger: true },
4834
- disabled: model.isDefault,
4835
- onConfirm: () => onRemoveModel(modelId),
4836
- children: /* @__PURE__ */ jsx10(
4837
- Button2,
4838
- {
4839
- type: "text",
4840
- size: "small",
4841
- danger: true,
4842
- disabled: model.isDefault,
4843
- "aria-label": model.isDefault ? t("auth.modelProviders.ariaDefaultNotRemovable") : t("auth.modelProviders.ariaRemoveModel", { modelId }),
4844
- icon: /* @__PURE__ */ jsx10(Trash2, { size: 14 })
4845
- }
4846
- )
4847
- },
4848
- "remove"
4849
- )
4850
- ],
4851
- children: /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4852
- /* @__PURE__ */ jsx10(
4853
- Switch,
4854
- {
4855
- size: "small",
4856
- checked: model.enabled,
4857
- disabled: model.source !== "snapshot",
4858
- "aria-label": t("auth.modelProviders.ariaEnabled"),
4859
- onChange: (checked) => onToggleModel(modelId, checked)
4860
- }
4861
- ),
4862
- /* @__PURE__ */ jsx10(Text, { children: modelId }),
4863
- model.kind !== "chat" && /* @__PURE__ */ jsx10(Tag, { color: "blue", children: model.kind === "embedding" ? t("auth.modelProviders.kindEmbedding") : t("auth.modelProviders.kindAsr") }),
4864
- model.source === "snapshot" && /* @__PURE__ */ jsx10(
4865
- Popover,
4866
- {
4867
- trigger: "hover",
4868
- title: /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4869
- /* @__PURE__ */ jsx10("span", { children: t("auth.modelProviders.visionTitle") }),
4870
- /* @__PURE__ */ jsx10(
4871
- Tag,
4899
+ ],
4900
+ children: /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4901
+ /* @__PURE__ */ jsx10(
4902
+ Switch,
4903
+ {
4904
+ size: "small",
4905
+ checked: model.enabled,
4906
+ disabled: model.source !== "snapshot",
4907
+ "aria-label": t("auth.modelProviders.ariaEnabled"),
4908
+ onChange: (checked) => onToggleModel(modelId, checked)
4909
+ }
4910
+ ),
4911
+ /* @__PURE__ */ jsx10(Text, { children: modelId }),
4912
+ model.kind !== "chat" && /* @__PURE__ */ jsx10(Tag, { color: "blue", children: model.kind === "embedding" ? t("auth.modelProviders.kindEmbedding") : t("auth.modelProviders.kindAsr") }),
4913
+ model.source === "snapshot" && /* @__PURE__ */ jsx10(
4914
+ Popover,
4915
+ {
4916
+ trigger: "hover",
4917
+ title: /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4918
+ /* @__PURE__ */ jsx10("span", { children: t("auth.modelProviders.visionTitle") }),
4919
+ /* @__PURE__ */ jsx10(
4920
+ Tag,
4921
+ {
4922
+ color: readsImages(model.extra) ? "green" : "default",
4923
+ children: readsImages(model.extra) ? t("auth.modelProviders.visionEnabled") : t("auth.modelProviders.visionDisabled")
4924
+ }
4925
+ )
4926
+ ] }),
4927
+ content: /* @__PURE__ */ jsxs7(
4928
+ Space,
4929
+ {
4930
+ direction: "vertical",
4931
+ size: 8,
4932
+ style: { maxWidth: 280 },
4933
+ children: [
4934
+ /* @__PURE__ */ jsx10(Text, { children: t("auth.modelProviders.visionHelp") }),
4935
+ /* @__PURE__ */ jsx10(
4936
+ Button2,
4937
+ {
4938
+ type: "primary",
4939
+ danger: readsImages(model.extra),
4940
+ block: true,
4941
+ onClick: () => onToggleVision(modelId, !readsImages(model.extra)),
4942
+ children: readsImages(model.extra) ? t("auth.modelProviders.visionTurnOff") : t("auth.modelProviders.visionTurnOn")
4943
+ }
4944
+ )
4945
+ ]
4946
+ }
4947
+ ),
4948
+ children: /* @__PURE__ */ jsx10(
4949
+ Button2,
4872
4950
  {
4873
- color: readsImages(model.extra) ? "green" : "default",
4874
- children: readsImages(model.extra) ? t("auth.modelProviders.visionEnabled") : t("auth.modelProviders.visionDisabled")
4951
+ type: "text",
4952
+ size: "small",
4953
+ icon: readsImages(model.extra) ? /* @__PURE__ */ jsx10(Eye, { size: 14 }) : /* @__PURE__ */ jsx10(EyeOff, { size: 14 }),
4954
+ "aria-label": readsImages(model.extra) ? t("auth.modelProviders.visionAriaOn") : t("auth.modelProviders.visionAriaOff")
4875
4955
  }
4876
4956
  )
4877
- ] }),
4878
- content: /* @__PURE__ */ jsxs7(
4879
- Space,
4880
- {
4881
- direction: "vertical",
4882
- size: 8,
4883
- style: { maxWidth: 280 },
4884
- children: [
4885
- /* @__PURE__ */ jsx10(Text, { children: t("auth.modelProviders.visionHelp") }),
4886
- /* @__PURE__ */ jsx10(
4887
- Button2,
4888
- {
4889
- type: "primary",
4890
- danger: readsImages(model.extra),
4891
- block: true,
4892
- onClick: () => onToggleVision(modelId, !readsImages(model.extra)),
4893
- children: readsImages(model.extra) ? t("auth.modelProviders.visionTurnOff") : t("auth.modelProviders.visionTurnOn")
4894
- }
4895
- )
4896
- ]
4897
- }
4898
- ),
4899
- children: /* @__PURE__ */ jsx10(
4900
- Button2,
4901
- {
4902
- type: "text",
4903
- size: "small",
4904
- icon: readsImages(model.extra) ? /* @__PURE__ */ jsx10(Eye, { size: 14 }) : /* @__PURE__ */ jsx10(EyeOff, { size: 14 }),
4905
- "aria-label": readsImages(model.extra) ? t("auth.modelProviders.visionAriaOn") : t("auth.modelProviders.visionAriaOff")
4906
- }
4907
- )
4908
- }
4909
- ),
4910
- model.source === "snapshot" && /* @__PURE__ */ jsx10(
4911
- Popover,
4912
- {
4913
- trigger: "hover",
4914
- title: /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4915
- /* @__PURE__ */ jsx10("span", { children: t("auth.modelProviders.thinkingTitle") }),
4916
- /* @__PURE__ */ jsx10(
4917
- Tag,
4957
+ }
4958
+ ),
4959
+ model.source === "snapshot" && /* @__PURE__ */ jsx10(
4960
+ Popover,
4961
+ {
4962
+ trigger: "hover",
4963
+ title: /* @__PURE__ */ jsxs7(Space, { size: 8, children: [
4964
+ /* @__PURE__ */ jsx10("span", { children: t("auth.modelProviders.thinkingTitle") }),
4965
+ /* @__PURE__ */ jsx10(
4966
+ Tag,
4967
+ {
4968
+ color: thinkingDisabled(model.extra) ? "default" : "green",
4969
+ children: thinkingDisabled(model.extra) ? t("auth.modelProviders.thinkingOff") : t("auth.modelProviders.thinkingOn")
4970
+ }
4971
+ )
4972
+ ] }),
4973
+ content: /* @__PURE__ */ jsxs7(
4974
+ Space,
4975
+ {
4976
+ direction: "vertical",
4977
+ size: 8,
4978
+ style: { maxWidth: 280 },
4979
+ children: [
4980
+ /* @__PURE__ */ jsx10(Text, { children: t("auth.modelProviders.thinkingHelp") }),
4981
+ /* @__PURE__ */ jsx10(
4982
+ Button2,
4983
+ {
4984
+ type: "primary",
4985
+ block: true,
4986
+ onClick: () => onToggleThinking(
4987
+ modelId,
4988
+ !thinkingDisabled(model.extra)
4989
+ ),
4990
+ children: thinkingDisabled(model.extra) ? t("auth.modelProviders.thinkingTurnOn") : t("auth.modelProviders.thinkingTurnOff")
4991
+ }
4992
+ )
4993
+ ]
4994
+ }
4995
+ ),
4996
+ children: /* @__PURE__ */ jsx10(
4997
+ Button2,
4918
4998
  {
4919
- color: thinkingDisabled(model.extra) ? "default" : "green",
4920
- children: thinkingDisabled(model.extra) ? t("auth.modelProviders.thinkingOff") : t("auth.modelProviders.thinkingOn")
4999
+ type: "text",
5000
+ size: "small",
5001
+ icon: thinkingDisabled(model.extra) ? /* @__PURE__ */ jsx10(LightbulbOff, { size: 14 }) : /* @__PURE__ */ jsx10(Lightbulb, { size: 14 }),
5002
+ "aria-label": thinkingDisabled(model.extra) ? t("auth.modelProviders.thinkingAriaOff") : t("auth.modelProviders.thinkingAriaOn")
4921
5003
  }
4922
5004
  )
4923
- ] }),
4924
- content: /* @__PURE__ */ jsxs7(
4925
- Space,
4926
- {
4927
- direction: "vertical",
4928
- size: 8,
4929
- style: { maxWidth: 280 },
4930
- children: [
4931
- /* @__PURE__ */ jsx10(Text, { children: t("auth.modelProviders.thinkingHelp") }),
4932
- /* @__PURE__ */ jsx10(
4933
- Button2,
4934
- {
4935
- type: "primary",
4936
- block: true,
4937
- onClick: () => onToggleThinking(
4938
- modelId,
4939
- !thinkingDisabled(model.extra)
4940
- ),
4941
- children: thinkingDisabled(model.extra) ? t("auth.modelProviders.thinkingTurnOn") : t("auth.modelProviders.thinkingTurnOff")
4942
- }
4943
- )
4944
- ]
4945
- }
4946
- ),
4947
- children: /* @__PURE__ */ jsx10(
4948
- Button2,
4949
- {
4950
- type: "text",
4951
- size: "small",
4952
- icon: thinkingDisabled(model.extra) ? /* @__PURE__ */ jsx10(LightbulbOff, { size: 14 }) : /* @__PURE__ */ jsx10(Lightbulb, { size: 14 }),
4953
- "aria-label": thinkingDisabled(model.extra) ? t("auth.modelProviders.thinkingAriaOff") : t("auth.modelProviders.thinkingAriaOn")
4954
- }
4955
- )
4956
- }
4957
- ),
4958
- model.isDefault && /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.badgeDefault") }),
4959
- hasExtraConfig(model.extra) && /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.badgeCustomConfig") }),
4960
- model.stale && /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.droppedUpstream") })
4961
- ] })
4962
- }
4963
- );
5005
+ }
5006
+ ),
5007
+ model.isDefault && /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.badgeDefault") }),
5008
+ hasExtraConfig(model.extra) && /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.badgeCustomConfig") }),
5009
+ model.stale && /* @__PURE__ */ jsx10(Text, { type: "secondary", style: { fontSize: 12 }, children: t("auth.modelProviders.droppedUpstream") })
5010
+ ] })
5011
+ }
5012
+ );
5013
+ }
4964
5014
  }
4965
- }
4966
- )
5015
+ )
5016
+ ]
4967
5017
  }
4968
5018
  );
4969
5019
  };
4970
5020
  var TenantModelProvidersPanel = () => {
4971
5021
  const t = useT();
5022
+ const { token } = theme2.useToken();
4972
5023
  const {
4973
5024
  providers,
4974
5025
  models: tenantModels,
@@ -4992,6 +5043,7 @@ var TenantModelProvidersPanel = () => {
4992
5043
  const [modelDraft, setModelDraft] = useState19(null);
4993
5044
  const [savingModel, setSavingModel] = useState19(false);
4994
5045
  const [savingDefault, setSavingDefault] = useState19(false);
5046
+ const [defaultsOpen, setDefaultsOpen] = useState19(false);
4995
5047
  const modelsByProvider = useMemo5(() => {
4996
5048
  const grouped = /* @__PURE__ */ new Map();
4997
5049
  for (const model of tenantModels) {
@@ -5004,22 +5056,41 @@ var TenantModelProvidersPanel = () => {
5004
5056
  }
5005
5057
  return grouped;
5006
5058
  }, [tenantModels]);
5007
- const defaultModel = useMemo5(
5008
- () => tenantModels.find((model) => model.isDefault === true) ?? null,
5009
- [tenantModels]
5010
- );
5011
- const defaultModelOptions = useMemo5(
5012
- () => toModelOptions({
5013
- providers,
5014
- models: tenantModels.filter(
5015
- (model) => model.source === "snapshot" && model.enabled && !model.stale
5016
- )
5017
- }).map((option) => ({
5018
- value: option.key,
5019
- label: modelOptionLabel(option)
5020
- })),
5021
- [tenantModels, providers]
5059
+ const defaultModels = useMemo5(() => {
5060
+ const byKind = {};
5061
+ for (const kind of DEFAULT_KINDS) {
5062
+ byKind[kind] = tenantModels.find(
5063
+ (model) => model.isDefault === true && (model.kind ?? "chat") === kind
5064
+ ) ?? null;
5065
+ }
5066
+ return byKind;
5067
+ }, [tenantModels]);
5068
+ const defaultModelOptions = useMemo5(() => {
5069
+ const runnable = tenantModels.filter(
5070
+ (model) => model.source === "snapshot" && model.enabled && !model.stale
5071
+ );
5072
+ const byKind = {};
5073
+ for (const kind of DEFAULT_KINDS) {
5074
+ byKind[kind] = toModelOptions({ providers, models: runnable }, kind).map(
5075
+ (option) => ({ value: option.key, label: modelOptionLabel(option) })
5076
+ );
5077
+ }
5078
+ return byKind;
5079
+ }, [tenantModels, providers]);
5080
+ const kindModels = (kind) => tenantModels.filter(
5081
+ (model) => (model.kind ?? "chat") === kind && model.enabled
5022
5082
  );
5083
+ const hasChat = kindModels("chat").length > 0;
5084
+ const hasEmbedding = kindModels("embedding").length > 0;
5085
+ const hasAsr = kindModels("asr").length > 0;
5086
+ const hasChatDefault = defaultModels.chat !== null;
5087
+ const defaultsSummary = DEFAULT_KINDS.map((kind) => {
5088
+ const current = defaultModels[kind];
5089
+ const label = current ? defaultModelOptions[kind].find(
5090
+ (option) => option.value === current.modelKey
5091
+ )?.label ?? current.modelKey : t("auth.modelProviders.defaultsNotSet");
5092
+ return `${t(KIND_LABEL_KEY[kind])} \xB7 ${label}`;
5093
+ }).join(" ");
5023
5094
  const openDraft = (provider) => {
5024
5095
  setDraft(
5025
5096
  provider ? {
@@ -5765,37 +5836,113 @@ var TenantModelProvidersPanel = () => {
5765
5836
  showIcon: true
5766
5837
  }
5767
5838
  ),
5768
- /* @__PURE__ */ jsxs7(
5769
- "div",
5839
+ hasChat && !hasEmbedding && /* @__PURE__ */ jsx10(
5840
+ Alert,
5770
5841
  {
5771
- style: {
5772
- display: "flex",
5773
- alignItems: "center",
5774
- gap: 12,
5775
- margin: 24,
5776
- marginBottom: 0
5777
- },
5778
- children: [
5779
- /* @__PURE__ */ jsxs7(Text, { style: { ...labelStyle, marginBottom: 0, whiteSpace: "nowrap" }, children: [
5780
- t("auth.modelProviders.defaultModelTitle"),
5781
- " ",
5782
- /* @__PURE__ */ jsx10(Tooltip3, { title: t("auth.modelProviders.defaultModelHelp"), children: /* @__PURE__ */ jsx10(Info, { size: 14, style: { verticalAlign: "text-top" } }) })
5783
- ] }),
5784
- /* @__PURE__ */ jsx10(
5785
- Select,
5786
- {
5787
- style: { flex: 1, minWidth: 240 },
5788
- placeholder: t("auth.modelProviders.defaultModelPlaceholder"),
5789
- value: defaultModel?.modelKey,
5790
- options: defaultModelOptions,
5791
- loading: savingDefault,
5792
- notFoundContent: t("auth.modelProviders.defaultModelEmpty"),
5793
- onChange: (value) => void handleSetDefaultModel(value)
5794
- }
5795
- )
5796
- ]
5842
+ style: { margin: "12px 24px 0" },
5843
+ type: "warning",
5844
+ showIcon: true,
5845
+ message: t("auth.modelProviders.alertChatWithoutEmbedding")
5846
+ }
5847
+ ),
5848
+ (hasEmbedding || hasAsr) && !hasChatDefault && /* @__PURE__ */ jsx10(
5849
+ Alert,
5850
+ {
5851
+ style: { margin: "12px 24px 0" },
5852
+ type: "warning",
5853
+ showIcon: true,
5854
+ message: t("auth.modelProviders.alertMissingChatDefault")
5797
5855
  }
5798
5856
  ),
5857
+ tenantModels.length > 0 && /* @__PURE__ */ jsxs7("div", { style: { margin: "12px 24px 0" }, children: [
5858
+ /* @__PURE__ */ jsxs7("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [
5859
+ /* @__PURE__ */ jsx10(Text, { style: { fontWeight: 600, whiteSpace: "nowrap" }, children: t("auth.modelProviders.defaultsTitle") }),
5860
+ /* @__PURE__ */ jsx10(Tooltip3, { title: t("auth.modelProviders.defaultModelHelp"), children: /* @__PURE__ */ jsx10(Info, { size: 14, style: { color: token.colorTextTertiary } }) }),
5861
+ /* @__PURE__ */ jsx10(
5862
+ Text,
5863
+ {
5864
+ type: "secondary",
5865
+ ellipsis: true,
5866
+ style: { flex: 1, minWidth: 0, fontSize: 12 },
5867
+ children: defaultsSummary
5868
+ }
5869
+ ),
5870
+ /* @__PURE__ */ jsx10(
5871
+ Button2,
5872
+ {
5873
+ type: "link",
5874
+ size: "small",
5875
+ style: { padding: 0, height: "auto", whiteSpace: "nowrap" },
5876
+ "aria-expanded": defaultsOpen,
5877
+ onClick: () => setDefaultsOpen((open) => !open),
5878
+ icon: defaultsOpen ? /* @__PURE__ */ jsx10(ChevronUp, { size: 14 }) : /* @__PURE__ */ jsx10(ChevronDown, { size: 14 }),
5879
+ children: defaultsOpen ? t("auth.modelProviders.defaultsCollapse") : t("auth.modelProviders.defaultsExpand")
5880
+ }
5881
+ )
5882
+ ] }),
5883
+ defaultsOpen && /* @__PURE__ */ jsxs7(Fragment2, { children: [
5884
+ /* @__PURE__ */ jsx10(Text, { style: helpStyle, children: t("auth.modelProviders.defaultsHint") }),
5885
+ /* @__PURE__ */ jsx10(
5886
+ "div",
5887
+ {
5888
+ style: {
5889
+ marginTop: 8,
5890
+ border: `1px solid ${token.colorBorderSecondary}`,
5891
+ borderRadius: 8
5892
+ },
5893
+ children: DEFAULT_KINDS.map((kind, index) => {
5894
+ const options = defaultModelOptions[kind];
5895
+ return /* @__PURE__ */ jsxs7(
5896
+ "div",
5897
+ {
5898
+ style: {
5899
+ display: "flex",
5900
+ flexWrap: "wrap",
5901
+ alignItems: "center",
5902
+ gap: 8,
5903
+ padding: "6px 12px",
5904
+ borderTop: index === 0 ? void 0 : `1px solid ${token.colorBorderSecondary}`
5905
+ },
5906
+ children: [
5907
+ /* @__PURE__ */ jsx10(
5908
+ Text,
5909
+ {
5910
+ style: {
5911
+ flex: "0 0 120px",
5912
+ whiteSpace: "nowrap",
5913
+ fontSize: 13
5914
+ },
5915
+ children: t(KIND_LABEL_KEY[kind])
5916
+ }
5917
+ ),
5918
+ /* @__PURE__ */ jsx10(
5919
+ Select,
5920
+ {
5921
+ size: "small",
5922
+ style: { flex: "1 1 220px", maxWidth: 380 },
5923
+ "aria-label": t("auth.modelProviders.defaultForKind", {
5924
+ kind: t(KIND_LABEL_KEY[kind])
5925
+ }),
5926
+ placeholder: options.length === 0 ? t("auth.modelProviders.defaultModelEmpty") : t("auth.modelProviders.defaultModelPlaceholder"),
5927
+ value: defaultModels[kind]?.modelKey,
5928
+ options,
5929
+ loading: savingDefault,
5930
+ disabled: options.length === 0,
5931
+ notFoundContent: t(
5932
+ "auth.modelProviders.defaultModelEmpty"
5933
+ ),
5934
+ onChange: (value) => void handleSetDefaultModel(value)
5935
+ }
5936
+ )
5937
+ ]
5938
+ },
5939
+ kind
5940
+ );
5941
+ })
5942
+ }
5943
+ )
5944
+ ] })
5945
+ ] }),
5799
5946
  renderList(),
5800
5947
  /* @__PURE__ */ jsx10(
5801
5948
  Modal2,
@@ -7092,7 +7239,7 @@ var useStyle = createStyles8(({ token, css }) => {
7092
7239
  });
7093
7240
 
7094
7241
  // src/hooks/useMediaQuery.ts
7095
- import { useState as useState20, useEffect as useEffect15 } from "react";
7242
+ import { useState as useState20, useEffect as useEffect16 } from "react";
7096
7243
  function useMediaQuery(query) {
7097
7244
  const [matches, setMatches] = useState20(() => {
7098
7245
  if (typeof window !== "undefined") {
@@ -7100,7 +7247,7 @@ function useMediaQuery(query) {
7100
7247
  }
7101
7248
  return false;
7102
7249
  });
7103
- useEffect15(() => {
7250
+ useEffect16(() => {
7104
7251
  const mql = window.matchMedia(query);
7105
7252
  const handler = (event) => {
7106
7253
  setMatches(event.matches);
@@ -7289,7 +7436,7 @@ function useRoomNotifications() {
7289
7436
  }
7290
7437
 
7291
7438
  // src/integrations/push/useWebPush.ts
7292
- import { useCallback as useCallback17, useEffect as useEffect16, useRef as useRef12, useState as useState22 } from "react";
7439
+ import { useCallback as useCallback17, useEffect as useEffect17, useRef as useRef12, useState as useState22 } from "react";
7293
7440
 
7294
7441
  // src/integrations/push/detectPushSubscription.ts
7295
7442
  async function detectPushSubscription() {
@@ -7403,7 +7550,7 @@ function useWebPush(options = {}) {
7403
7550
  setPushSubscribed(false);
7404
7551
  }
7405
7552
  }, [subscribeUrl]);
7406
- useEffect16(() => {
7553
+ useEffect17(() => {
7407
7554
  let cancelled = false;
7408
7555
  void (async () => {
7409
7556
  const existing = await detectPushSubscription();
@@ -7420,7 +7567,7 @@ function useWebPush(options = {}) {
7420
7567
  cancelled = true;
7421
7568
  };
7422
7569
  }, [subscribeUrl]);
7423
- useEffect16(() => {
7570
+ useEffect17(() => {
7424
7571
  if (options.autoEnable !== true || !supported() || autoPromptedRef.current) return;
7425
7572
  autoPromptedRef.current = true;
7426
7573
  if (Notification.permission === "granted") {
@@ -7440,7 +7587,7 @@ function useWebPush(options = {}) {
7440
7587
  }
7441
7588
 
7442
7589
  // src/integrations/room-events/RoomEventsContext.tsx
7443
- import { createContext as createContext3, useCallback as useCallback18, useContext as useContext3, useEffect as useEffect17, useMemo as useMemo6, useRef as useRef13, useState as useState23 } from "react";
7590
+ import { createContext as createContext3, useCallback as useCallback18, useContext as useContext3, useEffect as useEffect18, useMemo as useMemo6, useRef as useRef13, useState as useState23 } from "react";
7444
7591
  import { jsx as jsx15 } from "react/jsx-runtime";
7445
7592
  var BACKOFF_MIN_MS = 500;
7446
7593
  var BACKOFF_MAX_MS = 3e4;
@@ -7699,11 +7846,11 @@ function ScopedRoomEventsProvider({ workspaceId, client, children }) {
7699
7846
  }
7700
7847
  }, [client, workspaceId, resetBackoff, refreshRooms, scheduleReconnect, clearReconnectTimer, patchState, applyMessageCreated, zeroUnread, dispatchToOpenRoom]);
7701
7848
  runStreamRef.current = runStream;
7702
- useEffect17(() => {
7849
+ useEffect18(() => {
7703
7850
  if (selfUserId === void 0) return;
7704
7851
  void detectPushSubscription();
7705
7852
  }, [selfUserId]);
7706
- useEffect17(() => {
7853
+ useEffect18(() => {
7707
7854
  const generation = ++generationRef.current;
7708
7855
  if (workspaceId === null) {
7709
7856
  setState(initialState);
@@ -7749,8 +7896,8 @@ function ScopedRoomEventsProvider({ workspaceId, client, children }) {
7749
7896
  // src/components/CoSpace/RoomList.tsx
7750
7897
  import { useCallback as useCallback19, useMemo as useMemo7, useState as useState25 } from "react";
7751
7898
  import { createStyles as createStyles9 } from "antd-style";
7752
- import { Badge, Empty, Spin as Spin3, Input as Input4, Button as Button5, theme as theme2 } from "antd";
7753
- import { Search, ChevronRight, ChevronDown, Users, Plus as Plus4, Hash } from "lucide-react";
7899
+ import { Badge, Empty, Spin as Spin3, Input as Input4, Button as Button5, theme as theme3 } from "antd";
7900
+ import { Search as Search2, ChevronRight, ChevronDown as ChevronDown2, Users, Plus as Plus4, Hash } from "lucide-react";
7754
7901
 
7755
7902
  // src/components/CoSpace/CreateGroupModal.tsx
7756
7903
  import { useState as useState24 } from "react";
@@ -7962,7 +8109,7 @@ var RoomList = ({
7962
8109
  }) => {
7963
8110
  const { styles } = useStyles8();
7964
8111
  const t = useT();
7965
- const { token } = theme2.useToken();
8112
+ const { token } = theme3.useToken();
7966
8113
  const { rooms, roomsLoaded, refreshRooms } = useRoomEvents();
7967
8114
  const [searchText, setSearchText] = useState25("");
7968
8115
  const [collapsedGroups, setCollapsedGroups] = useState25({
@@ -8054,21 +8201,21 @@ var RoomList = ({
8054
8201
  placeholder: t("cospace.rooms.searchPlaceholder"),
8055
8202
  value: searchText,
8056
8203
  onChange: (e) => setSearchText(e.target.value),
8057
- prefix: /* @__PURE__ */ jsx17(Search, { size: 14, style: { color: token.colorTextTertiary } }),
8204
+ prefix: /* @__PURE__ */ jsx17(Search2, { size: 14, style: { color: token.colorTextTertiary } }),
8058
8205
  allowClear: true
8059
8206
  }
8060
8207
  ) }),
8061
8208
  filteredGroupRooms.length > 0 && /* @__PURE__ */ jsxs10("div", { className: styles.group, children: [
8062
8209
  /* @__PURE__ */ jsxs10("div", { className: styles.groupHeader, onClick: () => toggleGroup("group"), children: [
8063
8210
  /* @__PURE__ */ jsx17("span", { children: t("cospace.rooms.groupRooms") }),
8064
- collapsedGroups.group ? /* @__PURE__ */ jsx17(ChevronRight, { size: 14 }) : /* @__PURE__ */ jsx17(ChevronDown, { size: 14 })
8211
+ collapsedGroups.group ? /* @__PURE__ */ jsx17(ChevronRight, { size: 14 }) : /* @__PURE__ */ jsx17(ChevronDown2, { size: 14 })
8065
8212
  ] }),
8066
8213
  !collapsedGroups.group && filteredGroupRooms.map(renderRoomItem)
8067
8214
  ] }),
8068
8215
  filteredDirectRooms.length > 0 && /* @__PURE__ */ jsxs10("div", { className: styles.group, children: [
8069
8216
  /* @__PURE__ */ jsxs10("div", { className: styles.groupHeader, onClick: () => toggleGroup("direct"), children: [
8070
8217
  /* @__PURE__ */ jsx17("span", { children: t("cospace.rooms.directRooms") }),
8071
- collapsedGroups.direct ? /* @__PURE__ */ jsx17(ChevronRight, { size: 14 }) : /* @__PURE__ */ jsx17(ChevronDown, { size: 14 })
8218
+ collapsedGroups.direct ? /* @__PURE__ */ jsx17(ChevronRight, { size: 14 }) : /* @__PURE__ */ jsx17(ChevronDown2, { size: 14 })
8072
8219
  ] }),
8073
8220
  !collapsedGroups.direct && filteredDirectRooms.map(renderRoomItem)
8074
8221
  ] }),
@@ -8222,7 +8369,7 @@ function deriveProjectRoomCapabilities(state2, userId) {
8222
8369
  }
8223
8370
 
8224
8371
  // src/integrations/project-room/ProjectRoomContext.tsx
8225
- import { createContext as createContext4, useCallback as useCallback20, useContext as useContext4, useEffect as useEffect18, useMemo as useMemo8, useReducer, useRef as useRef14 } from "react";
8372
+ import { createContext as createContext4, useCallback as useCallback20, useContext as useContext4, useEffect as useEffect19, useMemo as useMemo8, useReducer, useRef as useRef14 } from "react";
8226
8373
  import { ProjectRoomClientError } from "@axiom-lattice/client-sdk";
8227
8374
  import { jsx as jsx18 } from "react/jsx-runtime";
8228
8375
  var PROJECT_ROOM_MESSAGE_PAGE_SIZE = 50;
@@ -8410,7 +8557,7 @@ function ScopedProjectRoomProvider({ projectId, client, userId, children }) {
8410
8557
  dispatch({ type: "STATE", state: current });
8411
8558
  return current;
8412
8559
  }, [applyBusEvent]);
8413
- useEffect18(() => {
8560
+ useEffect19(() => {
8414
8561
  if (projectId === null) return;
8415
8562
  const mapped = mapBusConnection(busConnection);
8416
8563
  dispatch({ type: "CONNECTION", connection: mapped });
@@ -8422,7 +8569,7 @@ function ScopedProjectRoomProvider({ projectId, client, userId, children }) {
8422
8569
  dispatch({ type: "CLEAR_ERROR" });
8423
8570
  }
8424
8571
  }, [busConnection, projectId, t]);
8425
- useEffect18(() => {
8572
+ useEffect19(() => {
8426
8573
  const generation = ++generationRef.current;
8427
8574
  if (projectId === null) {
8428
8575
  dispatch({ type: "STATE", state: createProjectRoomState() });
@@ -8453,7 +8600,7 @@ function ScopedProjectRoomProvider({ projectId, client, userId, children }) {
8453
8600
  unsubscribe();
8454
8601
  };
8455
8602
  }, [client, projectId, userId, subscribeRoom, reportRead, runBootstrap, applyBusEvent, completeBootstrap]);
8456
- useEffect18(() => {
8603
+ useEffect19(() => {
8457
8604
  if (projectId === null) return;
8458
8605
  if (lastReadySeqRef.current === readySeq) return;
8459
8606
  lastReadySeqRef.current = readySeq;
@@ -8685,7 +8832,7 @@ function ScopedProjectRoomProvider({ projectId, client, userId, children }) {
8685
8832
  };
8686
8833
  }, [client, projectId, refreshResource, t]);
8687
8834
  const capabilities = useMemo8(() => deriveProjectRoomCapabilities(state2, userId), [state2, userId]);
8688
- useEffect18(() => {
8835
+ useEffect19(() => {
8689
8836
  if (state2.agentPendingMembershipIds.length === 0) return;
8690
8837
  const timer = setTimeout(() => {
8691
8838
  dispatch({ type: "STATE", state: { ...stateRef.current, agentPendingMembershipIds: [] } });
@@ -8736,7 +8883,7 @@ import { Button as Button6, Space as Space3, Typography as Typography3 } from "a
8736
8883
  import { useState as useState29 } from "react";
8737
8884
 
8738
8885
  // src/hooks/useCollections.ts
8739
- import { useState as useState26, useEffect as useEffect19, useCallback as useCallback21 } from "react";
8886
+ import { useState as useState26, useEffect as useEffect20, useCallback as useCallback21 } from "react";
8740
8887
  function useCollections() {
8741
8888
  const client = useClient("__GLOBAL__");
8742
8889
  const [collections, setCollections] = useState26([]);
@@ -8754,7 +8901,7 @@ function useCollections() {
8754
8901
  setIsLoading(false);
8755
8902
  }
8756
8903
  }, [client]);
8757
- useEffect19(() => {
8904
+ useEffect20(() => {
8758
8905
  void fetchAll();
8759
8906
  }, [fetchAll]);
8760
8907
  const create = async (opts) => {
@@ -8922,7 +9069,7 @@ function useExportImport() {
8922
9069
  }
8923
9070
 
8924
9071
  // src/hooks/useVoiceRecorder.ts
8925
- import { useState as useState28, useRef as useRef16, useCallback as useCallback23, useEffect as useEffect20 } from "react";
9072
+ import { useState as useState28, useRef as useRef16, useCallback as useCallback23, useEffect as useEffect21 } from "react";
8926
9073
  function useVoiceRecorder(options) {
8927
9074
  const {
8928
9075
  mode: initialMode = "auto",
@@ -8945,7 +9092,7 @@ function useVoiceRecorder(options) {
8945
9092
  const onTranscriptionRef = useRef16(onTranscription);
8946
9093
  onTranscriptionRef.current = onTranscription;
8947
9094
  const statusRef = useRef16(state2.status);
8948
- useEffect20(() => {
9095
+ useEffect21(() => {
8949
9096
  statusRef.current = state2.status;
8950
9097
  }, [state2.status]);
8951
9098
  const cleanedRef = useRef16(false);
@@ -9303,7 +9450,7 @@ function useVoiceRecorder(options) {
9303
9450
  modeRef.current = newMode;
9304
9451
  setState((prev) => ({ ...prev, mode: newMode }));
9305
9452
  }, [state2.status]);
9306
- useEffect20(() => {
9453
+ useEffect21(() => {
9307
9454
  return () => {
9308
9455
  cleanupAudio();
9309
9456
  };
@@ -10055,7 +10202,7 @@ function formatToolName(name) {
10055
10202
  }
10056
10203
 
10057
10204
  // src/components/McpApp/McpAppRenderer.tsx
10058
- import { useEffect as useEffect94, useMemo as useMemo47, useRef as useRef58, useState as useState119 } from "react";
10205
+ import { useEffect as useEffect95, useMemo as useMemo47, useRef as useRef58, useState as useState119 } from "react";
10059
10206
  import { Typography as Typography60 } from "antd";
10060
10207
 
10061
10208
  // src/components/McpApp/McpAppHostBridge.ts
@@ -10249,20 +10396,20 @@ import { Button as Button75, Typography as Typography59 } from "antd";
10249
10396
  import { ExpandOutlined } from "@ant-design/icons";
10250
10397
 
10251
10398
  // src/components/Chat/PinToMenuButton.tsx
10252
- import React112, { useState as useState118, useCallback as useCallback69, useEffect as useEffect93 } from "react";
10399
+ import React112, { useState as useState118, useCallback as useCallback69, useEffect as useEffect94 } from "react";
10253
10400
  import { Button as Button74, Input as Input36, Modal as Modal39, Tooltip as Tooltip30, AutoComplete as AutoComplete2, message as message31 } from "antd";
10254
10401
  import { Pin as Pin2 } from "lucide-react";
10255
10402
 
10256
10403
  // src/components/Chat/WorkspaceResourceManager.tsx
10257
- import React111, { useMemo as useMemo46, useEffect as useEffect92, useRef as useRef57, useState as useState117, useCallback as useCallback68, lazy as lazy4, Suspense as Suspense5 } from "react";
10404
+ import React111, { useMemo as useMemo46, useEffect as useEffect93, useRef as useRef57, useState as useState117, useCallback as useCallback68, lazy as lazy4, Suspense as Suspense5 } from "react";
10258
10405
  import { FolderOpen as FolderOpen5, Activity as Activity4, Database as Database8, Plug as Plug6, Bot as Bot11, Wrench as Wrench2, Zap as Zap3, Share2, History as History2, Inbox, FlaskConical as FlaskConical4, PinOff, Layers as Layers2, ArrowRightLeft as ArrowRightLeft2, ListChecks as ListChecks3, KeyRound as KeyRound3, SlidersHorizontal as SlidersHorizontal2, Boxes as Boxes3, Clock as Clock5, Table as Table6 } from "lucide-react";
10259
10406
  import { Modal as Modal38, Avatar as Avatar7, Popover as Popover5, message as message30, Spin as Spin33 } from "antd";
10260
10407
  import { InfoCircleOutlined as InfoCircleOutlined4 } from "@ant-design/icons";
10261
10408
 
10262
10409
  // src/components/Chat/Menu.tsx
10263
- import React15, { useState as useState31, useEffect as useEffect21, useMemo as useMemo9, useCallback as useCallback24 } from "react";
10410
+ import React15, { useState as useState31, useEffect as useEffect22, useMemo as useMemo9, useCallback as useCallback24 } from "react";
10264
10411
  import { Drawer, Dropdown } from "antd";
10265
- import { Plus as Plus5, ChevronRight as ChevronRight2, ChevronDown as ChevronDown2, Cpu, PanelLeftClose } from "lucide-react";
10412
+ import { Plus as Plus5, ChevronRight as ChevronRight2, ChevronDown as ChevronDown3, Cpu, PanelLeftClose } from "lucide-react";
10266
10413
  import { createStyles as createStyles11 } from "antd-style";
10267
10414
 
10268
10415
  // src/components/Chat/mergeMenuItems.ts
@@ -10582,7 +10729,7 @@ var Menu = ({
10582
10729
  const isControlled = collapsed !== void 0;
10583
10730
  const [internalIsIconView, setInternalIsIconView] = useState31(!defaultExpanded);
10584
10731
  const isIconView = isControlled ? collapsed : internalIsIconView;
10585
- useEffect21(() => {
10732
+ useEffect22(() => {
10586
10733
  if (!isControlled) {
10587
10734
  onCollapsedChange?.(isIconView);
10588
10735
  }
@@ -10632,7 +10779,7 @@ var Menu = ({
10632
10779
  () => items.filter((item) => item.type === "drawer" && drawerStates[item.id]).map((item) => item.id),
10633
10780
  [items, drawerStates]
10634
10781
  );
10635
- useEffect21(() => {
10782
+ useEffect22(() => {
10636
10783
  if (openDrawerIds.length === 0) return;
10637
10784
  const handlePointerDown = (e) => {
10638
10785
  const target = e.target;
@@ -10772,7 +10919,7 @@ var Menu = ({
10772
10919
  lineHeight: 1,
10773
10920
  padding: typeof item.badge === "number" ? "0 4px" : 0
10774
10921
  }, children: typeof item.badge === "number" ? item.badge > 99 ? "99+" : item.badge : null }),
10775
- isInline && !isCollapsed && /* @__PURE__ */ jsx25("span", { className: styles.inlineDrawerIndicator, children: isExpanded2 ? /* @__PURE__ */ jsx25(ChevronDown2, { size: 16 }) : /* @__PURE__ */ jsx25(ChevronRight2, { size: 16 }) })
10922
+ isInline && !isCollapsed && /* @__PURE__ */ jsx25("span", { className: styles.inlineDrawerIndicator, children: isExpanded2 ? /* @__PURE__ */ jsx25(ChevronDown3, { size: 16 }) : /* @__PURE__ */ jsx25(ChevronRight2, { size: 16 }) })
10776
10923
  ]
10777
10924
  }
10778
10925
  );
@@ -11293,16 +11440,16 @@ var RoomConnectionBanner = () => {
11293
11440
  };
11294
11441
 
11295
11442
  // src/components/CoSpace/RoomsPage.tsx
11296
- import { useCallback as useCallback37, useEffect as useEffect35, useState as useState48 } from "react";
11443
+ import { useCallback as useCallback37, useEffect as useEffect36, useState as useState48 } from "react";
11297
11444
  import { createStyles as createStyles31 } from "antd-style";
11298
11445
  import { MessageSquare as MessageSquare5 } from "lucide-react";
11299
11446
 
11300
11447
  // src/components/CoSpace/RoomChat.tsx
11301
- import { useEffect as useEffect34 } from "react";
11448
+ import { useEffect as useEffect35 } from "react";
11302
11449
  import { createStyles as createStyles30 } from "antd-style";
11303
11450
 
11304
11451
  // src/components/ProjectRoom/ProjectRoomShell.tsx
11305
- import { useCallback as useCallback36, useEffect as useEffect33, useMemo as useMemo21, useRef as useRef27, useState as useState47 } from "react";
11452
+ import { useCallback as useCallback36, useEffect as useEffect34, useMemo as useMemo21, useRef as useRef27, useState as useState47 } from "react";
11306
11453
  import { Avatar as Avatar3 } from "antd";
11307
11454
  import { createStyles as createStyles29 } from "antd-style";
11308
11455
  import { ChevronLeft as ChevronLeft2 } from "lucide-react";
@@ -11315,7 +11462,7 @@ import {
11315
11462
  } from "@ant-design/icons";
11316
11463
  import { Dropdown as Dropdown2, Tooltip as Tooltip4 } from "antd";
11317
11464
  import { createStyles as createStyles13 } from "antd-style";
11318
- import { useCallback as useCallback25, useEffect as useEffect22, useMemo as useMemo10, useRef as useRef17, useState as useState33 } from "react";
11465
+ import { useCallback as useCallback25, useEffect as useEffect23, useMemo as useMemo10, useRef as useRef17, useState as useState33 } from "react";
11319
11466
  import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs22 } from "react/jsx-runtime";
11320
11467
  var useStyle3 = createStyles13(({ token, css }) => {
11321
11468
  return {
@@ -11667,7 +11814,7 @@ var SideAppViewBrowser = ({ region = "side", compact = true, showCloseButton = t
11667
11814
  const switchTab = (key) => {
11668
11815
  setActiveKey(key);
11669
11816
  };
11670
- useEffect22(() => {
11817
+ useEffect23(() => {
11671
11818
  if (!selectedCard) return;
11672
11819
  const key = JSON.stringify(selectedCard);
11673
11820
  if (items.find((item) => item.key === key)) {
@@ -11853,7 +12000,7 @@ import { Bubble } from "@ant-design/x";
11853
12000
  import { createStyles as createStyles16 } from "antd-style";
11854
12001
 
11855
12002
  // src/components/ProjectRoom/ProjectRoomMessage.tsx
11856
- import { useEffect as useEffect23, useRef as useRef18, useState as useState34 } from "react";
12003
+ import { useEffect as useEffect24, useRef as useRef18, useState as useState34 } from "react";
11857
12004
  import { Button as Button13, Menu as Menu2 } from "antd";
11858
12005
  import { createStyles as createStyles14 } from "antd-style";
11859
12006
  import { Check } from "lucide-react";
@@ -11961,7 +12108,7 @@ var MENU_HEIGHT = 44;
11961
12108
  function MessageContextMenu({ x, y, onClose, onReply, onViewAgentWork }) {
11962
12109
  const t = useT();
11963
12110
  const ref = useRef18(null);
11964
- useEffect23(() => {
12111
+ useEffect24(() => {
11965
12112
  const handlePointerDown = (event) => {
11966
12113
  if (ref.current && !ref.current.contains(event.target)) onClose();
11967
12114
  };
@@ -12509,7 +12656,7 @@ var ProjectRoomTimeline = ({
12509
12656
  };
12510
12657
 
12511
12658
  // src/components/ProjectRoom/ProjectRoomComposer.tsx
12512
- import { useCallback as useCallback27, useEffect as useEffect24, useMemo as useMemo12, useRef as useRef20, useState as useState36 } from "react";
12659
+ import { useCallback as useCallback27, useEffect as useEffect25, useMemo as useMemo12, useRef as useRef20, useState as useState36 } from "react";
12513
12660
  import { Button as Button15, Flex } from "antd";
12514
12661
  import { Attachments, Sender, Suggestion } from "@ant-design/x";
12515
12662
  import { createStyles as createStyles17 } from "antd-style";
@@ -12681,7 +12828,7 @@ var ProjectRoomComposer = ({
12681
12828
  const [headerOpen, setHeaderOpen] = useState36(false);
12682
12829
  const uploadAction = workspaceId && projectId ? `${config.baseURL}/api/workspaces/${workspaceId}/projects/${projectId}/uploadfile` : void 0;
12683
12830
  const options = useMemo12(() => buildMentionOptions(bots), [bots]);
12684
- useEffect24(() => {
12831
+ useEffect25(() => {
12685
12832
  activeIndexRef.current = 0;
12686
12833
  }, [options]);
12687
12834
  const handleChange = useCallback27((next) => {
@@ -12988,10 +13135,10 @@ var ProjectRoomHeader = ({
12988
13135
  };
12989
13136
 
12990
13137
  // src/components/ProjectRoom/ProjectRoomRoster.tsx
12991
- import { useCallback as useCallback28, useEffect as useEffect25, useMemo as useMemo13, useRef as useRef21, useState as useState37 } from "react";
13138
+ import { useCallback as useCallback28, useEffect as useEffect26, useMemo as useMemo13, useRef as useRef21, useState as useState37 } from "react";
12992
13139
  import { Alert as Alert3, Avatar as Avatar2, Button as Button16, Dropdown as Dropdown4, Form as Form2, Input as Input7, Modal as Modal6, Select as Select2, Tag as Tag4, Tooltip as Tooltip5 } from "antd";
12993
13140
  import { createStyles as createStyles19 } from "antd-style";
12994
- import { Bot as Bot2, GraduationCap, MessageSquare, MoreHorizontal as MoreHorizontal2, Pause, Pencil, Play, Plus as Plus6, Search as Search2, ShieldCheck, Trash2 as Trash22, UserPlus, Users as Users3 } from "lucide-react";
13141
+ import { Bot as Bot2, GraduationCap, MessageSquare, MoreHorizontal as MoreHorizontal2, Pause, Pencil, Play, Plus as Plus6, Search as Search3, ShieldCheck, Trash2 as Trash22, UserPlus, Users as Users3 } from "lucide-react";
12995
13142
 
12996
13143
  // src/components/ProjectRoom/agentWorkCard.ts
12997
13144
  function buildAgentWorkCard(bot, t) {
@@ -13260,7 +13407,7 @@ var ProjectRoomRoster = () => {
13260
13407
  if (query === "") return activeMembers;
13261
13408
  return activeMembers.filter((member) => [member.name ?? "", member.userId, member.role].some((value) => value.toLowerCase().includes(query)));
13262
13409
  }, [activeMembers, query]);
13263
- useEffect25(() => {
13410
+ useEffect26(() => {
13264
13411
  if (dialog?.type !== "add-member") return;
13265
13412
  let cancelled = false;
13266
13413
  setCandidates([]);
@@ -13426,7 +13573,7 @@ var ProjectRoomRoster = () => {
13426
13573
  size: "small",
13427
13574
  value: search,
13428
13575
  onChange: (event) => setSearch(event.target.value),
13429
- prefix: /* @__PURE__ */ jsx39(Search2, { size: 14, "aria-hidden": true, style: { color: "rgba(0,0,0,0.35)" } }),
13576
+ prefix: /* @__PURE__ */ jsx39(Search3, { size: 14, "aria-hidden": true, style: { color: "rgba(0,0,0,0.35)" } }),
13430
13577
  placeholder: t("projectRoom.roster.searchPlaceholder"),
13431
13578
  "aria-label": t("projectRoom.roster.searchAria")
13432
13579
  }
@@ -13617,16 +13764,16 @@ var ProjectRoomRoster = () => {
13617
13764
  };
13618
13765
 
13619
13766
  // src/components/ProjectRoom/ProjectRoomTasksPanel.tsx
13620
- import { useCallback as useCallback32, useEffect as useEffect30, useMemo as useMemo18, useRef as useRef26, useState as useState43 } from "react";
13767
+ import { useCallback as useCallback32, useEffect as useEffect31, useMemo as useMemo18, useRef as useRef26, useState as useState43 } from "react";
13621
13768
  import { Tag as Tag5 } from "antd";
13622
13769
  import { createStyles as createStyles26 } from "antd-style";
13623
13770
 
13624
13771
  // src/components/Tasks/TaskDetailPanel.tsx
13625
- import { useEffect as useEffect29, useRef as useRef24 } from "react";
13772
+ import { useEffect as useEffect30, useRef as useRef24 } from "react";
13626
13773
  import { createStyles as createStyles25 } from "antd-style";
13627
13774
 
13628
13775
  // src/components/Tasks/TaskDetailContent.tsx
13629
- import { useEffect as useEffect28, useId, useMemo as useMemo16, useState as useState41 } from "react";
13776
+ import { useEffect as useEffect29, useId, useMemo as useMemo16, useState as useState41 } from "react";
13630
13777
  import { Empty as Empty2, Spin as Spin5 } from "antd";
13631
13778
  import {
13632
13779
  CheckCircle,
@@ -13635,7 +13782,7 @@ import {
13635
13782
  Ban,
13636
13783
  Clock,
13637
13784
  MessageSquare as MessageSquare4,
13638
- ChevronDown as ChevronDown3,
13785
+ ChevronDown as ChevronDown4,
13639
13786
  AlertCircle,
13640
13787
  PlusCircle,
13641
13788
  GitCommit,
@@ -13644,7 +13791,7 @@ import {
13644
13791
  import { createStyles as createStyles24 } from "antd-style";
13645
13792
 
13646
13793
  // src/components/Tasks/TaskBeliefState.tsx
13647
- import { useEffect as useEffect26, useMemo as useMemo14, useRef as useRef22 } from "react";
13794
+ import { useEffect as useEffect27, useMemo as useMemo14, useRef as useRef22 } from "react";
13648
13795
  import { createStyles as createStyles20 } from "antd-style";
13649
13796
  import { parseTaskBeliefState } from "@axiom-lattice/protocols";
13650
13797
  import { jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
@@ -13716,7 +13863,7 @@ var TaskBeliefState = ({ description }) => {
13716
13863
  const t = useT();
13717
13864
  const parsed = useMemo14(() => parseTaskBeliefState(description ?? ""), [description]);
13718
13865
  const loggedRef = useRef22(false);
13719
- useEffect26(() => {
13866
+ useEffect27(() => {
13720
13867
  if (!parsed.success && !loggedRef.current) {
13721
13868
  loggedRef.current = true;
13722
13869
  console.warn(`[TaskBeliefState] ${parsed.code}: ${parsed.message}`);
@@ -14381,7 +14528,7 @@ import { Button as Button19, Dropdown as Dropdown5 } from "antd";
14381
14528
  import { MoreHorizontal as MoreHorizontal3 } from "lucide-react";
14382
14529
 
14383
14530
  // src/components/Tasks/TaskStartAgentPicker.tsx
14384
- import { useEffect as useEffect27, useState as useState39 } from "react";
14531
+ import { useEffect as useEffect28, useState as useState39 } from "react";
14385
14532
  import { Alert as Alert4, Modal as Modal7, Select as Select3, Spin as Spin4 } from "antd";
14386
14533
  import { jsx as jsx44 } from "react/jsx-runtime";
14387
14534
  var TaskStartAgentPickerContent = ({
@@ -14395,7 +14542,7 @@ var TaskStartAgentPickerContent = ({
14395
14542
  const [loading, setLoading] = useState39(true);
14396
14543
  const [error, setError] = useState39();
14397
14544
  const [agentId, setAgentId] = useState39();
14398
- useEffect27(() => {
14545
+ useEffect28(() => {
14399
14546
  let cancelled = false;
14400
14547
  setLoading(true);
14401
14548
  setError(void 0);
@@ -15175,7 +15322,7 @@ var TaskDetailContent = ({
15175
15322
  }
15176
15323
  return subtaskProgress;
15177
15324
  }, [subtasks, subtaskProgress]);
15178
- useEffect28(() => {
15325
+ useEffect29(() => {
15179
15326
  setAllSubtasksVisible(false);
15180
15327
  setAllActivityVisible(false);
15181
15328
  }, [task.id]);
@@ -15295,7 +15442,7 @@ var TaskDetailContent = ({
15295
15442
  "aria-expanded": allActivityVisible,
15296
15443
  "aria-controls": feedContentId,
15297
15444
  children: [
15298
- allActivityVisible ? /* @__PURE__ */ jsx46(ChevronDown3, { size: 14 }) : null,
15445
+ allActivityVisible ? /* @__PURE__ */ jsx46(ChevronDown4, { size: 14 }) : null,
15299
15446
  allActivityVisible ? t("tasks.detail.showFewerActivity") : t("tasks.detail.viewAllActivity", { count: visibleFeedItems.length })
15300
15447
  ]
15301
15448
  }
@@ -15480,7 +15627,7 @@ var TaskDetailPanel = ({
15480
15627
  }) => {
15481
15628
  const { styles } = useStyles21();
15482
15629
  const headingRef = useRef24(null);
15483
- useEffect29(() => {
15630
+ useEffect30(() => {
15484
15631
  if (focusKey !== void 0) headingRef.current?.focus();
15485
15632
  }, [focusKey]);
15486
15633
  return /* @__PURE__ */ jsx47(
@@ -15728,7 +15875,7 @@ var ProjectRoomTasksPanel = ({ initialTaskId, onOpenTask }) => {
15728
15875
  setActivityError(void 0);
15729
15876
  }, []);
15730
15877
  const initialTaskConsumedRef = useRef26(null);
15731
- useEffect30(() => {
15878
+ useEffect31(() => {
15732
15879
  if (initialTaskId === void 0 || initialTaskConsumedRef.current === initialTaskId) return;
15733
15880
  const task = tasksById.get(initialTaskId);
15734
15881
  if (task === void 0) return;
@@ -15810,7 +15957,7 @@ import { createStyles as createStyles28 } from "antd-style";
15810
15957
  import { FolderOpen as FolderOpen4 } from "lucide-react";
15811
15958
 
15812
15959
  // src/components/Chat/FileDirectoryPanel.tsx
15813
- import React31, { useState as useState45, useCallback as useCallback34, useEffect as useEffect32, useMemo as useMemo19 } from "react";
15960
+ import React31, { useState as useState45, useCallback as useCallback34, useEffect as useEffect33, useMemo as useMemo19 } from "react";
15814
15961
  import { App as App2, Spin as Spin6, Dropdown as Dropdown6, Button as Button21, Input as Input9, Modal as Modal9, AutoComplete, Select as Select5, Tooltip as Tooltip6 } from "antd";
15815
15962
  import { ChevronRight as ChevronRight4, FolderOpen as FolderOpen3, Upload as Upload2, Pin } from "lucide-react";
15816
15963
  import { createStyles as createStyles27 } from "antd-style";
@@ -16013,7 +16160,7 @@ var getFileIcon = (filename) => {
16013
16160
  import { MoreOutlined as MoreOutlined2, LinkOutlined as LinkOutlined2, DownloadOutlined, EyeOutlined, SortAscendingOutlined, SortDescendingOutlined } from "@ant-design/icons";
16014
16161
 
16015
16162
  // src/components/GenUI/ShareModal.tsx
16016
- import { useState as useState44, useEffect as useEffect31, useCallback as useCallback33 } from "react";
16163
+ import { useState as useState44, useEffect as useEffect32, useCallback as useCallback33 } from "react";
16017
16164
  import { Modal as Modal8, Input as Input8, Select as Select4, InputNumber, Button as Button20, Space as Space7, Typography as Typography7, message as message5, List as List4, Tag as Tag6, Popconfirm as Popconfirm2 } from "antd";
16018
16165
  import { CopyOutlined as CopyOutlined2, LinkOutlined, StopOutlined, PlusOutlined } from "@ant-design/icons";
16019
16166
  import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
@@ -16076,7 +16223,7 @@ var ShareModal = ({
16076
16223
  }
16077
16224
  setLoading(false);
16078
16225
  }, [listShares, filePath]);
16079
- useEffect31(() => {
16226
+ useEffect32(() => {
16080
16227
  if (open) {
16081
16228
  setView("list");
16082
16229
  loadShares();
@@ -16506,7 +16653,7 @@ var FileDirectoryPanel = ({
16506
16653
  const { check: checkPin, pin: doPin, unpin: doUnpin, enableCustomMenu, get } = usePinMenuActions();
16507
16654
  const staticGroups = useMenuGroups();
16508
16655
  const [existingGroups, setExistingGroups] = useState45(staticGroups);
16509
- useEffect32(() => {
16656
+ useEffect33(() => {
16510
16657
  setExistingGroups(staticGroups);
16511
16658
  }, [staticGroups]);
16512
16659
  const [pinStates, setPinStates] = useState45({});
@@ -16519,14 +16666,14 @@ var FileDirectoryPanel = ({
16519
16666
  const [sortDirection, setSortDirection] = useState45("asc");
16520
16667
  const [searchFiles, setSearchFiles] = useState45(null);
16521
16668
  const [searchLoading, setSearchLoading] = useState45(false);
16522
- useEffect32(() => {
16669
+ useEffect33(() => {
16523
16670
  if (pinModalPath) {
16524
16671
  fetchExistingGroups(get).then((apiGroups) => {
16525
16672
  setExistingGroups(Array.from(/* @__PURE__ */ new Set([...staticGroups, ...apiGroups])).sort());
16526
16673
  });
16527
16674
  }
16528
16675
  }, [pinModalPath]);
16529
- useEffect32(() => {
16676
+ useEffect33(() => {
16530
16677
  const q = searchQuery.trim();
16531
16678
  if (!q) {
16532
16679
  setSearchFiles(null);
@@ -17347,7 +17494,7 @@ var ProjectRoomShellContent = ({ title, showTitle = true, onBack }) => {
17347
17494
  const { styles } = useStyles25();
17348
17495
  const t = useT();
17349
17496
  const [replyTo, setReplyTo] = useState47(null);
17350
- useEffect33(() => {
17497
+ useEffect34(() => {
17351
17498
  regsiterElement("workspace_project_room_members", {
17352
17499
  card_view: () => null,
17353
17500
  side_app_view: ({ data }) => data?.component ?? /* @__PURE__ */ jsx53(ProjectRoomRoster, {})
@@ -17367,7 +17514,7 @@ var ProjectRoomShellContent = ({ title, showTitle = true, onBack }) => {
17367
17514
  const tasks = room.tasks ?? [];
17368
17515
  const lastMessageIdRef = useRef27(null);
17369
17516
  const [announcement, setAnnouncement] = useState47("");
17370
- useEffect33(() => {
17517
+ useEffect34(() => {
17371
17518
  const last = messages[messages.length - 1];
17372
17519
  if (last === void 0) return;
17373
17520
  if (lastMessageIdRef.current === null) {
@@ -17534,7 +17681,7 @@ var useStyles26 = createStyles30(({ css }) => ({
17534
17681
  var RoomChat = ({ projectId, workspaceId, title, showTitle, onBack }) => {
17535
17682
  const { styles } = useStyles26();
17536
17683
  const { setProject, setWorkspace } = useWorkspaceContext();
17537
- useEffect34(() => {
17684
+ useEffect35(() => {
17538
17685
  if (workspaceId !== void 0) setWorkspace(workspaceId);
17539
17686
  setProject(projectId);
17540
17687
  }, [projectId, workspaceId, setProject, setWorkspace]);
@@ -17579,13 +17726,13 @@ var RoomsPage = ({ workspaceId, openRoom, onRoomOpened, onChatOpenChange }) => {
17579
17726
  const handleRoomSelect = useCallback37((room, displayName) => {
17580
17727
  setSelectedRoom({ id: room.id, projectId: room.projectId, name: displayName ?? room.name });
17581
17728
  }, []);
17582
- useEffect35(() => {
17729
+ useEffect36(() => {
17583
17730
  if (!openRoom) return;
17584
17731
  setSelectedRoom({ id: openRoom.id, projectId: openRoom.projectId, name: openRoom.name });
17585
17732
  void refreshRooms();
17586
17733
  onRoomOpened?.();
17587
17734
  }, [openRoom, onRoomOpened, refreshRooms]);
17588
- useEffect35(() => {
17735
+ useEffect36(() => {
17589
17736
  onChatOpenChange?.(selectedRoom !== null);
17590
17737
  return () => onChatOpenChange?.(false);
17591
17738
  }, [selectedRoom, onChatOpenChange]);
@@ -17621,7 +17768,7 @@ import { createStyles as createStyles34 } from "antd-style";
17621
17768
  import { Building2 as Building22, ChevronLeft as ChevronLeft3 } from "lucide-react";
17622
17769
 
17623
17770
  // src/components/CoSpace/OrgsList.tsx
17624
- import { useCallback as useCallback38, useEffect as useEffect36, useState as useState49 } from "react";
17771
+ import { useCallback as useCallback38, useEffect as useEffect37, useState as useState49 } from "react";
17625
17772
  import { createStyles as createStyles32 } from "antd-style";
17626
17773
  import { Empty as Empty3, Spin as Spin7, Tooltip as Tooltip7 } from "antd";
17627
17774
  import { Bot as Bot3, Users as Users4, MessageSquare as MessageSquare6 } from "lucide-react";
@@ -17743,7 +17890,7 @@ var OrgsList = ({
17743
17890
  const [orgs, setOrgs] = useState49([]);
17744
17891
  const [loading, setLoading] = useState49(true);
17745
17892
  const [error, setError] = useState49(null);
17746
- useEffect36(() => {
17893
+ useEffect37(() => {
17747
17894
  let cancelled = false;
17748
17895
  const authApiKey = isAuthenticated ? readAuthItem("lattice_token") || config.apiKey || "" : config.apiKey || "";
17749
17896
  const fetchOrgs = async () => {
@@ -18714,7 +18861,7 @@ var useWorkbenchNavStyles = createStyles36(({ token, css }) => ({
18714
18861
  }));
18715
18862
 
18716
18863
  // src/components/CapabilityBundles/CapabilityPreviewPanel.tsx
18717
- import { Alert as Alert6, Checkbox as Checkbox5, Collapse as Collapse2, Empty as Empty6, Input as Input12, Space as Space12, Switch as Switch3, Tag as Tag10, theme as theme5, Typography as Typography11 } from "antd";
18864
+ import { Alert as Alert6, Checkbox as Checkbox5, Collapse as Collapse2, Empty as Empty6, Input as Input12, Space as Space12, Switch as Switch3, Tag as Tag10, theme as theme6, Typography as Typography11 } from "antd";
18718
18865
  import { createStyles as createStyles38 } from "antd-style";
18719
18866
 
18720
18867
  // src/components/CapabilityBundles/CapabilityOverrideDetails.tsx
@@ -18735,8 +18882,8 @@ var CapabilityOverrideDetails = ({ overrides, bundles }) => {
18735
18882
  };
18736
18883
 
18737
18884
  // src/components/Chat/MiddlewareConfigForm.tsx
18738
- import { useEffect as useEffect38, useRef as useRef29, useState as useState54 } from "react";
18739
- import { Button as Button24, Checkbox as Checkbox4, Empty as Empty5, Input as Input11, List as List6, Segmented, Select as Select7, Space as Space11, Spin as Spin9, Switch as Switch2, Tag as Tag9, Tooltip as Tooltip8, Typography as Typography10, theme as theme4 } from "antd";
18885
+ import { useEffect as useEffect39, useRef as useRef29, useState as useState54 } from "react";
18886
+ import { Button as Button24, Checkbox as Checkbox4, Empty as Empty5, Input as Input11, List as List6, Segmented, Select as Select7, Space as Space11, Spin as Spin9, Switch as Switch2, Tag as Tag9, Tooltip as Tooltip8, Typography as Typography10, theme as theme5 } from "antd";
18740
18887
  import {
18741
18888
  CodeOutlined as CodeOutlined3,
18742
18889
  DatabaseOutlined,
@@ -18755,9 +18902,9 @@ import { Activity as Activity2 } from "lucide-react";
18755
18902
  import { createStyles as createStyles37 } from "antd-style";
18756
18903
 
18757
18904
  // src/components/Chat/ConnectionListField.tsx
18758
- import { useState as useState53, useEffect as useEffect37, useRef as useRef28 } from "react";
18905
+ import { useState as useState53, useEffect as useEffect38, useRef as useRef28 } from "react";
18759
18906
  import { List as List5, Checkbox as Checkbox3, Typography as Typography9, Spin as Spin8, Empty as Empty4, Button as Button23, Space as Space10 } from "antd";
18760
- import { theme as theme3 } from "antd";
18907
+ import { theme as theme4 } from "antd";
18761
18908
  import { jsx as jsx63, jsxs as jsxs47 } from "react/jsx-runtime";
18762
18909
  var { Text: Text9 } = Typography9;
18763
18910
  var ConnectionListField = ({
@@ -18765,7 +18912,7 @@ var ConnectionListField = ({
18765
18912
  value = [],
18766
18913
  onChange
18767
18914
  }) => {
18768
- const { token } = theme3.useToken();
18915
+ const { token } = theme4.useToken();
18769
18916
  const { get } = useApi();
18770
18917
  const t = useT();
18771
18918
  const [items, setItems] = useState53([]);
@@ -18773,7 +18920,7 @@ var ConnectionListField = ({
18773
18920
  const previousTypeRef = useRef28(connectionType);
18774
18921
  const onChangeRef = useRef28(onChange);
18775
18922
  onChangeRef.current = onChange;
18776
- useEffect37(() => {
18923
+ useEffect38(() => {
18777
18924
  let active = true;
18778
18925
  if (previousTypeRef.current !== connectionType) {
18779
18926
  previousTypeRef.current = connectionType;
@@ -19017,7 +19164,7 @@ var SkillSubSection = ({ value, onChange, token, styles }) => {
19017
19164
  const [search, setSearch] = useState54("");
19018
19165
  const { get } = useApi();
19019
19166
  const fetchedRef = useRef29(false);
19020
- useEffect38(() => {
19167
+ useEffect39(() => {
19021
19168
  if (fetchedRef.current) return;
19022
19169
  fetchedRef.current = true;
19023
19170
  const fetchSkills = async () => {
@@ -19094,7 +19241,7 @@ var DatabaseSubSection = ({ value, onChange, token, styles }) => {
19094
19241
  const [search, setSearch] = useState54("");
19095
19242
  const { get } = useApi();
19096
19243
  const fetchedRef = useRef29(false);
19097
- useEffect38(() => {
19244
+ useEffect39(() => {
19098
19245
  if (fetchedRef.current) return;
19099
19246
  fetchedRef.current = true;
19100
19247
  const fetchDatabases = async () => {
@@ -19173,7 +19320,7 @@ var MetricsSubSection = ({ value, onChange, token, styles }) => {
19173
19320
  const [search, setSearch] = useState54("");
19174
19321
  const { get } = useApi();
19175
19322
  const fetchedRef = useRef29(false);
19176
- useEffect38(() => {
19323
+ useEffect39(() => {
19177
19324
  if (fetchedRef.current) return;
19178
19325
  fetchedRef.current = true;
19179
19326
  const fetchServers = async () => {
@@ -19252,7 +19399,7 @@ var CollectionSubSection = ({ value, onChange, token, styles }) => {
19252
19399
  const [search, setSearch] = useState54("");
19253
19400
  const { get } = useApi();
19254
19401
  const fetchedRef = useRef29(false);
19255
- useEffect38(() => {
19402
+ useEffect39(() => {
19256
19403
  if (fetchedRef.current) return;
19257
19404
  fetchedRef.current = true;
19258
19405
  setLoading(true);
@@ -19513,7 +19660,7 @@ var renderConfigField = (propertyKey, property, value, onChange, token, t) => {
19513
19660
  };
19514
19661
  };
19515
19662
  var MiddlewareTypeIcon = ({ type }) => {
19516
- const { token } = theme4.useToken();
19663
+ const { token } = theme5.useToken();
19517
19664
  switch (type) {
19518
19665
  case "browser":
19519
19666
  return /* @__PURE__ */ jsx64(GlobalOutlined, { style: { color: token.colorPrimary } });
@@ -19643,7 +19790,7 @@ var MiddlewareConfigPage = ({ middleware, middlewareType, onToggle, onConfigChan
19643
19790
  ] });
19644
19791
  };
19645
19792
  var MiddlewareConfigForm = (props) => {
19646
- const { token } = theme4.useToken();
19793
+ const { token } = theme5.useToken();
19647
19794
  const { styles } = useMiddlewareConfigStyles();
19648
19795
  const t = useT();
19649
19796
  const renderListSubSection = (propertyKey, property, value, onChange, middlewareType) => {
@@ -19722,7 +19869,7 @@ var sourceForValue = (sources, value) => sources.find((source) => {
19722
19869
  var sourceForItem = (sources, item) => sources.find((source) => Array.isArray(source.value) && source.value.includes(item));
19723
19870
  var CapabilityCard = ({ capability, sources, names, middlewareType, styles, sectionTitles }) => {
19724
19871
  const t = useT();
19725
- const { token } = theme5.useToken();
19872
+ const { token } = theme6.useToken();
19726
19873
  const { styles: toolStyles } = useToolStyles();
19727
19874
  const schemaProps = middlewareType?.schema?.properties ?? {};
19728
19875
  const config = capability.config;
@@ -19833,7 +19980,7 @@ var CapabilityCard = ({ capability, sources, names, middlewareType, styles, sect
19833
19980
  var CapabilityPreviewPanel = ({ preview, bundles, middlewareTypes }) => {
19834
19981
  const t = useT();
19835
19982
  const { styles } = useMiddlewareConfigStyles();
19836
- const { token } = theme5.useToken();
19983
+ const { token } = theme6.useToken();
19837
19984
  if (!preview) return /* @__PURE__ */ jsx65(Empty6, { description: t("capability.preview.unavailable") });
19838
19985
  const names = new Map(bundles.map((bundle) => [bundle.id, bundle.name]));
19839
19986
  const sectionTitles = { config: t("capability.sections.config"), resources: t("capability.sections.resources"), tools: t("capability.sections.tools") };
@@ -19997,7 +20144,7 @@ var CompositionDiagram = () => {
19997
20144
  };
19998
20145
 
19999
20146
  // src/components/CapabilityBundles/ProjectGeneralSettings.tsx
20000
- import { useEffect as useEffect39, useState as useState55 } from "react";
20147
+ import { useEffect as useEffect40, useState as useState55 } from "react";
20001
20148
  import { Alert as Alert7, App as App3, Button as Button25, Form as Form4, Input as Input13, Select as Select8 } from "antd";
20002
20149
  import { jsx as jsx67, jsxs as jsxs51 } from "react/jsx-runtime";
20003
20150
  var KIND_OPTIONS2 = [
@@ -20014,7 +20161,7 @@ var ProjectGeneralSettings = ({ project, onSaved }) => {
20014
20161
  const [saving, setSaving] = useState55(false);
20015
20162
  const [error, setError] = useState55(null);
20016
20163
  const [dirty, setDirty] = useState55(false);
20017
- useEffect39(() => {
20164
+ useEffect40(() => {
20018
20165
  form.setFieldsValue({
20019
20166
  name: project.name,
20020
20167
  description: project.description ?? "",
@@ -20099,7 +20246,7 @@ var ProjectGeneralSettings = ({ project, onSaved }) => {
20099
20246
  };
20100
20247
 
20101
20248
  // src/components/CapabilityBundles/ProjectMembersSettings.tsx
20102
- import { useCallback as useCallback41, useEffect as useEffect40, useMemo as useMemo23, useState as useState56 } from "react";
20249
+ import { useCallback as useCallback41, useEffect as useEffect41, useMemo as useMemo23, useState as useState56 } from "react";
20103
20250
  import { Alert as Alert8, App as App4, Avatar as Avatar5, Button as Button26, Form as Form5, Input as Input14, Modal as Modal11, Select as Select9, Spin as Spin10, Tag as Tag11, Tooltip as Tooltip9 } from "antd";
20104
20251
  import { createStyles as createStyles40 } from "antd-style";
20105
20252
  import { Pause as Pause2, Pencil as Pencil2, Play as Play2, Plus as Plus7, Trash2 as Trash23, UserPlus as UserPlus2 } from "lucide-react";
@@ -20212,7 +20359,7 @@ var ProjectMembersSettings = ({ projectId }) => {
20212
20359
  setLoading(false);
20213
20360
  }
20214
20361
  }, [client, projectId, workspaceId]);
20215
- useEffect40(() => {
20362
+ useEffect41(() => {
20216
20363
  void load();
20217
20364
  }, [load]);
20218
20365
  const run = async (action, success) => {
@@ -20802,13 +20949,13 @@ var ProjectRoomPage = () => {
20802
20949
  };
20803
20950
 
20804
20951
  // src/components/Chat/MetricsConfigDrawerContent.tsx
20805
- import { useState as useState59, useEffect as useEffect41 } from "react";
20952
+ import { useState as useState59, useEffect as useEffect42 } from "react";
20806
20953
  import { Activity as Activity3, Edit2 as Edit22, Trash2 as Trash25, TestTube2, Loader2, Database, Settings, ChevronRight as ChevronRight5, ChevronLeft as ChevronLeft4, Check as Check2, BarChart3, TrendingUp } from "lucide-react";
20807
- import { Card as Card3, Button as Button28, Space as Space14, Typography as Typography14, Tag as Tag12, Modal as Modal13, message as message8, Input as Input15, Select as Select11, Steps, Checkbox as Checkbox6, Spin as Spin11, theme as theme6 } from "antd";
20954
+ import { Card as Card3, Button as Button28, Space as Space14, Typography as Typography14, Tag as Tag12, Modal as Modal13, message as message8, Input as Input15, Select as Select11, Steps, Checkbox as Checkbox6, Spin as Spin11, theme as theme7 } from "antd";
20808
20955
  import { Fragment as Fragment20, jsx as jsx72, jsxs as jsxs56 } from "react/jsx-runtime";
20809
20956
  var { Text: Text14 } = Typography14;
20810
20957
  var { TextArea: TextArea2 } = Input15;
20811
- var { useToken } = theme6;
20958
+ var { useToken } = theme7;
20812
20959
  var MetricsConfigDrawerContent = () => {
20813
20960
  const { config } = useLatticeChatShellContext();
20814
20961
  const { token } = useToken();
@@ -20822,7 +20969,7 @@ var MetricsConfigDrawerContent = () => {
20822
20969
  const [deleteTarget, setDeleteTarget] = useState59(null);
20823
20970
  const [deleting, setDeleting] = useState59(false);
20824
20971
  const tenantId = config.headers?.["x-tenant-id"] || "default";
20825
- useEffect41(() => {
20972
+ useEffect42(() => {
20826
20973
  loadConfigs();
20827
20974
  }, [tenantId]);
20828
20975
  const loadConfigs = async () => {
@@ -21057,12 +21204,12 @@ var MetricsConfigFormModal = ({
21057
21204
  selectedDataSources: editingConfig?.config?.selectedDataSources || []
21058
21205
  });
21059
21206
  };
21060
- useEffect41(() => {
21207
+ useEffect42(() => {
21061
21208
  if (open) {
21062
21209
  resetForm();
21063
21210
  }
21064
21211
  }, [open, editingConfig]);
21065
- useEffect41(() => {
21212
+ useEffect42(() => {
21066
21213
  if (currentStep === 1 && availableDatasources.length === 0 && !fetchingDatasources) {
21067
21214
  handleFetchDatasources();
21068
21215
  }
@@ -21454,7 +21601,7 @@ var MetricsConfigFormModal = ({
21454
21601
  };
21455
21602
 
21456
21603
  // src/components/Chat/DatabaseConfigDrawerContent.tsx
21457
- import { useState as useState60, useEffect as useEffect42 } from "react";
21604
+ import { useState as useState60, useEffect as useEffect43 } from "react";
21458
21605
  import { createStyles as createStyles42 } from "antd-style";
21459
21606
  import { Database as Database2, Plus as Plus9, Edit2 as Edit23, Trash2 as Trash26, TestTube2 as TestTube22, Loader2 as Loader22 } from "lucide-react";
21460
21607
  import { Card as Card4, Button as Button29, Space as Space15, Typography as Typography15, Tag as Tag13, Modal as Modal14, message as message9, Input as Input16, Select as Select12, Popconfirm as Popconfirm3 } from "antd";
@@ -21534,7 +21681,7 @@ var DatabaseConfigDrawerContent = ({
21534
21681
  const [testingId, setTestingId] = useState60(null);
21535
21682
  const [formModalOpen, setFormModalOpen] = useState60(false);
21536
21683
  const [editingConfig, setEditingConfig] = useState60(null);
21537
- useEffect42(() => {
21684
+ useEffect43(() => {
21538
21685
  loadConfigs();
21539
21686
  }, [tenantId]);
21540
21687
  const loadConfigs = async () => {
@@ -21966,11 +22113,11 @@ var DatabaseConfigFormModal = ({
21966
22113
  };
21967
22114
 
21968
22115
  // src/components/Chat/ConnectionsHub.tsx
21969
- import { useState as useState62, useEffect as useEffect44, useRef as useRef30, useMemo as useMemo25 } from "react";
22116
+ import { useState as useState62, useEffect as useEffect45, useRef as useRef30, useMemo as useMemo25 } from "react";
21970
22117
  import { Typography as Typography17, Tag as Tag15 } from "antd";
21971
22118
 
21972
22119
  // src/components/Chat/ConnectionConfigDrawerContent.tsx
21973
- import { useState as useState61, useEffect as useEffect43 } from "react";
22120
+ import { useState as useState61, useEffect as useEffect44 } from "react";
21974
22121
  import { createStyles as createStyles43 } from "antd-style";
21975
22122
  import { TestTube2 as TestTube23, Plug2 } from "lucide-react";
21976
22123
  import { Modal as Modal15, Space as Space16, Typography as Typography16, Tag as Tag14, message as message10, Input as Input17, Select as Select13, InputNumber as InputNumber2, Steps as Steps2, Button as Button30, Spin as Spin12 } from "antd";
@@ -22005,7 +22152,7 @@ var ConnectionConfigDrawerContent = ({
22005
22152
  const [deleting, setDeleting] = useState61(false);
22006
22153
  const [typeMeta, setTypeMeta] = useState61(null);
22007
22154
  const [metaLoading, setMetaLoading] = useState61(true);
22008
- useEffect43(() => {
22155
+ useEffect44(() => {
22009
22156
  loadMeta();
22010
22157
  loadConfigs();
22011
22158
  }, [connectionType]);
@@ -22228,7 +22375,7 @@ var ConnectionFormModal = ({
22228
22375
  const hasTest = connectionSchema.hasTest;
22229
22376
  const hasDiscover = connectionSchema.hasDiscover;
22230
22377
  const showStep2 = hasTest || hasDiscover;
22231
- useEffect43(() => {
22378
+ useEffect44(() => {
22232
22379
  if (open) {
22233
22380
  if (editingConfig) {
22234
22381
  const initial = {};
@@ -22529,7 +22676,7 @@ var ConnectionsHub = () => {
22529
22676
  const [selectedType, setSelectedType] = useState62(null);
22530
22677
  const [activeTab, setActiveTab] = useState62("connections");
22531
22678
  const fetchedRef = useRef30(false);
22532
- useEffect44(() => {
22679
+ useEffect45(() => {
22533
22680
  if (fetchedRef.current) return;
22534
22681
  fetchedRef.current = true;
22535
22682
  const endpoint = config.middlewareTypesEndpoint || "/api/middleware-types";
@@ -22623,9 +22770,9 @@ var ConnectionsHub = () => {
22623
22770
  };
22624
22771
 
22625
22772
  // src/components/Chat/McpConfigDrawerContent.tsx
22626
- import { useState as useState64, useEffect as useEffect45 } from "react";
22773
+ import { useState as useState64, useEffect as useEffect46 } from "react";
22627
22774
  import { Plug, Edit2 as Edit24, Trash2 as Trash28, TestTube2 as TestTube24, Loader2 as Loader23, Settings as Settings3, Database as Database3, ChevronRight as ChevronRight6, ChevronLeft as ChevronLeft5, Check as Check3, Terminal, Globe as Globe2, Server } from "lucide-react";
22628
- import { Card as Card5, Button as Button32, Space as Space18, Typography as Typography18, Tag as Tag16, Modal as Modal16, message as message11, Input as Input19, Select as Select14, Steps as Steps3, Checkbox as Checkbox7, Spin as Spin13, theme as theme7, Collapse as Collapse3, Switch as Switch4, Alert as Alert10 } from "antd";
22775
+ import { Card as Card5, Button as Button32, Space as Space18, Typography as Typography18, Tag as Tag16, Modal as Modal16, message as message11, Input as Input19, Select as Select14, Steps as Steps3, Checkbox as Checkbox7, Spin as Spin13, theme as theme8, Collapse as Collapse3, Switch as Switch4, Alert as Alert10 } from "antd";
22629
22776
 
22630
22777
  // src/components/Chat/KeyValueEditor.tsx
22631
22778
  import { useState as useState63 } from "react";
@@ -22708,7 +22855,7 @@ var KeyValueEditor = ({
22708
22855
  import { Fragment as Fragment23, jsx as jsx77, jsxs as jsxs60 } from "react/jsx-runtime";
22709
22856
  var { Text: Text18 } = Typography18;
22710
22857
  var { TextArea: TextArea4 } = Input19;
22711
- var { useToken: useToken2 } = theme7;
22858
+ var { useToken: useToken2 } = theme8;
22712
22859
  var { Panel } = Collapse3;
22713
22860
  var McpConfigDrawerContent = ({
22714
22861
  tenantId = "default"
@@ -22725,7 +22872,7 @@ var McpConfigDrawerContent = ({
22725
22872
  const [editingConfig, setEditingConfig] = useState64(null);
22726
22873
  const [deleteTarget, setDeleteTarget] = useState64(null);
22727
22874
  const [deleting, setDeleting] = useState64(false);
22728
- useEffect45(() => {
22875
+ useEffect46(() => {
22729
22876
  loadConfigs();
22730
22877
  }, [tenantId]);
22731
22878
  const loadConfigs = async () => {
@@ -23014,12 +23161,12 @@ var McpConfigFormModal = ({
23014
23161
  selectedTools: editingConfig?.selectedTools || []
23015
23162
  });
23016
23163
  };
23017
- useEffect45(() => {
23164
+ useEffect46(() => {
23018
23165
  if (open) {
23019
23166
  resetForm();
23020
23167
  }
23021
23168
  }, [open, editingConfig]);
23022
- useEffect45(() => {
23169
+ useEffect46(() => {
23023
23170
  if (currentStep === 1 && availableTools.length === 0 && !fetchingTools) {
23024
23171
  handleFetchTools();
23025
23172
  }
@@ -23402,11 +23549,11 @@ var McpConfigFormModal = ({
23402
23549
  };
23403
23550
 
23404
23551
  // src/components/Chat/SkillList.tsx
23405
- import { useState as useState65, useEffect as useEffect46, useCallback as useCallback42, useMemo as useMemo26, lazy, Suspense } from "react";
23552
+ import { useState as useState65, useEffect as useEffect47, useCallback as useCallback42, useMemo as useMemo26, lazy, Suspense } from "react";
23406
23553
  import { BrainCircuit, Trash2 as Trash29, Network } from "lucide-react";
23407
23554
  import { Modal as Modal17, message as message12, Tag as Tag17, Typography as Typography19, Input as Input20, Button as Button33, Space as Space19, Spin as Spin14 } from "antd";
23408
23555
  import { Fragment as Fragment24, jsx as jsx78, jsxs as jsxs61 } from "react/jsx-runtime";
23409
- var SkillFlow = lazy(() => import("./SkillFlow-XIMU6EET.mjs"));
23556
+ var SkillFlow = lazy(() => import("./SkillFlow-U6I2VRDK.mjs"));
23410
23557
  var { Text: Text19 } = Typography19;
23411
23558
  var { TextArea: TextArea5 } = Input20;
23412
23559
  var SkillList = () => {
@@ -23477,7 +23624,7 @@ var SkillList = () => {
23477
23624
  setLoading(false);
23478
23625
  }
23479
23626
  }, [get]);
23480
- useEffect46(() => {
23627
+ useEffect47(() => {
23481
23628
  loadSkills();
23482
23629
  }, [loadSkills]);
23483
23630
  const handleDelete = async (skill) => {
@@ -23665,7 +23812,7 @@ var SkillList = () => {
23665
23812
  };
23666
23813
 
23667
23814
  // src/components/Chat/CollectionsPanel.tsx
23668
- import { useState as useState67, useEffect as useEffect48 } from "react";
23815
+ import { useState as useState67, useEffect as useEffect49 } from "react";
23669
23816
  import {
23670
23817
  Button as Button35,
23671
23818
  Modal as Modal19,
@@ -23689,9 +23836,10 @@ import {
23689
23836
  Trash2 as Trash211
23690
23837
  } from "lucide-react";
23691
23838
  import { createStyles as createStyles45 } from "antd-style";
23839
+ import { EMBEDDING_DEFAULT_KEY } from "@axiom-lattice/protocols";
23692
23840
 
23693
23841
  // src/components/Chat/CollectionEntryTable.tsx
23694
- import { useState as useState66, useEffect as useEffect47, useCallback as useCallback43 } from "react";
23842
+ import { useState as useState66, useEffect as useEffect48, useCallback as useCallback43 } from "react";
23695
23843
  import {
23696
23844
  Button as Button34,
23697
23845
  Modal as Modal18,
@@ -23708,7 +23856,7 @@ import {
23708
23856
  message as message13,
23709
23857
  Tooltip as Tooltip10
23710
23858
  } from "antd";
23711
- import { Plus as Plus12, Pencil as Pencil3, Trash2 as Trash210, Search as Search3, ArrowLeft as ArrowLeft2, X as X3, ChevronDown as ChevronDown4, ChevronUp } from "lucide-react";
23859
+ import { Plus as Plus12, Pencil as Pencil3, Trash2 as Trash210, Search as Search4, ArrowLeft as ArrowLeft2, X as X3, ChevronDown as ChevronDown5, ChevronUp as ChevronUp2 } from "lucide-react";
23712
23860
  import { createStyles as createStyles44 } from "antd-style";
23713
23861
  import { Fragment as Fragment25, jsx as jsx79, jsxs as jsxs62 } from "react/jsx-runtime";
23714
23862
  var { Text: Text20, Paragraph: Paragraph2 } = Typography20;
@@ -23849,7 +23997,7 @@ var CollectionEntryTable = ({
23849
23997
  } catch {
23850
23998
  }
23851
23999
  }, [collectionName, get]);
23852
- useEffect47(() => {
24000
+ useEffect48(() => {
23853
24001
  fetchCollection();
23854
24002
  fetchEntries();
23855
24003
  setExpandedIds(/* @__PURE__ */ new Set());
@@ -23928,13 +24076,13 @@ var CollectionEntryTable = ({
23928
24076
  }, children: t("chatWorkspace.entries.reset") })
23929
24077
  ] })
23930
24078
  ] }),
23931
- filterIcon: (f) => /* @__PURE__ */ jsx79(Search3, { size: 13, style: { color: f ? "#6366f1" : "#d1d5db" } }),
24079
+ filterIcon: (f) => /* @__PURE__ */ jsx79(Search4, { size: 13, style: { color: f ? "#6366f1" : "#d1d5db" } }),
23932
24080
  filtered: columnFilters[fieldKey] !== void 0,
23933
24081
  filteredValue: columnFilters[fieldKey] !== void 0 ? [columnFilters[fieldKey]] : null
23934
24082
  });
23935
24083
  const enumFilter = (fieldKey, values) => ({
23936
24084
  filters: values.map((v) => ({ text: v, value: v })),
23937
- filterIcon: (f) => /* @__PURE__ */ jsx79(Search3, { size: 13, style: { color: f ? "#6366f1" : "#d1d5db" } }),
24085
+ filterIcon: (f) => /* @__PURE__ */ jsx79(Search4, { size: 13, style: { color: f ? "#6366f1" : "#d1d5db" } }),
23938
24086
  filtered: columnFilters[fieldKey] !== void 0,
23939
24087
  filteredValue: columnFilters[fieldKey] !== void 0 ? [columnFilters[fieldKey]] : null,
23940
24088
  onFilter: (value, _record) => {
@@ -24007,11 +24155,11 @@ var CollectionEntryTable = ({
24007
24155
  children: expanded ? /* @__PURE__ */ jsxs62(Fragment25, { children: [
24008
24156
  t("chatWorkspace.entries.collapse"),
24009
24157
  " ",
24010
- /* @__PURE__ */ jsx79(ChevronUp, { size: 12 })
24158
+ /* @__PURE__ */ jsx79(ChevronUp2, { size: 12 })
24011
24159
  ] }) : /* @__PURE__ */ jsxs62(Fragment25, { children: [
24012
24160
  t("chatWorkspace.entries.expand"),
24013
24161
  " ",
24014
- /* @__PURE__ */ jsx79(ChevronDown4, { size: 12 })
24162
+ /* @__PURE__ */ jsx79(ChevronDown5, { size: 12 })
24015
24163
  ] })
24016
24164
  }
24017
24165
  )
@@ -24209,7 +24357,7 @@ var CollectionsPanel = () => {
24209
24357
  const [confirmLoading, setConfirmLoading] = useState67(false);
24210
24358
  const [form] = Form7.useForm();
24211
24359
  const hasEmbeddings = embeddingKeys.length > 0;
24212
- useEffect48(() => {
24360
+ useEffect49(() => {
24213
24361
  let cancelled = false;
24214
24362
  (async () => {
24215
24363
  try {
@@ -24219,8 +24367,19 @@ var CollectionsPanel = () => {
24219
24367
  const options = toModelOptions(catalog.data, "embedding").map(
24220
24368
  (option) => ({ key: option.key, label: modelOptionLabel(option) })
24221
24369
  );
24370
+ const hasDefault = (catalog.data.models ?? []).some(
24371
+ (model) => model.kind === "embedding" && model.isDefault === true
24372
+ );
24222
24373
  if (!cancelled && options.length > 0) {
24223
- setEmbeddingKeys(options);
24374
+ setEmbeddingKeys(
24375
+ hasDefault ? [
24376
+ {
24377
+ key: EMBEDDING_DEFAULT_KEY,
24378
+ label: t("chatWorkspace.collections.defaultEmbedding")
24379
+ },
24380
+ ...options
24381
+ ] : options
24382
+ );
24224
24383
  return;
24225
24384
  }
24226
24385
  } catch {
@@ -24236,7 +24395,7 @@ var CollectionsPanel = () => {
24236
24395
  return () => {
24237
24396
  cancelled = true;
24238
24397
  };
24239
- }, [get]);
24398
+ }, [get, t]);
24240
24399
  const handleCreate = () => {
24241
24400
  setEditingCollection(null);
24242
24401
  form.resetFields();
@@ -24563,16 +24722,16 @@ var CollectionsPanel = () => {
24563
24722
  };
24564
24723
 
24565
24724
  // src/components/Chat/ToolsList.tsx
24566
- import { List as List7, Avatar as Avatar6, theme as theme8, Alert as Alert12, Button as Button36, Tag as Tag20 } from "antd";
24725
+ import { List as List7, Avatar as Avatar6, theme as theme9, Alert as Alert12, Button as Button36, Tag as Tag20 } from "antd";
24567
24726
  import { ReloadOutlined } from "@ant-design/icons";
24568
- import { useEffect as useEffect49, useState as useState68, useCallback as useCallback44 } from "react";
24727
+ import { useEffect as useEffect50, useState as useState68, useCallback as useCallback44 } from "react";
24569
24728
  import { jsx as jsx81, jsxs as jsxs64 } from "react/jsx-runtime";
24570
24729
  var ToolsList = ({
24571
24730
  onToolSelect,
24572
24731
  autoLoad = true
24573
24732
  }) => {
24574
24733
  const t = useT();
24575
- const { token } = theme8.useToken();
24734
+ const { token } = theme9.useToken();
24576
24735
  const { get } = useApi();
24577
24736
  const [state2, setState] = useState68({
24578
24737
  tools: [],
@@ -24612,7 +24771,7 @@ var ToolsList = ({
24612
24771
  const handleRefresh = useCallback44(() => {
24613
24772
  fetchTools();
24614
24773
  }, [fetchTools]);
24615
- useEffect49(() => {
24774
+ useEffect50(() => {
24616
24775
  if (autoLoad) {
24617
24776
  fetchTools();
24618
24777
  }
@@ -24802,7 +24961,7 @@ var ToolsList = ({
24802
24961
  };
24803
24962
 
24804
24963
  // src/components/Chat/TopologyInboxView.tsx
24805
- import { useEffect as useEffect50, useState as useState69 } from "react";
24964
+ import { useEffect as useEffect51, useState as useState69 } from "react";
24806
24965
  import { Card as Card6, Typography as Typography22, Spin as Spin15, Empty as Empty9, List as List8, Button as Button37, Space as Space22, Tag as Tag21 } from "antd";
24807
24966
  import { InboxOutlined as InboxOutlined2, ReloadOutlined as ReloadOutlined2 } from "@ant-design/icons";
24808
24967
  import { jsx as jsx82, jsxs as jsxs65 } from "react/jsx-runtime";
@@ -24838,7 +24997,7 @@ var TopologyInboxView = () => {
24838
24997
  setLoading(false);
24839
24998
  }
24840
24999
  };
24841
- useEffect50(() => {
25000
+ useEffect51(() => {
24842
25001
  fetchInbox();
24843
25002
  }, [get]);
24844
25003
  return /* @__PURE__ */ jsxs65("div", { style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
@@ -24923,8 +25082,8 @@ var TopologyInboxView = () => {
24923
25082
  // src/components/Eval/EvalPanel.tsx
24924
25083
  import React61, { useState as useState74, useMemo as useMemo27 } from "react";
24925
25084
  import { createStyles as createStyles50 } from "antd-style";
24926
- import { Button as Button40, Card as Card8, Typography as Typography27, Row as Row2, Col as Col2, Tag as Tag23, theme as theme9, Dropdown as Dropdown7, Popconfirm as Popconfirm8, message as message17 } from "antd";
24927
- import { Play as Play4, FlaskConical as FlaskConical2, TestTube2 as TestTube26, TrendingUp as TrendingUp2, CheckCircle as CheckCircle3, XCircle as XCircle3, ArrowRight, ChevronDown as ChevronDown5, Trash2 as Trash215, Clock as Clock2, FolderGit2 as FolderGit22 } from "lucide-react";
25085
+ import { Button as Button40, Card as Card8, Typography as Typography27, Row as Row2, Col as Col2, Tag as Tag23, theme as theme10, Dropdown as Dropdown7, Popconfirm as Popconfirm8, message as message17 } from "antd";
25086
+ import { Play as Play4, FlaskConical as FlaskConical2, TestTube2 as TestTube26, TrendingUp as TrendingUp2, CheckCircle as CheckCircle3, XCircle as XCircle3, ArrowRight, ChevronDown as ChevronDown6, Trash2 as Trash215, Clock as Clock2, FolderGit2 as FolderGit22 } from "lucide-react";
24928
25087
 
24929
25088
  // src/components/Eval/EvalSuiteCardList.tsx
24930
25089
  import { createStyles as createStyles46 } from "antd-style";
@@ -25036,7 +25195,7 @@ var EvalSuiteCardList = ({ projectId, onSelectSuite, onEvalInvalidated }) => {
25036
25195
  };
25037
25196
 
25038
25197
  // src/components/Eval/EvalSuiteDetail.tsx
25039
- import { useState as useState71, useEffect as useEffect52 } from "react";
25198
+ import { useState as useState71, useEffect as useEffect53 } from "react";
25040
25199
  import { createStyles as createStyles48 } from "antd-style";
25041
25200
  import { Button as Button38, Typography as Typography25, Modal as Modal21, Form as Form8, Input as Input23, Select as Select18, message as message16 } from "antd";
25042
25201
  import { Play as Play3, Trash2 as Trash213, Bot as Bot5, FlaskConical } from "lucide-react";
@@ -25046,7 +25205,7 @@ import { useState as useState70 } from "react";
25046
25205
  import { Modal as Modal20, Typography as Typography24, message as message15 } from "antd";
25047
25206
 
25048
25207
  // src/components/ProjectSelector.tsx
25049
- import { useEffect as useEffect51 } from "react";
25208
+ import { useEffect as useEffect52 } from "react";
25050
25209
 
25051
25210
  // src/components/EntityList/FilterSelect.tsx
25052
25211
  import { Select as Select17 } from "antd";
@@ -25140,7 +25299,7 @@ var ProjectSelector = ({
25140
25299
  loading
25141
25300
  } = useWorkspaceContext();
25142
25301
  const selectableProjects = kind === "training" ? trainingProjects : kind === "personal" ? personalProjects : projects;
25143
- useEffect51(() => {
25302
+ useEffect52(() => {
25144
25303
  if (kind === "business" && value === void 0 && !projectId && selectableProjects.length > 0) {
25145
25304
  setProject(selectableProjects[0].id);
25146
25305
  }
@@ -25311,7 +25470,7 @@ var EvalSuiteDetail = ({ projectId, suiteId, onBack, onRun, onEvalInvalidated })
25311
25470
  void loadAgents();
25312
25471
  setModalOpen(true);
25313
25472
  };
25314
- useEffect52(() => {
25473
+ useEffect53(() => {
25315
25474
  if (modalOpen && editingCase) {
25316
25475
  const agentId = editingCase.steps?.[0]?.agent_id;
25317
25476
  form.setFieldsValue({
@@ -25489,13 +25648,13 @@ var EvalSuiteDetail = ({ projectId, suiteId, onBack, onRun, onEvalInvalidated })
25489
25648
  };
25490
25649
 
25491
25650
  // src/components/Eval/EvalRunResults.tsx
25492
- import { useEffect as useEffect54, useRef as useRef33, useState as useState73 } from "react";
25651
+ import { useEffect as useEffect55, useRef as useRef33, useState as useState73 } from "react";
25493
25652
  import { createStyles as createStyles49 } from "antd-style";
25494
25653
  import { Alert as Alert13, App as App6, Button as Button39, Typography as Typography26, Progress, Tag as Tag22, Popconfirm as Popconfirm7 } from "antd";
25495
25654
  import { CheckCircle as CheckCircle2, XCircle as XCircle2, Trash2 as Trash214, FolderGit2 } from "lucide-react";
25496
25655
 
25497
25656
  // src/hooks/eval/useEvalRunDetail.ts
25498
- import { useCallback as useCallback45, useEffect as useEffect53, useRef as useRef32, useState as useState72 } from "react";
25657
+ import { useCallback as useCallback45, useEffect as useEffect54, useRef as useRef32, useState as useState72 } from "react";
25499
25658
  function normalizeError4(error) {
25500
25659
  return error instanceof Error ? error : new Error(String(error));
25501
25660
  }
@@ -25551,14 +25710,14 @@ function useEvalRunDetail(runId) {
25551
25710
  }
25552
25711
  }
25553
25712
  }, [get, t]);
25554
- useEffect53(() => {
25713
+ useEffect54(() => {
25555
25714
  mountedRef.current = true;
25556
25715
  return () => {
25557
25716
  mountedRef.current = false;
25558
25717
  requestTokenRef.current += 1;
25559
25718
  };
25560
25719
  }, []);
25561
- useEffect53(() => {
25720
+ useEffect54(() => {
25562
25721
  requestTokenRef.current += 1;
25563
25722
  runRef.current = null;
25564
25723
  setRun(null);
@@ -25673,7 +25832,7 @@ var EvalRunResults = ({ runId, onBack, onRunSettled }) => {
25673
25832
  const [deleting, setDeleting] = useState73(false);
25674
25833
  refreshRef.current = refresh;
25675
25834
  onRunSettledRef.current = onRunSettled;
25676
- useEffect54(() => {
25835
+ useEffect55(() => {
25677
25836
  refreshedTerminalRef.current = null;
25678
25837
  refreshGenerationRef.current += 1;
25679
25838
  setFinalizingKey(null);
@@ -25683,7 +25842,7 @@ var EvalRunResults = ({ runId, onBack, onRunSettled }) => {
25683
25842
  }, [runId]);
25684
25843
  const ownedTerminal = terminal?.runId === runId ? terminal : null;
25685
25844
  const terminalKey = ownedTerminal ? `${ownedTerminal.runId}:${ownedTerminal.generation}` : null;
25686
- useEffect54(() => {
25845
+ useEffect55(() => {
25687
25846
  if (!terminalKey || refreshedTerminalRef.current === terminalKey) return;
25688
25847
  refreshedTerminalRef.current = terminalKey;
25689
25848
  const generation = refreshGenerationRef.current;
@@ -26075,7 +26234,7 @@ var statusMeta = {
26075
26234
  var EvalPanel = ({ initial }) => {
26076
26235
  const t = useT();
26077
26236
  const { styles, cx } = useStyle7();
26078
- const { token } = theme9.useToken();
26237
+ const { token } = theme10.useToken();
26079
26238
  const { projects } = useEvalProjects();
26080
26239
  const [projectId, setProjectId] = useState74(initial?.projectId ?? "");
26081
26240
  const [page, setPage] = useState74(initial?.page ?? "dashboard");
@@ -26149,7 +26308,7 @@ var EvalPanel = ({ initial }) => {
26149
26308
  /* @__PURE__ */ jsx89("div", { style: { lineHeight: 1.3 }, children: projects.find((p) => p.id === projectId)?.name || t("eval.dashboard.selectProject") }),
26150
26309
  /* @__PURE__ */ jsx89(Text27, { type: "secondary", style: { fontSize: 11 }, children: projects.find((p) => p.id === projectId)?.targetServerConfig?.base_url || "" })
26151
26310
  ] }),
26152
- /* @__PURE__ */ jsx89(ChevronDown5, { size: 14 })
26311
+ /* @__PURE__ */ jsx89(ChevronDown6, { size: 14 })
26153
26312
  ] })
26154
26313
  }
26155
26314
  ),
@@ -26370,16 +26529,16 @@ var EvalPanel = ({ initial }) => {
26370
26529
  };
26371
26530
 
26372
26531
  // src/components/A2AKeys/A2AKeyList.tsx
26373
- import React65, { useCallback as useCallback48, useEffect as useEffect58, useState as useState78 } from "react";
26532
+ import React65, { useCallback as useCallback48, useEffect as useEffect59, useState as useState78 } from "react";
26374
26533
  import { Button as Button43, Modal as Modal24, Tag as Tag26, Typography as Typography31, message as message19 } from "antd";
26375
26534
  import { KeyRound, Trash2 as Trash216, RefreshCw as RefreshCw4, Ban as Ban2, CheckCircle2 as CheckCircle22, Copy as Copy2, Eye as Eye2 } from "lucide-react";
26376
26535
 
26377
26536
  // src/components/A2AKeys/KeyEditorDrawer.tsx
26378
- import { useCallback as useCallback46, useEffect as useEffect56, useRef as useRef34, useState as useState76 } from "react";
26537
+ import { useCallback as useCallback46, useEffect as useEffect57, useRef as useRef34, useState as useState76 } from "react";
26379
26538
  import { Button as Button42, Drawer as Drawer3, Form as Form9, Input as Input24, Select as Select19, Typography as Typography29, message as message18 } from "antd";
26380
26539
 
26381
26540
  // src/components/A2AKeys/OpenGrantsPicker.tsx
26382
- import { useEffect as useEffect55, useState as useState75 } from "react";
26541
+ import { useEffect as useEffect56, useState as useState75 } from "react";
26383
26542
  import { Badge as Badge3, Button as Button41, Checkbox as Checkbox9, Empty as Empty11, Spin as Spin17, Tag as Tag24, Tooltip as Tooltip12, Typography as Typography28 } from "antd";
26384
26543
  import { Book, Bot as Bot6, Box, Plug as Plug3 } from "lucide-react";
26385
26544
  import { jsx as jsx90, jsxs as jsxs71 } from "react/jsx-runtime";
@@ -26398,7 +26557,7 @@ var OpenGrantsPicker = ({
26398
26557
  const t = useT();
26399
26558
  const domains = catalog?.domains.filter((d) => d.items.length > 0) ?? [];
26400
26559
  const [active, setActive] = useState75(domains[0]?.domain);
26401
- useEffect55(() => {
26560
+ useEffect56(() => {
26402
26561
  if (!active || !domains.some((d) => d.domain === active)) {
26403
26562
  setActive(domains[0]?.domain);
26404
26563
  }
@@ -26538,7 +26697,7 @@ var KeyEditorDrawer = ({
26538
26697
  },
26539
26698
  [client]
26540
26699
  );
26541
- useEffect56(() => {
26700
+ useEffect57(() => {
26542
26701
  if (open) {
26543
26702
  if (editKey) {
26544
26703
  form.setFieldsValue({
@@ -26694,7 +26853,7 @@ Accept: application/json, text/event-stream` })
26694
26853
  };
26695
26854
 
26696
26855
  // src/components/A2AKeys/KeyExposureDetail.tsx
26697
- import { useCallback as useCallback47, useEffect as useEffect57, useState as useState77 } from "react";
26856
+ import { useCallback as useCallback47, useEffect as useEffect58, useState as useState77 } from "react";
26698
26857
  import { Alert as Alert14, Empty as Empty12, Modal as Modal23, Spin as Spin18, Tabs as Tabs2, Tag as Tag25, Typography as Typography30 } from "antd";
26699
26858
  import { Book as Book2, Bot as Bot7, Box as Box2, Plug as Plug4 } from "lucide-react";
26700
26859
  import { Fragment as Fragment27, jsx as jsx92, jsxs as jsxs73 } from "react/jsx-runtime";
@@ -26874,7 +27033,7 @@ var KeyExposureDetail = ({
26874
27033
  setLoading(false);
26875
27034
  }
26876
27035
  }, [client, keyId]);
26877
- useEffect57(() => {
27036
+ useEffect58(() => {
26878
27037
  if (open) void load();
26879
27038
  else setExposure(null);
26880
27039
  }, [open, load]);
@@ -26955,10 +27114,10 @@ var A2AKeyList = () => {
26955
27114
  if (requestId === requestSequence.current) setLoading(false);
26956
27115
  }
26957
27116
  }, [client, tenantId]);
26958
- useEffect58(() => {
27117
+ useEffect59(() => {
26959
27118
  void loadKeys();
26960
27119
  }, [loadKeys]);
26961
- useEffect58(() => {
27120
+ useEffect59(() => {
26962
27121
  const requestId = ++assistantRequestSequence.current;
26963
27122
  setAssistantNames(/* @__PURE__ */ new Map());
26964
27123
  if (!client.assistants || typeof client.assistants.list !== "function") return;
@@ -27172,7 +27331,7 @@ var A2AKeyList = () => {
27172
27331
  };
27173
27332
 
27174
27333
  // src/components/A2AKeys/OpenAuditLogList.tsx
27175
- import { useCallback as useCallback49, useEffect as useEffect59, useState as useState79 } from "react";
27334
+ import { useCallback as useCallback49, useEffect as useEffect60, useState as useState79 } from "react";
27176
27335
  import { Select as Select20, Space as Space23, Table as Table3, Tag as Tag27, Typography as Typography32 } from "antd";
27177
27336
  import { jsx as jsx94, jsxs as jsxs75 } from "react/jsx-runtime";
27178
27337
  var { Text: Text32 } = Typography32;
@@ -27199,7 +27358,7 @@ var OpenAuditLogList = ({ domain }) => {
27199
27358
  setLoading(false);
27200
27359
  }
27201
27360
  }, [client, selectedDomain, status]);
27202
- useEffect59(() => {
27361
+ useEffect60(() => {
27203
27362
  void load();
27204
27363
  }, [load]);
27205
27364
  const columns = [
@@ -27282,13 +27441,13 @@ var OpenAuditLogList = ({ domain }) => {
27282
27441
  };
27283
27442
 
27284
27443
  // src/components/CapabilityBundles/CapabilityBundleList.tsx
27285
- import { useEffect as useEffect61, useRef as useRef35, useState as useState81 } from "react";
27444
+ import { useEffect as useEffect62, useRef as useRef35, useState as useState81 } from "react";
27286
27445
  import { Button as Button45, Card as Card9, Modal as Modal26, Space as Space24, Tag as Tag28, Typography as Typography34, Alert as Alert16 } from "antd";
27287
27446
  import { Info as Info2, Pencil as Pencil5, Settings2 as Settings22, Link2, Wrench, Trash2 as Trash217, X as X4 } from "lucide-react";
27288
27447
 
27289
27448
  // src/components/CapabilityBundles/CapabilityBundleForm.tsx
27290
- import { useEffect as useEffect60, useState as useState80 } from "react";
27291
- import { Alert as Alert15, Button as Button44, Col as Col3, Empty as Empty13, Form as Form10, Input as Input25, Modal as Modal25, Row as Row3, Typography as Typography33, theme as theme10 } from "antd";
27449
+ import { useEffect as useEffect61, useState as useState80 } from "react";
27450
+ import { Alert as Alert15, Button as Button44, Col as Col3, Empty as Empty13, Form as Form10, Input as Input25, Modal as Modal25, Row as Row3, Typography as Typography33, theme as theme11 } from "antd";
27292
27451
  import { DeleteOutlined as DeleteOutlined2, SettingOutlined } from "@ant-design/icons";
27293
27452
  import { jsx as jsx95, jsxs as jsxs76 } from "react/jsx-runtime";
27294
27453
  var { Text: Text33 } = Typography33;
@@ -27317,7 +27476,7 @@ var summarizeCapability = (capability, type, t) => {
27317
27476
  var CapabilityBundleForm = ({ middlewareTypes, bundle, onSubmit, onCancel, open = true }) => {
27318
27477
  const t = useT();
27319
27478
  const [form] = Form10.useForm();
27320
- const { token } = theme10.useToken();
27479
+ const { token } = theme11.useToken();
27321
27480
  const { styles } = useMiddlewareConfigStyles();
27322
27481
  const { styles: navStyles } = useWorkbenchNavStyles();
27323
27482
  const [capabilities, setCapabilities] = useState80(bundle?.capabilities ?? []);
@@ -27328,7 +27487,7 @@ var CapabilityBundleForm = ({ middlewareTypes, bundle, onSubmit, onCancel, open
27328
27487
  const [submitError, setSubmitError] = useState80(null);
27329
27488
  const eligible = middlewareTypes.filter((type) => type.capabilityBundleEligible === true);
27330
27489
  const pickerTypes = eligible.filter((type) => !capabilities.some((capability) => capability.type === type.type));
27331
- useEffect60(() => {
27490
+ useEffect61(() => {
27332
27491
  setCapabilities(bundle?.capabilities ?? []);
27333
27492
  setSelectedSection("profile");
27334
27493
  form.setFieldsValue(bundle ? { name: bundle.name, description: bundle.description } : {});
@@ -27472,7 +27631,7 @@ var CapabilityBundleList = () => {
27472
27631
  const deleteGenerationRef = useRef35(0);
27473
27632
  const mountedRef = useRef35(true);
27474
27633
  const [deleteError, setDeleteError] = useState81(null);
27475
- useEffect61(() => {
27634
+ useEffect62(() => {
27476
27635
  mountedRef.current = true;
27477
27636
  return () => {
27478
27637
  mountedRef.current = false;
@@ -27628,7 +27787,7 @@ var CapabilityBundleList = () => {
27628
27787
  };
27629
27788
 
27630
27789
  // src/components/Chat/PersonalAssistantPage.tsx
27631
- import { useEffect as useEffect79, useState as useState102, useCallback as useCallback60, useRef as useRef49 } from "react";
27790
+ import { useEffect as useEffect80, useState as useState102, useCallback as useCallback60, useRef as useRef49 } from "react";
27632
27791
  import { Card as Card11, Button as Button59, Input as Input29, Typography as Typography46, message as message26, Dropdown as Dropdown9, Modal as Modal34 } from "antd";
27633
27792
  import { createStyles as createStyles62 } from "antd-style";
27634
27793
  import { Bot as Bot9, Sparkles, ArrowRight as ArrowRight2, ArrowLeft as ArrowLeft3, Smile, Zap, Heart, Lightbulb as Lightbulb2, Edit3, MoreHorizontal as MoreHorizontal4, MessagesSquare as MessagesSquare2, Trash2 as Trash219 } from "lucide-react";
@@ -27680,7 +27839,7 @@ import { Spin as Spin19 } from "antd";
27680
27839
  import { ListChecks as ListChecks2 } from "lucide-react";
27681
27840
  import { jsx as jsx98 } from "react/jsx-runtime";
27682
27841
  var TasksSideApp = lazy2(
27683
- () => import("./TasksSideApp-C6XFEGZ7.mjs").then((m) => ({ default: m.TasksSideApp }))
27842
+ () => import("./TasksSideApp-GPD7GCPM.mjs").then((m) => ({ default: m.TasksSideApp }))
27684
27843
  );
27685
27844
  var TasksButton = () => {
27686
27845
  const { openSideApp, sideAppVisible, sideAppSelectedCard } = useChatUIContext();
@@ -27743,7 +27902,7 @@ import {
27743
27902
  memo,
27744
27903
  forwardRef,
27745
27904
  useCallback as useCallback50,
27746
- useEffect as useEffect63,
27905
+ useEffect as useEffect64,
27747
27906
  useMemo as useMemo29,
27748
27907
  useRef as useRef37,
27749
27908
  useState as useState83,
@@ -27751,7 +27910,7 @@ import {
27751
27910
  } from "react";
27752
27911
 
27753
27912
  // src/components/Chat/UserMessageRail.tsx
27754
- import { useEffect as useEffect62, useMemo as useMemo28, useRef as useRef36, useState as useState82 } from "react";
27913
+ import { useEffect as useEffect63, useMemo as useMemo28, useRef as useRef36, useState as useState82 } from "react";
27755
27914
  import { Popover as Popover3, Typography as Typography35 } from "antd";
27756
27915
  import { createStyles as createStyles51 } from "antd-style";
27757
27916
  import { jsx as jsx99, jsxs as jsxs78 } from "react/jsx-runtime";
@@ -27947,7 +28106,7 @@ var UserMessageRail = ({
27947
28106
  () => messages.filter((message36) => message36.role === "human" && message36.id),
27948
28107
  [messages]
27949
28108
  );
27950
- useEffect62(() => {
28109
+ useEffect63(() => {
27951
28110
  if (!open) return;
27952
28111
  const targetId = hoveredId ?? activeId;
27953
28112
  if (targetId === null) return;
@@ -28091,7 +28250,7 @@ var LazyBubble = ({
28091
28250
  const ref = useRef37(null);
28092
28251
  const [isVisible, setIsVisible] = useState83(false);
28093
28252
  const [wasEverVisible, setWasEverVisible] = useState83(false);
28094
- useEffect63(() => {
28253
+ useEffect64(() => {
28095
28254
  const observer = new IntersectionObserver(
28096
28255
  ([entry]) => {
28097
28256
  const visible = entry.isIntersecting;
@@ -28111,10 +28270,10 @@ var LazyBubble = ({
28111
28270
  }
28112
28271
  };
28113
28272
  }, [wasEverVisible]);
28114
- useEffect63(() => {
28273
+ useEffect64(() => {
28115
28274
  autoLoadRightPanel?.();
28116
28275
  }, []);
28117
- useEffect63(() => {
28276
+ useEffect64(() => {
28118
28277
  if (message36.role !== "human") return;
28119
28278
  onElement?.(message36.id, ref.current);
28120
28279
  return () => onElement?.(message36.id, null);
@@ -28175,7 +28334,7 @@ var MessageList = ({
28175
28334
  if (element === null) userMessageElementsRef.current.delete(messageId);
28176
28335
  else userMessageElementsRef.current.set(messageId, element);
28177
28336
  }, []);
28178
- useEffect63(() => () => {
28337
+ useEffect64(() => () => {
28179
28338
  if (highlightTimerRef.current !== void 0) clearTimeout(highlightTimerRef.current);
28180
28339
  }, []);
28181
28340
  const jumpToMessage = useCallback50((messageId) => {
@@ -28205,7 +28364,7 @@ var MessageList = ({
28205
28364
  const isNearBottom = distanceFromBottom <= BOTTOM_THRESHOLD;
28206
28365
  setIsFollowingLatest((previous) => previous === isNearBottom ? previous : isNearBottom);
28207
28366
  }, []);
28208
- useEffect63(() => {
28367
+ useEffect64(() => {
28209
28368
  const previous = previousMessageMetaRef.current;
28210
28369
  const firstId = deferredMessages[0]?.id;
28211
28370
  if (firstId !== previous.firstId || deferredMessages.length < previous.length) {
@@ -28216,13 +28375,13 @@ var MessageList = ({
28216
28375
  length: deferredMessages.length
28217
28376
  };
28218
28377
  }, [deferredMessages]);
28219
- useEffect63(() => {
28378
+ useEffect64(() => {
28220
28379
  if (!isFollowingLatest) return;
28221
28380
  const list2 = bubbleListRef.current;
28222
28381
  if (!list2?.scrollBoxNativeElement) return;
28223
28382
  list2.scrollTo({ top: "bottom", behavior: "auto" });
28224
28383
  }, [deferredMessages, isFollowingLatest]);
28225
- useEffect63(() => {
28384
+ useEffect64(() => {
28226
28385
  if (!showUserRail) return;
28227
28386
  let disposed = false;
28228
28387
  let attachTimer;
@@ -28265,7 +28424,7 @@ var MessageList = ({
28265
28424
  };
28266
28425
  }, [deferredMessages, showUserRail]);
28267
28426
  const messageLengthRef = useRef37(deferredMessages?.length ?? 0);
28268
- useEffect63(() => {
28427
+ useEffect64(() => {
28269
28428
  if (deferredMessages?.length) {
28270
28429
  messageLengthRef.current = deferredMessages?.length;
28271
28430
  }
@@ -28432,7 +28591,7 @@ ${JSON.stringify(
28432
28591
  // src/components/Chat/MessageViewPanel.tsx
28433
28592
  import { jsx as jsx101 } from "react/jsx-runtime";
28434
28593
  var MessageGraph = React72.lazy(
28435
- () => import("./MessageGraph-PYBCVFGD.mjs").then((m) => ({ default: m.MessageGraph }))
28594
+ () => import("./MessageGraph-LEWE7BDE.mjs").then((m) => ({ default: m.MessageGraph }))
28436
28595
  );
28437
28596
  var MessageViewPanel = ({
28438
28597
  messages,
@@ -28655,7 +28814,7 @@ import {
28655
28814
  Space as Space36,
28656
28815
  Typography as Typography44
28657
28816
  } from "antd";
28658
- import React88, { useCallback as useCallback56, useContext as useContext8, useDeferredValue as useDeferredValue2, useEffect as useEffect75, useLayoutEffect as useLayoutEffect4, useMemo as useMemo34, useRef as useRef46, useState as useState98 } from "react";
28817
+ import React88, { useCallback as useCallback56, useContext as useContext8, useDeferredValue as useDeferredValue2, useEffect as useEffect76, useLayoutEffect as useLayoutEffect4, useMemo as useMemo34, useRef as useRef46, useState as useState98 } from "react";
28659
28818
  import { BrainCircuit as BrainCircuit4 } from "lucide-react";
28660
28819
 
28661
28820
  // src/components/GenUI/HITLContainer.tsx
@@ -28934,7 +29093,7 @@ var PendingMessagesContainer = () => {
28934
29093
  };
28935
29094
 
28936
29095
  // src/components/Chat/RunStatusBar.tsx
28937
- import { useEffect as useEffect64, useMemo as useMemo30, useState as useState85 } from "react";
29096
+ import { useEffect as useEffect65, useMemo as useMemo30, useState as useState85 } from "react";
28938
29097
  import { Space as Space28 } from "antd";
28939
29098
  import {
28940
29099
  ClockCircleOutlined as ClockCircleOutlined2,
@@ -29078,7 +29237,7 @@ var RunStatusBar = ({
29078
29237
  isLoading
29079
29238
  });
29080
29239
  const [now, setNow] = useState85(() => Date.now());
29081
- useEffect64(() => {
29240
+ useEffect65(() => {
29082
29241
  if (run?.status !== "running") return;
29083
29242
  setNow(Date.now());
29084
29243
  const timer = setInterval(() => setNow(Date.now()), 1e3);
@@ -29181,7 +29340,7 @@ import {
29181
29340
  DownOutlined as DownOutlined2,
29182
29341
  UpOutlined
29183
29342
  } from "@ant-design/icons";
29184
- import { useState as useState86, useEffect as useEffect65 } from "react";
29343
+ import { useState as useState86, useEffect as useEffect66 } from "react";
29185
29344
  import { jsx as jsx105, jsxs as jsxs82 } from "react/jsx-runtime";
29186
29345
  var { Text: Text35 } = Typography37;
29187
29346
  var useStyle12 = createStyles55(({ token, css }) => ({
@@ -29230,7 +29389,7 @@ var Todo = ({
29230
29389
  const [isExpanded, setIsExpanded] = useState86(
29231
29390
  () => smartCollapse ? getDefaultExpanded() : false
29232
29391
  );
29233
- useEffect65(() => {
29392
+ useEffect66(() => {
29234
29393
  if (smartCollapse) {
29235
29394
  setIsExpanded(getDefaultExpanded());
29236
29395
  }
@@ -29712,7 +29871,7 @@ var FileExplorerButton = (_props) => {
29712
29871
  };
29713
29872
 
29714
29873
  // src/components/Chat/ScheduleButton.tsx
29715
- import { useState as useState87, useCallback as useCallback51, useEffect as useEffect66 } from "react";
29874
+ import { useState as useState87, useCallback as useCallback51, useEffect as useEffect67 } from "react";
29716
29875
  import { Tooltip as Tooltip16, Button as Button49, Spin as Spin21 } from "antd";
29717
29876
  import { CalendarOutlined } from "@ant-design/icons";
29718
29877
  import { ScheduledTaskStatus } from "@axiom-lattice/client-sdk";
@@ -29746,7 +29905,7 @@ var ScheduleButton = ({
29746
29905
  setLoading(false);
29747
29906
  }
29748
29907
  }, [client, threadId]);
29749
- useEffect66(() => {
29908
+ useEffect67(() => {
29750
29909
  fetchScheduledTasks();
29751
29910
  }, [fetchScheduledTasks]);
29752
29911
  if (!threadId) {
@@ -29894,8 +30053,8 @@ import { useMemo as useMemo31 } from "react";
29894
30053
  import { MessageOutlined, NodeIndexOutlined } from "@ant-design/icons";
29895
30054
 
29896
30055
  // src/components/shared/SegmentedToggle.tsx
29897
- import React75, { useCallback as useCallback52, useEffect as useEffect67, useLayoutEffect as useLayoutEffect3, useRef as useRef38, useState as useState88 } from "react";
29898
- import { Tooltip as Tooltip17, theme as theme11 } from "antd";
30056
+ import React75, { useCallback as useCallback52, useEffect as useEffect68, useLayoutEffect as useLayoutEffect3, useRef as useRef38, useState as useState88 } from "react";
30057
+ import { Tooltip as Tooltip17, theme as theme12 } from "antd";
29899
30058
  import { jsx as jsx113, jsxs as jsxs87 } from "react/jsx-runtime";
29900
30059
  function SegmentedToggle({
29901
30060
  value,
@@ -29907,7 +30066,7 @@ function SegmentedToggle({
29907
30066
  className,
29908
30067
  style
29909
30068
  }) {
29910
- const { token } = theme11.useToken();
30069
+ const { token } = theme12.useToken();
29911
30070
  const itemRefs = useRef38([]);
29912
30071
  const [thumb, setThumb] = useState88({ left: 0, width: 0 });
29913
30072
  const activeIndex = Math.max(
@@ -29923,7 +30082,7 @@ function SegmentedToggle({
29923
30082
  useLayoutEffect3(() => {
29924
30083
  measure();
29925
30084
  }, [measure, options.length, size, block]);
29926
- useEffect67(() => {
30085
+ useEffect68(() => {
29927
30086
  window.addEventListener("resize", measure);
29928
30087
  return () => window.removeEventListener("resize", measure);
29929
30088
  }, [measure]);
@@ -30651,7 +30810,7 @@ var SkillPicker = ({ senderRef, iconOnly }) => {
30651
30810
  };
30652
30811
 
30653
30812
  // src/components/Chat/AgentPicker.tsx
30654
- import { useEffect as useEffect68, useState as useState92 } from "react";
30813
+ import { useEffect as useEffect69, useState as useState92 } from "react";
30655
30814
  import { Modal as Modal30, List as List12, Spin as Spin24, Empty as Empty16, Typography as Typography40, Button as Button53, Tooltip as Tooltip21 } from "antd";
30656
30815
  import { Bot as Bot8 } from "lucide-react";
30657
30816
  import { Fragment as Fragment33, jsx as jsx119, jsxs as jsxs92 } from "react/jsx-runtime";
@@ -30661,7 +30820,7 @@ var AgentPicker = ({ senderRef, iconOnly }) => {
30661
30820
  const [loading, setLoading] = useState92(false);
30662
30821
  const [selectedAgent, setSelectedAgent] = useState92(null);
30663
30822
  const { assistants, currentAssistant, selectAssistant, refresh, isLoading } = useAssistantContext();
30664
- useEffect68(() => {
30823
+ useEffect69(() => {
30665
30824
  if (!modalOpen) {
30666
30825
  return;
30667
30826
  }
@@ -30782,7 +30941,7 @@ var AgentPicker = ({ senderRef, iconOnly }) => {
30782
30941
  };
30783
30942
 
30784
30943
  // src/components/Chat/MetricsDataSourcePicker.tsx
30785
- import { useEffect as useEffect69, useState as useState93, useRef as useRef41 } from "react";
30944
+ import { useEffect as useEffect70, useState as useState93, useRef as useRef41 } from "react";
30786
30945
  import { Modal as Modal31, List as List13, Spin as Spin25, Empty as Empty17, Typography as Typography41, Button as Button54, Tag as Tag31, Tooltip as Tooltip22 } from "antd";
30787
30946
  import { Database as Database5, Check as Check4, Server as Server3 } from "lucide-react";
30788
30947
  import { Fragment as Fragment34, jsx as jsx120, jsxs as jsxs93 } from "react/jsx-runtime";
@@ -30872,7 +31031,7 @@ var MetricsDataSourcePicker = ({
30872
31031
  console.error("Failed to save datasource to sessionStorage:", error);
30873
31032
  }
30874
31033
  };
30875
- useEffect69(() => {
31034
+ useEffect70(() => {
30876
31035
  if (hasInitializedRef.current) return;
30877
31036
  hasInitializedRef.current = true;
30878
31037
  loadDataSources().then(() => {
@@ -31123,7 +31282,7 @@ var MetricsDataSourcePicker = ({
31123
31282
  };
31124
31283
 
31125
31284
  // src/components/Chat/ModelSelector.tsx
31126
- import { useState as useState94, useEffect as useEffect70, useCallback as useCallback54, useRef as useRef42 } from "react";
31285
+ import { useState as useState94, useEffect as useEffect71, useCallback as useCallback54, useRef as useRef42 } from "react";
31127
31286
  import { Select as Select21 } from "antd";
31128
31287
  import { jsx as jsx121 } from "react/jsx-runtime";
31129
31288
  var STORAGE_KEY2 = "axiom-lattice:selected-model";
@@ -31186,7 +31345,7 @@ var ModelSelector = ({
31186
31345
  setIsLoading(false);
31187
31346
  }
31188
31347
  }, [get, defaultModelKey]);
31189
- useEffect70(() => {
31348
+ useEffect71(() => {
31190
31349
  fetchModels();
31191
31350
  }, [fetchModels]);
31192
31351
  const handleChange = (modelKey) => {
@@ -31250,7 +31409,7 @@ import {
31250
31409
  } from "@ant-design/icons";
31251
31410
  import { Prompts } from "@ant-design/x";
31252
31411
  import { Space as Space34, Typography as Typography42, Spin as Spin26 } from "antd";
31253
- import { useEffect as useEffect71, useState as useState95, useMemo as useMemo32 } from "react";
31412
+ import { useEffect as useEffect72, useState as useState95, useMemo as useMemo32 } from "react";
31254
31413
  import { BrainCircuit as BrainCircuit3 } from "lucide-react";
31255
31414
  import { jsx as jsx122, jsxs as jsxs94 } from "react/jsx-runtime";
31256
31415
  var categoryConfig = {
@@ -31341,7 +31500,7 @@ var SkillCategoryPrompts = ({
31341
31500
  const [showAll, setShowAll] = useState95(false);
31342
31501
  const { get } = useApi();
31343
31502
  const MAX_SIMPLE_ITEMS = 10;
31344
- useEffect71(() => {
31503
+ useEffect72(() => {
31345
31504
  const loadSkills = async () => {
31346
31505
  setLoading(true);
31347
31506
  try {
@@ -31885,7 +32044,7 @@ var BusinessAnalysisPrompts = ({
31885
32044
  };
31886
32045
 
31887
32046
  // src/components/Chat/VoiceInputButton.tsx
31888
- import React85, { useCallback as useCallback55, useEffect as useEffect72, useRef as useRef43, useState as useState97 } from "react";
32047
+ import React85, { useCallback as useCallback55, useEffect as useEffect73, useRef as useRef43, useState as useState97 } from "react";
31889
32048
  import { Button as Button55, message as message21 } from "antd";
31890
32049
  import { AudioLines, Loader2 as Loader24, AlertCircle as AlertCircle2 } from "lucide-react";
31891
32050
  import { createStyles as createStyles58 } from "antd-style";
@@ -31954,7 +32113,7 @@ var VoiceInputButton = ({
31954
32113
  });
31955
32114
  const [sttAvailable, setSttAvailable] = useState97(false);
31956
32115
  const { get: apiGet } = useApi();
31957
- useEffect72(() => {
32116
+ useEffect73(() => {
31958
32117
  let cancelled = false;
31959
32118
  (async () => {
31960
32119
  try {
@@ -32107,7 +32266,7 @@ function truncateMatches(files, maxVisible = MAX_SUGGESTION_VISIBLE) {
32107
32266
  }
32108
32267
 
32109
32268
  // src/components/Chat/InitialMessageSubmitter.tsx
32110
- import { useEffect as useEffect73, useRef as useRef44 } from "react";
32269
+ import { useEffect as useEffect74, useRef as useRef44 } from "react";
32111
32270
  function InitialMessageSubmitter({
32112
32271
  request,
32113
32272
  onSubmitted,
@@ -32118,13 +32277,13 @@ function InitialMessageSubmitter({
32118
32277
  const requestRegistryRef = attemptedRequestIdsRef ?? localAttemptedRequestIdsRef;
32119
32278
  const sendMessageRef = useRef44(sendMessage);
32120
32279
  const onSubmittedRef = useRef44(onSubmitted);
32121
- useEffect73(() => {
32280
+ useEffect74(() => {
32122
32281
  sendMessageRef.current = sendMessage;
32123
32282
  }, [sendMessage]);
32124
- useEffect73(() => {
32283
+ useEffect74(() => {
32125
32284
  onSubmittedRef.current = onSubmitted;
32126
32285
  }, [onSubmitted]);
32127
- useEffect73(() => {
32286
+ useEffect74(() => {
32128
32287
  if (!request || !request.content.trim() || !threadId || isLoading || requestRegistryRef.current.has(request.requestId)) {
32129
32288
  return;
32130
32289
  }
@@ -32151,7 +32310,7 @@ function InitialMessageSubmitter({
32151
32310
  }
32152
32311
 
32153
32312
  // src/components/Chat/EmbedChatBridge.tsx
32154
- import { useEffect as useEffect74, useRef as useRef45 } from "react";
32313
+ import { useEffect as useEffect75, useRef as useRef45 } from "react";
32155
32314
  function EmbedChatBridge({ onReady, onMessage }) {
32156
32315
  const { messages, isLoading, sendMessage, threadId } = useAgentChat();
32157
32316
  const sendMessageRef = useRef45(sendMessage);
@@ -32163,7 +32322,7 @@ function EmbedChatBridge({ onReady, onMessage }) {
32163
32322
  const onMessageRef = useRef45(onMessage);
32164
32323
  onMessageRef.current = onMessage;
32165
32324
  const readyAnnouncedRef = useRef45(false);
32166
- useEffect74(() => {
32325
+ useEffect75(() => {
32167
32326
  if (readyAnnouncedRef.current || !threadId) return;
32168
32327
  readyAnnouncedRef.current = true;
32169
32328
  onReadyRef.current?.({
@@ -32185,7 +32344,7 @@ function EmbedChatBridge({ onReady, onMessage }) {
32185
32344
  const pendingAiIdsRef = useRef45(/* @__PURE__ */ new Set());
32186
32345
  const suppressingRef = useRef45(true);
32187
32346
  const prevLoadingRef = useRef45(false);
32188
- useEffect74(() => {
32347
+ useEffect75(() => {
32189
32348
  if (lastThreadIdRef.current !== threadId) {
32190
32349
  lastThreadIdRef.current = threadId;
32191
32350
  seenIdsRef.current = /* @__PURE__ */ new Set();
@@ -32240,7 +32399,7 @@ function LegacyInitialMessageSubmitter({
32240
32399
  const [occurrence, setOccurrence] = useState98(null);
32241
32400
  const committedOccurrenceRef = useRef46(null);
32242
32401
  const onInitialMessageSentRef = useRef46(onInitialMessageSent);
32243
- useEffect75(() => {
32402
+ useEffect76(() => {
32244
32403
  onInitialMessageSentRef.current = onInitialMessageSent;
32245
32404
  }, [onInitialMessageSent]);
32246
32405
  useLayoutEffect4(() => {
@@ -32351,7 +32510,7 @@ var Chating = ({
32351
32510
  const isHitlPendingFeedback = showHITL && interrupts && interrupts.length > 0;
32352
32511
  const typingFrames = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
32353
32512
  const [typingFrameIndex, setTypingFrameIndex] = useState98(0);
32354
- useEffect75(() => {
32513
+ useEffect76(() => {
32355
32514
  if (!isStreaming) return;
32356
32515
  const interval = setInterval(() => {
32357
32516
  setTypingFrameIndex((prev) => (prev + 1) % typingFrames.length);
@@ -32360,7 +32519,7 @@ var Chating = ({
32360
32519
  }, [isStreaming]);
32361
32520
  const conversationContext = useOptionalConversationContext();
32362
32521
  const systemContextSentRef = useRef46(false);
32363
- useEffect75(() => {
32522
+ useEffect76(() => {
32364
32523
  systemContextSentRef.current = false;
32365
32524
  }, [threadId]);
32366
32525
  const [modelConfig, setModelConfig] = useState98(null);
@@ -32372,7 +32531,7 @@ var Chating = ({
32372
32531
  }, [updateCustomRunConfig]);
32373
32532
  const [isEmptyState, setIsEmptyState] = useState98(showEmptyState && messages.length === 0 && !pendingMessages?.length);
32374
32533
  const [isTransitioning, setIsTransitioning] = useState98(false);
32375
- useEffect75(() => {
32534
+ useEffect76(() => {
32376
32535
  if (!showEmptyState) {
32377
32536
  setIsEmptyState(false);
32378
32537
  return;
@@ -32457,7 +32616,7 @@ var Chating = ({
32457
32616
  setSuggestionsLoading(false);
32458
32617
  }
32459
32618
  };
32460
- useEffect75(() => {
32619
+ useEffect76(() => {
32461
32620
  regsiterElement("action_show_attachments_uploader", {
32462
32621
  card_view: () => null,
32463
32622
  action: (data) => {
@@ -32733,7 +32892,7 @@ ${nextContent}`;
32733
32892
  return items;
32734
32893
  }, [suggestionMode, skills, workspaceFiles, deferredFileQuery, t]);
32735
32894
  const activeIndexRef = useRef46(0);
32736
- useEffect75(() => {
32895
+ useEffect76(() => {
32737
32896
  activeIndexRef.current = 0;
32738
32897
  }, [suggestionItems]);
32739
32898
  const insertSuggestion = (itemVal) => {
@@ -32982,10 +33141,10 @@ ${nextContent}`;
32982
33141
  };
32983
33142
 
32984
33143
  // src/components/Chat/ProjectSelector.tsx
32985
- import { useState as useState99, useCallback as useCallback57, useEffect as useEffect76, useMemo as useMemo35, useRef as useRef47 } from "react";
33144
+ import { useState as useState99, useCallback as useCallback57, useEffect as useEffect77, useMemo as useMemo35, useRef as useRef47 } from "react";
32986
33145
  import { Modal as Modal32, Input as Input27, Button as Button57, message as message23 } from "antd";
32987
33146
  import { createStyles as createStyles59 } from "antd-style";
32988
- import { Folder, ChevronDown as ChevronDown6, Building2 as Building24 } from "lucide-react";
33147
+ import { Folder, ChevronDown as ChevronDown7, Building2 as Building24 } from "lucide-react";
32989
33148
  import { Fragment as Fragment36, jsx as jsx126, jsxs as jsxs97 } from "react/jsx-runtime";
32990
33149
  var PROJECT_NAME_MAX_LENGTH = 50;
32991
33150
  var useStyles41 = createStyles59(({ token, css }) => ({
@@ -33250,7 +33409,7 @@ var ProjectSelector2 = ({
33250
33409
  }
33251
33410
  return Array.from(byId.values());
33252
33411
  }, [kind, projects, trainingProjects, personalProjects]);
33253
- useEffect76(() => {
33412
+ useEffect77(() => {
33254
33413
  const handleClickOutside = (event) => {
33255
33414
  if (containerRef.current && !containerRef.current.contains(event.target)) {
33256
33415
  setIsProjectListOpen(false);
@@ -33375,7 +33534,7 @@ var ProjectSelector2 = ({
33375
33534
  children: [
33376
33535
  /* @__PURE__ */ jsx126("div", { className: styles.projectTriggerIcon, children: /* @__PURE__ */ jsx126(Folder, { size: 16 }) }),
33377
33536
  /* @__PURE__ */ jsx126("div", { className: styles.projectTriggerInfo, children: /* @__PURE__ */ jsx126("div", { className: styles.projectTriggerName, children: currentProject?.name || t("chat.project.selectTitle") }) }),
33378
- !disableDropdown && /* @__PURE__ */ jsx126("div", { className: `${styles.projectTriggerArrow} ${isProjectListOpen ? "expanded" : ""}`, children: /* @__PURE__ */ jsx126(ChevronDown6, { size: 14 }) })
33537
+ !disableDropdown && /* @__PURE__ */ jsx126("div", { className: `${styles.projectTriggerArrow} ${isProjectListOpen ? "expanded" : ""}`, children: /* @__PURE__ */ jsx126(ChevronDown7, { size: 14 }) })
33379
33538
  ]
33380
33539
  }
33381
33540
  ),
@@ -33441,7 +33600,7 @@ var ProjectSelector2 = ({
33441
33600
  };
33442
33601
 
33443
33602
  // src/components/Chat/ToolPanelFiles.tsx
33444
- import { useCallback as useCallback58, useEffect as useEffect77, useMemo as useMemo36, useState as useState100 } from "react";
33603
+ import { useCallback as useCallback58, useEffect as useEffect78, useMemo as useMemo36, useState as useState100 } from "react";
33445
33604
  import { message as message24 } from "antd";
33446
33605
  import { jsx as jsx127 } from "react/jsx-runtime";
33447
33606
  var ToolPanelFiles = () => {
@@ -33525,7 +33684,7 @@ var ToolPanelFiles = () => {
33525
33684
  setDirectoryLoading((prev) => ({ ...prev, [path]: false }));
33526
33685
  }
33527
33686
  }, [directoryExpanded, listPath, currentAssistant?.id]);
33528
- useEffect77(() => {
33687
+ useEffect78(() => {
33529
33688
  resourceFolders.forEach((folder) => {
33530
33689
  void loadAssetsForFolder(folder, false);
33531
33690
  });
@@ -33727,7 +33886,7 @@ var ProjectScopedChating = ({
33727
33886
  );
33728
33887
 
33729
33888
  // src/components/Chat/PersonalAssistantChannelModal.tsx
33730
- import { useEffect as useEffect78, useState as useState101, useCallback as useCallback59, useMemo as useMemo37, useRef as useRef48 } from "react";
33889
+ import { useEffect as useEffect79, useState as useState101, useCallback as useCallback59, useMemo as useMemo37, useRef as useRef48 } from "react";
33731
33890
  import {
33732
33891
  Button as Button58,
33733
33892
  Form as Form11,
@@ -34064,7 +34223,7 @@ var PersonalAssistantChannelModal = ({
34064
34223
  message25.error(t("chatConfig.paChannel.qr.statusFailed"));
34065
34224
  }
34066
34225
  }, [get, clearQrCountdown, form, t]);
34067
- useEffect78(() => {
34226
+ useEffect79(() => {
34068
34227
  return () => {
34069
34228
  if (qrCountdownRef.current) clearInterval(qrCountdownRef.current);
34070
34229
  };
@@ -34106,7 +34265,7 @@ var PersonalAssistantChannelModal = ({
34106
34265
  }
34107
34266
  }
34108
34267
  }, [get]);
34109
- useEffect78(() => {
34268
+ useEffect79(() => {
34110
34269
  if (open) {
34111
34270
  loadInstallations();
34112
34271
  resetState();
@@ -34851,7 +35010,7 @@ var PersonalAssistantPage = () => {
34851
35010
  return created.id;
34852
35011
  }, [config.baseURL, config.apiKey, workspaceId, projectId]);
34853
35012
  const lastDate = useRef49("");
34854
- useEffect79(() => {
35013
+ useEffect80(() => {
34855
35014
  if (!assistantId) return;
34856
35015
  let timer;
34857
35016
  const enter = () => {
@@ -35046,7 +35205,7 @@ var PersonalAssistantPage = () => {
35046
35205
  };
35047
35206
 
35048
35207
  // src/components/Chat/CustomMenuPage.tsx
35049
- import { useEffect as useEffect83, useRef as useRef52 } from "react";
35208
+ import { useEffect as useEffect84, useRef as useRef52 } from "react";
35050
35209
 
35051
35210
  // src/components/Chat/ChatSidebar.tsx
35052
35211
  import { useMemo as useMemo39, useCallback as useCallback62 } from "react";
@@ -35056,7 +35215,7 @@ import {
35056
35215
  } from "lucide-react";
35057
35216
 
35058
35217
  // src/components/Chat/ThreadHistoryMenuContent.tsx
35059
- import React93, { useCallback as useCallback61, useEffect as useEffect80, useMemo as useMemo38, useRef as useRef50, useState as useState103 } from "react";
35218
+ import React93, { useCallback as useCallback61, useEffect as useEffect81, useMemo as useMemo38, useRef as useRef50, useState as useState103 } from "react";
35060
35219
  import { createStyles as createStyles63 } from "antd-style";
35061
35220
  import { Check as Check5, MessageSquare as MessageSquare9, Pencil as Pencil6, Trash2 as Trash220, X as X6 } from "lucide-react";
35062
35221
  import { Badge as Badge7, Button as Button60, Input as Input30, message as message27, Modal as Modal35, Select as Select23, Tooltip as Tooltip23 } from "antd";
@@ -35276,7 +35435,7 @@ var ThreadHistoryMenuContent = () => {
35276
35435
  () => threads.slice(0, 50),
35277
35436
  [threads.map((thread) => thread.id).join("|")]
35278
35437
  );
35279
- useEffect80(() => {
35438
+ useEffect81(() => {
35280
35439
  if (!assistantId || !hasClient || statusThreads.length === 0) {
35281
35440
  setStatuses({});
35282
35441
  return;
@@ -35659,12 +35818,12 @@ var ChatSidebar = ({
35659
35818
  };
35660
35819
 
35661
35820
  // src/components/GenUI/FileRenderer.tsx
35662
- import { useEffect as useEffect82, useState as useState105, useMemo as useMemo40 } from "react";
35821
+ import { useEffect as useEffect83, useState as useState105, useMemo as useMemo40 } from "react";
35663
35822
  import { Spin as Spin29, Alert as Alert20, Button as Button62 } from "antd";
35664
35823
  import { createStyles as createStyles65 } from "antd-style";
35665
35824
 
35666
35825
  // src/components/GenUI/MarkdownViewer.tsx
35667
- import React95, { useState as useState104, useEffect as useEffect81, useRef as useRef51 } from "react";
35826
+ import React95, { useState as useState104, useEffect as useEffect82, useRef as useRef51 } from "react";
35668
35827
  import { Button as Button61, Tooltip as Tooltip24, message as message28 } from "antd";
35669
35828
  import {
35670
35829
  CopyOutlined as CopyOutlined3,
@@ -35942,7 +36101,7 @@ var MarkdownViewer = ({
35942
36101
  const [copied, setCopied] = useState104(false);
35943
36102
  const contentRef = useRef51(null);
35944
36103
  const downloadFileName = fileName.split("/").pop() || fileName;
35945
- useEffect81(() => {
36104
+ useEffect82(() => {
35946
36105
  if (copied) {
35947
36106
  const timer = setTimeout(() => setCopied(false), 2e3);
35948
36107
  return () => clearTimeout(timer);
@@ -36203,7 +36362,7 @@ var FileRenderer = ({
36203
36362
  const [loading, setLoading] = useState105(true);
36204
36363
  const [error, setError] = useState105(null);
36205
36364
  const category = useMemo40(() => getFileCategory(fileName), [fileName]);
36206
- useEffect82(() => {
36365
+ useEffect83(() => {
36207
36366
  if (category === "markdown" || category === "text") {
36208
36367
  setLoading(true);
36209
36368
  setError(null);
@@ -36304,7 +36463,7 @@ var EmbeddedChatSidebar = ({
36304
36463
  const { sidebarDefaultExpanded } = useLatticeChatShellContext().config;
36305
36464
  const wasMobileRef = useRef52(isMobile);
36306
36465
  const desktopCollapsedRef = useRef52(void 0);
36307
- useEffect83(() => {
36466
+ useEffect84(() => {
36308
36467
  if (wasMobileRef.current === isMobile) {
36309
36468
  return;
36310
36469
  }
@@ -36434,7 +36593,7 @@ var CustomMenuPage = ({ component_key, data }) => {
36434
36593
  };
36435
36594
 
36436
36595
  // src/components/Chat/SharesPage.tsx
36437
- import { useEffect as useEffect84, useState as useState106 } from "react";
36596
+ import { useEffect as useEffect85, useState as useState106 } from "react";
36438
36597
  import { Table as Table4, Button as Button63, Dropdown as Dropdown10, message as message29, Modal as Modal36, Tag as Tag32, Typography as Typography47 } from "antd";
36439
36598
  import { CopyOutlined as CopyOutlined4, StopOutlined as StopOutlined2, MoreOutlined as MoreOutlined5 } from "@ant-design/icons";
36440
36599
  import { jsx as jsx138, jsxs as jsxs105 } from "react/jsx-runtime";
@@ -36458,7 +36617,7 @@ var SharesPage = () => {
36458
36617
  }
36459
36618
  setLoading(false);
36460
36619
  };
36461
- useEffect84(() => {
36620
+ useEffect85(() => {
36462
36621
  loadShares();
36463
36622
  }, []);
36464
36623
  const handleCopy = (record) => {
@@ -36580,12 +36739,12 @@ ${pwdText}`.trim());
36580
36739
 
36581
36740
  // src/components/Migration/MigrationPage.tsx
36582
36741
  import { useState as useState109 } from "react";
36583
- import { Button as Button66, Space as Space39, Typography as Typography50, theme as theme14 } from "antd";
36742
+ import { Button as Button66, Space as Space39, Typography as Typography50, theme as theme15 } from "antd";
36584
36743
  import { Download, Upload as Upload4, ArrowLeft as ArrowLeft5 } from "lucide-react";
36585
36744
 
36586
36745
  // src/components/Migration/ExportStep.tsx
36587
- import { useEffect as useEffect85, useState as useState107, useCallback as useCallback63 } from "react";
36588
- import { Checkbox as Checkbox12, Button as Button64, Space as Space37, Card as Card12, Alert as Alert21, Tag as Tag33, Steps as Steps4, Typography as Typography48, theme as theme12 } from "antd";
36746
+ import { useEffect as useEffect86, useState as useState107, useCallback as useCallback63 } from "react";
36747
+ import { Checkbox as Checkbox12, Button as Button64, Space as Space37, Card as Card12, Alert as Alert21, Tag as Tag33, Steps as Steps4, Typography as Typography48, theme as theme13 } from "antd";
36589
36748
  import {
36590
36749
  Bot as Bot10,
36591
36750
  Zap as Zap2,
@@ -36638,9 +36797,9 @@ var ExportStep = () => {
36638
36797
  const [entityPreview, setEntityPreview] = useState107({});
36639
36798
  const [selectedEntityIds, setSelectedEntityIds] = useState107({});
36640
36799
  const [loadingPreview, setLoadingPreview] = useState107(false);
36641
- const { token } = theme12.useToken();
36800
+ const { token } = theme13.useToken();
36642
36801
  const t = useT();
36643
- useEffect85(() => {
36802
+ useEffect86(() => {
36644
36803
  fetchExportableTypes();
36645
36804
  }, []);
36646
36805
  const loadEntityPreview = useCallback63(async (types) => {
@@ -36908,7 +37067,7 @@ var ExportStep = () => {
36908
37067
 
36909
37068
  // src/components/Migration/ImportStep.tsx
36910
37069
  import { useState as useState108 } from "react";
36911
- import { Upload as AntUpload, Button as Button65, Alert as Alert22, Progress as Progress4, Typography as Typography49, theme as theme13, Space as Space38, Steps as Steps5 } from "antd";
37070
+ import { Upload as AntUpload, Button as Button65, Alert as Alert22, Progress as Progress4, Typography as Typography49, theme as theme14, Space as Space38, Steps as Steps5 } from "antd";
36912
37071
  import { Upload as Upload3, CheckCircle as CheckCircle5, XCircle as XCircle4, MinusCircle } from "lucide-react";
36913
37072
 
36914
37073
  // src/components/Migration/ConflictResolver.tsx
@@ -37016,7 +37175,7 @@ var ImportStep = ({ onComplete }) => {
37016
37175
  doImportApply
37017
37176
  } = useExportImport();
37018
37177
  const [resolutions, setResolutions] = useState108({});
37019
- const { token } = theme13.useToken();
37178
+ const { token } = theme14.useToken();
37020
37179
  const t = useT();
37021
37180
  const handleUpload = async (file) => {
37022
37181
  await doImportPreview(file);
@@ -37174,7 +37333,7 @@ var iconBox = (bg, Icon) => /* @__PURE__ */ jsx142("div", { style: {
37174
37333
  }, children: /* @__PURE__ */ jsx142(Icon, { size: 22 }) });
37175
37334
  var MigrationPage = () => {
37176
37335
  const [mode, setMode] = useState109("choose");
37177
- const { token } = theme14.useToken();
37336
+ const { token } = theme15.useToken();
37178
37337
  const t = useT();
37179
37338
  if (mode === "choose") {
37180
37339
  const cardStyle = {
@@ -37253,7 +37412,7 @@ var MigrationPage = () => {
37253
37412
  };
37254
37413
 
37255
37414
  // src/components/Crons/CronsPanel.tsx
37256
- import { useCallback as useCallback64, useEffect as useEffect87, useMemo as useMemo42, useRef as useRef54, useState as useState111 } from "react";
37415
+ import { useCallback as useCallback64, useEffect as useEffect88, useMemo as useMemo42, useRef as useRef54, useState as useState111 } from "react";
37257
37416
  import {
37258
37417
  Alert as Alert24,
37259
37418
  Button as Button68,
@@ -37263,7 +37422,7 @@ import {
37263
37422
  Space as Space42,
37264
37423
  Tooltip as Tooltip26,
37265
37424
  Typography as Typography53,
37266
- theme as theme17
37425
+ theme as theme18
37267
37426
  } from "antd";
37268
37427
  import { createStyles as createStyles67 } from "antd-style";
37269
37428
  import {
@@ -37277,7 +37436,7 @@ import dayjs3 from "dayjs";
37277
37436
  import relativeTime2 from "dayjs/plugin/relativeTime.js";
37278
37437
 
37279
37438
  // src/components/Crons/CronCard.tsx
37280
- import { Button as Button67, Popconfirm as Popconfirm10, Space as Space40, Tag as Tag35, Tooltip as Tooltip25, Typography as Typography51, theme as theme15 } from "antd";
37439
+ import { Button as Button67, Popconfirm as Popconfirm10, Space as Space40, Tag as Tag35, Tooltip as Tooltip25, Typography as Typography51, theme as theme16 } from "antd";
37281
37440
  import { createStyles as createStyles66 } from "antd-style";
37282
37441
  import { CalendarClock, FolderKanban, Pause as Pause3, Play as Play5, Trash2 as Trash221 } from "lucide-react";
37283
37442
  import dayjs from "dayjs";
@@ -37650,7 +37809,7 @@ var CronCard = ({
37650
37809
  }) => {
37651
37810
  const t = useT();
37652
37811
  const project = projectLabel(cron, projectName, t("crons.card.projectFallback"));
37653
- const { token } = theme15.useToken();
37812
+ const { token } = theme16.useToken();
37654
37813
  const { styles } = useStyles48();
37655
37814
  const dot = statusColor(cron.status, token);
37656
37815
  const canToggle = cron.status === "pending" || cron.status === "paused";
@@ -37808,7 +37967,7 @@ var CronCard = ({
37808
37967
  };
37809
37968
 
37810
37969
  // src/components/Crons/CronFormModal.tsx
37811
- import { useEffect as useEffect86, useMemo as useMemo41, useRef as useRef53, useState as useState110 } from "react";
37970
+ import { useEffect as useEffect87, useMemo as useMemo41, useRef as useRef53, useState as useState110 } from "react";
37812
37971
  import {
37813
37972
  Alert as Alert23,
37814
37973
  Collapse as Collapse5,
@@ -37821,7 +37980,7 @@ import {
37821
37980
  Switch as Switch6,
37822
37981
  TimePicker,
37823
37982
  Typography as Typography52,
37824
- theme as theme16
37983
+ theme as theme17
37825
37984
  } from "antd";
37826
37985
  import { CalendarClock as CalendarClock2 } from "lucide-react";
37827
37986
  import dayjs2 from "dayjs";
@@ -37896,7 +38055,7 @@ function timeToDayjs(value) {
37896
38055
  return dayjs2().hour(hour).minute(minute).second(0).millisecond(0);
37897
38056
  }
37898
38057
  var Field = ({ label, hint, children }) => {
37899
- const { token } = theme16.useToken();
38058
+ const { token } = theme17.useToken();
37900
38059
  return /* @__PURE__ */ jsxs111("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: [
37901
38060
  /* @__PURE__ */ jsx144(Text43, { style: { fontSize: 12, fontWeight: 600, color: token.colorTextSecondary }, children: label }),
37902
38061
  children,
@@ -37904,7 +38063,7 @@ var Field = ({ label, hint, children }) => {
37904
38063
  ] });
37905
38064
  };
37906
38065
  var FormSection = ({ title, children }) => {
37907
- const { token } = theme16.useToken();
38066
+ const { token } = theme17.useToken();
37908
38067
  return /* @__PURE__ */ jsxs111("div", { style: { display: "flex", flexDirection: "column", gap: 12 }, children: [
37909
38068
  /* @__PURE__ */ jsx144(
37910
38069
  "div",
@@ -37929,7 +38088,7 @@ var CronFormModal = ({
37929
38088
  onCreated
37930
38089
  }) => {
37931
38090
  const t = useT();
37932
- const { token } = theme16.useToken();
38091
+ const { token } = theme17.useToken();
37933
38092
  const workspaceContext = useWorkspaceContextOptional();
37934
38093
  const client = useClient(assistantId || "__no_assistant__");
37935
38094
  const [form, setForm] = useState110(defaultForm);
@@ -37963,7 +38122,7 @@ var CronFormModal = ({
37963
38122
  const [formError, setFormError] = useState110(null);
37964
38123
  const [cronTouched, setCronTouched] = useState110(false);
37965
38124
  const [saving, setSaving] = useState110(false);
37966
- useEffect86(() => {
38125
+ useEffect87(() => {
37967
38126
  if (!open) return;
37968
38127
  setForm(defaultForm(scopeDefaults.current));
37969
38128
  setFormError(null);
@@ -38537,7 +38696,7 @@ var useStyles49 = createStyles67(({ css, token }) => ({
38537
38696
  `
38538
38697
  }));
38539
38698
  var StatTile = ({ icon, label, value, accent }) => {
38540
- const { token } = theme17.useToken();
38699
+ const { token } = theme18.useToken();
38541
38700
  const { styles } = useStyles49();
38542
38701
  return /* @__PURE__ */ jsxs112(
38543
38702
  "div",
@@ -38592,7 +38751,7 @@ var StatTile = ({ icon, label, value, accent }) => {
38592
38751
  };
38593
38752
  var CronsPanel = () => {
38594
38753
  const t = useT();
38595
- const { token } = theme17.useToken();
38754
+ const { token } = theme18.useToken();
38596
38755
  const { assistants, currentAssistant } = useAssistantContext();
38597
38756
  const workspaceContext = useWorkspaceContextOptional();
38598
38757
  const [assistantId, setAssistantId] = useState111("");
@@ -38604,7 +38763,7 @@ var CronsPanel = () => {
38604
38763
  const [createOpen, setCreateOpen] = useState111(false);
38605
38764
  const loadGeneration = useRef54(0);
38606
38765
  const client = useClient(assistantId || "__no_assistant__");
38607
- useEffect87(() => {
38766
+ useEffect88(() => {
38608
38767
  const next = currentAssistant?.id ?? assistants[0]?.id ?? "";
38609
38768
  setAssistantId((previous) => previous && assistants.some((assistant) => assistant.id === previous) ? previous : next);
38610
38769
  }, [assistants, currentAssistant]);
@@ -38626,7 +38785,7 @@ var CronsPanel = () => {
38626
38785
  if (generation === loadGeneration.current) setLoading(false);
38627
38786
  }
38628
38787
  }, [assistantId, client, t]);
38629
- useEffect87(() => {
38788
+ useEffect88(() => {
38630
38789
  void load();
38631
38790
  return () => {
38632
38791
  loadGeneration.current += 1;
@@ -38934,7 +39093,7 @@ var CronsPanel = () => {
38934
39093
  };
38935
39094
 
38936
39095
  // src/components/Store/StorePanel.tsx
38937
- import { useCallback as useCallback65, useEffect as useEffect89, useMemo as useMemo45, useRef as useRef55, useState as useState114 } from "react";
39096
+ import { useCallback as useCallback65, useEffect as useEffect90, useMemo as useMemo45, useRef as useRef55, useState as useState114 } from "react";
38938
39097
  import {
38939
39098
  Alert as Alert26,
38940
39099
  Button as Button70,
@@ -38946,7 +39105,7 @@ import {
38946
39105
  Tag as Tag38,
38947
39106
  Tooltip as Tooltip28,
38948
39107
  Typography as Typography56,
38949
- theme as theme20
39108
+ theme as theme21
38950
39109
  } from "antd";
38951
39110
  import { createStyles as createStyles69 } from "antd-style";
38952
39111
  import {
@@ -38957,7 +39116,7 @@ import {
38957
39116
  Pencil as Pencil8,
38958
39117
  Plus as Plus16,
38959
39118
  RefreshCw as RefreshCw6,
38960
- Search as Search4,
39119
+ Search as Search5,
38961
39120
  SlidersHorizontal,
38962
39121
  Trash2 as Trash223
38963
39122
  } from "lucide-react";
@@ -38965,7 +39124,7 @@ import dayjs5 from "dayjs";
38965
39124
  import relativeTime4 from "dayjs/plugin/relativeTime.js";
38966
39125
 
38967
39126
  // src/components/Store/StoreItemDrawer.tsx
38968
- import { useEffect as useEffect88, useMemo as useMemo44, useState as useState113 } from "react";
39127
+ import { useEffect as useEffect89, useMemo as useMemo44, useState as useState113 } from "react";
38969
39128
  import {
38970
39129
  Alert as Alert25,
38971
39130
  Button as Button69,
@@ -38977,7 +39136,7 @@ import {
38977
39136
  Tag as Tag37,
38978
39137
  Tooltip as Tooltip27,
38979
39138
  Typography as Typography55,
38980
- theme as theme19
39139
+ theme as theme20
38981
39140
  } from "antd";
38982
39141
  import {
38983
39142
  Check as Check6,
@@ -38993,7 +39152,7 @@ import relativeTime3 from "dayjs/plugin/relativeTime.js";
38993
39152
 
38994
39153
  // src/components/Store/NamespaceEditor.tsx
38995
39154
  import { useMemo as useMemo43, useState as useState112 } from "react";
38996
- import { Input as Input33, Select as Select27, Tag as Tag36, Typography as Typography54, theme as theme18 } from "antd";
39155
+ import { Input as Input33, Select as Select27, Tag as Tag36, Typography as Typography54, theme as theme19 } from "antd";
38997
39156
  import { createStyles as createStyles68 } from "antd-style";
38998
39157
 
38999
39158
  // src/components/Store/storeUtils.ts
@@ -39074,7 +39233,7 @@ var NamespaceEditor = ({
39074
39233
  inputTestId
39075
39234
  }) => {
39076
39235
  const t = useT();
39077
- const { token } = theme18.useToken();
39236
+ const { token } = theme19.useToken();
39078
39237
  const { styles } = useStyles50();
39079
39238
  const [draft, setDraft] = useState112("");
39080
39239
  const existingOptions = useMemo43(
@@ -39199,13 +39358,13 @@ var StoreItemDrawer = ({
39199
39358
  onDelete
39200
39359
  }) => {
39201
39360
  const t = useT();
39202
- const { token } = theme19.useToken();
39361
+ const { token } = theme20.useToken();
39203
39362
  const [form, setForm] = useState113(() => initialForm(item));
39204
39363
  const [error, setError] = useState113(null);
39205
39364
  const [saving, setSaving] = useState113(false);
39206
39365
  const [deleting, setDeleting] = useState113(false);
39207
39366
  const [copied, setCopied] = useState113(false);
39208
- useEffect88(() => {
39367
+ useEffect89(() => {
39209
39368
  if (!open) return;
39210
39369
  setForm(initialForm(item));
39211
39370
  setError(null);
@@ -39567,7 +39726,7 @@ var StoreItemDrawer = ({
39567
39726
  );
39568
39727
  };
39569
39728
  var DetailTile = ({ label, value }) => {
39570
- const { token } = theme19.useToken();
39729
+ const { token } = theme20.useToken();
39571
39730
  return /* @__PURE__ */ jsxs114(
39572
39731
  "div",
39573
39732
  {
@@ -39623,7 +39782,7 @@ function isRecord8(value) {
39623
39782
  }
39624
39783
  var StorePanel = () => {
39625
39784
  const t = useT();
39626
- const { token } = theme20.useToken();
39785
+ const { token } = theme21.useToken();
39627
39786
  const { styles } = useStyles51();
39628
39787
  const client = useClient("__GLOBAL__");
39629
39788
  const [namespaces, setNamespaces] = useState114([]);
@@ -39691,10 +39850,10 @@ var StorePanel = () => {
39691
39850
  (prefix) => runSearch(prefix, searchInput.current),
39692
39851
  [runSearch]
39693
39852
  );
39694
- useEffect89(() => {
39853
+ useEffect90(() => {
39695
39854
  void loadNamespaces();
39696
39855
  }, [loadNamespaces]);
39697
- useEffect89(() => {
39856
+ useEffect90(() => {
39698
39857
  void loadItems(selectedPrefix);
39699
39858
  }, [loadItems, selectedPrefix]);
39700
39859
  const refresh = () => {
@@ -39937,7 +40096,7 @@ var StorePanel = () => {
39937
40096
  "aria-label": t("store.query"),
39938
40097
  placeholder: t("store.queryPlaceholder"),
39939
40098
  "data-testid": "store-query",
39940
- prefix: /* @__PURE__ */ jsx148(Search4, { size: 14, color: token.colorTextTertiary }),
40099
+ prefix: /* @__PURE__ */ jsx148(Search5, { size: 14, color: token.colorTextTertiary }),
39941
40100
  allowClear: true,
39942
40101
  onChange: (event) => setQuery(event.target.value),
39943
40102
  onPressEnter: () => void loadItems(selectedPrefix),
@@ -39947,7 +40106,7 @@ var StorePanel = () => {
39947
40106
  /* @__PURE__ */ jsx148(
39948
40107
  Button70,
39949
40108
  {
39950
- icon: /* @__PURE__ */ jsx148(Search4, { size: 14 }),
40109
+ icon: /* @__PURE__ */ jsx148(Search5, { size: 14 }),
39951
40110
  "aria-label": t("store.search"),
39952
40111
  "data-testid": "store-search",
39953
40112
  onClick: () => void loadItems(selectedPrefix)
@@ -40221,7 +40380,7 @@ var StorePanel = () => {
40221
40380
  };
40222
40381
 
40223
40382
  // src/components/SystemInfo/SystemInfoPanel.tsx
40224
- import { useCallback as useCallback66, useEffect as useEffect90, useState as useState115 } from "react";
40383
+ import { useCallback as useCallback66, useEffect as useEffect91, useState as useState115 } from "react";
40225
40384
  import {
40226
40385
  Alert as Alert27,
40227
40386
  Button as Button71,
@@ -40307,7 +40466,7 @@ var SystemInfoPanel = () => {
40307
40466
  void loadInfo();
40308
40467
  void loadMetrics();
40309
40468
  }, [loadInfo, loadMetrics]);
40310
- useEffect90(() => {
40469
+ useEffect91(() => {
40311
40470
  void loadInfo();
40312
40471
  void loadMetrics();
40313
40472
  }, [loadInfo, loadMetrics]);
@@ -40441,8 +40600,8 @@ var SystemInfoPanel = () => {
40441
40600
  };
40442
40601
 
40443
40602
  // src/components/Observability/ObservabilityPanel.tsx
40444
- import { useCallback as useCallback67, useEffect as useEffect91, useRef as useRef56, useState as useState116 } from "react";
40445
- import { Alert as Alert28, Button as Button72, Space as Space46, Spin as Spin32, Tooltip as Tooltip29, Typography as Typography58, theme as theme21 } from "antd";
40603
+ import { useCallback as useCallback67, useEffect as useEffect92, useRef as useRef56, useState as useState116 } from "react";
40604
+ import { Alert as Alert28, Button as Button72, Space as Space46, Spin as Spin32, Tooltip as Tooltip29, Typography as Typography58, theme as theme22 } from "antd";
40446
40605
  import { ExternalLink, RefreshCw as RefreshCw8 } from "lucide-react";
40447
40606
  import {
40448
40607
  observabilityDashboardElementKey as observabilityDashboardElementKey2
@@ -40454,7 +40613,7 @@ import { Spin as Spin31 } from "antd";
40454
40613
  import { observabilityDashboardElementKey } from "@axiom-lattice/protocols";
40455
40614
  import { jsx as jsx150 } from "react/jsx-runtime";
40456
40615
  var LazyLangfuseDashboard = lazy3(
40457
- () => import("./LangfuseDashboard-PYKA7XQ6.mjs").then((module) => ({
40616
+ () => import("./LangfuseDashboard-INSDUIPR.mjs").then((module) => ({
40458
40617
  default: module.LangfuseDashboard
40459
40618
  }))
40460
40619
  );
@@ -40488,7 +40647,7 @@ function isDashboardEnvelope(data) {
40488
40647
  var ObservabilityPanel = () => {
40489
40648
  const client = useClient("__GLOBAL__");
40490
40649
  const t = useT();
40491
- const { token } = theme21.useToken();
40650
+ const { token } = theme22.useToken();
40492
40651
  const [info, setInfo] = useState116(null);
40493
40652
  const [loading, setLoading] = useState116(true);
40494
40653
  const [error, setError] = useState116(false);
@@ -40499,7 +40658,7 @@ var ObservabilityPanel = () => {
40499
40658
  const dashboardRequestRef = useRef56(0);
40500
40659
  const mismatchRetriedRef = useRef56(false);
40501
40660
  const [, setRegistryVersion] = useState116(0);
40502
- useEffect91(() => {
40661
+ useEffect92(() => {
40503
40662
  registerObservabilityDashboards();
40504
40663
  setRegistryVersion((version) => version + 1);
40505
40664
  }, []);
@@ -40561,10 +40720,10 @@ var ObservabilityPanel = () => {
40561
40720
  },
40562
40721
  [client, info?.provider, loadStatus]
40563
40722
  );
40564
- useEffect91(() => {
40723
+ useEffect92(() => {
40565
40724
  void loadStatus();
40566
40725
  }, [loadStatus]);
40567
- useEffect91(
40726
+ useEffect92(
40568
40727
  () => () => {
40569
40728
  dashboardRequestRef.current++;
40570
40729
  },
@@ -40573,7 +40732,7 @@ var ObservabilityPanel = () => {
40573
40732
  const supportsDashboard = info?.enabled === true && info.dashboard === true;
40574
40733
  const dashboardKey = info?.provider ? observabilityDashboardElementKey2(info.provider) : null;
40575
40734
  const DashboardRenderer = dashboardKey ? getElement(dashboardKey)?.side_app_view ?? null : null;
40576
- useEffect91(() => {
40735
+ useEffect92(() => {
40577
40736
  if (!supportsDashboard || !DashboardRenderer) return;
40578
40737
  void loadDashboard(range);
40579
40738
  }, [supportsDashboard, DashboardRenderer, range, loadDashboard]);
@@ -40993,19 +41152,19 @@ var DEFAULT_WORKSPACE_MENU_ITEMS = [
40993
41152
  ];
40994
41153
  var PanelSuspenseFallback = () => /* @__PURE__ */ jsx152("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", height: "100%", minHeight: 120 }, children: /* @__PURE__ */ jsx152(Spin33, {}) });
40995
41154
  var AgentGovernanceWorkbench = lazy4(
40996
- () => import("./AgentGovernanceWorkbench-ZCKD22PH.mjs").then((m) => ({ default: m.AgentGovernanceWorkbench }))
41155
+ () => import("./AgentGovernanceWorkbench-N5DMTNRS.mjs").then((m) => ({ default: m.AgentGovernanceWorkbench }))
40997
41156
  );
40998
41157
  var TopologyRuntimeView = lazy4(
40999
- () => import("./TopologyRuntimeView-R262O6TK.mjs").then((m) => ({ default: m.TopologyRuntimeView }))
41158
+ () => import("./TopologyRuntimeView-QHOSBVWW.mjs").then((m) => ({ default: m.TopologyRuntimeView }))
41000
41159
  );
41001
41160
  var WorkflowAutomationView = lazy4(
41002
- () => import("./WorkflowAutomationView-2JN3WT7G.mjs").then((m) => ({ default: m.WorkflowAutomationView }))
41161
+ () => import("./WorkflowAutomationView-5Q4ONV3C.mjs").then((m) => ({ default: m.WorkflowAutomationView }))
41003
41162
  );
41004
41163
  var TasksSideApp2 = lazy4(
41005
- () => import("./TasksSideApp-C6XFEGZ7.mjs").then((m) => ({ default: m.TasksSideApp }))
41164
+ () => import("./TasksSideApp-GPD7GCPM.mjs").then((m) => ({ default: m.TasksSideApp }))
41006
41165
  );
41007
41166
  var AgentDetailSideApp = lazy4(
41008
- () => import("./AgentDetailSideApp-XIHTVZQ6.mjs").then((m) => ({ default: m.AgentDetailSideApp }))
41167
+ () => import("./AgentDetailSideApp-J64Y7RKT.mjs").then((m) => ({ default: m.AgentDetailSideApp }))
41009
41168
  );
41010
41169
  var createWrapper = (Component2) => {
41011
41170
  return () => /* @__PURE__ */ jsx152(Suspense5, { fallback: /* @__PURE__ */ jsx152(PanelSuspenseFallback, {}), children: /* @__PURE__ */ jsx152(Component2, { ...{} }) });
@@ -41022,7 +41181,7 @@ var WorkspaceResourceManager = ({
41022
41181
  const [tenantSettingsOpen, setTenantSettingsOpen] = useState117(false);
41023
41182
  const hasOpenedDefault = useRef57(false);
41024
41183
  const hasRegistered = useRef57(false);
41025
- useEffect92(() => {
41184
+ useEffect93(() => {
41026
41185
  if (!hasRegistered.current) {
41027
41186
  hasRegistered.current = true;
41028
41187
  regsiterElement("workspace_projects", {
@@ -41171,17 +41330,17 @@ var WorkspaceResourceManager = ({
41171
41330
  } catch {
41172
41331
  }
41173
41332
  }, [get]);
41174
- useEffect92(() => {
41333
+ useEffect93(() => {
41175
41334
  fetchCustomMenu();
41176
41335
  }, [fetchCustomMenu]);
41177
- useEffect92(() => {
41336
+ useEffect93(() => {
41178
41337
  const handler = () => {
41179
41338
  fetchCustomMenu();
41180
41339
  };
41181
41340
  window.addEventListener("menu:refresh", handler);
41182
41341
  return () => window.removeEventListener("menu:refresh", handler);
41183
41342
  }, [fetchCustomMenu]);
41184
- useEffect92(() => {
41343
+ useEffect93(() => {
41185
41344
  for (const item of fetchedCustomMenuItems) {
41186
41345
  regsiterElement(item.id, {
41187
41346
  card_view: () => null,
@@ -41275,7 +41434,7 @@ var WorkspaceResourceManager = ({
41275
41434
  });
41276
41435
  }
41277
41436
  };
41278
- useEffect92(() => {
41437
+ useEffect93(() => {
41279
41438
  if (!hasOpenedDefault.current && visibleMenuItems.length > 0) {
41280
41439
  hasOpenedDefault.current = true;
41281
41440
  const firstRoute = visibleMenuItems.find((item) => item.type === "route");
@@ -41626,10 +41785,10 @@ var PinToMenuButton = ({
41626
41785
  const [checking, setChecking] = useState118(true);
41627
41786
  const staticGroups = useMenuGroups();
41628
41787
  const [existingGroups, setExistingGroups] = useState118(staticGroups);
41629
- useEffect93(() => {
41788
+ useEffect94(() => {
41630
41789
  setExistingGroups(staticGroups);
41631
41790
  }, [staticGroups]);
41632
- useEffect93(() => {
41791
+ useEffect94(() => {
41633
41792
  if (open) {
41634
41793
  fetchExistingGroups(get).then((apiGroups) => {
41635
41794
  setExistingGroups(Array.from(/* @__PURE__ */ new Set([...staticGroups, ...apiGroups])).sort());
@@ -41652,7 +41811,7 @@ var PinToMenuButton = ({
41652
41811
  setChecking(false);
41653
41812
  }
41654
41813
  }, [hasTarget, enableCustomMenu, check, contentType, assistantId, externalContentConfig, isMatch]);
41655
- useEffect93(() => {
41814
+ useEffect94(() => {
41656
41815
  checkPinned();
41657
41816
  }, [checkPinned]);
41658
41817
  if (!hasTarget || !enableCustomMenu) return null;
@@ -41984,10 +42143,10 @@ var McpAppRenderer = ({
41984
42143
  const [error, setError] = useState119(null);
41985
42144
  const gatewayOrigin = useMemo47(() => gatewayOriginOf(client), [client]);
41986
42145
  const latestRef = useRef58({ client, uiRef, toolName, toolInput, toolResult, ui, thread, openSideApp, onError });
41987
- useEffect94(() => {
42146
+ useEffect95(() => {
41988
42147
  latestRef.current = { client, uiRef, toolName, toolInput, toolResult, ui, thread, openSideApp, onError };
41989
42148
  });
41990
- useEffect94(() => {
42149
+ useEffect95(() => {
41991
42150
  if (!gatewayOrigin) return;
41992
42151
  const frame = frameRef.current;
41993
42152
  if (!frame) return;
@@ -42086,7 +42245,7 @@ var McpAppRenderer = ({
42086
42245
  window.removeEventListener("message", handleMessage);
42087
42246
  };
42088
42247
  }, [gatewayOrigin, t]);
42089
- useEffect94(() => {
42248
+ useEffect95(() => {
42090
42249
  const container = containerRef.current;
42091
42250
  if (!container) return;
42092
42251
  if (typeof ResizeObserver === "undefined") return;
@@ -42811,13 +42970,13 @@ var EvalManageCard = ({ data }) => {
42811
42970
  };
42812
42971
 
42813
42972
  // src/components/GenUI/elements/eval_detail_side_app.tsx
42814
- import { useEffect as useEffect95, useState as useState122 } from "react";
42973
+ import { useEffect as useEffect96, useState as useState122 } from "react";
42815
42974
  import { jsx as jsx160 } from "react/jsx-runtime";
42816
42975
  var EvalDetailSideApp = ({ data }) => {
42817
42976
  const rawInitial = data?.initial ?? {};
42818
42977
  const [resolved, setResolved] = useState122(rawInitial);
42819
42978
  const { get } = useApi();
42820
- useEffect95(() => {
42979
+ useEffect96(() => {
42821
42980
  if (rawInitial?.projectId || !rawInitial?.suiteId) {
42822
42981
  setResolved(rawInitial);
42823
42982
  return;
@@ -43886,7 +44045,7 @@ var WriteTodos = ({
43886
44045
  };
43887
44046
 
43888
44047
  // src/components/GenUI/FileExplorer.tsx
43889
- import { useState as useState123, useEffect as useEffect96, useMemo as useMemo52 } from "react";
44048
+ import { useState as useState123, useEffect as useEffect97, useMemo as useMemo52 } from "react";
43890
44049
  import { Splitter, Tree, Empty as Empty21 } from "antd";
43891
44050
  import {
43892
44051
  FolderOutlined as FolderOutlined3,
@@ -44068,7 +44227,7 @@ var FileExplorer = ({
44068
44227
  const [fileList, setFileList] = useState123([]);
44069
44228
  const [selectedKey, setSelectedKey] = useState123("");
44070
44229
  const [expandedKeys, setExpandedKeys] = useState123([]);
44071
- useEffect96(() => {
44230
+ useEffect97(() => {
44072
44231
  let list = [];
44073
44232
  if (Array.isArray(files)) {
44074
44233
  list = files;
@@ -44088,7 +44247,7 @@ var FileExplorer = ({
44088
44247
  () => buildTreeData(fileList, expandedKeys, t),
44089
44248
  [fileList, expandedKeys, t]
44090
44249
  );
44091
- useEffect96(() => {
44250
+ useEffect97(() => {
44092
44251
  if (treeData.length > 0 && expandedKeys.length === 0) {
44093
44252
  const getAllKeys = (nodes) => {
44094
44253
  let keys = [];
@@ -44407,7 +44566,7 @@ var AttachmentsCard = ({
44407
44566
 
44408
44567
  // src/components/GenUI/elements/attachments_viewer_side_app.tsx
44409
44568
  import { Button as Button78, Empty as Empty22, Skeleton as Skeleton2, Space as Space50 } from "antd";
44410
- import { useEffect as useEffect97, useState as useState125 } from "react";
44569
+ import { useEffect as useEffect98, useState as useState125 } from "react";
44411
44570
 
44412
44571
  // src/components/GenUI/RenderMDFromURL.tsx
44413
44572
  import { jsx as jsx168 } from "react/jsx-runtime";
@@ -44442,7 +44601,7 @@ function AttachmentsViewerSideApp({
44442
44601
  url: full_url || "",
44443
44602
  fileName: extractFileName(file_id || "")
44444
44603
  });
44445
- useEffect97(() => {
44604
+ useEffect98(() => {
44446
44605
  setFileUri({
44447
44606
  url: full_url || "",
44448
44607
  fileName: extractFileName(file_id || "")
@@ -44528,7 +44687,7 @@ function AttachmentsViewerSideApp({
44528
44687
  import { Button as Button79, Space as Space51, Typography as Typography69 } from "antd";
44529
44688
 
44530
44689
  // src/components/GenUI/elements/ContentPreviewCollapse.tsx
44531
- import { useRef as useRef59, useState as useState126, useEffect as useEffect98, useCallback as useCallback71 } from "react";
44690
+ import { useRef as useRef59, useState as useState126, useEffect as useEffect99, useCallback as useCallback71 } from "react";
44532
44691
  import { Collapse as Collapse10 } from "antd";
44533
44692
  import { createStyles as createStyles77 } from "antd-style";
44534
44693
  import { DownOutlined as DownOutlined5, UpOutlined as UpOutlined2 } from "@ant-design/icons";
@@ -44610,7 +44769,7 @@ var ContentPreviewCollapse = ({
44610
44769
  setIsOverflowing(scrollHeight > collapsedMaxHeight);
44611
44770
  }
44612
44771
  }, [collapsedMaxHeight]);
44613
- useEffect98(() => {
44772
+ useEffect99(() => {
44614
44773
  const element = contentRef.current;
44615
44774
  if (!element) return;
44616
44775
  checkOverflow();
@@ -46662,8 +46821,8 @@ var EditFile = ({
46662
46821
  };
46663
46822
 
46664
46823
  // src/components/GenUI/elements/task_card.tsx
46665
- import { useEffect as useEffect99, useState as useState128 } from "react";
46666
- import { Typography as Typography71, Avatar as Avatar8, Tag as Tag40, theme as theme22 } from "antd";
46824
+ import { useEffect as useEffect100, useState as useState128 } from "react";
46825
+ import { Typography as Typography71, Avatar as Avatar8, Tag as Tag40, theme as theme23 } from "antd";
46667
46826
  import { createStyles as createStyles78 } from "antd-style";
46668
46827
  import {
46669
46828
  CheckCircleOutlined as CheckCircleOutlined4,
@@ -46802,7 +46961,7 @@ var TaskCard = ({
46802
46961
  }) => {
46803
46962
  const t = useT();
46804
46963
  const { styles } = useStyle15();
46805
- const { token } = theme22.useToken();
46964
+ const { token } = theme23.useToken();
46806
46965
  const toolCallData = data;
46807
46966
  const openSideApp = useSideAppOpener();
46808
46967
  const client = useClient("__GLOBAL__");
@@ -46812,7 +46971,7 @@ var TaskCard = ({
46812
46971
  const isDispatch = dispatchTaskId !== void 0 && dispatchAgentId !== void 0;
46813
46972
  const [resolvedTask, setResolvedTask] = useState128(null);
46814
46973
  const { threadId, assistantId } = useAgentChat();
46815
- useEffect99(() => {
46974
+ useEffect100(() => {
46816
46975
  if (!isDispatch || !dispatchTaskId) return;
46817
46976
  let cancelled = false;
46818
46977
  client.tasks.get(dispatchTaskId).then(
@@ -47182,7 +47341,7 @@ var InternetSearchCard = ({
47182
47341
  };
47183
47342
 
47184
47343
  // src/components/GenUI/elements/schedule_viewer.tsx
47185
- import { useState as useState129, useEffect as useEffect100, useCallback as useCallback73 } from "react";
47344
+ import { useState as useState129, useEffect as useEffect101, useCallback as useCallback73 } from "react";
47186
47345
  import {
47187
47346
  Tag as Tag41,
47188
47347
  Button as Button82,
@@ -47412,12 +47571,12 @@ var ScheduleViewer = ({ data }) => {
47412
47571
  },
47413
47572
  [client, handleRefresh, t]
47414
47573
  );
47415
- useEffect100(() => {
47574
+ useEffect101(() => {
47416
47575
  if (threadId && (!initialTasks || initialTasks.length === 0)) {
47417
47576
  handleRefresh();
47418
47577
  }
47419
47578
  }, [threadId]);
47420
- useEffect100(() => {
47579
+ useEffect101(() => {
47421
47580
  if (initialTasks) {
47422
47581
  setTasks(initialTasks);
47423
47582
  }
@@ -48051,7 +48210,7 @@ import { Button as Button85, Typography as Typography77 } from "antd";
48051
48210
  import { ExpandOutlined as ExpandOutlined2 } from "@ant-design/icons";
48052
48211
 
48053
48212
  // src/streaming-html/StreamingHTMLRenderer.tsx
48054
- import React128, { useEffect as useEffect101, useRef as useRef60, useCallback as useCallback74, useState as useState130 } from "react";
48213
+ import React128, { useEffect as useEffect102, useRef as useRef60, useCallback as useCallback74, useState as useState130 } from "react";
48055
48214
 
48056
48215
  // src/streaming-html/show-widget-css-generator.ts
48057
48216
  function generateShowWidgetCSS(tokens) {
@@ -48756,10 +48915,10 @@ var StreamingHTMLRenderer = ({
48756
48915
  const [iframeWidth, setIframeWidth] = React128.useState(void 0);
48757
48916
  const [currentMessageIndex, setCurrentMessageIndex] = useState130(0);
48758
48917
  const [showLoading, setShowLoading] = useState130(true);
48759
- useEffect101(() => {
48918
+ useEffect102(() => {
48760
48919
  isCompleteRef.current = isComplete;
48761
48920
  }, [isComplete]);
48762
- useEffect101(() => {
48921
+ useEffect102(() => {
48763
48922
  if (iframeHeight > 0) {
48764
48923
  setShowLoading(false);
48765
48924
  return;
@@ -48835,7 +48994,7 @@ var StreamingHTMLRenderer = ({
48835
48994
  onError?.(streamingError);
48836
48995
  }
48837
48996
  }, [onError]);
48838
- useEffect101(() => {
48997
+ useEffect102(() => {
48839
48998
  const handleMessage = (event) => {
48840
48999
  const iframe = iframeRef.current;
48841
49000
  if (!iframe || event.source !== iframe.contentWindow) {
@@ -48889,7 +49048,7 @@ var StreamingHTMLRenderer = ({
48889
49048
  window.removeEventListener("message", handleMessage);
48890
49049
  };
48891
49050
  }, [onError, onPrompt, sendChunk, executeScripts]);
48892
- useEffect101(() => {
49051
+ useEffect102(() => {
48893
49052
  if (html === prevHTMLRef.current) {
48894
49053
  return;
48895
49054
  }
@@ -48900,12 +49059,12 @@ var StreamingHTMLRenderer = ({
48900
49059
  sendChunk(newChunk);
48901
49060
  }
48902
49061
  }, [html, sendChunk]);
48903
- useEffect101(() => {
49062
+ useEffect102(() => {
48904
49063
  if (isComplete && isReadyRef.current) {
48905
49064
  executeScripts();
48906
49065
  }
48907
49066
  }, [isComplete, executeScripts]);
48908
- useEffect101(() => {
49067
+ useEffect102(() => {
48909
49068
  const container = containerRef.current;
48910
49069
  if (!container) return;
48911
49070
  const antBubble = container.closest(".ant-bubble");
@@ -48931,7 +49090,7 @@ var StreamingHTMLRenderer = ({
48931
49090
  resizeObserverRef.current = null;
48932
49091
  };
48933
49092
  }, []);
48934
- useEffect101(() => {
49093
+ useEffect102(() => {
48935
49094
  return () => {
48936
49095
  isReadyRef.current = false;
48937
49096
  pendingChunksRef.current = [];
@@ -49220,10 +49379,10 @@ var McpAppCard = ({ data, component_key }) => {
49220
49379
  // src/components/GenUI/elements/builtIns.tsx
49221
49380
  import { jsx as jsx187 } from "react/jsx-runtime";
49222
49381
  var TasksSideApp3 = lazy5(
49223
- () => import("./TasksSideApp-C6XFEGZ7.mjs").then((m) => ({ default: m.TasksSideApp }))
49382
+ () => import("./TasksSideApp-GPD7GCPM.mjs").then((m) => ({ default: m.TasksSideApp }))
49224
49383
  );
49225
49384
  var ThreadMaintenancePanel = lazy5(
49226
- () => import("./ThreadMaintenancePanel-KJYC7ZWN.mjs").then((m) => ({
49385
+ () => import("./ThreadMaintenancePanel-TNWSDFIP.mjs").then((m) => ({
49227
49386
  default: m.ThreadMaintenancePanel
49228
49387
  }))
49229
49388
  );
@@ -49541,7 +49700,7 @@ var LazyReactInfographic = lazy6(
49541
49700
  () => import("./ReactInfographic-P7JL7DME.mjs").then((m) => ({ default: m.ReactInfographic }))
49542
49701
  );
49543
49702
  var LazyReactChart = lazy6(
49544
- () => import("./ReactChart-TN5VMVHH.mjs").then((m) => ({ default: m.ReactChart }))
49703
+ () => import("./ReactChart-SBFZNQ2L.mjs").then((m) => ({ default: m.ReactChart }))
49545
49704
  );
49546
49705
  function BlockLoading() {
49547
49706
  const t = useT();
@@ -50431,4 +50590,4 @@ export {
50431
50590
  http://jedwatson.github.io/classnames
50432
50591
  *)
50433
50592
  */
50434
- //# sourceMappingURL=chunk-ATU3HLYK.mjs.map
50593
+ //# sourceMappingURL=chunk-24KHOHEI.mjs.map