@trilogy-data/trilogy-studio-components 0.1.25 → 0.1.26

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 (114) hide show
  1. package/dist/AssetAutoImporter-CBzvBaOt.js +405 -0
  2. package/dist/ChatCreatorModal-CL-jBnc3.js +218 -0
  3. package/dist/ChatModelSelect-Do-VRUFc.js +40 -0
  4. package/dist/{CommunityModels-D7zWnHgG.js → CommunityModels-Cmro0hV3.js} +101 -70
  5. package/dist/{Dashboard-D1ZCTw5r.js → Dashboard-BH9ZwMVJ.js} +8 -8
  6. package/dist/{DashboardCreatorInline-LWvf--2x.js → DashboardCreatorInline-CDU7kLy3.js} +3 -3
  7. package/dist/{DashboardImportSelector-CNxibXlS.js → DashboardImportSelector-DQSvu9T-.js} +1 -1
  8. package/dist/{DashboardMobile-D_m0xv17.js → DashboardMobile-BUPtdN2V.js} +4 -4
  9. package/dist/{Editor-DhsP18KE.js → Editor-DQsYpkwl.js} +6 -6
  10. package/dist/{GlobalChatPanel-DFx9A4yP.js → GlobalChatPanel-DhnOaige.js} +155 -119
  11. package/dist/{IDE-BRMLxTfP.js → IDE-HLa8vybk.js} +9 -9
  12. package/dist/{JobsView-C9PYS6pZ.js → JobsView-B97HBoIE.js} +8 -8
  13. package/dist/{LLMChat-Cqg6pTgC.js → LLMChat-CxJcPLEG.js} +1 -1
  14. package/dist/{LLMView-VkJpP-49.js → LLMView-C1MUf0c2.js} +21 -21
  15. package/dist/{MobileIDE-CHGJoh05.js → MobileIDE-BpqXoaMR.js} +258 -253
  16. package/dist/{ModelCard-D8tKkK9-.js → ModelCard-BhN25jaV.js} +10 -10
  17. package/dist/{ModelCreator-DrxLxeyH.js → ModelCreator-CCdC7EXt.js} +1 -1
  18. package/dist/{ModelView-rAurf9n8.js → ModelView-DUDA_PtZ.js} +3 -3
  19. package/dist/{PageLoading-I6mr-7NB.js → PageLoading-BzniJM0C.js} +622 -619
  20. package/dist/{ResultComponent-_-1qZCfv.js → ResultComponent-CAn_r3BL.js} +3 -3
  21. package/dist/{Results-CQGpFmPQ.js → Results-BJtlwebY.js} +3 -3
  22. package/dist/{SymbolsPane-BpmL___H.js → SymbolsPane-KYSwN9Sv.js} +1 -1
  23. package/dist/{TutorialPage-CZGBRJdq.js → TutorialPage-NRcee6Dx.js} +8 -8
  24. package/dist/{VegaLiteChart-CmkOw6yD.js → VegaLiteChart-D1slfOUY.js} +11227 -11195
  25. package/dist/{WelcomePage-CLKvAvk-.js → WelcomePage-D5mU2x1L.js} +1 -1
  26. package/dist/components/AssetAutoImporter.vue.d.ts.map +1 -1
  27. package/dist/components/TipsCTA.vue.d.ts +1 -1
  28. package/dist/components/VegaLiteChart.vue.d.ts.map +1 -1
  29. package/dist/components/chartHelpers.d.ts +9 -1
  30. package/dist/components/chartHelpers.d.ts.map +1 -1
  31. package/dist/components/chartRenderManager.d.ts +4 -1
  32. package/dist/components/chartRenderManager.d.ts.map +1 -1
  33. package/dist/components/community/AddStoreModal.vue.d.ts +1 -1
  34. package/dist/components/community/AddStoreModal.vue.d.ts.map +1 -1
  35. package/dist/components/community/CommunityModelCard.vue.d.ts.map +1 -1
  36. package/dist/components/editor/Editor.vue.d.ts.map +1 -1
  37. package/dist/components/jobs/JobsAddStoreModal.vue.d.ts.map +1 -1
  38. package/dist/components/llm/ChatCreatorModal.vue.d.ts +17 -1
  39. package/dist/components/llm/ChatCreatorModal.vue.d.ts.map +1 -1
  40. package/dist/components/llm/ChatModelSelect.vue.d.ts +13 -0
  41. package/dist/components/llm/ChatModelSelect.vue.d.ts.map +1 -0
  42. package/dist/components/llm/GlobalChatPanel.vue.d.ts.map +1 -1
  43. package/dist/components/sidebar/CommunityModelList.vue.d.ts +33 -50
  44. package/dist/components/sidebar/CommunityModelList.vue.d.ts.map +1 -1
  45. package/dist/components/sidebar/CommunityModelListItem.vue.d.ts.map +1 -1
  46. package/dist/components/sidebar/EditorList.vue.d.ts +32 -49
  47. package/dist/components/sidebar/EditorList.vue.d.ts.map +1 -1
  48. package/dist/components/sidebar/Sidebar.vue.d.ts +65 -99
  49. package/dist/components/sidebar/Sidebar.vue.d.ts.map +1 -1
  50. package/dist/dashboard.js +52 -52
  51. package/dist/{dashboardStore-CNkWQ4r7.js → dashboardStore-ppM6nGks.js} +33 -33
  52. package/dist/dashboards/layerSpec.d.ts +38 -4
  53. package/dist/dashboards/layerSpec.d.ts.map +1 -1
  54. package/dist/dashboards/lineAreaSpec.d.ts +8 -80
  55. package/dist/dashboards/lineAreaSpec.d.ts.map +1 -1
  56. package/dist/dashboards/mapSpec.d.ts +1 -0
  57. package/dist/dashboards/mapSpec.d.ts.map +1 -1
  58. package/dist/dashboards/spec.d.ts.map +1 -1
  59. package/dist/data/tutorial/documentation.d.ts.map +1 -1
  60. package/dist/data/tutorial/startupScripts.d.ts +3 -0
  61. package/dist/data/tutorial/startupScripts.d.ts.map +1 -0
  62. package/dist/{demoSetup-DiW3ROFQ.js → demoSetup-mwa-RDC6.js} +19 -18
  63. package/dist/{editorRefinementRuntime-C_YmXRy4.js → editorRefinementRuntime-DoP9P5J2.js} +892 -871
  64. package/dist/{editorRefinementToolExecutor-mX8ClQ63.js → editorRefinementToolExecutor-CVY3FA7k.js} +389 -263
  65. package/dist/{editorStore-Ch7k-gse.js → editorStore-BhhmXbi-.js} +230 -183
  66. package/dist/entry.dashboard.d.ts +1 -0
  67. package/dist/entry.dashboard.d.ts.map +1 -1
  68. package/dist/{globalChatRuntime-oMLiPLNC.js → globalChatRuntime-DWZxeS57.js} +13 -13
  69. package/dist/{helpers-DcWCa6bX.js → helpers-BLQAgX3C.js} +17 -16
  70. package/dist/llm/data/constants.d.ts +1 -1
  71. package/dist/llm/data/constants.d.ts.map +1 -1
  72. package/dist/llm/data/trilogySyntax.generated.d.ts +7 -1
  73. package/dist/llm/data/trilogySyntax.generated.d.ts.map +1 -1
  74. package/dist/llm/docsIndex.d.ts.map +1 -1
  75. package/dist/llm/openai.d.ts +2 -1
  76. package/dist/llm/openai.d.ts.map +1 -1
  77. package/dist/{llm-_807I79k.js → llm-BBOVWb-F.js} +7 -5
  78. package/dist/llm.js +3 -3
  79. package/dist/{llmStore-CSzM1IZd.js → llmStore-DJM2JhzY.js} +2 -2
  80. package/dist/{localStorage-CSuYS7QE.js → localStorage-D9uyOFEO.js} +14 -14
  81. package/dist/models/helpers.d.ts.map +1 -1
  82. package/dist/monaco.js +1 -1
  83. package/dist/{reconcile-Bk7M797_.js → reconcile-Dyf4UZmj.js} +1 -1
  84. package/dist/{remoteStoreSync-CLvZJrTK.js → remoteStoreSync-Z-yjlYtI.js} +1 -1
  85. package/dist/remotes/displayHelpers.d.ts.map +1 -1
  86. package/dist/remotes/genericStoreMetadata.d.ts +1 -0
  87. package/dist/remotes/genericStoreMetadata.d.ts.map +1 -1
  88. package/dist/remotes/models.d.ts +37 -5
  89. package/dist/remotes/models.d.ts.map +1 -1
  90. package/dist/remotes/staticStorePresets.d.ts +22 -0
  91. package/dist/remotes/staticStorePresets.d.ts.map +1 -0
  92. package/dist/remotes/storeService.d.ts +25 -4
  93. package/dist/remotes/storeService.d.ts.map +1 -1
  94. package/dist/stores/communityApiStore.d.ts +32 -60
  95. package/dist/stores/communityApiStore.d.ts.map +1 -1
  96. package/dist/stores/connectionStore.d.ts.map +1 -1
  97. package/dist/stores/resolver.d.ts +5 -0
  98. package/dist/stores/resolver.d.ts.map +1 -1
  99. package/dist/stores/urlStore.d.ts +1 -0
  100. package/dist/stores/urlStore.d.ts.map +1 -1
  101. package/dist/{stores-C1wUWiFm.js → stores-BT9hTLny.js} +47 -47
  102. package/dist/stores.js +7 -7
  103. package/dist/trilogy-studio-components.css +1 -1
  104. package/dist/{urlStore-Dgmwx1YI.js → urlStore-52HG6lsX.js} +1 -0
  105. package/dist/{useChatWithTools-GV1ufcqw.js → useChatWithTools-B0HZ_DVh.js} +1 -1
  106. package/dist/{useDashboard-OoBKkkuQ.js → useDashboard-CdSnPe_6.js} +186 -186
  107. package/dist/{useGlobalChatPanel-CIeUyZba.js → useGlobalChatPanel-D_0luajQ.js} +2 -2
  108. package/dist/views/MobileIDE.vue.d.ts.map +1 -1
  109. package/dist/views/TutorialPage.vue.d.ts +32 -49
  110. package/dist/views/TutorialPage.vue.d.ts.map +1 -1
  111. package/dist/views.js +16 -16
  112. package/package.json +1 -1
  113. package/dist/AssetAutoImporter-DfMd_DSk.js +0 -403
  114. package/dist/ChatCreatorModal-BTqY06B6.js +0 -177
@@ -1,26 +1,26 @@
1
1
  import { t as e } from "./_plugin-vue_export-helper-B3ysoDQm.js";
2
- import { Dt as t } from "./editorRefinementToolExecutor-mX8ClQ63.js";
3
- import { i as n, o as r, r as i } from "./stores-C1wUWiFm.js";
4
- import { o as a } from "./editorRefinementRuntime-C_YmXRy4.js";
5
- import { a as o, c as s, i as c, l, u } from "./editorStore-Ch7k-gse.js";
6
- import "./dashboardStore-CNkWQ4r7.js";
7
- import { n as d, t as f } from "./urlStore-Dgmwx1YI.js";
8
- import { t as p } from "./ModalDialog-D1EOG4rl.js";
9
- import { t as m } from "./Tooltip-Dihir4zs.js";
10
- import { t as h } from "./LoadingButton-OH3frQuO.js";
11
- import { t as g } from "./useIsMobile-CNpUQAvk.js";
12
- import { t as _ } from "./trilogy-BroD2Qmp.js";
13
- import { t as v } from "./DashboardCreatorInline-LWvf--2x.js";
14
- import { t as y } from "./useGlobalChatPanel-CIeUyZba.js";
15
- import { t as b } from "./localStorage-CSuYS7QE.js";
16
- import { n as x, r as S, t as C } from "./remoteStoreSync-CLvZJrTK.js";
17
- import { t as w } from "./ModelCreator-DrxLxeyH.js";
2
+ import { kt as t } from "./editorRefinementToolExecutor-CVY3FA7k.js";
3
+ import { i as n, o as r, r as i } from "./stores-BT9hTLny.js";
4
+ import { o as a } from "./editorRefinementRuntime-DoP9P5J2.js";
5
+ import { a as o, c as s, i as c, o as l, s as u, u as d } from "./editorStore-BhhmXbi-.js";
6
+ import "./dashboardStore-ppM6nGks.js";
7
+ import { n as f, t as p } from "./urlStore-52HG6lsX.js";
8
+ import { t as m } from "./ModalDialog-D1EOG4rl.js";
9
+ import { t as h } from "./Tooltip-Dihir4zs.js";
10
+ import { t as g } from "./LoadingButton-OH3frQuO.js";
11
+ import { t as _ } from "./useIsMobile-CNpUQAvk.js";
12
+ import { t as v } from "./trilogy-BroD2Qmp.js";
13
+ import { t as y } from "./DashboardCreatorInline-CDU7kLy3.js";
14
+ import { t as b } from "./useGlobalChatPanel-D_0luajQ.js";
15
+ import { t as x } from "./localStorage-D9uyOFEO.js";
16
+ import { n as S, r as C, t as ee } from "./remoteStoreSync-Z-yjlYtI.js";
17
+ import { t as w } from "./ModelCreator-CCdC7EXt.js";
18
18
  import { t as T } from "./StatusIcon-BylPx2EO.js";
19
- import { a as E, c as ee, d as D, f as O, i as te, l as ne, n as re, o as k, p as A, r as ie, s as ae, u as oe } from "./demoSetup-DiW3ROFQ.js";
20
- import { Fragment as j, computed as M, createBlock as N, createCommentVNode as P, createElementBlock as F, createElementVNode as I, createStaticVNode as se, createTextVNode as L, createVNode as R, defineComponent as z, inject as B, nextTick as ce, normalizeClass as V, normalizeStyle as le, onMounted as H, openBlock as U, reactive as ue, ref as W, renderList as G, resolveComponent as K, toDisplayString as q, unref as J, vModelCheckbox as de, vModelSelect as fe, vModelText as Y, vShow as X, watch as pe, withCtx as Z, withDirectives as Q, withModifiers as $ } from "vue";
21
- import { storeToRefs as me } from "pinia";
19
+ import { a as te, c as ne, d as E, f as D, i as re, l as ie, n as ae, o as O, p as k, r as oe, s as se, u as ce } from "./demoSetup-mwa-RDC6.js";
20
+ import { Fragment as A, computed as j, createBlock as M, createCommentVNode as N, createElementBlock as P, createElementVNode as F, createStaticVNode as le, createTextVNode as I, createVNode as L, defineComponent as R, inject as z, nextTick as B, normalizeClass as V, normalizeStyle as ue, onMounted as de, openBlock as H, reactive as fe, ref as U, renderList as W, resolveComponent as G, toDisplayString as K, unref as q, vModelCheckbox as pe, vModelSelect as J, vModelText as Y, vShow as X, watch as me, withCtx as Z, withDirectives as Q, withModifiers as $ } from "vue";
21
+ import { storeToRefs as he } from "pinia";
22
22
  //#region components/layout/screenPresentation.ts
23
- var he = "mdi mdi-file-document-outline", ge = {
23
+ var ge = "mdi mdi-file-document-outline", _e = {
24
24
  editors: "mdi mdi-file-document-edit-outline",
25
25
  connections: "mdi mdi-database-outline",
26
26
  llms: "mdi mdi-creation-outline",
@@ -34,17 +34,17 @@ var he = "mdi mdi-file-document-outline", ge = {
34
34
  settings: "mdi mdi-cog-outline",
35
35
  profile: "mdi mdi-account-outline",
36
36
  welcome: "mdi mdi-home-outline",
37
- "": he
38
- }, _e = { llms: "LLMs" };
39
- function ve(e) {
40
- return ge[e] || he;
41
- }
37
+ "": ge
38
+ }, ve = { llms: "LLMs" };
42
39
  function ye(e) {
43
- return _e[e] ?? e.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
40
+ return _e[e] || ge;
41
+ }
42
+ function be(e) {
43
+ return ve[e] ?? e.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
44
44
  }
45
45
  //#endregion
46
46
  //#region components/sidebar/TutorialSidebar.vue?vue&type=script&lang.ts
47
- var be = {
47
+ var xe = {
48
48
  name: "DocumentationSidebar",
49
49
  props: { activeDocumentationKey: {
50
50
  type: String,
@@ -52,10 +52,10 @@ var be = {
52
52
  optional: !0
53
53
  } },
54
54
  setup(e, { emit: t }) {
55
- if (!B("editorStore")) throw Error("Editor store is not provided!");
56
- let n = d(f.TUTORIAL) || "", r = g(), i = W(null), o = `documentation+${n.split("+")[1]}`, { overrides: s, isCollapsed: c, toggle: l } = A((e) => o.startsWith(e));
55
+ if (!z("editorStore")) throw Error("Editor store is not provided!");
56
+ let n = f(p.TUTORIAL) || "", r = _(), i = U(null), o = `documentation+${n.split("+")[1]}`, { overrides: s, isCollapsed: c, toggle: l } = k((e) => o.startsWith(e));
57
57
  return {
58
- documentationNodes: M(() => {
58
+ documentationNodes: j(() => {
59
59
  let e = [];
60
60
  return a.forEach((t) => {
61
61
  let n = `documentation+${t.title}`;
@@ -92,18 +92,18 @@ var be = {
92
92
  this.$emit("documentation-key-selected", e);
93
93
  } },
94
94
  components: {
95
- SidebarList: O,
96
- SidebarItem: D,
97
- MobileTreeList: k
95
+ SidebarList: D,
96
+ SidebarItem: E,
97
+ MobileTreeList: O
98
98
  }
99
99
  };
100
100
  //#endregion
101
101
  //#region components/sidebar/TutorialSidebar.vue
102
- function xe(e, t, n, r, i, a) {
103
- let o = K("sidebar-item"), s = K("mobile-tree-list"), c = K("sidebar-list");
104
- return U(), N(c, { title: "Documentation" }, {
102
+ function Se(e, t, n, r, i, a) {
103
+ let o = G("sidebar-item"), s = G("mobile-tree-list"), c = G("sidebar-list");
104
+ return H(), M(c, { title: "Documentation" }, {
105
105
  actions: Z(() => [...t[0] ||= []]),
106
- default: Z(() => [R(s, {
106
+ default: Z(() => [L(s, {
107
107
  "list-id": "tutorial",
108
108
  ref: "mobileTree",
109
109
  items: r.documentationNodes,
@@ -113,7 +113,7 @@ function xe(e, t, n, r, i, a) {
113
113
  onExpand: r.expandMobileBranch,
114
114
  onSelect: r.selectMobileNode
115
115
  }, {
116
- item: Z(({ item: e }) => [(U(), N(o, {
116
+ item: Z(({ item: e }) => [(H(), M(o, {
117
117
  key: e.id,
118
118
  "item-id": e.id,
119
119
  name: e.name,
@@ -150,7 +150,7 @@ function xe(e, t, n, r, i, a) {
150
150
  _: 1
151
151
  });
152
152
  }
153
- var Se = /*#__PURE__*/ e(be, [["render", xe], ["__scopeId", "data-v-07263be1"]]), Ce = {
153
+ var Ce = /*#__PURE__*/ e(xe, [["render", Se], ["__scopeId", "data-v-07263be1"]]), we = {
154
154
  name: "ModelList",
155
155
  props: {
156
156
  activeModelKey: String,
@@ -164,12 +164,12 @@ var Se = /*#__PURE__*/ e(be, [["render", xe], ["__scopeId", "data-v-07263be1"]])
164
164
  }
165
165
  },
166
166
  setup(e) {
167
- let t = B("modelStore"), r = B("saveModels"), i = B("editorStore"), a = B("trilogyResolver"), o = n(), s = g(), c = W(null), l = W(!1), u = o.activeModelKey.value || d(f.MODELS) || "", p = u.split("+")[0], m = "", h = "", _ = "", v = u.split("+");
168
- if (p === "model" ? m = v[1] : p === "source" ? (m = v[1], h = v[2]) : p === "datasource" ? (m = v[1], h = v[2], _ = v[3]) : p === "concept" && (m = v[1], h = v[2], v.length > 5 && (_ = v[3])), !t || !r || !i || !a) throw Error("Model store is not provided!");
169
- let { overrides: y, isCollapsed: b, toggle: x } = A((e) => {
167
+ let t = z("modelStore"), r = z("saveModels"), i = z("editorStore"), a = z("trilogyResolver"), o = n(), s = _(), c = U(null), l = U(!1), u = o.activeModelKey.value || f(p.MODELS) || "", d = u.split("+")[0], m = "", h = "", g = "", v = u.split("+");
168
+ if (d === "model" ? m = v[1] : d === "source" ? (m = v[1], h = v[2]) : d === "datasource" ? (m = v[1], h = v[2], g = v[3]) : d === "concept" && (m = v[1], h = v[2], v.length > 5 && (g = v[3])), !t || !r || !i || !a) throw Error("Model store is not provided!");
169
+ let { overrides: y, isCollapsed: b, toggle: x } = k((e) => {
170
170
  let [t, n, r, i] = e.split("+");
171
- return n === m ? t === "model" ? !0 : r === h ? t === "source" || t === "datasource" && i === _ : !1 : !1;
172
- }), S = M(() => e.mobileSearchQuery.trim().toLocaleLowerCase()), C = (e) => !S.value && b(e), w = M(() => {
171
+ return n === m ? t === "model" ? !0 : r === h ? t === "source" || t === "datasource" && i === g : !1 : !1;
172
+ }), S = j(() => e.mobileSearchQuery.trim().toLocaleLowerCase()), C = (e) => !S.value && b(e), ee = j(() => {
173
173
  let e = [];
174
174
  return Object.values(t.models).sort((e, t) => e.name.localeCompare(t.name)).forEach((t) => {
175
175
  if (t.deleted) return;
@@ -243,27 +243,27 @@ var Se = /*#__PURE__*/ e(be, [["render", xe], ["__scopeId", "data-v-07263be1"]])
243
243
  }));
244
244
  });
245
245
  }), S.value ? e.filter((e) => e.type === "concept" && e.name.toLocaleLowerCase().includes(S.value)) : e;
246
- }), T = (e) => a.resolveModel(e, t.models[e].sources.map((e) => ({
246
+ }), w = (e) => a.resolveModel(e, t.models[e].sources.map((e) => ({
247
247
  alias: e.alias,
248
248
  contents: (i.editors[e.editor] || { contents: "" }).contents
249
249
  }))).then((n) => {
250
250
  t.setModelConfigParseResults(e, n);
251
251
  }).catch((n) => {
252
252
  t.setModelParseError(e, n.message), console.error("Failed to fetch parse results:", n);
253
- }), E = (e) => {
253
+ }), T = (e) => {
254
254
  let t = e.lastIndexOf("+"), n = t === -1 ? e : e.substring(t + 1);
255
255
  o.openTab("models", n, e);
256
256
  };
257
257
  return {
258
258
  creatorVisible: l,
259
- flatList: w,
259
+ flatList: ee,
260
260
  collapsed: y,
261
261
  isCollapsed: b,
262
262
  saveModels: r,
263
- fetchParseResults: T,
264
- trilogyIcon: oe,
263
+ fetchParseResults: w,
264
+ trilogyIcon: ce,
265
265
  navigationStore: o,
266
- handleClick: E,
266
+ handleClick: T,
267
267
  handleToggle: x,
268
268
  modelStore: t,
269
269
  contextMenuItems: (e) => e.type === "model" ? [
@@ -286,7 +286,7 @@ var Se = /*#__PURE__*/ e(be, [["render", xe], ["__scopeId", "data-v-07263be1"]])
286
286
  handleContextMenuItemClick: (e, n) => {
287
287
  switch (n.id) {
288
288
  case "refresh-model":
289
- T(e.name);
289
+ w(e.name);
290
290
  break;
291
291
  case "delete-model":
292
292
  t.removeModelConfig(e.name);
@@ -300,46 +300,46 @@ var Se = /*#__PURE__*/ e(be, [["render", xe], ["__scopeId", "data-v-07263be1"]])
300
300
  expandMobileBranch: (e) => {
301
301
  b(e.id) && x(e.id);
302
302
  },
303
- selectMobileItem: (e) => E(e.id)
303
+ selectMobileItem: (e) => T(e.id)
304
304
  };
305
305
  },
306
306
  components: {
307
- SidebarList: O,
308
- SidebarItem: D,
307
+ SidebarList: D,
308
+ SidebarItem: E,
309
309
  ModelCreator: w,
310
- LoadingButton: h,
311
- Tooltip: m,
312
- SidebarOverflowMenu: ee,
313
- MobileTreeList: k
310
+ LoadingButton: g,
311
+ Tooltip: h,
312
+ SidebarOverflowMenu: ne,
313
+ MobileTreeList: O
314
314
  }
315
- }, we = { class: "models-header" }, Te = { class: "models-header-actions" }, Ee = ["data-testid"], De = ["src"], Oe = {
315
+ }, Te = { class: "models-header" }, Ee = { class: "models-header-actions" }, De = ["data-testid"], Oe = ["src"], ke = {
316
316
  key: 2,
317
317
  class: "mdi mdi-table node-icon"
318
- }, ke = {
318
+ }, Ae = {
319
319
  key: 0,
320
320
  class: "right-container"
321
321
  };
322
- function Ae(e, t, n, r, i, a) {
323
- let o = K("loading-button"), s = K("model-creator"), c = K("sidebar-overflow-menu"), l = K("sidebar-item"), u = K("mobile-tree-list"), d = K("sidebar-list");
324
- return U(), N(d, { title: "Models" }, {
325
- header: Z(() => [I("div", we, [t[4] ||= I("h3", { class: "font-sans sidebar-header" }, "Models", -1), I("div", Te, [I("button", {
322
+ function je(e, t, n, r, i, a) {
323
+ let o = G("loading-button"), s = G("model-creator"), c = G("sidebar-overflow-menu"), l = G("sidebar-item"), u = G("mobile-tree-list"), d = G("sidebar-list");
324
+ return H(), M(d, { title: "Models" }, {
325
+ header: Z(() => [F("div", Te, [t[4] ||= F("h3", { class: "font-sans sidebar-header" }, "Models", -1), F("div", Ee, [F("button", {
326
326
  class: "sidebar-control-button sidebar-header-action sidebar-primary-create",
327
327
  onClick: t[0] ||= (e) => r.creatorVisible = !r.creatorVisible,
328
328
  "data-testid": n.testTag ? `model-creator-add-${n.testTag}` : "model-creator-add"
329
- }, [t[2] ||= I("i", { class: "mdi mdi-plus" }, null, -1), L(" " + q(r.creatorVisible ? "Close" : "New"), 1)], 8, Ee), R(o, {
329
+ }, [t[2] ||= F("i", { class: "mdi mdi-plus" }, null, -1), I(" " + K(r.creatorVisible ? "Close" : "New"), 1)], 8, De), L(o, {
330
330
  class: "sidebar-control-button sidebar-header-action",
331
331
  action: r.saveModels,
332
332
  "key-combination": ["control", "s"],
333
333
  "use-default-style": !1
334
334
  }, {
335
- default: Z(() => [...t[3] ||= [L(" Save ", -1)]]),
335
+ default: Z(() => [...t[3] ||= [I(" Save ", -1)]]),
336
336
  _: 1
337
337
  }, 8, ["action"])])])]),
338
- actions: Z(() => [R(s, {
338
+ actions: Z(() => [L(s, {
339
339
  visible: r.creatorVisible,
340
340
  onClose: t[1] ||= (e) => r.creatorVisible = !r.creatorVisible
341
341
  }, null, 8, ["visible"])]),
342
- default: Z(() => [R(u, {
342
+ default: Z(() => [L(u, {
343
343
  "list-id": "models",
344
344
  ref: "mobileTree",
345
345
  items: r.flatList,
@@ -350,7 +350,7 @@ function Ae(e, t, n, r, i, a) {
350
350
  onExpand: r.expandMobileBranch,
351
351
  onSelect: r.selectMobileItem
352
352
  }, {
353
- item: Z(({ item: e }) => [R(l, {
353
+ item: Z(({ item: e }) => [L(l, {
354
354
  "item-id": e.id,
355
355
  name: e.name,
356
356
  indent: e.indent,
@@ -360,19 +360,19 @@ function Ae(e, t, n, r, i, a) {
360
360
  onClick: (t) => r.isMobile ? r.mobileTree?.openItem(e) : r.handleClick(e.id),
361
361
  onToggle: r.handleToggle
362
362
  }, {
363
- icon: Z(() => [e.type === "source" ? (U(), F("img", {
363
+ icon: Z(() => [e.type === "source" ? (H(), P("img", {
364
364
  key: 0,
365
365
  src: r.trilogyIcon,
366
366
  class: "trilogy-icon"
367
- }, null, 8, De)) : e.type === "concept" ? (U(), F("span", {
367
+ }, null, 8, Oe)) : e.type === "concept" ? (H(), P("span", {
368
368
  key: 1,
369
369
  class: V(`purpose-${e.concept.purpose.toLowerCase()}`)
370
- }, q(e.concept.purpose.charAt(0).toUpperCase()), 3)) : e.type === "datasource" ? (U(), F("i", Oe)) : P("", !0)]),
371
- "extra-content": Z(() => [e.type === "model" ? (U(), F("span", ke, [R(c, {
370
+ }, K(e.concept.purpose.charAt(0).toUpperCase()), 3)) : e.type === "datasource" ? (H(), P("i", ke)) : N("", !0)]),
371
+ "extra-content": Z(() => [e.type === "model" ? (H(), P("span", Ae, [L(c, {
372
372
  items: r.contextMenuItems(e),
373
373
  tooltip: "Model actions",
374
374
  onSelect: (t) => r.handleContextMenuItemClick(e, t)
375
- }, null, 8, ["items", "onSelect"])])) : P("", !0)]),
375
+ }, null, 8, ["items", "onSelect"])])) : N("", !0)]),
376
376
  _: 2
377
377
  }, 1032, [
378
378
  "item-id",
@@ -397,19 +397,19 @@ function Ae(e, t, n, r, i, a) {
397
397
  _: 1
398
398
  });
399
399
  }
400
- var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]]), Me = {
400
+ var Me = /*#__PURE__*/ e(we, [["render", je], ["__scopeId", "data-v-ad82d845"]]), Ne = {
401
401
  key: 0,
402
402
  class: "mdi mdi-server-network sidebar-icon"
403
- }, Ne = {
403
+ }, Pe = {
404
404
  key: 1,
405
405
  class: "mdi mdi-folder-outline sidebar-icon"
406
- }, Pe = {
406
+ }, Fe = {
407
407
  key: 2,
408
408
  class: "mdi mdi-file-outline sidebar-icon"
409
- }, Fe = {
409
+ }, Ie = {
410
410
  key: 0,
411
411
  class: "tag-container"
412
- }, Ie = /*#__PURE__*/ e(/* @__PURE__ */ z({
412
+ }, Le = /*#__PURE__*/ e(/* @__PURE__ */ R({
413
413
  __name: "JobsListItem",
414
414
  props: {
415
415
  item: {},
@@ -437,7 +437,7 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
437
437
  if (n === "connected") return "Ready";
438
438
  if (n === "running") return "Polling active jobs";
439
439
  };
440
- return (t, n) => (U(), N(D, {
440
+ return (t, n) => (H(), M(E, {
441
441
  "item-id": e.item.key,
442
442
  name: e.item.label,
443
443
  indent: e.item.indent,
@@ -448,29 +448,29 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
448
448
  onClick: o,
449
449
  onToggle: s
450
450
  }, {
451
- icon: Z(() => [e.item.type === "store" ? (U(), F("i", Me)) : e.item.type === "directory" ? (U(), F("i", Ne)) : (U(), F("i", Pe))]),
452
- "extra-content": Z(() => [e.item.type === "store" && e.item.store ? (U(), F("span", Fe, [
453
- R(m, {
451
+ icon: Z(() => [e.item.type === "store" ? (H(), P("i", Ne)) : e.item.type === "directory" ? (H(), P("i", Pe)) : (H(), P("i", Fe))]),
452
+ "extra-content": Z(() => [e.item.type === "store" && e.item.store ? (H(), P("span", Ie, [
453
+ L(h, {
454
454
  content: "Remove Store",
455
455
  position: "left"
456
456
  }, {
457
- default: Z(() => [I("span", {
457
+ default: Z(() => [F("span", {
458
458
  class: "remove-btn hover-icon sidebar-icon-button danger",
459
459
  onClick: n[0] ||= $((t) => i("delete-store", e.item.store), ["stop"])
460
- }, [...n[2] ||= [I("i", { class: "mdi mdi-trash-can-outline" }, null, -1)]])]),
460
+ }, [...n[2] ||= [F("i", { class: "mdi mdi-trash-can-outline" }, null, -1)]])]),
461
461
  _: 1
462
462
  }),
463
- R(m, {
463
+ L(h, {
464
464
  content: "Refresh Store",
465
465
  position: "left"
466
466
  }, {
467
- default: Z(() => [I("span", {
467
+ default: Z(() => [F("span", {
468
468
  class: "hover-icon sidebar-icon-button",
469
469
  onClick: n[1] ||= $((t) => i("refresh-store", e.item.store.id), ["stop"])
470
- }, [...n[3] ||= [I("i", { class: "mdi mdi-refresh" }, null, -1)]])]),
470
+ }, [...n[3] ||= [F("i", { class: "mdi mdi-refresh" }, null, -1)]])]),
471
471
  _: 1
472
472
  }),
473
- R(T, {
473
+ L(T, {
474
474
  status: c(e.item.store.id),
475
475
  message: l(e.item.store.id),
476
476
  "test-name": e.item.store.id
@@ -479,7 +479,7 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
479
479
  "message",
480
480
  "test-name"
481
481
  ])
482
- ])) : P("", !0)]),
482
+ ])) : N("", !0)]),
483
483
  _: 1
484
484
  }, 8, [
485
485
  "item-id",
@@ -490,11 +490,11 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
490
490
  "is-collapsed"
491
491
  ]));
492
492
  }
493
- }), [["__scopeId", "data-v-ace64696"]]), Le = { class: "form-group" }, Re = { class: "form-group" }, ze = { class: "form-group" }, Be = {
493
+ }), [["__scopeId", "data-v-ace64696"]]), Re = { class: "form-group" }, ze = { class: "form-group" }, Be = { class: "form-group" }, Ve = {
494
494
  key: 0,
495
495
  class: "form-error",
496
496
  "data-testid": "add-jobs-store-error"
497
- }, Ve = { class: "dialog-actions" }, He = ["disabled"], Ue = /*#__PURE__*/ e(/* @__PURE__ */ z({
497
+ }, He = { class: "dialog-actions" }, Ue = ["disabled"], We = /*#__PURE__*/ e(/* @__PURE__ */ R({
498
498
  __name: "JobsAddStoreModal",
499
499
  props: {
500
500
  show: { type: Boolean },
@@ -502,98 +502,91 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
502
502
  },
503
503
  emits: ["close", "add"],
504
504
  setup(e, { emit: t }) {
505
- let n = e, r = t, i = W(""), a = W(""), o = W(""), c = W("");
506
- pe(() => n.show, (e) => {
507
- e && (i.value = "", a.value = "", o.value = "", c.value = "");
505
+ let n = e, r = t, i = U(""), a = U(""), o = U(""), s = U("");
506
+ me(() => n.show, (e) => {
507
+ e && (i.value = "", a.value = "", o.value = "", s.value = "");
508
508
  });
509
- let d = () => {
509
+ let c = () => {
510
510
  if (!a.value) {
511
- c.value = "Base URL is required.";
511
+ s.value = "Base URL is required.";
512
512
  return;
513
513
  }
514
- let e = u(a.value);
515
- r("add", {
516
- type: "generic",
517
- id: l(e),
518
- name: i.value || s(e),
519
- baseUrl: e,
520
- token: o.value || void 0
521
- });
514
+ r("add", d(a.value, i.value, o.value));
522
515
  };
523
- return (t, n) => (U(), N(p, {
516
+ return (t, n) => (H(), M(m, {
524
517
  show: e.show,
525
518
  title: "Add Jobs Store",
526
519
  "test-id": "add-jobs-store-modal",
527
520
  onClose: n[4] ||= (e) => t.$emit("close")
528
521
  }, {
529
- default: Z(() => [I("form", { onSubmit: $(d, ["prevent"]) }, [
530
- I("div", Le, [n[5] ||= I("label", null, "Store Name", -1), Q(I("input", {
522
+ default: Z(() => [F("form", { onSubmit: $(c, ["prevent"]) }, [
523
+ F("div", Re, [n[5] ||= F("label", null, "Store Name", -1), Q(F("input", {
531
524
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
532
525
  type: "text",
533
526
  placeholder: "Optional, defaults to the store URL",
534
527
  "data-testid": "jobs-store-name-input"
535
528
  }, null, 512), [[Y, i.value]])]),
536
- I("div", Re, [
537
- n[6] ||= I("label", null, "Base URL", -1),
538
- Q(I("input", {
529
+ F("div", ze, [
530
+ n[6] ||= F("label", null, "Base URL", -1),
531
+ Q(F("input", {
539
532
  "onUpdate:modelValue": n[1] ||= (e) => a.value = e,
540
533
  type: "url",
541
534
  placeholder: "e.g., http://localhost:8100",
542
535
  "data-testid": "jobs-store-url-input",
543
536
  required: ""
544
537
  }, null, 512), [[Y, a.value]]),
545
- n[7] ||= I("small", null, "Must expose `/index.json`, `/files`, `/run`, `/refresh`, and `/jobs/{id}`.", -1)
538
+ n[7] ||= F("small", null, "Must expose `/index.json`, `/files`, `/run`, `/refresh`, and `/jobs/{id}`.", -1)
546
539
  ]),
547
- I("div", ze, [
548
- n[8] ||= I("label", null, "Token", -1),
549
- Q(I("input", {
540
+ F("div", Be, [
541
+ n[8] ||= F("label", null, "Token", -1),
542
+ Q(F("input", {
550
543
  "onUpdate:modelValue": n[2] ||= (e) => o.value = e,
551
544
  type: "text",
552
545
  placeholder: "Optional X-Trilogy-Token value",
553
546
  "data-testid": "jobs-store-token-input"
554
547
  }, null, 512), [[Y, o.value]]),
555
- n[9] ||= I("small", null, "Stored in memory only. You’ll need to re-enter it after a full reload.", -1)
548
+ n[9] ||= F("small", null, "Stored in memory only. You’ll need to re-enter it after a full reload.", -1)
556
549
  ]),
557
- c.value ? (U(), F("div", Be, q(c.value), 1)) : P("", !0),
558
- I("div", Ve, [I("button", {
550
+ s.value ? (H(), P("div", Ve, K(s.value), 1)) : N("", !0),
551
+ F("div", He, [F("button", {
559
552
  type: "button",
560
553
  class: "cancel-btn",
561
554
  onClick: n[3] ||= (e) => t.$emit("close")
562
- }, "Cancel"), I("button", {
555
+ }, "Cancel"), F("button", {
563
556
  type: "submit",
564
557
  class: "confirm-btn",
565
558
  disabled: e.loading
566
- }, q(e.loading ? "Adding..." : "Add Store"), 9, He)])
559
+ }, K(e.loading ? "Adding..." : "Add Store"), 9, Ue)])
567
560
  ], 32)]),
568
561
  _: 1
569
562
  }, 8, ["show"]));
570
563
  }
571
- }), [["__scopeId", "data-v-b2a74918"]]), We = (e, t) => ({
564
+ }), [["__scopeId", "data-v-733e3642"]]), Ge = (e, t) => ({
572
565
  name: e,
573
566
  path: t,
574
567
  files: [],
575
568
  children: {}
576
- }), Ge = (e) => e.slice().sort((e, t) => e.localeCompare(t)), Ke = (e, t) => {
569
+ }), Ke = (e) => e.slice().sort((e, t) => e.localeCompare(t)), qe = (e, t) => {
577
570
  if (!t) return e;
578
571
  let n = t.split("/").filter(Boolean), r = e, i = "";
579
572
  return n.forEach((e) => {
580
- i = i ? `${i}/${e}` : e, r.children[e] || (r.children[e] = We(e, i)), r = r.children[e];
573
+ i = i ? `${i}/${e}` : e, r.children[e] || (r.children[e] = Ge(e, i)), r = r.children[e];
581
574
  }), r;
582
- }, qe = (e, t) => `${e}+directory+${encodeURIComponent(t)}`, Je = (e, t) => `${e}+file+${encodeURIComponent(t)}`, Ye = (e, t, n, r, i) => {
583
- Ge(n).forEach((n) => {
575
+ }, Je = (e, t) => `${e}+directory+${encodeURIComponent(t)}`, Ye = (e, t) => `${e}+file+${encodeURIComponent(t)}`, Xe = (e, t, n, r, i) => {
576
+ Ke(n).forEach((n) => {
584
577
  let a = r ? `${r}/${n}` : n;
585
578
  e.push({
586
579
  type: "file",
587
580
  label: n,
588
- key: Je(t, a),
581
+ key: Ye(t, a),
589
582
  indent: i,
590
583
  storeId: t,
591
584
  target: a
592
585
  });
593
586
  });
594
- }, Xe = (e, t, n, r, i) => {
595
- Ye(e, t, n.files, n.path, i), Object.values(n.children).sort((e, t) => e.name.localeCompare(t.name)).forEach((n) => {
596
- let a = qe(t, n.path);
587
+ }, Ze = (e, t, n, r, i) => {
588
+ Xe(e, t, n.files, n.path, i), Object.values(n.children).sort((e, t) => e.name.localeCompare(t.name)).forEach((n) => {
589
+ let a = Je(t, n.path);
597
590
  e.push({
598
591
  type: "directory",
599
592
  label: n.name,
@@ -601,9 +594,9 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
601
594
  indent: i,
602
595
  storeId: t,
603
596
  target: n.path
604
- }), r(a) || Xe(e, t, n, r, i + 1);
597
+ }), r(a) || Ze(e, t, n, r, i + 1);
605
598
  });
606
- }, Ze = (e, t = [], n = {}) => {
599
+ }, Qe = (e, t = [], n = {}) => {
607
600
  let r = [];
608
601
  return t.forEach((t) => {
609
602
  if (r.push({
@@ -614,80 +607,80 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
614
607
  storeId: t.id,
615
608
  store: t
616
609
  }), e(t.id)) return;
617
- let i = We("", "");
610
+ let i = Ge("", "");
618
611
  (n[t.id]?.directories || []).forEach((e) => {
619
- let t = Ke(i, e.directory);
620
- t.files = Ge(e.files);
621
- }), Xe(r, t.id, i, e, 1);
612
+ let t = qe(i, e.directory);
613
+ t.files = Ke(e.files);
614
+ }), Ze(r, t.id, i, e, 1);
622
615
  }), r;
623
- }, Qe = { class: "jobs-header" }, $e = {
616
+ }, $e = { class: "jobs-header" }, et = {
624
617
  key: 0,
625
618
  class: "empty-state"
626
- }, et = {
619
+ }, tt = {
627
620
  key: 1,
628
621
  class: "error-container"
629
- }, tt = { class: "error-text" }, nt = ["onClick"], rt = /*#__PURE__*/ e(/* @__PURE__ */ z({
622
+ }, nt = { class: "error-text" }, rt = ["onClick"], it = /*#__PURE__*/ e(/* @__PURE__ */ R({
630
623
  __name: "JobsList",
631
624
  props: { activeJobsKey: { default: "" } },
632
625
  emits: ["jobs-key-selected"],
633
626
  setup(e, { emit: t }) {
634
- let i = e, a = t, o = c(), s = r(), l = n(), u = B("storageSources", []), d = B("editorStore"), f = B("connectionStore"), p = B("modelStore"), m = W(!1), h = g(), _ = W(null), v = M(() => u.find((e) => e.type === "remote")), y = M(() => o.stores.filter((e) => e.type === "generic")), b = M(() => y.value.some((e) => !!s.errors[e.id])), w = M(() => y.value.filter((e) => !!s.errors[e.id])), T = M(() => (i.activeJobsKey || "").split("+")[0] || ""), { isCollapsed: E, toggle: ee, open: D } = A((e) => e.includes("+directory+") ? !0 : T.value ? e === T.value : y.value.length === 1 && e === y.value[0].id), te = M(() => Ze(E, y.value, s.filesByStore)), ne = async (e) => {
627
+ let i = e, a = t, o = c(), s = r(), l = n(), u = z("storageSources", []), d = z("editorStore"), f = z("connectionStore"), p = z("modelStore"), m = U(!1), h = _(), g = U(null), v = j(() => u.find((e) => e.type === "remote")), y = j(() => o.stores.filter((e) => e.type === "generic")), b = j(() => y.value.some((e) => !!s.errors[e.id])), x = j(() => y.value.filter((e) => !!s.errors[e.id])), w = j(() => (i.activeJobsKey || "").split("+")[0] || ""), { isCollapsed: T, toggle: te, open: ne } = k((e) => e.includes("+directory+") ? !0 : w.value ? e === w.value : y.value.length === 1 && e === y.value[0].id), E = j(() => Qe(T, y.value, s.filesByStore)), re = async (e) => {
635
628
  try {
636
- await o.addStore(e), await s.fetchFilesForStore(e.id), v.value && d && f && p && await x(v.value, e.id, d, f, p), D(e.id), m.value = !1;
629
+ await o.addStore(e), await s.fetchFilesForStore(e.id), v.value && d && f && p && await S(v.value, e.id, d, f, p), ne(e.id), m.value = !1;
637
630
  } catch (e) {
638
631
  console.error("Failed to add jobs store:", e);
639
632
  }
640
- }, { isOpen: re, openConfirmation: ie, closeConfirmation: oe, confirm: se } = ae((e) => {
641
- d && f && p && C(e.id, d, f, p), o.removeStore(e.id), s.clearStoreData(e.id);
642
- }), z = (e) => {
633
+ }, { isOpen: ie, openConfirmation: ae, closeConfirmation: oe, confirm: ce } = se((e) => {
634
+ d && f && p && ee(e.id, d, f, p), o.removeStore(e.id), s.clearStoreData(e.id);
635
+ }), le = (e) => {
643
636
  l.openTab("jobs", null, e.key), a("jobs-key-selected", e.key);
644
- }, ce = (e) => {
645
- ee(e.key);
646
- }, V = (e) => ["store", "directory"].includes(e.type), le = (e) => {
647
- E(e.key) && ce(e);
637
+ }, R = (e) => {
638
+ te(e.key);
639
+ }, B = (e) => ["store", "directory"].includes(e.type), V = (e) => {
640
+ T(e.key) && R(e);
648
641
  }, ue = (e) => {
649
- h.value ? _.value?.openItem(e) : z(e);
650
- }, K = async (e) => {
642
+ h.value ? g.value?.openItem(e) : le(e);
643
+ }, fe = async (e) => {
651
644
  await s.fetchFilesForStore(e);
652
645
  };
653
- return H(async () => {
646
+ return de(async () => {
654
647
  o.loadStoresFromStorage(), await s.refreshAllStores();
655
- }), (t, n) => (U(), N(O, { title: "Jobs" }, {
656
- header: Z(() => [I("div", Qe, [n[3] ||= I("h3", { class: "font-sans sidebar-header" }, "Jobs", -1), I("button", {
648
+ }), (t, n) => (H(), M(D, { title: "Jobs" }, {
649
+ header: Z(() => [F("div", $e, [n[3] ||= F("h3", { class: "font-sans sidebar-header" }, "Jobs", -1), F("button", {
657
650
  class: "sidebar-control-button sidebar-header-action sidebar-primary-create",
658
651
  onClick: n[0] ||= (e) => m.value = !0
659
- }, [...n[2] ||= [I("i", { class: "mdi mdi-plus" }, null, -1), L(" New ", -1)]])])]),
652
+ }, [...n[2] ||= [F("i", { class: "mdi mdi-plus" }, null, -1), I(" New ", -1)]])])]),
660
653
  default: Z(() => [
661
- y.value.length ? P("", !0) : (U(), F("div", $e, " Add a Trilogy local server to browse files and run jobs. ")),
662
- b.value ? (U(), F("div", et, [(U(!0), F(j, null, G(w.value, (e) => (U(), F("div", {
654
+ y.value.length ? N("", !0) : (H(), P("div", et, " Add a Trilogy local server to browse files and run jobs. ")),
655
+ b.value ? (H(), P("div", tt, [(H(!0), P(A, null, W(x.value, (e) => (H(), P("div", {
663
656
  key: e.id,
664
657
  class: "error-item"
665
- }, [I("span", tt, q(e.name) + ": " + q(J(s).errors[e.id]), 1), I("button", {
666
- onClick: (t) => J(s).clearStoreError(e.id),
658
+ }, [F("span", nt, K(e.name) + ": " + K(q(s).errors[e.id]), 1), F("button", {
659
+ onClick: (t) => q(s).clearStoreError(e.id),
667
660
  class: "clear-error"
668
- }, "x", 8, nt)]))), 128))])) : P("", !0),
669
- R(k, {
661
+ }, "x", 8, rt)]))), 128))])) : N("", !0),
662
+ L(O, {
670
663
  "list-id": "jobs",
671
664
  ref_key: "mobileTree",
672
- ref: _,
673
- items: te.value,
665
+ ref: g,
666
+ items: E.value,
674
667
  "id-field": "key",
675
668
  "label-field": "label",
676
- enabled: J(h),
677
- "is-branch": V,
678
- "is-selectable": V,
679
- onExpand: le,
680
- onSelect: z
669
+ enabled: q(h),
670
+ "is-branch": B,
671
+ "is-selectable": B,
672
+ onExpand: V,
673
+ onSelect: le
681
674
  }, {
682
- item: Z(({ item: t }) => [(U(), N(Ie, {
675
+ item: Z(({ item: t }) => [(H(), M(Le, {
683
676
  key: t.key,
684
677
  item: t,
685
- "is-collapsed": J(E)(t.key),
678
+ "is-collapsed": q(T)(t.key),
686
679
  "active-jobs-key": e.activeJobsKey,
687
680
  onItemClick: ue,
688
- onItemToggle: ce,
689
- onDeleteStore: J(ie),
690
- onRefreshStore: K
681
+ onItemToggle: R,
682
+ onDeleteStore: q(ae),
683
+ onRefreshStore: fe
691
684
  }, null, 8, [
692
685
  "item",
693
686
  "is-collapsed",
@@ -696,18 +689,18 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
696
689
  ]))]),
697
690
  _: 1
698
691
  }, 8, ["items", "enabled"]),
699
- R(Ue, {
692
+ L(We, {
700
693
  show: m.value,
701
694
  onClose: n[1] ||= (e) => m.value = !1,
702
- onAdd: ne
695
+ onAdd: re
703
696
  }, null, 8, ["show"]),
704
- R(S, {
705
- show: J(re),
697
+ L(C, {
698
+ show: q(ie),
706
699
  title: "Confirm Store Removal",
707
700
  message: "Remove this jobs store? Imported models remain untouched.",
708
701
  "confirm-label": "Remove",
709
- onClose: J(oe),
710
- onConfirm: J(se)
702
+ onClose: q(oe),
703
+ onConfirm: q(ce)
711
704
  }, null, 8, [
712
705
  "show",
713
706
  "onClose",
@@ -717,45 +710,45 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
717
710
  _: 1
718
711
  }));
719
712
  }
720
- }), [["__scopeId", "data-v-6c9c90f4"]]), it = {
713
+ }), [["__scopeId", "data-v-6c9c90f4"]]), at = {
721
714
  class: "popup-content",
722
715
  "data-testid": "dashboard-import-popup"
723
- }, at = { class: "popup-header" }, ot = { class: "popup-body" }, st = { class: "import-mode-selector" }, ct = {
716
+ }, ot = { class: "popup-header" }, st = { class: "popup-body" }, ct = { class: "import-mode-selector" }, lt = {
724
717
  key: 0,
725
718
  class: "input-group"
726
- }, lt = {
719
+ }, ut = {
727
720
  key: 0,
728
721
  class: "error-message"
729
- }, ut = {
722
+ }, dt = {
730
723
  key: 1,
731
724
  class: "input-group"
732
- }, dt = { class: "url-input-container" }, ft = ["disabled"], pt = {
725
+ }, ft = { class: "url-input-container" }, pt = ["disabled"], mt = {
733
726
  key: 0,
734
727
  class: "error-message"
735
- }, mt = {
728
+ }, ht = {
736
729
  key: 1,
737
730
  class: "preview-container"
738
- }, ht = { class: "json-preview" }, gt = { class: "connection-selector" }, _t = { class: "form-row" }, vt = ["value"], yt = {
731
+ }, gt = { class: "json-preview" }, _t = { class: "connection-selector" }, vt = { class: "form-row" }, yt = ["value"], bt = {
739
732
  key: 0,
740
733
  class: "form-row"
741
- }, bt = {
734
+ }, xt = {
742
735
  key: 1,
743
736
  class: "form-row"
744
- }, xt = { class: "form-row" }, St = { class: "form-row" }, Ct = { class: "form-row" }, wt = { class: "popup-footer" }, Tt = ["disabled"], Et = /*#__PURE__*/ e(/* @__PURE__ */ z({
737
+ }, St = { class: "form-row" }, Ct = { class: "form-row" }, wt = { class: "form-row" }, Tt = { class: "popup-footer" }, Et = ["disabled"], Dt = /*#__PURE__*/ e(/* @__PURE__ */ R({
745
738
  __name: "DashboardImportPopup",
746
739
  props: { isOpen: { type: Boolean } },
747
740
  emits: ["close"],
748
741
  setup(e, { emit: n }) {
749
- let r = n, i = B("dashboardStore"), a = B("connectionStore"), o = B("saveDashboards"), s = B("saveAll");
742
+ let r = n, i = z("dashboardStore"), a = z("connectionStore"), o = z("saveDashboards"), s = z("saveAll");
750
743
  if (!i || !a || !o || !s) throw Error("Required stores not provided");
751
- let c = W(""), l = W(""), u = W(null), d = W(!1), f = W(""), p = W("paste"), m = W(null), h = W({
744
+ let c = U(""), l = U(""), u = U(null), d = U(!1), f = U(""), p = U("paste"), m = U(null), h = U({
752
745
  mdToken: "",
753
746
  projectId: "",
754
747
  username: "",
755
748
  password: "",
756
749
  account: "",
757
750
  sshPrivateKey: ""
758
- }), g = W(!0);
751
+ }), g = U(!0);
759
752
  function _() {
760
753
  if (!l.value) {
761
754
  g.value = !1;
@@ -825,30 +818,30 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
825
818
  u.value = null;
826
819
  }, 3e3);
827
820
  }
828
- }, b = W(!1);
829
- return _(), (t, n) => e.isOpen ? (U(), F("div", {
821
+ }, b = U(!1);
822
+ return _(), (t, n) => e.isOpen ? (H(), P("div", {
830
823
  key: 0,
831
824
  class: "popup-overlay",
832
825
  onClick: n[11] ||= $((e) => r("close"), ["self"])
833
- }, [I("div", it, [
834
- I("div", at, [n[12] ||= I("h3", null, "Import Dashboard", -1), I("button", {
826
+ }, [F("div", at, [
827
+ F("div", ot, [n[12] ||= F("h3", null, "Import Dashboard", -1), F("button", {
835
828
  onClick: n[0] ||= (e) => r("close"),
836
829
  class: "close-button",
837
830
  "data-testid": "close-popup-button"
838
831
  }, " ✕ ")]),
839
- I("div", ot, [
840
- I("div", st, [I("button", {
832
+ F("div", st, [
833
+ F("div", ct, [F("button", {
841
834
  class: V(["mode-button", { active: p.value === "paste" }]),
842
835
  onClick: n[1] ||= (e) => p.value = "paste",
843
836
  "data-testid": "paste-mode-button"
844
- }, " Paste JSON ", 2), I("button", {
837
+ }, " Paste JSON ", 2), F("button", {
845
838
  class: V(["mode-button", { active: p.value === "url" }]),
846
839
  onClick: n[2] ||= (e) => p.value = "url",
847
840
  "data-testid": "url-mode-button"
848
841
  }, " From URL ", 2)]),
849
- p.value === "paste" ? (U(), F("div", ct, [
850
- n[13] ||= I("label", { for: "dashboard-json" }, "Paste Dashboard JSON", -1),
851
- Q(I("textarea", {
842
+ p.value === "paste" ? (H(), P("div", lt, [
843
+ n[13] ||= F("label", { for: "dashboard-json" }, "Paste Dashboard JSON", -1),
844
+ Q(F("textarea", {
852
845
  id: "dashboard-json",
853
846
  "onUpdate:modelValue": n[3] ||= (e) => c.value = e,
854
847
  placeholder: "Paste your dashboard JSON here",
@@ -856,49 +849,49 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
856
849
  class: "dashboard-textarea",
857
850
  "data-testid": "dashboard-json-input"
858
851
  }, null, 512), [[Y, c.value]]),
859
- u.value ? (U(), F("div", lt, q(u.value), 1)) : P("", !0)
860
- ])) : P("", !0),
861
- p.value === "url" ? (U(), F("div", ut, [
862
- n[15] ||= I("label", { for: "dashboard-url" }, "Dashboard URL", -1),
863
- I("div", dt, [Q(I("input", {
852
+ u.value ? (H(), P("div", ut, K(u.value), 1)) : N("", !0)
853
+ ])) : N("", !0),
854
+ p.value === "url" ? (H(), P("div", dt, [
855
+ n[15] ||= F("label", { for: "dashboard-url" }, "Dashboard URL", -1),
856
+ F("div", ft, [Q(F("input", {
864
857
  type: "text",
865
858
  id: "dashboard-url",
866
859
  "onUpdate:modelValue": n[4] ||= (e) => f.value = e,
867
860
  placeholder: "https://example.com/dashboard.json",
868
861
  class: "url-input",
869
862
  "data-testid": "dashboard-url-input"
870
- }, null, 512), [[Y, f.value]]), I("button", {
863
+ }, null, 512), [[Y, f.value]]), F("button", {
871
864
  onClick: v,
872
865
  class: "fetch-button",
873
866
  disabled: d.value,
874
867
  "data-testid": "fetch-url-button"
875
- }, q(d.value ? "Loading..." : "Fetch"), 9, ft)]),
876
- m.value ? (U(), F("div", pt, q(m.value), 1)) : P("", !0),
877
- c.value && p.value === "url" ? (U(), F("div", mt, [n[14] ||= I("label", null, "Dashboard JSON Preview", -1), I("div", ht, [I("pre", null, q(c.value.length > 500 ? c.value.substring(0, 500) + "..." : c.value), 1)])])) : P("", !0)
878
- ])) : P("", !0)
868
+ }, K(d.value ? "Loading..." : "Fetch"), 9, pt)]),
869
+ m.value ? (H(), P("div", mt, K(m.value), 1)) : N("", !0),
870
+ c.value && p.value === "url" ? (H(), P("div", ht, [n[14] ||= F("label", null, "Dashboard JSON Preview", -1), F("div", gt, [F("pre", null, K(c.value.length > 500 ? c.value.substring(0, 500) + "..." : c.value), 1)])])) : N("", !0)
871
+ ])) : N("", !0)
879
872
  ]),
880
- I("div", gt, [
881
- I("div", _t, [n[21] ||= I("label", { for: "connection-select" }, "Assign To Connection", -1), Q(I("select", {
873
+ F("div", _t, [
874
+ F("div", vt, [n[21] ||= F("label", { for: "connection-select" }, "Assign To Connection", -1), Q(F("select", {
882
875
  id: "connection-select",
883
876
  "onUpdate:modelValue": n[5] ||= (e) => l.value = e,
884
877
  class: "connection-dropdown",
885
878
  "data-testid": "connection-select",
886
879
  onChange: _
887
880
  }, [
888
- n[16] ||= I("option", {
881
+ n[16] ||= F("option", {
889
882
  value: "",
890
883
  disabled: ""
891
884
  }, "-- Select Connection --", -1),
892
- (U(!0), F(j, null, G(J(a).connections, (e) => (U(), F("option", {
885
+ (H(!0), P(A, null, W(q(a).connections, (e) => (H(), P("option", {
893
886
  key: e.name,
894
887
  value: e.name
895
- }, q(e.name), 9, vt))), 128)),
896
- n[17] ||= I("option", { value: "new-duckdb" }, "New DuckDB", -1),
897
- n[18] ||= I("option", { value: "new-motherduck" }, "New MotherDuck", -1),
898
- n[19] ||= I("option", { value: "new-bigquery-oauth" }, "New Bigquery Oauth", -1),
899
- n[20] ||= I("option", { value: "new-snowflake" }, "New Snowflake", -1)
900
- ], 544), [[fe, l.value]])]),
901
- l.value === "new-motherduck" ? (U(), F("div", yt, [n[22] ||= I("label", { for: "md-token" }, "MotherDuck Token", -1), Q(I("input", {
888
+ }, K(e.name), 9, yt))), 128)),
889
+ n[17] ||= F("option", { value: "new-duckdb" }, "New DuckDB", -1),
890
+ n[18] ||= F("option", { value: "new-motherduck" }, "New MotherDuck", -1),
891
+ n[19] ||= F("option", { value: "new-bigquery-oauth" }, "New Bigquery Oauth", -1),
892
+ n[20] ||= F("option", { value: "new-snowflake" }, "New Snowflake", -1)
893
+ ], 544), [[J, l.value]])]),
894
+ l.value === "new-motherduck" ? (H(), P("div", bt, [n[22] ||= F("label", { for: "md-token" }, "MotherDuck Token", -1), Q(F("input", {
902
895
  type: "text",
903
896
  "onUpdate:modelValue": n[6] ||= (e) => h.value.mdToken = e,
904
897
  id: "md-token",
@@ -910,8 +903,8 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
910
903
  h.value.mdToken,
911
904
  void 0,
912
905
  { trim: !0 }
913
- ]])])) : P("", !0),
914
- l.value === "new-bigquery-oauth" ? (U(), F("div", bt, [n[23] ||= I("label", { for: "project-id" }, "BigQuery Project ID", -1), Q(I("input", {
906
+ ]])])) : N("", !0),
907
+ l.value === "new-bigquery-oauth" ? (H(), P("div", xt, [n[23] ||= F("label", { for: "project-id" }, "BigQuery Project ID", -1), Q(F("input", {
915
908
  type: "text",
916
909
  "onUpdate:modelValue": n[7] ||= (e) => h.value.projectId = e,
917
910
  id: "project-id",
@@ -923,9 +916,9 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
923
916
  h.value.projectId,
924
917
  void 0,
925
918
  { trim: !0 }
926
- ]])])) : P("", !0),
927
- l.value === "new-snowflake" ? (U(), F(j, { key: 2 }, [
928
- I("div", xt, [n[24] ||= I("label", { for: "snowflake-username" }, "Username", -1), Q(I("input", {
919
+ ]])])) : N("", !0),
920
+ l.value === "new-snowflake" ? (H(), P(A, { key: 2 }, [
921
+ F("div", St, [n[24] ||= F("label", { for: "snowflake-username" }, "Username", -1), Q(F("input", {
929
922
  type: "text",
930
923
  "onUpdate:modelValue": n[8] ||= (e) => h.value.username = e,
931
924
  id: "snowflake-username",
@@ -938,7 +931,7 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
938
931
  void 0,
939
932
  { trim: !0 }
940
933
  ]])]),
941
- I("div", St, [n[25] ||= I("label", { for: "snowflake-account" }, "Account", -1), Q(I("input", {
934
+ F("div", Ct, [n[25] ||= F("label", { for: "snowflake-account" }, "Account", -1), Q(F("input", {
942
935
  type: "text",
943
936
  "onUpdate:modelValue": n[9] ||= (e) => h.value.account = e,
944
937
  id: "snowflake-account",
@@ -951,7 +944,7 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
951
944
  void 0,
952
945
  { trim: !0 }
953
946
  ]])]),
954
- I("div", Ct, [n[26] ||= I("label", { for: "snowflake-ssh-private-key" }, "Private Key", -1), Q(I("input", {
947
+ F("div", wt, [n[26] ||= F("label", { for: "snowflake-ssh-private-key" }, "Private Key", -1), Q(F("input", {
955
948
  type: "text",
956
949
  "onUpdate:modelValue": n[10] ||= (e) => h.value.sshPrivateKey = e,
957
950
  id: "snowflake-ssh-private-key",
@@ -964,17 +957,17 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
964
957
  void 0,
965
958
  { trim: !0 }
966
959
  ]])])
967
- ], 64)) : P("", !0)
960
+ ], 64)) : N("", !0)
968
961
  ]),
969
- I("div", wt, [I("button", {
962
+ F("div", Tt, [F("button", {
970
963
  onClick: y,
971
964
  class: "copy-button",
972
965
  "data-testid": "import-dashboard-button",
973
966
  disabled: !c.value || !l.value || d.value || !g.value
974
- }, q(b.value ? "Imported!" : "Import"), 9, Tt)])
975
- ])])) : P("", !0);
967
+ }, K(b.value ? "Imported!" : "Import"), 9, Et)])
968
+ ])])) : N("", !0);
976
969
  }
977
- }), [["__scopeId", "data-v-3448e3ad"]]), Dt = {
970
+ }), [["__scopeId", "data-v-3448e3ad"]]), Ot = {
978
971
  name: "DashboardListItem",
979
972
  props: {
980
973
  item: {
@@ -997,18 +990,18 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
997
990
  "toggle"
998
991
  ],
999
992
  setup(e) {
1000
- let t = B("connectionStore"), n = B("dashboardStore"), r = g();
993
+ let t = z("connectionStore"), n = z("dashboardStore"), r = _();
1001
994
  if (!t || !n) throw Error("Connection/Dashboard stores is not provided!");
1002
- let i = M(() => e.item.type === "connection" && (e.item.connectionId && t.connections[e.item.connectionId] || t.connectionByName(e.item.label)) || null);
995
+ let i = j(() => e.item.type === "connection" && (e.item.connectionId && t.connections[e.item.connectionId] || t.connectionByName(e.item.label)) || null);
1003
996
  return {
1004
997
  isMobile: r,
1005
998
  dashboardStore: n,
1006
999
  connectionInfo: i,
1007
- connectionStatus: M(() => {
1000
+ connectionStatus: j(() => {
1008
1001
  let e = i.value;
1009
1002
  return e ? e.running ? "running" : e.connected ? "connected" : "disabled" : "disabled";
1010
1003
  }),
1011
- contextMenuItems: M(() => e.item.type === "connection" ? [{
1004
+ contextMenuItems: j(() => e.item.type === "connection" ? [{
1012
1005
  id: "new-dashboard",
1013
1006
  label: "New dashboard",
1014
1007
  icon: "mdi-table-plus"
@@ -1085,23 +1078,23 @@ var je = /*#__PURE__*/ e(Ce, [["render", Ae], ["__scopeId", "data-v-ad82d845"]])
1085
1078
  }
1086
1079
  },
1087
1080
  components: {
1088
- SidebarItem: D,
1089
- Tooltip: m,
1081
+ SidebarItem: E,
1082
+ Tooltip: h,
1090
1083
  StatusIcon: T,
1091
- SidebarOverflowMenu: ee
1084
+ SidebarOverflowMenu: ne
1092
1085
  }
1093
- }, Ot = {
1086
+ }, kt = {
1094
1087
  key: 0,
1095
1088
  class: "text-light connection-model"
1096
- }, kt = { class: "dashboard-actions" }, At = ["data-testid"];
1097
- function jt(e, t, n, r, i, a) {
1098
- let o = K("tooltip"), s = K("status-icon"), c = K("sidebar-overflow-menu"), l = K("sidebar-item");
1099
- return n.item.type === "creator" ? (U(), F("div", {
1089
+ }, At = { class: "dashboard-actions" }, jt = ["data-testid"];
1090
+ function Mt(e, t, n, r, i, a) {
1091
+ let o = G("tooltip"), s = G("status-icon"), c = G("sidebar-overflow-menu"), l = G("sidebar-item");
1092
+ return n.item.type === "creator" ? (H(), P("div", {
1100
1093
  key: 1,
1101
1094
  "data-testid": `dashboard-list-id-${n.item.key}`,
1102
1095
  class: "creator-item",
1103
1096
  onClick: t[0] ||= (...e) => a.handleClick && a.handleClick(...e)
1104
- }, q(n.item.label), 9, At)) : (U(), N(l, {
1097
+ }, K(n.item.label), 9, jt)) : (H(), M(l, {
1105
1098
  key: 0,
1106
1099
  "item-id": n.item.key,
1107
1100
  name: n.item.label,
@@ -1117,27 +1110,27 @@ function jt(e, t, n, r, i, a) {
1117
1110
  onClick: a.handleClick,
1118
1111
  onToggle: a.handleToggle
1119
1112
  }, {
1120
- icon: Z(() => [n.item.type === "investigation" ? (U(), N(o, {
1113
+ icon: Z(() => [n.item.type === "investigation" ? (H(), M(o, {
1121
1114
  key: 0,
1122
1115
  content: "Investigation",
1123
1116
  position: "right"
1124
1117
  }, {
1125
- default: Z(() => [...t[1] ||= [I("i", { class: "mdi mdi-source-branch node-icon investigation-icon" }, null, -1)]]),
1118
+ default: Z(() => [...t[1] ||= [F("i", { class: "mdi mdi-source-branch node-icon investigation-icon" }, null, -1)]]),
1126
1119
  _: 1
1127
- })) : n.item.type === "dashboard" ? (U(), N(o, {
1120
+ })) : n.item.type === "dashboard" ? (H(), M(o, {
1128
1121
  key: 1,
1129
1122
  content: "Dashboard",
1130
1123
  position: "right"
1131
1124
  }, {
1132
- default: Z(() => [...t[2] ||= [I("i", { class: "mdi mdi-view-dashboard node-icon" }, null, -1)]]),
1125
+ default: Z(() => [...t[2] ||= [F("i", { class: "mdi mdi-view-dashboard node-icon" }, null, -1)]]),
1133
1126
  _: 1
1134
- })) : P("", !0)]),
1135
- name: Z(() => [L(q(n.item.label) + " ", 1), n.item.type === "connection" ? (U(), F("span", Ot, " (" + q(r.connectionInfo?.model ? r.connectionInfo?.model : "No Model Set") + ") ", 1)) : P("", !0)]),
1136
- "extra-content": Z(() => [I("div", kt, [n.item.type === "connection" ? (U(), F(j, { key: 0 }, [R(s, { status: r.connectionStatus }, null, 8, ["status"]), R(c, {
1127
+ })) : N("", !0)]),
1128
+ name: Z(() => [I(K(n.item.label) + " ", 1), n.item.type === "connection" ? (H(), P("span", kt, " (" + K(r.connectionInfo?.model ? r.connectionInfo?.model : "No Model Set") + ") ", 1)) : N("", !0)]),
1129
+ "extra-content": Z(() => [F("div", At, [n.item.type === "connection" ? (H(), P(A, { key: 0 }, [L(s, { status: r.connectionStatus }, null, 8, ["status"]), L(c, {
1137
1130
  items: r.contextMenuItems,
1138
1131
  tooltip: "Connection actions",
1139
1132
  onSelect: a.handleContextMenuItemClick
1140
- }, null, 8, ["items", "onSelect"])], 64)) : P("", !0), n.item.type === "dashboard" || n.item.type === "investigation" ? (U(), N(c, {
1133
+ }, null, 8, ["items", "onSelect"])], 64)) : N("", !0), n.item.type === "dashboard" || n.item.type === "investigation" ? (H(), M(c, {
1141
1134
  key: 1,
1142
1135
  items: r.contextMenuItems,
1143
1136
  tooltip: n.item.type === "investigation" ? "Investigation actions" : "Dashboard actions",
@@ -1146,7 +1139,7 @@ function jt(e, t, n, r, i, a) {
1146
1139
  "items",
1147
1140
  "tooltip",
1148
1141
  "onSelect"
1149
- ])) : P("", !0)])]),
1142
+ ])) : N("", !0)])]),
1150
1143
  _: 1
1151
1144
  }, 8, [
1152
1145
  "item-id",
@@ -1159,10 +1152,10 @@ function jt(e, t, n, r, i, a) {
1159
1152
  "onToggle"
1160
1153
  ]));
1161
1154
  }
1162
- var Mt = /*#__PURE__*/ e(Dt, [["render", jt], ["__scopeId", "data-v-28e46aa7"]]);
1155
+ var Nt = /*#__PURE__*/ e(Ot, [["render", Mt], ["__scopeId", "data-v-28e46aa7"]]);
1163
1156
  //#endregion
1164
1157
  //#region components/sidebar/DashboardList.vue?vue&type=script&lang.ts
1165
- function Nt(e, t, n) {
1158
+ function Pt(e, t, n) {
1166
1159
  let r = [], i = {}, a = {};
1167
1160
  return e.forEach((e) => {
1168
1161
  if (e.deleted) return;
@@ -1222,7 +1215,7 @@ function Nt(e, t, n) {
1222
1215
  }
1223
1216
  }), r;
1224
1217
  }
1225
- var Pt = {
1218
+ var Ft = {
1226
1219
  name: "DashboardList",
1227
1220
  props: {
1228
1221
  activeDashboardKey: String,
@@ -1232,17 +1225,17 @@ var Pt = {
1232
1225
  }
1233
1226
  },
1234
1227
  setup(e) {
1235
- let t = B("dashboardStore"), n = B("connectionStore"), r = B("chatStore", null), i = B("saveDashboards");
1228
+ let t = z("dashboardStore"), n = z("connectionStore"), r = z("chatStore", null), i = z("saveDashboards");
1236
1229
  if (!t || !n || !i) throw Error("Dashboard or connection store is not provided!");
1237
- let a = W(!1), o = W(!1), s = g(), c = W(null), l = W(!0), u = d(f.DASHBOARD) || "", p = (e) => {
1230
+ let a = U(!1), o = U(!1), s = _(), c = U(null), l = U(!0), u = f(p.DASHBOARD) || "", d = (e) => {
1238
1231
  let t = e.storage || "local", n = e.connectionId || e.connection || "default";
1239
1232
  return [`s-${t}`, `c-${t}-${n}`];
1240
- }, m = M(() => {
1233
+ }, m = j(() => {
1241
1234
  let n = Object.values(t.dashboards).filter((e) => !e.deleted), r = e.activeDashboardKey || u, i = r ? n.find((e) => e.id === r) : void 0;
1242
- if (i) return new Set(p(i));
1235
+ if (i) return new Set(d(i));
1243
1236
  let a = new Set(n.map((e) => `s-${e.storage || "local"}`));
1244
1237
  return a.size === 1 ? a : /* @__PURE__ */ new Set();
1245
- }), { overrides: h, isCollapsed: _, toggle: v } = A((e) => e.startsWith("d-") || m.value.has(e)), y = M(() => Nt(Object.values(t.dashboards), _, n)), { isOpen: b, openConfirmation: x, closeConfirmation: S, confirm: C } = ae((e) => {
1238
+ }), { overrides: h, isCollapsed: g, toggle: v } = k((e) => e.startsWith("d-") || m.value.has(e)), y = j(() => Pt(Object.values(t.dashboards), g, n)), { isOpen: b, openConfirmation: x, closeConfirmation: S, confirm: C } = se((e) => {
1246
1239
  r && e.chatId && r.chats[e.chatId] && r.removeChat(e.chatId), e.delete();
1247
1240
  });
1248
1241
  return {
@@ -1251,7 +1244,7 @@ var Pt = {
1251
1244
  contentList: y,
1252
1245
  toggleCollapse: v,
1253
1246
  collapsed: h,
1254
- isCollapsed: _,
1247
+ isCollapsed: g,
1255
1248
  creatorVisible: a,
1256
1249
  importPopupVisible: o,
1257
1250
  saveDashboards: i,
@@ -1288,36 +1281,36 @@ var Pt = {
1288
1281
  }
1289
1282
  },
1290
1283
  components: {
1291
- DashboardCreatorInline: v,
1292
- DashboardImportPopup: Et,
1293
- DashboardListItem: Mt,
1294
- SidebarList: O,
1295
- LoadingButton: h,
1296
- ConfirmDialog: S,
1297
- MobileTreeList: k
1284
+ DashboardCreatorInline: y,
1285
+ DashboardImportPopup: Dt,
1286
+ DashboardListItem: Nt,
1287
+ SidebarList: D,
1288
+ LoadingButton: g,
1289
+ ConfirmDialog: C,
1290
+ MobileTreeList: O
1298
1291
  }
1299
- }, Ft = { class: "dashboards-header" }, It = {
1292
+ }, It = { class: "dashboards-header" }, Lt = {
1300
1293
  key: 0,
1301
1294
  class: "font-sans sidebar-header"
1302
- }, Lt = ["data-testid"], Rt = {
1295
+ }, Rt = ["data-testid"], zt = {
1303
1296
  key: 0,
1304
1297
  class: "button-container"
1305
1298
  };
1306
- function zt(e, t, n, r, i, a) {
1307
- let o = K("dashboard-creator-inline"), s = K("dashboard-import-popup"), c = K("dashboard-list-item"), l = K("mobile-tree-list"), u = K("ConfirmDialog"), d = K("sidebar-list");
1308
- return U(), N(d, { title: "Dashboards" }, {
1309
- header: Z(() => [I("div", Ft, [r.isMobile ? P("", !0) : (U(), F("h3", It, "Dashboards")), I("button", {
1299
+ function Bt(e, t, n, r, i, a) {
1300
+ let o = G("dashboard-creator-inline"), s = G("dashboard-import-popup"), c = G("dashboard-list-item"), l = G("mobile-tree-list"), u = G("ConfirmDialog"), d = G("sidebar-list");
1301
+ return H(), M(d, { title: "Dashboards" }, {
1302
+ header: Z(() => [F("div", It, [r.isMobile ? N("", !0) : (H(), P("h3", Lt, "Dashboards")), F("button", {
1310
1303
  class: "sidebar-control-button sidebar-header-action sidebar-primary-create",
1311
1304
  onClick: t[0] ||= (e) => r.creatorVisible = !r.creatorVisible,
1312
1305
  "data-testid": n.testTag ? `dashboard-creator-add-${n.testTag}` : "dashboard-creator-add"
1313
- }, [t[5] ||= I("i", { class: "mdi mdi-plus" }, null, -1), L(" " + q(r.creatorVisible ? "Close" : "New"), 1)], 8, Lt)])]),
1306
+ }, [t[5] ||= F("i", { class: "mdi mdi-plus" }, null, -1), I(" " + K(r.creatorVisible ? "Close" : "New"), 1)], 8, Rt)])]),
1314
1307
  actions: Z(() => [
1315
- !r.isMobile || r.mobileTreeAtRoot ? (U(), F("div", Rt, [I("button", {
1308
+ !r.isMobile || r.mobileTreeAtRoot ? (H(), P("div", zt, [F("button", {
1316
1309
  class: "sidebar-control-button sidebar-header-action",
1317
1310
  onClick: t[1] ||= (e) => r.importPopupVisible = !0,
1318
1311
  "data-testid": "dashboard-import-button"
1319
- }, " Import ")])) : P("", !0),
1320
- R(o, {
1312
+ }, " Import ")])) : N("", !0),
1313
+ L(o, {
1321
1314
  visible: r.creatorVisible,
1322
1315
  onClose: t[2] ||= (e) => r.creatorVisible = !r.creatorVisible,
1323
1316
  testTag: n.testTag,
@@ -1327,12 +1320,12 @@ function zt(e, t, n, r, i, a) {
1327
1320
  "testTag",
1328
1321
  "onDashboardCreated"
1329
1322
  ]),
1330
- R(s, {
1323
+ L(s, {
1331
1324
  isOpen: r.importPopupVisible,
1332
1325
  onClose: t[3] ||= (e) => r.importPopupVisible = !1
1333
1326
  }, null, 8, ["isOpen"])
1334
1327
  ]),
1335
- default: Z(() => [R(l, {
1328
+ default: Z(() => [L(l, {
1336
1329
  "list-id": "dashboards",
1337
1330
  ref: "mobileTree",
1338
1331
  items: r.contentList,
@@ -1345,7 +1338,7 @@ function zt(e, t, n, r, i, a) {
1345
1338
  onSelect: a.selectMobileItem,
1346
1339
  onViewChange: t[4] ||= (e) => r.mobileTreeAtRoot = e
1347
1340
  }, {
1348
- item: Z(({ item: e }) => [(U(), N(c, {
1341
+ item: Z(({ item: e }) => [(H(), M(c, {
1349
1342
  key: e.key,
1350
1343
  item: e,
1351
1344
  "is-active": n.activeDashboardKey === e.id,
@@ -1369,7 +1362,7 @@ function zt(e, t, n, r, i, a) {
1369
1362
  "is-selectable",
1370
1363
  "onExpand",
1371
1364
  "onSelect"
1372
- ]), R(u, {
1365
+ ]), L(u, {
1373
1366
  show: r.showDeleteConfirmationState,
1374
1367
  title: "Confirm Deletion",
1375
1368
  message: "Are you sure you want to delete this dashboard? Contents cannot be recovered.",
@@ -1386,10 +1379,7 @@ function zt(e, t, n, r, i, a) {
1386
1379
  _: 1
1387
1380
  });
1388
1381
  }
1389
- var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]]), Vt = {
1390
- key: 0,
1391
- class: "mdi mdi-source-repository sidebar-icon"
1392
- }, Ht = {
1382
+ var Vt = /*#__PURE__*/ e(Ft, [["render", Bt], ["__scopeId", "data-v-04081e74"]]), Ht = {
1393
1383
  key: 1,
1394
1384
  class: "right-pad"
1395
1385
  }, Ut = {
@@ -1401,7 +1391,7 @@ var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]])
1401
1391
  }, Gt = {
1402
1392
  key: 2,
1403
1393
  class: "tag-container"
1404
- }, Kt = ["data-testid"], qt = /*#__PURE__*/ e(/* @__PURE__ */ z({
1394
+ }, Kt = ["data-testid"], qt = /*#__PURE__*/ e(/* @__PURE__ */ R({
1405
1395
  __name: "CommunityModelListItem",
1406
1396
  props: {
1407
1397
  item: {},
@@ -1434,14 +1424,14 @@ var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]])
1434
1424
  return;
1435
1425
  }
1436
1426
  n.item.type === "model" ? r("model-selected", n.item.model, n.item.key, n.item.modelRoot) : r("item-click", n.item.type, n.item.key, n.item.modelRoot);
1437
- }, s = () => {
1427
+ }, o = () => {
1438
1428
  ["model"].includes(n.item.type) || r("item-toggle", n.item.type, n.item.key, n.item.modelRoot);
1439
- }, l = () => "", u = (e) => e.id === o.id, d = (e) => i.getStoreStatus(e.id), f = (e) => {
1429
+ }, l = () => "", d = (e) => e.id === s.id, f = (e) => i.getStoreStatus(e.id), p = (e) => {
1440
1430
  let t = i.errors[e.id];
1441
1431
  if (t) return `Connection failed: ${t}`;
1442
- if (i.getStoreStatus(e.id) === "connected") return "Connected";
1432
+ if (i.getStoreStatus(e.id) === "connected") return `Connected: ${u(e)}`;
1443
1433
  };
1444
- return (t, n) => (U(), N(D, {
1434
+ return (t, n) => (H(), M(E, {
1445
1435
  "item-id": e.item.key,
1446
1436
  name: e.item.label,
1447
1437
  indent: e.item.indent,
@@ -1451,33 +1441,36 @@ var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]])
1451
1441
  icon: l(),
1452
1442
  itemType: "community",
1453
1443
  onClick: a,
1454
- onToggle: s
1444
+ onToggle: o
1455
1445
  }, {
1456
- icon: Z(() => [e.item.type === "root" ? (U(), F("i", Vt)) : e.item.type === "engine" ? (U(), F("span", Ht, [R(te, { "connection-type": e.item.label }, null, 8, ["connection-type"])])) : P("", !0)]),
1457
- "extra-content": Z(() => [e.item.type === "model" ? (U(), F("span", Ut, [(U(!0), F(j, null, G(e.item.model?.tags || [], (e) => (U(), N(ne, {
1446
+ icon: Z(() => [e.item.type === "root" ? (H(), P("i", {
1447
+ key: 0,
1448
+ class: V(["mdi sidebar-icon", e.item.store?.type === "generic" ? "mdi-server-network" : "mdi-source-repository"])
1449
+ }, null, 2)) : e.item.type === "engine" ? (H(), P("span", Ht, [L(re, { "connection-type": e.item.label }, null, 8, ["connection-type"])])) : N("", !0)]),
1450
+ "extra-content": Z(() => [e.item.type === "model" ? (H(), P("span", Ut, [(H(!0), P(A, null, W(e.item.model?.tags || [], (e) => (H(), M(ie, {
1458
1451
  key: e,
1459
1452
  label: e
1460
- }, null, 8, ["label"]))), 128))])) : e.item.type === "engine" ? (U(), F("span", Wt)) : e.item.type === "root" ? (U(), F("span", Gt, [e.item.store && !u(e.item.store) ? (U(), N(m, {
1453
+ }, null, 8, ["label"]))), 128))])) : e.item.type === "engine" ? (H(), P("span", Wt)) : e.item.type === "root" ? (H(), P("span", Gt, [e.item.store && !d(e.item.store) ? (H(), M(h, {
1461
1454
  key: 0,
1462
1455
  content: "Remove Store",
1463
1456
  position: "left"
1464
1457
  }, {
1465
- default: Z(() => [I("span", {
1458
+ default: Z(() => [F("span", {
1466
1459
  class: "remove-btn hover-icon sidebar-icon-button danger",
1467
1460
  onClick: n[0] ||= $((t) => r("delete-store", e.item.store), ["stop"]),
1468
1461
  "data-testid": `delete-store-${e.item.store.id}`
1469
- }, [...n[1] ||= [I("i", { class: "mdi mdi-trash-can-outline" }, null, -1)]], 8, Kt)]),
1462
+ }, [...n[1] ||= [F("i", { class: "mdi mdi-trash-can-outline" }, null, -1)]], 8, Kt)]),
1470
1463
  _: 1
1471
- })) : P("", !0), e.item.store ? (U(), N(T, {
1464
+ })) : N("", !0), e.item.store ? (H(), M(T, {
1472
1465
  key: 1,
1473
- status: d(e.item.store),
1474
- message: f(e.item.store),
1466
+ status: f(e.item.store),
1467
+ message: p(e.item.store),
1475
1468
  "test-name": e.item.store.id
1476
1469
  }, null, 8, [
1477
1470
  "status",
1478
1471
  "message",
1479
1472
  "test-name"
1480
- ])) : P("", !0)])) : P("", !0)]),
1473
+ ])) : N("", !0)])) : N("", !0)]),
1481
1474
  _: 1
1482
1475
  }, 8, [
1483
1476
  "item-id",
@@ -1489,9 +1482,9 @@ var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]])
1489
1482
  "icon"
1490
1483
  ]));
1491
1484
  }
1492
- }), [["__scopeId", "data-v-4383ee4e"]]), Jt = {
1485
+ }), [["__scopeId", "data-v-8680201b"]]), Jt = {
1493
1486
  name: "AddStoreModal",
1494
- components: { ModalDialog: p },
1487
+ components: { ModalDialog: m },
1495
1488
  props: {
1496
1489
  show: {
1497
1490
  type: Boolean,
@@ -1504,51 +1497,38 @@ var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]])
1504
1497
  },
1505
1498
  emits: ["close", "add"],
1506
1499
  setup(e, { emit: t }) {
1507
- let n = W("generic"), r = W(""), i = W(""), a = W(""), o = W(""), c = W("main"), d = W(null), f = W(!1), p = M(() => {
1500
+ let n = U("generic"), r = U(""), i = U(""), a = U(""), s = U(""), c = U("main"), u = U(null), f = U(!1), p = j(() => {
1508
1501
  let e = typeof window < "u" ? `${window.location.origin}${window.location.pathname}` : "";
1509
1502
  return e ? `trilogy serve . --studio-url ${e}` : "trilogy serve .";
1510
1503
  });
1511
- return pe(() => e.show, (e) => {
1512
- e && (n.value = "generic", r.value = "", i.value = "", a.value = "", o.value = "", c.value = "main", d.value = null, f.value = !1);
1504
+ return me(() => e.show, (e) => {
1505
+ e && (n.value = "generic", r.value = "", i.value = "", a.value = "", s.value = "", c.value = "main", u.value = null, f.value = !1);
1513
1506
  }), {
1514
1507
  storeType: n,
1515
1508
  storeName: r,
1516
1509
  baseUrl: i,
1517
1510
  owner: a,
1518
- repo: o,
1511
+ repo: s,
1519
1512
  branch: c,
1520
- error: d,
1513
+ error: u,
1521
1514
  handleSubmit: async () => {
1522
- d.value = null;
1515
+ u.value = null;
1523
1516
  try {
1524
- if (n.value === "generic") {
1517
+ if (n.value === "generic" || n.value === "static") {
1525
1518
  if (!i.value) {
1526
- d.value = "Please fill in all required fields";
1519
+ u.value = "Please fill in all required fields";
1527
1520
  return;
1528
1521
  }
1529
- let e = u(i.value);
1530
- t("add", {
1531
- type: "generic",
1532
- id: l(e),
1533
- name: r.value || s(e),
1534
- baseUrl: e
1535
- });
1522
+ t("add", (n.value === "static" ? l : d)(i.value, r.value || void 0));
1536
1523
  } else {
1537
- if (!r.value || !a.value || !o.value || !c.value) {
1538
- d.value = "Please fill in all required fields";
1524
+ if (!a.value || !s.value || !c.value) {
1525
+ u.value = "Please fill in all required fields";
1539
1526
  return;
1540
1527
  }
1541
- t("add", {
1542
- type: "github",
1543
- id: `${a.value}-${o.value}-${c.value}`,
1544
- name: r.value,
1545
- owner: a.value,
1546
- repo: o.value,
1547
- branch: c.value
1548
- });
1528
+ t("add", o(a.value.trim(), s.value.trim(), c.value.trim(), r.value || void 0));
1549
1529
  }
1550
1530
  } catch (e) {
1551
- d.value = e instanceof Error ? e.message : "Failed to add store";
1531
+ u.value = e instanceof Error ? e.message : "Failed to add store";
1552
1532
  }
1553
1533
  },
1554
1534
  serveCommand: p,
@@ -1564,111 +1544,134 @@ var Bt = /*#__PURE__*/ e(Pt, [["render", zt], ["__scopeId", "data-v-04081e74"]])
1564
1544
  copiedCommand: f
1565
1545
  };
1566
1546
  }
1567
- }, Yt = { class: "form-group" }, Xt = { class: "form-group" }, Zt = { class: "form-group" }, Qt = {
1547
+ }, Yt = { class: "form-group" }, Xt = { class: "form-group" }, Zt = { class: "form-group" }, Qt = { class: "form-group" }, $t = { class: "form-group" }, en = {
1568
1548
  class: "cli-tip",
1569
1549
  "data-testid": "add-store-cli-tip"
1570
- }, $t = { class: "cli-tip-command" }, en = { "data-testid": "add-store-cli-command" }, tn = ["title"], nn = { class: "form-group" }, rn = { class: "form-group" }, an = { class: "form-group" }, on = { class: "form-group" }, sn = {
1571
- key: 2,
1550
+ }, tn = { class: "cli-tip-command" }, nn = { "data-testid": "add-store-cli-command" }, rn = ["title"], an = { class: "form-group" }, on = { class: "form-group" }, sn = { class: "form-group" }, cn = { class: "form-group" }, ln = {
1551
+ key: 3,
1572
1552
  class: "form-error",
1573
1553
  "data-testid": "add-store-error"
1574
- }, cn = { class: "dialog-actions" }, ln = ["disabled"];
1575
- function un(e, t, n, r, i, a) {
1576
- let o = K("ModalDialog");
1577
- return U(), N(o, {
1554
+ }, un = { class: "dialog-actions" }, dn = ["disabled"];
1555
+ function fn(e, t, n, r, i, a) {
1556
+ let o = G("ModalDialog");
1557
+ return H(), M(o, {
1578
1558
  show: n.show,
1579
1559
  title: "Add Model Store",
1580
1560
  "test-id": "add-store-modal",
1581
- onClose: t[10] ||= (t) => e.$emit("close")
1561
+ onClose: t[12] ||= (t) => e.$emit("close")
1582
1562
  }, {
1583
- default: Z(() => [I("form", { onSubmit: t[9] ||= $((...e) => r.handleSubmit && r.handleSubmit(...e), ["prevent"]) }, [
1584
- I("div", Yt, [t[12] ||= I("label", null, [L("Store Type: "), I("span", { class: "required" }, "*")], -1), Q(I("select", {
1563
+ default: Z(() => [F("form", { onSubmit: t[11] ||= $((...e) => r.handleSubmit && r.handleSubmit(...e), ["prevent"]) }, [
1564
+ F("div", Yt, [t[14] ||= F("label", null, [I("Store Type: "), F("span", { class: "required" }, "*")], -1), Q(F("select", {
1585
1565
  "onUpdate:modelValue": t[0] ||= (e) => r.storeType = e,
1586
1566
  "data-testid": "store-type-select"
1587
- }, [...t[11] ||= [I("option", { value: "generic" }, "Generic", -1), I("option", { value: "github" }, "GitHub Repository", -1)]], 512), [[fe, r.storeType]])]),
1588
- r.storeType === "generic" ? (U(), F(j, { key: 0 }, [
1589
- I("div", Xt, [t[13] ||= I("label", null, "Store Name:", -1), Q(I("input", {
1590
- "onUpdate:modelValue": t[1] ||= (e) => r.storeName = e,
1567
+ }, [...t[13] ||= [
1568
+ F("option", { value: "generic" }, "Trilogy serve (API)", -1),
1569
+ F("option", { value: "static" }, "Static files (URL)", -1),
1570
+ F("option", { value: "github" }, "GitHub repository", -1)
1571
+ ]], 512), [[J, r.storeType]])]),
1572
+ r.storeType === "static" ? (H(), P(A, { key: 0 }, [F("div", Xt, [t[15] ||= F("label", null, "Store Name:", -1), Q(F("input", {
1573
+ "onUpdate:modelValue": t[1] ||= (e) => r.storeName = e,
1574
+ type: "text",
1575
+ placeholder: "Optional, defaults to the store URL",
1576
+ "data-testid": "store-name-input"
1577
+ }, null, 512), [[Y, r.storeName]])]), F("div", Zt, [
1578
+ t[16] ||= F("label", null, [I("Base URL: "), F("span", { class: "required" }, "*")], -1),
1579
+ Q(F("input", {
1580
+ "onUpdate:modelValue": t[2] ||= (e) => r.baseUrl = e,
1581
+ type: "url",
1582
+ placeholder: "e.g., https://storage.googleapis.com/my-bucket/models",
1583
+ "data-testid": "store-url-input",
1584
+ required: ""
1585
+ }, null, 512), [[Y, r.baseUrl]]),
1586
+ t[17] ||= F("small", null, "Any origin serving index.json plus model files: a GCS or S3 bucket, a CDN, GitHub Pages. Models are browsed and imported as local copies.", -1)
1587
+ ])], 64)) : N("", !0),
1588
+ r.storeType === "generic" ? (H(), P(A, { key: 1 }, [
1589
+ F("div", Qt, [t[18] ||= F("label", null, "Store Name:", -1), Q(F("input", {
1590
+ "onUpdate:modelValue": t[3] ||= (e) => r.storeName = e,
1591
1591
  type: "text",
1592
1592
  placeholder: "Optional, defaults to the store URL",
1593
1593
  "data-testid": "store-name-input"
1594
1594
  }, null, 512), [[Y, r.storeName]])]),
1595
- I("div", Zt, [
1596
- t[14] ||= I("label", null, [L("Base URL: "), I("span", { class: "required" }, "*")], -1),
1597
- Q(I("input", {
1598
- "onUpdate:modelValue": t[2] ||= (e) => r.baseUrl = e,
1595
+ F("div", $t, [
1596
+ t[19] ||= F("label", null, [I("Base URL: "), F("span", { class: "required" }, "*")], -1),
1597
+ Q(F("input", {
1598
+ "onUpdate:modelValue": t[4] ||= (e) => r.baseUrl = e,
1599
1599
  type: "url",
1600
1600
  placeholder: "e.g., http://localhost:8100",
1601
1601
  "data-testid": "store-url-input",
1602
1602
  required: ""
1603
1603
  }, null, 512), [[Y, r.baseUrl]]),
1604
- t[15] ||= I("small", null, "URL should serve an index.json file at /index.json", -1)
1604
+ t[20] ||= F("small", null, "URL should serve an index.json file at /index.json", -1)
1605
1605
  ]),
1606
- I("div", Qt, [
1607
- t[16] ||= I("div", { class: "cli-tip-title" }, [I("i", { class: "mdi mdi-lightbulb-on" }), L(" Serving a local model? ")], -1),
1608
- t[17] ||= I("p", { class: "cli-tip-body" }, " Run this in your model directory. The Trilogy CLI serves it over HTTP and prints a link that opens the model back in this studio. ", -1),
1609
- I("div", $t, [I("code", en, q(r.serveCommand), 1), I("button", {
1606
+ F("div", en, [
1607
+ t[21] ||= F("div", { class: "cli-tip-title" }, [F("i", { class: "mdi mdi-lightbulb-on" }), I(" Serving a local model? ")], -1),
1608
+ t[22] ||= F("p", { class: "cli-tip-body" }, " Run this in your model directory. The Trilogy CLI serves it over HTTP and prints a link that opens the model back in this studio. ", -1),
1609
+ F("div", tn, [F("code", nn, K(r.serveCommand), 1), F("button", {
1610
1610
  type: "button",
1611
1611
  class: "cli-tip-copy",
1612
1612
  title: r.copiedCommand ? "Copied" : "Copy command",
1613
1613
  "data-testid": "add-store-cli-copy",
1614
- onClick: t[3] ||= (...e) => r.copyServeCommand && r.copyServeCommand(...e)
1615
- }, [I("i", { class: V(["mdi", r.copiedCommand ? "mdi-check" : "mdi-content-copy"]) }, null, 2)], 8, tn)]),
1616
- t[18] ||= I("small", null, "Then paste the URL it prints above, or just follow the link.", -1)
1614
+ onClick: t[5] ||= (...e) => r.copyServeCommand && r.copyServeCommand(...e)
1615
+ }, [F("i", { class: V(["mdi", r.copiedCommand ? "mdi-check" : "mdi-content-copy"]) }, null, 2)], 8, rn)]),
1616
+ t[23] ||= F("small", null, "Then paste the URL it prints above, or just follow the link.", -1)
1617
1617
  ])
1618
- ], 64)) : P("", !0),
1619
- r.storeType === "github" ? (U(), F(j, { key: 1 }, [
1620
- I("div", nn, [t[19] ||= I("label", null, [L("Display Name: "), I("span", { class: "required" }, "*")], -1), Q(I("input", {
1621
- "onUpdate:modelValue": t[4] ||= (e) => r.storeName = e,
1618
+ ], 64)) : N("", !0),
1619
+ r.storeType === "github" ? (H(), P(A, { key: 2 }, [
1620
+ F("div", an, [t[24] ||= F("label", null, "Display Name:", -1), Q(F("input", {
1621
+ "onUpdate:modelValue": t[6] ||= (e) => r.storeName = e,
1622
1622
  type: "text",
1623
- placeholder: "e.g., My Custom Models",
1624
- "data-testid": "store-name-input",
1625
- required: ""
1623
+ placeholder: "Optional, defaults to owner/repo",
1624
+ "data-testid": "store-name-input"
1626
1625
  }, null, 512), [[Y, r.storeName]])]),
1627
- I("div", rn, [t[20] ||= I("label", null, [L("Repository Owner: "), I("span", { class: "required" }, "*")], -1), Q(I("input", {
1628
- "onUpdate:modelValue": t[5] ||= (e) => r.owner = e,
1626
+ F("div", on, [t[25] ||= F("label", null, [I("Repository Owner: "), F("span", { class: "required" }, "*")], -1), Q(F("input", {
1627
+ "onUpdate:modelValue": t[7] ||= (e) => r.owner = e,
1629
1628
  type: "text",
1630
1629
  placeholder: "e.g., trilogy-data",
1631
1630
  "data-testid": "github-owner-input",
1632
1631
  required: ""
1633
1632
  }, null, 512), [[Y, r.owner]])]),
1634
- I("div", an, [t[21] ||= I("label", null, [L("Repository Name: "), I("span", { class: "required" }, "*")], -1), Q(I("input", {
1635
- "onUpdate:modelValue": t[6] ||= (e) => r.repo = e,
1633
+ F("div", sn, [t[26] ||= F("label", null, [I("Repository Name: "), F("span", { class: "required" }, "*")], -1), Q(F("input", {
1634
+ "onUpdate:modelValue": t[8] ||= (e) => r.repo = e,
1636
1635
  type: "text",
1637
1636
  placeholder: "e.g., trilogy-public-models",
1638
1637
  "data-testid": "github-repo-input",
1639
1638
  required: ""
1640
1639
  }, null, 512), [[Y, r.repo]])]),
1641
- I("div", on, [t[22] ||= I("label", null, [L("Branch: "), I("span", { class: "required" }, "*")], -1), Q(I("input", {
1642
- "onUpdate:modelValue": t[7] ||= (e) => r.branch = e,
1643
- type: "text",
1644
- placeholder: "e.g., main",
1645
- "data-testid": "github-branch-input",
1646
- required: ""
1647
- }, null, 512), [[Y, r.branch]])])
1648
- ], 64)) : P("", !0),
1649
- r.error ? (U(), F("div", sn, q(r.error), 1)) : P("", !0),
1650
- I("div", cn, [I("button", {
1640
+ F("div", cn, [
1641
+ t[27] ||= F("label", null, [I("Branch: "), F("span", { class: "required" }, "*")], -1),
1642
+ Q(F("input", {
1643
+ "onUpdate:modelValue": t[9] ||= (e) => r.branch = e,
1644
+ type: "text",
1645
+ placeholder: "e.g., main",
1646
+ "data-testid": "github-branch-input",
1647
+ required: ""
1648
+ }, null, 512), [[Y, r.branch]]),
1649
+ t[28] ||= F("small", null, "Reads the repository's studio/index.json. Public repositories only.", -1)
1650
+ ])
1651
+ ], 64)) : N("", !0),
1652
+ r.error ? (H(), P("div", ln, K(r.error), 1)) : N("", !0),
1653
+ F("div", un, [F("button", {
1651
1654
  type: "button",
1652
1655
  class: "cancel-btn",
1653
1656
  "data-testid": "add-store-cancel",
1654
- onClick: t[8] ||= (t) => e.$emit("close")
1655
- }, " Cancel "), I("button", {
1657
+ onClick: t[10] ||= (t) => e.$emit("close")
1658
+ }, " Cancel "), F("button", {
1656
1659
  type: "submit",
1657
1660
  class: "confirm-btn",
1658
1661
  "data-testid": "add-store-submit",
1659
1662
  disabled: n.loading
1660
- }, q(n.loading ? "Adding..." : "Add Store"), 9, ln)])
1663
+ }, K(n.loading ? "Adding..." : "Add Store"), 9, dn)])
1661
1664
  ], 32)]),
1662
1665
  _: 1
1663
1666
  }, 8, ["show"]);
1664
1667
  }
1665
- var dn = /*#__PURE__*/ e(Jt, [["render", un], ["__scopeId", "data-v-10959a43"]]), fn = (e, t = [], n = {}) => {
1668
+ var pn = /*#__PURE__*/ e(Jt, [["render", fn], ["__scopeId", "data-v-4dd2e9ea"]]), mn = (e, t = [], n = {}) => {
1666
1669
  let r = [];
1667
1670
  return t.forEach((t) => {
1668
- let i = t.id, a = t.name, o = {
1669
- owner: t.type === "github" ? t.owner : "",
1670
- repo: t.type === "github" ? t.repo : "",
1671
- branch: t.type === "github" ? t.branch : "main",
1671
+ let i = t.id, a = t.name, o = t.type === "static" ? t.origin : void 0, s = {
1672
+ owner: o?.owner ?? "",
1673
+ repo: o?.repo ?? "",
1674
+ branch: o?.branch ?? "main",
1672
1675
  displayName: a
1673
1676
  };
1674
1677
  if (r.push({
@@ -1676,61 +1679,61 @@ var dn = /*#__PURE__*/ e(Jt, [["render", un], ["__scopeId", "data-v-10959a43"]])
1676
1679
  label: a,
1677
1680
  key: i,
1678
1681
  indent: 0,
1679
- modelRoot: o,
1682
+ modelRoot: s,
1680
1683
  store: t
1681
1684
  }), !e(i)) {
1682
- let a = n[i] || [], s = {};
1685
+ let a = n[i] || [], o = {};
1683
1686
  a.forEach((e) => {
1684
- s[e.engine] || (s[e.engine] = []), s[e.engine].push(e);
1685
- }), Object.keys(s).sort().forEach((n) => {
1687
+ o[e.engine] || (o[e.engine] = []), o[e.engine].push(e);
1688
+ }), Object.keys(o).sort().forEach((n) => {
1686
1689
  let a = `${i}+${n}`;
1687
1690
  r.push({
1688
1691
  type: "engine",
1689
1692
  label: n,
1690
1693
  key: a,
1691
1694
  indent: 1,
1692
- modelRoot: o,
1695
+ modelRoot: s,
1693
1696
  store: t
1694
- }), e(a) || s[n].forEach((e) => {
1697
+ }), e(a) || o[n].forEach((e) => {
1695
1698
  r.push({
1696
1699
  type: "model",
1697
1700
  label: e.name,
1698
1701
  key: `${a}+${e.name}`,
1699
1702
  indent: 2,
1700
1703
  model: e,
1701
- modelRoot: o,
1704
+ modelRoot: s,
1702
1705
  store: t
1703
1706
  });
1704
1707
  });
1705
1708
  });
1706
1709
  }
1707
1710
  }), r;
1708
- }, pn = z({
1711
+ }, hn = R({
1709
1712
  name: "CommunityModelList",
1710
1713
  setup() {
1711
- let e = c(), t = n(), r = B("editorStore"), i = B("connectionStore"), a = B("modelStore"), o = g(), s = W(null), l = t.activeCommunityModelKey.value || "", u = M(() => {
1714
+ let e = c(), t = n(), r = z("editorStore"), i = z("connectionStore"), a = z("modelStore"), o = _(), s = U(null), l = t.activeCommunityModelKey.value || "", u = j(() => {
1712
1715
  if (l) {
1713
1716
  let [e, t] = l.split("+");
1714
1717
  return new Set(t ? [e, `${e}+${t}`] : [e]);
1715
1718
  }
1716
1719
  let t = e.stores;
1717
1720
  return t.length === 1 ? /* @__PURE__ */ new Set([t[0].id]) : /* @__PURE__ */ new Set();
1718
- }), { overrides: d, isCollapsed: f, toggle: p, open: m } = A((e) => u.value.has(e)), h = async (t) => {
1721
+ }), { overrides: d, isCollapsed: f, toggle: p, open: m } = k((e) => u.value.has(e)), h = async (t) => {
1719
1722
  try {
1720
1723
  await e.addStore(t), e.closeAddStoreModal();
1721
1724
  } catch (e) {
1722
1725
  console.error("Failed to add store:", e);
1723
1726
  }
1724
- }, { isOpen: _, openConfirmation: v, closeConfirmation: y, confirm: b } = ae((t) => {
1725
- t.type === "generic" && r && i && a && C(t.id, r, i, a), e.removeStore(t.id);
1727
+ }, { isOpen: g, openConfirmation: v, closeConfirmation: y, confirm: b } = se((t) => {
1728
+ t.type === "generic" && r && i && a && ee(t.id, r, i, a), e.removeStore(t.id);
1726
1729
  }), x = (e, n, r) => {
1727
1730
  t.openTab("community-models", e.name, n), console.log("Selected model:", e.name, "from root:", r);
1728
1731
  }, S = (e, n, r) => {
1729
1732
  m(n), t.openTab("community-models", null, n);
1730
- }, w = (e, t, n) => {
1733
+ }, C = (e, t, n) => {
1731
1734
  p(t);
1732
- }, T = M(() => fn(f, e.stores, e.filesByStore));
1733
- return H(async () => {
1735
+ }, w = j(() => mn(f, e.stores, e.filesByStore));
1736
+ return de(async () => {
1734
1737
  await e.initialize();
1735
1738
  }), {
1736
1739
  communityStore: e,
@@ -1739,13 +1742,13 @@ var dn = /*#__PURE__*/ e(Jt, [["render", un], ["__scopeId", "data-v-10959a43"]])
1739
1742
  showDeleteStoreConfirmation: v,
1740
1743
  cancelDeleteStore: y,
1741
1744
  confirmDeleteStore: b,
1742
- showDeleteConfirmationState: _,
1745
+ showDeleteConfirmationState: g,
1743
1746
  handleModelSelected: x,
1744
1747
  handleItemClick: S,
1745
- handleItemToggle: w,
1748
+ handleItemToggle: C,
1746
1749
  collapsed: d,
1747
1750
  isCollapsed: f,
1748
- displayTree: T,
1751
+ displayTree: w,
1749
1752
  isMobile: o,
1750
1753
  mobileTree: s,
1751
1754
  isCommunityBranch: (e) => ["root", "engine"].includes(e.type),
@@ -1759,39 +1762,39 @@ var dn = /*#__PURE__*/ e(Jt, [["render", un], ["__scopeId", "data-v-10959a43"]])
1759
1762
  };
1760
1763
  },
1761
1764
  components: {
1762
- SidebarList: O,
1765
+ SidebarList: D,
1763
1766
  CommunityModelListItem: qt,
1764
- AddStoreModal: dn,
1765
- ConfirmDialog: S,
1766
- MobileTreeList: k
1767
+ AddStoreModal: pn,
1768
+ ConfirmDialog: C,
1769
+ MobileTreeList: O
1767
1770
  }
1768
- }), mn = { class: "community-header" }, hn = { class: "button-container" }, gn = ["disabled"], _n = {
1771
+ }), gn = { class: "community-header" }, _n = { class: "button-container" }, vn = ["disabled"], yn = {
1769
1772
  key: 0,
1770
1773
  class: "error-container"
1771
- }, vn = { class: "error-text" }, yn = ["onClick"];
1772
- function bn(e, t, n, r, i, a) {
1773
- let o = K("CommunityModelListItem"), s = K("mobile-tree-list"), c = K("AddStoreModal"), l = K("ConfirmDialog"), u = K("sidebar-list");
1774
- return U(), N(u, { title: "External Models" }, {
1775
- header: Z(() => [I("div", mn, [t[4] ||= I("h3", { class: "font-sans sidebar-header" }, "External Models", -1), I("button", {
1774
+ }, bn = { class: "error-text" }, xn = ["onClick"];
1775
+ function Sn(e, t, n, r, i, a) {
1776
+ let o = G("CommunityModelListItem"), s = G("mobile-tree-list"), c = G("AddStoreModal"), l = G("ConfirmDialog"), u = G("sidebar-list");
1777
+ return H(), M(u, { title: "External Models" }, {
1778
+ header: Z(() => [F("div", gn, [t[4] ||= F("h3", { class: "font-sans sidebar-header" }, "External Models", -1), F("button", {
1776
1779
  class: "sidebar-control-button sidebar-header-action sidebar-primary-create",
1777
1780
  onClick: t[0] ||= (t) => e.communityStore.openAddStoreModal(),
1778
1781
  "data-testid": "community-store-add"
1779
- }, [...t[3] ||= [I("i", { class: "mdi mdi-plus" }, null, -1), L(" New ", -1)]])])]),
1780
- actions: Z(() => [I("div", hn, [I("button", {
1782
+ }, [...t[3] ||= [F("i", { class: "mdi mdi-plus" }, null, -1), I(" New ", -1)]])])]),
1783
+ actions: Z(() => [F("div", _n, [F("button", {
1781
1784
  class: "sidebar-control-button sidebar-header-action",
1782
1785
  onClick: t[1] ||= (t) => e.communityStore.refreshData(),
1783
1786
  disabled: e.communityStore.loading,
1784
1787
  "data-testid": "community-store-refresh"
1785
- }, [t[5] ||= I("i", { class: "mdi mdi-refresh" }, null, -1), L(" " + q(e.communityStore.loading ? "Refreshing" : "Refresh"), 1)], 8, gn)])]),
1788
+ }, [t[5] ||= F("i", { class: "mdi mdi-refresh" }, null, -1), I(" " + K(e.communityStore.loading ? "Refreshing" : "Refresh"), 1)], 8, vn)])]),
1786
1789
  default: Z(() => [
1787
- e.communityStore.hasErrors ? (U(), F("div", _n, [(U(!0), F(j, null, G(e.communityStore.errorList, (t) => (U(), F("div", {
1790
+ e.communityStore.hasErrors ? (H(), P("div", yn, [(H(!0), P(A, null, W(e.communityStore.errorList, (t) => (H(), P("div", {
1788
1791
  key: t.root,
1789
1792
  class: "error-item"
1790
- }, [I("span", vn, q(t.name) + ": " + q(t.error), 1), I("button", {
1793
+ }, [F("span", bn, K(t.name) + ": " + K(t.error), 1), F("button", {
1791
1794
  onClick: (n) => e.communityStore.clearStoreError(t.root),
1792
1795
  class: "clear-error"
1793
- }, "×", 8, yn)]))), 128))])) : P("", !0),
1794
- R(s, {
1796
+ }, "×", 8, xn)]))), 128))])) : N("", !0),
1797
+ L(s, {
1795
1798
  "list-id": "community",
1796
1799
  ref: "mobileTree",
1797
1800
  items: e.displayTree,
@@ -1803,7 +1806,7 @@ function bn(e, t, n, r, i, a) {
1803
1806
  onExpand: e.expandMobileBranch,
1804
1807
  onSelect: e.selectMobileItem
1805
1808
  }, {
1806
- item: Z(({ item: t }) => [(U(), N(o, {
1809
+ item: Z(({ item: t }) => [(H(), M(o, {
1807
1810
  key: t.key,
1808
1811
  item: t,
1809
1812
  "mobile-tree-mode": e.isMobile,
@@ -1834,7 +1837,7 @@ function bn(e, t, n, r, i, a) {
1834
1837
  "onExpand",
1835
1838
  "onSelect"
1836
1839
  ]),
1837
- R(c, {
1840
+ L(c, {
1838
1841
  show: e.communityStore.showAddStoreModal,
1839
1842
  loading: e.communityStore.addingStore,
1840
1843
  onClose: t[2] ||= (t) => e.communityStore.closeAddStoreModal(),
@@ -1844,7 +1847,7 @@ function bn(e, t, n, r, i, a) {
1844
1847
  "loading",
1845
1848
  "onAdd"
1846
1849
  ]),
1847
- R(l, {
1850
+ L(l, {
1848
1851
  show: e.showDeleteConfirmationState,
1849
1852
  title: "Confirm Store Removal",
1850
1853
  message: "Are you sure you want to remove this store? This will not delete any imported models.",
@@ -1862,33 +1865,33 @@ function bn(e, t, n, r, i, a) {
1862
1865
  _: 1
1863
1866
  });
1864
1867
  }
1865
- var xn = /*#__PURE__*/ e(pn, [["render", bn], ["__scopeId", "data-v-46a284c6"]]), Sn = {
1866
- editors: () => Promise.all([import("./Editor-DhsP18KE.js").then((e) => e.n), import("./ResultComponent-_-1qZCfv.js").then((e) => e.n)]),
1868
+ var Cn = /*#__PURE__*/ e(hn, [["render", Sn], ["__scopeId", "data-v-46a284c6"]]), wn = {
1869
+ editors: () => Promise.all([import("./Editor-DQsYpkwl.js").then((e) => e.n), import("./ResultComponent-CAn_r3BL.js").then((e) => e.n)]),
1867
1870
  connections: () => import("./ConnectionView-COnTTuA4.js").then((e) => e.n),
1868
- llms: () => import("./LLMView-VkJpP-49.js"),
1869
- dashboard: () => import("./Dashboard-D1ZCTw5r.js").then((e) => e.n),
1870
- models: () => import("./ModelView-rAurf9n8.js").then((e) => e.n),
1871
- "community-models": () => import("./CommunityModels-D7zWnHgG.js").then((e) => e.n),
1872
- jobs: () => import("./JobsView-C9PYS6pZ.js").then((e) => e.n),
1873
- tutorial: () => import("./TutorialPage-CZGBRJdq.js")
1874
- }, Cn = /* @__PURE__ */ new Set();
1875
- function wn(e) {
1876
- if (Cn.has(e)) return;
1877
- let t = Sn[e];
1878
- t && (Cn.add(e), t().catch(() => {
1879
- Cn.delete(e);
1871
+ llms: () => import("./LLMView-C1MUf0c2.js"),
1872
+ dashboard: () => import("./Dashboard-BH9ZwMVJ.js").then((e) => e.n),
1873
+ models: () => import("./ModelView-DUDA_PtZ.js").then((e) => e.n),
1874
+ "community-models": () => import("./CommunityModels-Cmro0hV3.js").then((e) => e.n),
1875
+ jobs: () => import("./JobsView-B97HBoIE.js").then((e) => e.n),
1876
+ tutorial: () => import("./TutorialPage-NRcee6Dx.js")
1877
+ }, Tn = /* @__PURE__ */ new Set();
1878
+ function En(e) {
1879
+ if (Tn.has(e)) return;
1880
+ let t = wn[e];
1881
+ t && (Tn.add(e), t().catch(() => {
1882
+ Tn.delete(e);
1880
1883
  }));
1881
1884
  }
1882
- function Tn(e = 3e3) {
1885
+ function Dn(e = 3e3) {
1883
1886
  if (typeof window > "u") return;
1884
- let t = () => Object.keys(Sn).forEach(wn);
1887
+ let t = () => Object.keys(wn).forEach(En);
1885
1888
  window.setTimeout(() => {
1886
1889
  "requestIdleCallback" in window ? window.requestIdleCallback(() => t(), { timeout: 1e4 }) : t();
1887
1890
  }, e);
1888
1891
  }
1889
1892
  //#endregion
1890
1893
  //#region components/sidebar/Sidebar.vue?vue&type=script&lang.ts
1891
- var En = z({
1894
+ var On = R({
1892
1895
  name: "Sidebar",
1893
1896
  props: {
1894
1897
  active: {
@@ -1929,9 +1932,9 @@ var En = z({
1929
1932
  }
1930
1933
  },
1931
1934
  setup() {
1932
- let e = W(!1), t = W(null), n = g(), r = i(), a = y(), o = B("chatStore", null);
1935
+ let e = U(!1), t = U(null), n = _(), r = i(), a = b(), o = z("chatStore", null);
1933
1936
  return {
1934
- llmConnectionStore: B("llmConnectionStore", null),
1937
+ llmConnectionStore: z("llmConnectionStore", null),
1935
1938
  isSaving: e,
1936
1939
  previousUnSaved: t,
1937
1940
  isMobile: n,
@@ -1993,10 +1996,10 @@ var En = z({
1993
1996
  icon: "mdi mdi-creation-outline",
1994
1997
  screen: "llms"
1995
1998
  }
1996
- ], n = B("saveAll"), r = B("unSaved") || 0;
1999
+ ], n = z("saveAll"), r = z("unSaved") || 0;
1997
2000
  if (!n) throw Error("saveAll is not provided");
1998
2001
  return {
1999
- trilogyIcon: _,
2002
+ trilogyIcon: v,
2000
2003
  sidebarItems: t,
2001
2004
  sidebarFeatureItems: e,
2002
2005
  unSaved: r,
@@ -2008,15 +2011,15 @@ var En = z({
2008
2011
  };
2009
2012
  },
2010
2013
  components: {
2011
- EditorList: E,
2012
- ConnectionList: ie,
2013
- Tooltip: m,
2014
- TutorialSidebar: Se,
2015
- ModelSidebar: je,
2016
- JobsList: rt,
2017
- LLMConnectionList: re,
2018
- DashboardList: Bt,
2019
- CommunityModelList: xn
2014
+ EditorList: te,
2015
+ ConnectionList: oe,
2016
+ Tooltip: h,
2017
+ TutorialSidebar: Ce,
2018
+ ModelSidebar: Me,
2019
+ JobsList: it,
2020
+ LLMConnectionList: ae,
2021
+ DashboardList: Vt,
2022
+ CommunityModelList: Cn
2020
2023
  },
2021
2024
  watch: {
2022
2025
  contentCollapsed(e) {
@@ -2051,7 +2054,7 @@ var En = z({
2051
2054
  }
2052
2055
  },
2053
2056
  methods: {
2054
- preloadScreen: wn,
2057
+ preloadScreen: En,
2055
2058
  toggleGlobalChat() {
2056
2059
  this.globalChatPanel.togglePanel();
2057
2060
  },
@@ -2135,63 +2138,63 @@ var En = z({
2135
2138
  return t.set("sidebarScreen", e), `#${t.toString()}`;
2136
2139
  }
2137
2140
  }
2138
- }), Dn = {
2141
+ }), kn = {
2139
2142
  key: 0,
2140
2143
  class: "mobile-menu-root",
2141
2144
  "data-testid": "mobile-menu-root"
2142
- }, On = ["aria-label"], kn = ["src"], An = { class: "mobile-menu-save-state" }, jn = {
2145
+ }, An = ["aria-label"], jn = ["src"], Mn = { class: "mobile-menu-save-state" }, Nn = {
2143
2146
  class: "mobile-menu-destinations",
2144
2147
  "aria-label": "Main navigation"
2145
- }, Mn = [
2148
+ }, Pn = [
2146
2149
  "aria-current",
2147
2150
  "data-testid",
2148
2151
  "onClick",
2149
2152
  "onMouseenter"
2150
- ], Nn = { class: "mobile-menu-bottom" }, Pn = {
2153
+ ], Fn = { class: "mobile-menu-bottom" }, In = {
2151
2154
  key: 1,
2152
2155
  class: "sidebar-icons",
2153
2156
  "data-testid": "sidebar-icons"
2154
- }, Fn = { class: "trilogy-icon" }, In = { class: "trilogy-icon-wrapper" }, Ln = ["src"], Rn = ["title"], zn = ["title"], Bn = [
2157
+ }, Ln = { class: "trilogy-icon" }, Rn = { class: "trilogy-icon-wrapper" }, zn = ["src"], Bn = ["title"], Vn = ["title"], Hn = [
2155
2158
  "onClick",
2156
2159
  "onMouseenter",
2157
2160
  "data-testid"
2158
- ], Vn = [
2161
+ ], Un = [
2159
2162
  "onClick",
2160
2163
  "href",
2161
2164
  "data-testid"
2162
- ], Hn = [
2165
+ ], Wn = [
2163
2166
  "onClick",
2164
2167
  "onMouseenter",
2165
2168
  "data-testid"
2166
- ], Un = [
2169
+ ], Gn = [
2167
2170
  "onClick",
2168
2171
  "href",
2169
2172
  "data-testid"
2170
- ], Wn = { class: "sidebar-bottom-icons" }, Gn = {
2173
+ ], Kn = { class: "sidebar-bottom-icons" }, qn = {
2171
2174
  key: 0,
2172
2175
  class: "ai-running-dot",
2173
2176
  title: "An AI conversation is running"
2174
- }, Kn = {
2177
+ }, Jn = {
2175
2178
  key: 0,
2176
2179
  class: "mobile-subsection-search"
2177
- }, qn = ["placeholder", "aria-label"];
2178
- function Jn(e, t, n, r, i, a) {
2179
- let o = K("tooltip"), s = K("EditorList"), c = K("ConnectionList"), l = K("LLMConnectionList"), u = K("ModelSidebar"), d = K("JobsList"), f = K("TutorialSidebar"), p = K("DashboardList"), m = K("CommunityModelList");
2180
- return U(), F("div", { class: V(["sidebar-container", { "mobile-navigation": e.isMobile }]) }, [
2181
- e.isMobile && e.mobileNavigationLevel === "root" ? (U(), F("div", Dn, [
2182
- I("button", {
2180
+ }, Yn = ["placeholder", "aria-label"];
2181
+ function Xn(e, t, n, r, i, a) {
2182
+ let o = G("tooltip"), s = G("EditorList"), c = G("ConnectionList"), l = G("LLMConnectionList"), u = G("ModelSidebar"), d = G("JobsList"), f = G("TutorialSidebar"), p = G("DashboardList"), m = G("CommunityModelList");
2183
+ return H(), P("div", { class: V(["sidebar-container", { "mobile-navigation": e.isMobile }]) }, [
2184
+ e.isMobile && e.mobileNavigationLevel === "root" ? (H(), P("div", kn, [
2185
+ F("button", {
2183
2186
  type: "button",
2184
2187
  class: "mobile-menu-brand",
2185
2188
  "aria-label": e.unSaved ? `Save ${e.unSaved} unsaved changes` : "All changes saved",
2186
2189
  onClick: t[0] ||= (...t) => e.handleSave && e.handleSave(...t)
2187
- }, [I("img", {
2190
+ }, [F("img", {
2188
2191
  class: V(["mobile-menu-logo", { spinning: e.isSaving }]),
2189
2192
  src: e.trilogyIcon,
2190
2193
  alt: "",
2191
2194
  "aria-hidden": "true",
2192
2195
  "data-testid": "trilogy-icon"
2193
- }, null, 10, kn), I("div", null, [t[10] ||= I("div", { class: "mobile-menu-title" }, "Trilogy Studio", -1), I("div", An, q(e.unSaved ? `${e.unSaved} unsaved — tap to save` : "All changes saved"), 1)])], 8, On),
2194
- I("nav", jn, [(U(!0), F(j, null, G([...e.sidebarItems, ...e.sidebarFeatureItems], (n) => (U(), F("button", {
2196
+ }, null, 10, jn), F("div", null, [t[10] ||= F("div", { class: "mobile-menu-title" }, "Trilogy Studio", -1), F("div", Mn, K(e.unSaved ? `${e.unSaved} unsaved — tap to save` : "All changes saved"), 1)])], 8, An),
2197
+ F("nav", Nn, [(H(!0), P(A, null, W([...e.sidebarItems, ...e.sidebarFeatureItems], (n) => (H(), P("button", {
2195
2198
  key: n.screen,
2196
2199
  type: "button",
2197
2200
  class: V(["mobile-menu-destination", { selected: e.active === n.screen }]),
@@ -2200,142 +2203,142 @@ function Jn(e, t, n, r, i, a) {
2200
2203
  onClick: (t) => e.selectMobileDestination(n.screen),
2201
2204
  onMouseenter: (t) => e.preloadScreen(n.screen)
2202
2205
  }, [
2203
- I("i", {
2206
+ F("i", {
2204
2207
  class: V(n.icon),
2205
2208
  "aria-hidden": "true"
2206
2209
  }, null, 2),
2207
- I("span", null, q(n.tooltip), 1),
2208
- t[11] ||= I("i", {
2210
+ F("span", null, K(n.tooltip), 1),
2211
+ t[11] ||= F("i", {
2209
2212
  class: "mdi mdi-chevron-right mobile-menu-chevron",
2210
2213
  "aria-hidden": "true"
2211
2214
  }, null, -1)
2212
- ], 42, Mn))), 128))]),
2213
- I("div", Nn, [I("button", {
2215
+ ], 42, Pn))), 128))]),
2216
+ F("div", Fn, [F("button", {
2214
2217
  type: "button",
2215
2218
  class: "mobile-menu-destination",
2216
2219
  "data-testid": "sidebar-icon-settings",
2217
2220
  onClick: t[1] ||= (t) => e.selectItem("settings")
2218
- }, [...t[12] ||= [I("i", {
2221
+ }, [...t[12] ||= [F("i", {
2219
2222
  class: "mdi mdi-cog-outline",
2220
2223
  "aria-hidden": "true"
2221
- }, null, -1), I("span", null, "Settings", -1)]]), I("button", {
2224
+ }, null, -1), F("span", null, "Settings", -1)]]), F("button", {
2222
2225
  type: "button",
2223
2226
  class: "mobile-menu-destination",
2224
2227
  "data-testid": "sidebar-icon-profile",
2225
2228
  onClick: t[2] ||= (t) => e.selectItem("profile")
2226
- }, [...t[13] ||= [I("i", {
2229
+ }, [...t[13] ||= [F("i", {
2227
2230
  class: "mdi mdi-account-outline",
2228
2231
  "aria-hidden": "true"
2229
- }, null, -1), I("span", null, "Profile", -1)]])])
2230
- ])) : P("", !0),
2231
- e.isMobile ? P("", !0) : (U(), F("div", Pn, [
2232
- I("div", Fn, [I("div", In, [R(o, { content: e.unSaved ? `Save ${e.unSaved} ${(e.unSaved?.valueOf() || 0) > 1 ? "changes" : "change"}` : "All changes saved!" }, {
2233
- default: Z(() => [I("img", {
2232
+ }, null, -1), F("span", null, "Profile", -1)]])])
2233
+ ])) : N("", !0),
2234
+ e.isMobile ? N("", !0) : (H(), P("div", In, [
2235
+ F("div", Ln, [F("div", Rn, [L(o, { content: e.unSaved ? `Save ${e.unSaved} ${(e.unSaved?.valueOf() || 0) > 1 ? "changes" : "change"}` : "All changes saved!" }, {
2236
+ default: Z(() => [F("img", {
2234
2237
  class: V(["trilogy-icon", { spinning: e.isSaving }]),
2235
2238
  onClick: t[3] ||= (...t) => e.handleSave && e.handleSave(...t),
2236
2239
  src: e.trilogyIcon,
2237
2240
  "data-testid": "trilogy-icon"
2238
- }, null, 10, Ln)]),
2241
+ }, null, 10, zn)]),
2239
2242
  _: 1
2240
- }, 8, ["content"]), (e.unSaved?.valueOf() || 0) > 0 ? (U(), F("div", {
2243
+ }, 8, ["content"]), (e.unSaved?.valueOf() || 0) > 0 ? (H(), P("div", {
2241
2244
  key: 0,
2242
2245
  class: "unsaved-badge",
2243
2246
  title: `${e.unSaved} unsaved ${(e.unSaved?.valueOf() || 0) > 1 ? "changes" : "change"}`
2244
- }, q(e.unSaved), 9, Rn)) : P("", !0)])]),
2245
- t[17] ||= I("div", { class: "trilogy-icon-padding" }, null, -1),
2246
- I("div", {
2247
+ }, K(e.unSaved), 9, Bn)) : N("", !0)])]),
2248
+ t[17] ||= F("div", { class: "trilogy-icon-padding" }, null, -1),
2249
+ F("div", {
2247
2250
  class: "sidebar-collapse-btn",
2248
2251
  onClick: t[4] ||= (...t) => e.toggleCollapse && e.toggleCollapse(...t),
2249
2252
  title: e.contentCollapsed ? "Expand sidebar" : "Collapse sidebar"
2250
- }, [I("i", { class: V(e.contentCollapsed ? "mdi mdi-chevron-right" : "mdi mdi-chevron-left") }, null, 2)], 8, zn),
2251
- t[18] ||= I("div", { class: "sidebar-divider" }, null, -1),
2252
- (U(!0), F(j, null, G(e.sidebarItems, (t, n) => (U(), F("div", {
2253
+ }, [F("i", { class: V(e.contentCollapsed ? "mdi mdi-chevron-right" : "mdi mdi-chevron-left") }, null, 2)], 8, Vn),
2254
+ t[18] ||= F("div", { class: "sidebar-divider" }, null, -1),
2255
+ (H(!0), P(A, null, W(e.sidebarItems, (t, n) => (H(), P("div", {
2253
2256
  key: t.name,
2254
2257
  class: V(["sidebar-icon sidebar-icon-margin", { selected: e.active == t.screen }]),
2255
2258
  onClick: (n) => e.selectItem(t.screen),
2256
2259
  onMouseenter: (n) => e.preloadScreen(t.screen),
2257
2260
  "data-testid": `sidebar-icon-${t.screen}`
2258
- }, [R(o, { content: t.tooltip }, {
2259
- default: Z(() => [I("a", {
2261
+ }, [L(o, { content: t.tooltip }, {
2262
+ default: Z(() => [F("a", {
2260
2263
  onClick: $((n) => e.selectItem(t.screen), ["prevent", "stop"]),
2261
2264
  href: e.getUrl(t.screen),
2262
2265
  target: "_blank",
2263
2266
  "data-testid": `sidebar-link-${t.screen}`
2264
- }, [I("i", { class: V(t.icon) }, null, 2)], 8, Vn)]),
2267
+ }, [F("i", { class: V(t.icon) }, null, 2)], 8, Un)]),
2265
2268
  _: 2
2266
- }, 1032, ["content"])], 42, Bn))), 128)),
2267
- t[19] ||= I("div", { class: "sidebar-divider" }, null, -1),
2268
- (U(!0), F(j, null, G(e.sidebarFeatureItems, (t, n) => (U(), F("div", {
2269
+ }, 1032, ["content"])], 42, Hn))), 128)),
2270
+ t[19] ||= F("div", { class: "sidebar-divider" }, null, -1),
2271
+ (H(!0), P(A, null, W(e.sidebarFeatureItems, (t, n) => (H(), P("div", {
2269
2272
  key: t.name,
2270
2273
  class: V(["sidebar-icon sidebar-icon-margin", { selected: e.active == t.screen }]),
2271
2274
  onClick: (n) => e.selectItem(t.screen),
2272
2275
  onMouseenter: (n) => e.preloadScreen(t.screen),
2273
2276
  "data-testid": `sidebar-icon-${t.screen}`
2274
- }, [R(o, { content: t.tooltip }, {
2275
- default: Z(() => [I("a", {
2277
+ }, [L(o, { content: t.tooltip }, {
2278
+ default: Z(() => [F("a", {
2276
2279
  onClick: $((n) => e.selectItem(t.screen), ["prevent", "stop"]),
2277
2280
  href: e.getUrl(t.screen),
2278
2281
  target: "_blank",
2279
2282
  "data-testid": `sidebar-link-${t.screen}`
2280
- }, [I("i", { class: V(t.icon) }, null, 2)], 8, Un)]),
2283
+ }, [F("i", { class: V(t.icon) }, null, 2)], 8, Gn)]),
2281
2284
  _: 2
2282
- }, 1032, ["content"])], 42, Hn))), 128)),
2283
- I("div", Wn, [
2284
- e.hasLLMConnections ? (U(), F("div", {
2285
+ }, 1032, ["content"])], 42, Wn))), 128)),
2286
+ F("div", Kn, [
2287
+ e.hasLLMConnections ? (H(), P("div", {
2285
2288
  key: 0,
2286
2289
  class: V(["sidebar-icon sidebar-icon-margin ai-panel-icon", { selected: e.globalChatOpen }]),
2287
2290
  onClick: t[5] ||= (...t) => e.toggleGlobalChat && e.toggleGlobalChat(...t),
2288
2291
  "data-testid": "sidebar-icon-ai-panel"
2289
- }, [R(o, { content: "AI Assistant (Ctrl+Shift+.)" }, {
2290
- default: Z(() => [...t[14] ||= [I("i", { class: "mdi mdi-creation" }, null, -1)]]),
2292
+ }, [L(o, { content: "AI Assistant (Ctrl+Shift+.)" }, {
2293
+ default: Z(() => [...t[14] ||= [F("i", { class: "mdi mdi-creation" }, null, -1)]]),
2291
2294
  _: 1
2292
- }), e.aiChatRunning ? (U(), F("span", Gn)) : P("", !0)], 2)) : P("", !0),
2293
- I("div", {
2295
+ }), e.aiChatRunning ? (H(), P("span", qn)) : N("", !0)], 2)) : N("", !0),
2296
+ F("div", {
2294
2297
  class: V(["sidebar-icon sidebar-icon-margin", { selected: e.active == "settings" }]),
2295
2298
  onClick: t[6] ||= (t) => e.selectItem("settings"),
2296
2299
  "data-testid": "sidebar-icon-settings"
2297
- }, [R(o, { content: "Settings" }, {
2298
- default: Z(() => [...t[15] ||= [I("i", { class: "mdi mdi-cog-outline" }, null, -1)]]),
2300
+ }, [L(o, { content: "Settings" }, {
2301
+ default: Z(() => [...t[15] ||= [F("i", { class: "mdi mdi-cog-outline" }, null, -1)]]),
2299
2302
  _: 1
2300
2303
  })], 2),
2301
- I("div", {
2304
+ F("div", {
2302
2305
  class: V(["sidebar-icon sidebar-icon-margin", { selected: e.active == "profile" }]),
2303
2306
  "data-testid": "sidebar-icon-profile",
2304
2307
  onClick: t[7] ||= (t) => e.selectItem("profile")
2305
- }, [R(o, { content: "Profile" }, {
2306
- default: Z(() => [...t[16] ||= [I("i", { class: "mdi mdi-account-outline" }, null, -1)]]),
2308
+ }, [L(o, { content: "Profile" }, {
2309
+ default: Z(() => [...t[16] ||= [F("i", { class: "mdi mdi-account-outline" }, null, -1)]]),
2307
2310
  _: 1
2308
2311
  })], 2)
2309
2312
  ])
2310
2313
  ])),
2311
- Q(I("div", {
2314
+ Q(F("div", {
2312
2315
  ref: "mobileDetailMenu",
2313
2316
  class: V(["sidebar-content", { "sidebar-content-collapsed": e.contentCollapsed && !e.isMobile }]),
2314
- style: le(e.isMobile || e.contentCollapsed ? {} : { width: e.containerWidth - 40 + "px" })
2317
+ style: ue(e.isMobile || e.contentCollapsed ? {} : { width: e.containerWidth - 40 + "px" })
2315
2318
  }, [
2316
- e.isMobile && e.activeMobileDestination?.searchLabel ? (U(), F("label", Kn, [
2317
- t[21] ||= I("i", {
2319
+ e.isMobile && e.activeMobileDestination?.searchLabel ? (H(), P("label", Jn, [
2320
+ t[21] ||= F("i", {
2318
2321
  class: "mdi mdi-magnify",
2319
2322
  "aria-hidden": "true"
2320
2323
  }, null, -1),
2321
- Q(I("input", {
2324
+ Q(F("input", {
2322
2325
  "onUpdate:modelValue": t[8] ||= (t) => e.mobileSearchQuery = t,
2323
2326
  type: "search",
2324
2327
  placeholder: `Search ${e.activeMobileDestination.searchLabel}`,
2325
2328
  "aria-label": `Search ${e.activeMobileDestination.searchLabel}`,
2326
2329
  "data-testid": "mobile-sidebar-search"
2327
- }, null, 8, qn), [[Y, e.mobileSearchQuery]]),
2328
- e.mobileSearchQuery ? (U(), F("button", {
2330
+ }, null, 8, Yn), [[Y, e.mobileSearchQuery]]),
2331
+ e.mobileSearchQuery ? (H(), P("button", {
2329
2332
  key: 0,
2330
2333
  type: "button",
2331
2334
  "aria-label": "Clear search",
2332
2335
  onClick: t[9] ||= (t) => e.mobileSearchQuery = ""
2333
- }, [...t[20] ||= [I("i", {
2336
+ }, [...t[20] ||= [F("i", {
2334
2337
  class: "mdi mdi-close",
2335
2338
  "aria-hidden": "true"
2336
- }, null, -1)]])) : P("", !0)
2337
- ])) : P("", !0),
2338
- Q(R(s, {
2339
+ }, null, -1)]])) : N("", !0)
2340
+ ])) : N("", !0),
2341
+ Q(L(s, {
2339
2342
  activeEditor: e.activeEditor,
2340
2343
  mobileSearchQuery: e.mobileSearchQuery,
2341
2344
  onEditorSelected: e.editorSelected,
@@ -2346,7 +2349,7 @@ function Jn(e, t, n, r, i, a) {
2346
2349
  "onEditorSelected",
2347
2350
  "onSaveEditors"
2348
2351
  ]), [[X, e.active === "editors"]]),
2349
- Q(R(c, {
2352
+ Q(L(c, {
2350
2353
  onConnectionKeySelected: e.connectionKeySelected,
2351
2354
  onToggleMobileMenu: e.toggleMobileMenu,
2352
2355
  activeConnectionKey: e.activeConnectionKey
@@ -2355,7 +2358,7 @@ function Jn(e, t, n, r, i, a) {
2355
2358
  "onToggleMobileMenu",
2356
2359
  "activeConnectionKey"
2357
2360
  ]), [[X, e.active === "connections"]]),
2358
- Q(R(l, {
2361
+ Q(L(l, {
2359
2362
  onLlmConnectionKeySelected: e.llmKeySelected,
2360
2363
  onLlmOpenView: e.llmOpenView,
2361
2364
  onCreateNewChat: e.createNewChat,
@@ -2366,7 +2369,7 @@ function Jn(e, t, n, r, i, a) {
2366
2369
  "onCreateNewChat",
2367
2370
  "activeLLMKey"
2368
2371
  ]), [[X, e.active === "llms"]]),
2369
- Q(R(u, {
2372
+ Q(L(u, {
2370
2373
  onModelKeySelected: e.modelKeySelected,
2371
2374
  activeModelKey: e.activeModelKey,
2372
2375
  mobileSearchQuery: e.mobileSearchQuery
@@ -2375,15 +2378,15 @@ function Jn(e, t, n, r, i, a) {
2375
2378
  "activeModelKey",
2376
2379
  "mobileSearchQuery"
2377
2380
  ]), [[X, e.active === "models"]]),
2378
- Q(R(d, {
2381
+ Q(L(d, {
2379
2382
  onJobsKeySelected: e.jobsKeySelected,
2380
2383
  activeJobsKey: e.activeJobsKey
2381
2384
  }, null, 8, ["onJobsKeySelected", "activeJobsKey"]), [[X, e.active === "jobs"]]),
2382
- Q(R(f, {
2385
+ Q(L(f, {
2383
2386
  onDocumentationKeySelected: e.documentationKeySelected,
2384
2387
  activeDocumentationKey: e.activeDocumentationKey
2385
2388
  }, null, 8, ["onDocumentationKeySelected", "activeDocumentationKey"]), [[X, e.active === "tutorial"]]),
2386
- Q(R(p, {
2389
+ Q(L(p, {
2387
2390
  onDashboardKeySelected: e.dashboardKeySelected,
2388
2391
  onSaveEditors: e.saveDashboards,
2389
2392
  activeDashboardKey: e.activeDashboardKey,
@@ -2394,14 +2397,14 @@ function Jn(e, t, n, r, i, a) {
2394
2397
  "activeDashboardKey",
2395
2398
  "onToggleMobileMenu"
2396
2399
  ]), [[X, e.active === "dashboard"]]),
2397
- Q(R(m, null, null, 512), [[X, e.active === "community-models"]])
2400
+ Q(L(m, null, null, 512), [[X, e.active === "community-models"]])
2398
2401
  ], 6), [[X, !e.isMobile || e.mobileNavigationLevel === "detail"]])
2399
2402
  ], 2);
2400
2403
  }
2401
- var Yn = /*#__PURE__*/ e(En, [["render", Jn], ["__scopeId", "data-v-8ea26f23"]]), Xn = z({
2404
+ var Zn = /*#__PURE__*/ e(On, [["render", Xn], ["__scopeId", "data-v-8ea26f23"]]), Qn = R({
2402
2405
  name: "StorageManager",
2403
2406
  setup() {
2404
- let e = (B("storageSources", []) || []).find((e) => e instanceof b), t = W([]), n = W(!1), r = W(30), i = W(""), a = M(() => t.value.reduce((e, t) => e + t.bytes, 0));
2407
+ let e = (z("storageSources", []) || []).find((e) => e instanceof x), t = U([]), n = U(!1), r = U(30), i = U(""), a = j(() => t.value.reduce((e, t) => e + t.bytes, 0));
2405
2408
  async function o() {
2406
2409
  if (e) {
2407
2410
  n.value = !0;
@@ -2438,7 +2441,7 @@ var Yn = /*#__PURE__*/ e(En, [["render", Jn], ["__scopeId", "data-v-8ea26f23"]])
2438
2441
  function l(e) {
2439
2442
  return e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1024 / 1024).toFixed(2)} MB`;
2440
2443
  }
2441
- return H(o), {
2444
+ return de(o), {
2442
2445
  rows: t,
2443
2446
  loading: n,
2444
2447
  pruneDays: r,
@@ -2450,89 +2453,89 @@ var Yn = /*#__PURE__*/ e(En, [["render", Jn], ["__scopeId", "data-v-8ea26f23"]])
2450
2453
  formatBytes: l
2451
2454
  };
2452
2455
  }
2453
- }), Zn = { class: "storage-container" }, Qn = { class: "intro" }, $n = ["disabled"], er = {
2456
+ }), $n = { class: "storage-container" }, er = { class: "intro" }, tr = ["disabled"], nr = {
2454
2457
  key: 0,
2455
2458
  class: "empty"
2456
- }, tr = {
2459
+ }, rr = {
2457
2460
  key: 1,
2458
2461
  class: "empty"
2459
- }, nr = {
2462
+ }, ir = {
2460
2463
  key: 2,
2461
2464
  class: "usage-table"
2462
- }, rr = { class: "key" }, ir = { class: "numeric" }, ar = ["onClick", "disabled"], or = { class: "numeric" }, sr = { class: "section" }, cr = { class: "prune-row" }, lr = ["disabled"], ur = {
2465
+ }, ar = { class: "key" }, or = { class: "numeric" }, sr = ["onClick", "disabled"], cr = { class: "numeric" }, lr = { class: "section" }, ur = { class: "prune-row" }, dr = ["disabled"], fr = {
2463
2466
  key: 0,
2464
2467
  class: "prune-message"
2465
2468
  };
2466
- function dr(e, t, n, r, i, a) {
2467
- return U(), F("div", Zn, [
2468
- I("div", Qn, [t[3] ||= I("p", null, " Large data (chats, editors, dashboards, model config) is stored in IndexedDB. Smaller items (connections, LLM settings, user settings, credentials) stay in localStorage. Clear individual keys or prune old chats below. ", -1), I("button", {
2469
+ function pr(e, t, n, r, i, a) {
2470
+ return H(), P("div", $n, [
2471
+ F("div", er, [t[3] ||= F("p", null, " Large data (chats, editors, dashboards, model config) is stored in IndexedDB. Smaller items (connections, LLM settings, user settings, credentials) stay in localStorage. Clear individual keys or prune old chats below. ", -1), F("button", {
2469
2472
  class: "button",
2470
2473
  onClick: t[0] ||= (...t) => e.refresh && e.refresh(...t),
2471
2474
  disabled: e.loading
2472
- }, "Refresh", 8, $n)]),
2473
- e.loading ? (U(), F("div", er, "Loading…")) : e.rows.length ? (U(), F("table", nr, [
2474
- t[6] ||= I("thead", null, [I("tr", null, [
2475
- I("th", null, "Key"),
2476
- I("th", null, "Backend"),
2477
- I("th", { class: "numeric" }, "Size"),
2478
- I("th")
2475
+ }, "Refresh", 8, tr)]),
2476
+ e.loading ? (H(), P("div", nr, "Loading…")) : e.rows.length ? (H(), P("table", ir, [
2477
+ t[6] ||= F("thead", null, [F("tr", null, [
2478
+ F("th", null, "Key"),
2479
+ F("th", null, "Backend"),
2480
+ F("th", { class: "numeric" }, "Size"),
2481
+ F("th")
2479
2482
  ])], -1),
2480
- I("tbody", null, [(U(!0), F(j, null, G(e.rows, (t) => (U(), F("tr", { key: `${t.backend}:${t.key}` }, [
2481
- I("td", rr, q(t.key), 1),
2482
- I("td", null, [I("span", { class: V(["backend-badge", t.backend]) }, q(t.backend), 3)]),
2483
- I("td", ir, q(e.formatBytes(t.bytes)), 1),
2484
- I("td", null, [I("button", {
2483
+ F("tbody", null, [(H(!0), P(A, null, W(e.rows, (t) => (H(), P("tr", { key: `${t.backend}:${t.key}` }, [
2484
+ F("td", ar, K(t.key), 1),
2485
+ F("td", null, [F("span", { class: V(["backend-badge", t.backend]) }, K(t.backend), 3)]),
2486
+ F("td", or, K(e.formatBytes(t.bytes)), 1),
2487
+ F("td", null, [F("button", {
2485
2488
  class: "button button-small",
2486
2489
  onClick: (n) => e.deleteKey(t.key, t.backend),
2487
2490
  disabled: e.loading
2488
- }, " Delete ", 8, ar)])
2491
+ }, " Delete ", 8, sr)])
2489
2492
  ]))), 128))]),
2490
- I("tfoot", null, [I("tr", null, [
2491
- t[4] ||= I("td", { colspan: "2" }, [I("strong", null, "Total")], -1),
2492
- I("td", or, [I("strong", null, q(e.formatBytes(e.totalBytes)), 1)]),
2493
- t[5] ||= I("td", null, null, -1)
2493
+ F("tfoot", null, [F("tr", null, [
2494
+ t[4] ||= F("td", { colspan: "2" }, [F("strong", null, "Total")], -1),
2495
+ F("td", cr, [F("strong", null, K(e.formatBytes(e.totalBytes)), 1)]),
2496
+ t[5] ||= F("td", null, null, -1)
2494
2497
  ])])
2495
- ])) : (U(), F("div", tr, "Nothing stored.")),
2496
- I("div", sr, [
2497
- t[9] ||= I("h3", null, "Prune old chats", -1),
2498
- t[10] ||= I("p", { class: "muted" }, " Deletes chats whose last activity is older than the selected age. Artifact payloads stored in chats are the most common cause of quota errors. ", -1),
2499
- I("div", cr, [
2500
- t[8] ||= I("label", { for: "prune-days" }, "Delete chats older than", -1),
2501
- Q(I("select", {
2498
+ ])) : (H(), P("div", rr, "Nothing stored.")),
2499
+ F("div", lr, [
2500
+ t[9] ||= F("h3", null, "Prune old chats", -1),
2501
+ t[10] ||= F("p", { class: "muted" }, " Deletes chats whose last activity is older than the selected age. Artifact payloads stored in chats are the most common cause of quota errors. ", -1),
2502
+ F("div", ur, [
2503
+ t[8] ||= F("label", { for: "prune-days" }, "Delete chats older than", -1),
2504
+ Q(F("select", {
2502
2505
  id: "prune-days",
2503
2506
  "onUpdate:modelValue": t[1] ||= (t) => e.pruneDays = t
2504
2507
  }, [...t[7] ||= [
2505
- I("option", { value: 7 }, "7 days", -1),
2506
- I("option", { value: 30 }, "30 days", -1),
2507
- I("option", { value: 90 }, "90 days", -1),
2508
- I("option", { value: 180 }, "180 days", -1),
2509
- I("option", { value: 365 }, "1 year", -1)
2508
+ F("option", { value: 7 }, "7 days", -1),
2509
+ F("option", { value: 30 }, "30 days", -1),
2510
+ F("option", { value: 90 }, "90 days", -1),
2511
+ F("option", { value: 180 }, "180 days", -1),
2512
+ F("option", { value: 365 }, "1 year", -1)
2510
2513
  ]], 512), [[
2511
- fe,
2514
+ J,
2512
2515
  e.pruneDays,
2513
2516
  void 0,
2514
2517
  { number: !0 }
2515
2518
  ]]),
2516
- I("button", {
2519
+ F("button", {
2517
2520
  class: "button",
2518
2521
  onClick: t[2] ||= (...t) => e.pruneChats && e.pruneChats(...t),
2519
2522
  disabled: e.loading
2520
- }, "Prune", 8, lr)
2523
+ }, "Prune", 8, dr)
2521
2524
  ]),
2522
- e.pruneMessage ? (U(), F("div", ur, q(e.pruneMessage), 1)) : P("", !0)
2525
+ e.pruneMessage ? (H(), P("div", fr, K(e.pruneMessage), 1)) : N("", !0)
2523
2526
  ])
2524
2527
  ]);
2525
2528
  }
2526
2529
  //#endregion
2527
2530
  //#region components/user/UserSettings.vue?vue&type=script&lang.ts
2528
- var fr = z({
2531
+ var mr = R({
2529
2532
  name: "UserSettings",
2530
- components: { StorageManager: /* @__PURE__ */ e(Xn, [["render", dr], ["__scopeId", "data-v-e5d394da"]]) },
2533
+ components: { StorageManager: /* @__PURE__ */ e(Qn, [["render", pr], ["__scopeId", "data-v-e5d394da"]]) },
2531
2534
  setup() {
2532
- let e = B("userSettingsStore");
2535
+ let e = z("userSettingsStore");
2533
2536
  if (!e) throw Error("User Settings Store is required");
2534
- let { settings: t, isLoading: n, hasChanges: r } = me(e), i = W("general");
2535
- return H(() => {
2537
+ let { settings: t, isLoading: n, hasChanges: r } = he(e), i = U("general");
2538
+ return de(() => {
2536
2539
  e.hasLoaded || e.loadSettings();
2537
2540
  }), {
2538
2541
  settings: t,
@@ -2550,7 +2553,7 @@ var fr = z({
2550
2553
  },
2551
2554
  formatLabel: (e) => e.replace(/([A-Z])/g, " $1").replace(/^./, (e) => e.toUpperCase()),
2552
2555
  toggleTheme: () => {
2553
- ce(() => {
2556
+ B(() => {
2554
2557
  e.toggleTheme();
2555
2558
  });
2556
2559
  },
@@ -2558,79 +2561,79 @@ var fr = z({
2558
2561
  e.setHasChanges(!0);
2559
2562
  },
2560
2563
  onThemeChange: () => {
2561
- e.setHasChanges(!0), ce(() => {
2564
+ e.setHasChanges(!0), B(() => {
2562
2565
  e.toggleTheme();
2563
2566
  });
2564
2567
  },
2565
2568
  userSettingsStore: e
2566
2569
  };
2567
2570
  }
2568
- }), pr = { class: "settings-container" }, mr = { class: "tabs" }, hr = { class: "tab-panel" }, gr = ["for"], _r = [
2571
+ }), hr = { class: "settings-container" }, gr = { class: "tabs" }, _r = { class: "tab-panel" }, vr = ["for"], yr = [
2569
2572
  "id",
2570
2573
  "onUpdate:modelValue",
2571
2574
  "onChange"
2572
- ], vr = ["onUpdate:modelValue"], yr = { key: 2 }, br = ["disabled"], xr = [
2575
+ ], br = ["onUpdate:modelValue"], xr = { key: 2 }, Sr = ["disabled"], Cr = [
2573
2576
  "id",
2574
2577
  "onUpdate:modelValue",
2575
2578
  "data-testid"
2576
- ], Sr = { class: "actions" }, Cr = ["disabled"], wr = ["disabled"], Tr = { class: "tab-panel" };
2577
- function Er(e, t, n, r, i, a) {
2578
- let o = K("StorageManager");
2579
- return U(), F("div", pr, [
2580
- I("div", mr, [I("button", {
2579
+ ], wr = { class: "actions" }, Tr = ["disabled"], Er = ["disabled"], Dr = { class: "tab-panel" };
2580
+ function Or(e, t, n, r, i, a) {
2581
+ let o = G("StorageManager");
2582
+ return H(), P("div", hr, [
2583
+ F("div", gr, [F("button", {
2581
2584
  class: V(["tab-button", { "tab-active": e.activeTab === "general" }]),
2582
2585
  onClick: t[0] ||= (t) => e.activeTab = "general",
2583
2586
  "data-testid": "settings-tab-general"
2584
- }, " General ", 2), I("button", {
2587
+ }, " General ", 2), F("button", {
2585
2588
  class: V(["tab-button", { "tab-active": e.activeTab === "storage" }]),
2586
2589
  onClick: t[1] ||= (t) => e.activeTab = "storage",
2587
2590
  "data-testid": "settings-tab-storage"
2588
2591
  }, " Storage ", 2)]),
2589
- Q(I("div", hr, [
2590
- t[8] ||= I("h2", null, "Settings", -1),
2591
- (U(!0), F(j, null, G(Object.entries(e.settings), ([n, r]) => (U(), F("div", {
2592
+ Q(F("div", _r, [
2593
+ t[8] ||= F("h2", null, "Settings", -1),
2594
+ (H(!0), P(A, null, W(Object.entries(e.settings), ([n, r]) => (H(), P("div", {
2592
2595
  class: "setting",
2593
2596
  key: n
2594
- }, [I("label", { for: n }, q(e.formatLabel(n)), 9, gr), typeof r == "boolean" ? Q((U(), F("input", {
2597
+ }, [F("label", { for: n }, K(e.formatLabel(n)), 9, vr), typeof r == "boolean" ? Q((H(), P("input", {
2595
2598
  key: 0,
2596
2599
  type: "checkbox",
2597
2600
  id: n,
2598
2601
  "onUpdate:modelValue": (t) => e.settings[n] = t,
2599
2602
  onChange: () => e.userSettingsStore.updateSetting(n, e.settings[n])
2600
- }, null, 40, _r)), [[de, e.settings[n]]]) : n === "theme" ? Q((U(), F("select", {
2603
+ }, null, 40, yr)), [[pe, e.settings[n]]]) : n === "theme" ? Q((H(), P("select", {
2601
2604
  key: 1,
2602
2605
  "onUpdate:modelValue": (t) => e.settings[n] = t,
2603
2606
  onChange: t[2] ||= (...t) => e.onThemeChange && e.onThemeChange(...t)
2604
- }, [...t[7] ||= [I("option", { value: "dark" }, "Dark", -1), I("option", { value: "light" }, "Light", -1)]], 40, vr)), [[fe, e.settings[n]]]) : n === "tipsRead" ? (U(), F("div", yr, [I("button", {
2607
+ }, [...t[7] ||= [F("option", { value: "dark" }, "Dark", -1), F("option", { value: "light" }, "Light", -1)]], 40, br)), [[J, e.settings[n]]]) : n === "tipsRead" ? (H(), P("div", xr, [F("button", {
2605
2608
  class: "button",
2606
2609
  onClick: t[3] ||= (...t) => e.clearDismissedTips && e.clearDismissedTips(...t),
2607
2610
  disabled: e.isLoading
2608
- }, " Reshow Dismissed Popups (" + q(e.settings.tipsRead.length) + ") ", 9, br)])) : typeof r == "string" ? Q((U(), F("input", {
2611
+ }, " Reshow Dismissed Popups (" + K(e.settings.tipsRead.length) + ") ", 9, Sr)])) : typeof r == "string" ? Q((H(), P("input", {
2609
2612
  key: 3,
2610
2613
  type: "text",
2611
2614
  id: n,
2612
2615
  "onUpdate:modelValue": (t) => e.settings[n] = t,
2613
2616
  "data-testid": `settings-${n}`,
2614
2617
  onInput: t[4] ||= (...t) => e.onSettingChange && e.onSettingChange(...t)
2615
- }, null, 40, xr)), [[Y, e.settings[n]]]) : P("", !0)]))), 128)),
2616
- I("div", Sr, [I("button", {
2618
+ }, null, 40, Cr)), [[Y, e.settings[n]]]) : N("", !0)]))), 128)),
2619
+ F("div", wr, [F("button", {
2617
2620
  class: "button",
2618
2621
  onClick: t[5] ||= (...t) => e.saveSettings && e.saveSettings(...t),
2619
2622
  disabled: e.isLoading || !e.hasChanges
2620
- }, " Save ", 8, Cr), I("button", {
2623
+ }, " Save ", 8, Tr), F("button", {
2621
2624
  class: "button",
2622
2625
  onClick: t[6] ||= (...t) => e.resetToDefaults && e.resetToDefaults(...t),
2623
2626
  disabled: e.isLoading
2624
- }, " Reset to Defaults ", 8, wr)])
2627
+ }, " Reset to Defaults ", 8, Er)])
2625
2628
  ], 512), [[X, e.activeTab === "general"]]),
2626
- Q(I("div", Tr, [R(o)], 512), [[X, e.activeTab === "storage"]])
2629
+ Q(F("div", Dr, [L(o)], 512), [[X, e.activeTab === "storage"]])
2627
2630
  ]);
2628
2631
  }
2629
- var Dr = /*#__PURE__*/ e(fr, [["render", Er], ["__scopeId", "data-v-e04e640c"]]), Or = z({
2632
+ var kr = /*#__PURE__*/ e(mr, [["render", Or], ["__scopeId", "data-v-e04e640c"]]), Ar = R({
2630
2633
  name: "UserProfile",
2631
2634
  setup() {
2632
2635
  return {
2633
- profile: ue({
2636
+ profile: fe({
2634
2637
  name: "Anonymous",
2635
2638
  email: null,
2636
2639
  organization: null
@@ -2638,29 +2641,29 @@ var Dr = /*#__PURE__*/ e(fr, [["render", Er], ["__scopeId", "data-v-e04e640c"]])
2638
2641
  editProfile: () => {
2639
2642
  console.log("Edit profile clicked");
2640
2643
  },
2641
- trilogyIcon: _
2644
+ trilogyIcon: v
2642
2645
  };
2643
2646
  }
2644
- }), kr = { class: "profile-container" }, Ar = { class: "profile-info" }, jr = ["src"], Mr = { class: "details" }, Nr = { key: 0 }, Pr = { key: 1 };
2645
- function Fr(e, t, n, r, i, a) {
2646
- return U(), F("div", kr, [t[3] ||= I("h2", null, "Profile", -1), I("div", Ar, [I("img", {
2647
+ }), jr = { class: "profile-container" }, Mr = { class: "profile-info" }, Nr = ["src"], Pr = { class: "details" }, Fr = { key: 0 }, Ir = { key: 1 };
2648
+ function Lr(e, t, n, r, i, a) {
2649
+ return H(), P("div", jr, [t[3] ||= F("h2", null, "Profile", -1), F("div", Mr, [F("img", {
2647
2650
  src: e.trilogyIcon,
2648
2651
  alt: "User Avatar",
2649
2652
  class: "avatar"
2650
- }, null, 8, jr), I("div", Mr, [
2651
- I("p", null, [t[0] ||= I("strong", null, "User Name:", -1), L(" " + q(e.profile.name), 1)]),
2652
- e.profile.email ? (U(), F("p", Nr, [t[1] ||= I("strong", null, "Email:", -1), L(" " + q(e.profile.email), 1)])) : P("", !0),
2653
- e.profile.organization ? (U(), F("p", Pr, [t[2] ||= I("strong", null, "Organization:", -1), L(" " + q(e.profile.organization), 1)])) : P("", !0)
2653
+ }, null, 8, Nr), F("div", Pr, [
2654
+ F("p", null, [t[0] ||= F("strong", null, "User Name:", -1), I(" " + K(e.profile.name), 1)]),
2655
+ e.profile.email ? (H(), P("p", Fr, [t[1] ||= F("strong", null, "Email:", -1), I(" " + K(e.profile.email), 1)])) : N("", !0),
2656
+ e.profile.organization ? (H(), P("p", Ir, [t[2] ||= F("strong", null, "Organization:", -1), I(" " + K(e.profile.organization), 1)])) : N("", !0)
2654
2657
  ])])]);
2655
2658
  }
2656
- var Ir = /*#__PURE__*/ e(Or, [["render", Fr], ["__scopeId", "data-v-e25754ef"]]), Lr = {}, Rr = {
2659
+ var Rr = /*#__PURE__*/ e(Ar, [["render", Lr], ["__scopeId", "data-v-e25754ef"]]), zr = {}, Br = {
2657
2660
  class: "page-loading",
2658
2661
  role: "status",
2659
2662
  "aria-label": "Loading page"
2660
2663
  };
2661
- function zr(e, t) {
2662
- return U(), F("div", Rr, [...t[0] ||= [se("<div class=\"page-loading__bar\" data-v-bd8a428d><span class=\"skeleton skeleton--chip\" data-v-bd8a428d></span><span class=\"skeleton skeleton--title\" data-v-bd8a428d></span><span class=\"skeleton skeleton--chip\" data-v-bd8a428d></span></div><div class=\"page-loading__body\" data-v-bd8a428d><span class=\"skeleton skeleton--line skeleton--w60\" data-v-bd8a428d></span><span class=\"skeleton skeleton--line skeleton--w40\" data-v-bd8a428d></span><span class=\"skeleton skeleton--block\" data-v-bd8a428d></span><div class=\"page-loading__row\" data-v-bd8a428d><span class=\"skeleton skeleton--card\" data-v-bd8a428d></span><span class=\"skeleton skeleton--card\" data-v-bd8a428d></span></div></div>", 2)]]);
2664
+ function Vr(e, t) {
2665
+ return H(), P("div", Br, [...t[0] ||= [le("<div class=\"page-loading__bar\" data-v-bd8a428d><span class=\"skeleton skeleton--chip\" data-v-bd8a428d></span><span class=\"skeleton skeleton--title\" data-v-bd8a428d></span><span class=\"skeleton skeleton--chip\" data-v-bd8a428d></span></div><div class=\"page-loading__body\" data-v-bd8a428d><span class=\"skeleton skeleton--line skeleton--w60\" data-v-bd8a428d></span><span class=\"skeleton skeleton--line skeleton--w40\" data-v-bd8a428d></span><span class=\"skeleton skeleton--block\" data-v-bd8a428d></span><div class=\"page-loading__row\" data-v-bd8a428d><span class=\"skeleton skeleton--card\" data-v-bd8a428d></span><span class=\"skeleton skeleton--card\" data-v-bd8a428d></span></div></div>", 2)]]);
2663
2666
  }
2664
- var Br = /*#__PURE__*/ e(Lr, [["render", zr], ["__scopeId", "data-v-bd8a428d"]]);
2667
+ var Hr = /*#__PURE__*/ e(zr, [["render", Vr], ["__scopeId", "data-v-bd8a428d"]]);
2665
2668
  //#endregion
2666
- export { Tn as a, Yn as i, Ir as n, ye as o, Dr as r, ve as s, Br as t };
2669
+ export { Dn as a, Zn as i, Rr as n, be as o, kr as r, ye as s, Hr as t };