local-operator-ui 0.7.4 → 0.7.5

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.
@@ -1,10 +1,106 @@
1
- import { w as styled, a3 as Box, Z as keyframes, S as Typography, a as reactExports, j as jsxRuntimeExports, B as useTheme, ah as LinearProgress, a2 as Button, bJ as getTheme, a6 as DEFAULT_THEME, bI as ThemeProvider, bH as CssBaseline, bK as ReactDOM, R as React, bL as ErrorBoundary } from "./fonts-BAmz1ETd.js";
2
- const AppContainer = styled(Box)(() => ({
1
+ import { a2 as createLucideIcon, w as styled, a4 as Box, V as keyframes, S as Typography, a as reactExports, j as jsxRuntimeExports, B as useTheme, a3 as Button, F as alpha, bJ as getTheme, a7 as DEFAULT_THEME, bI as ThemeProvider, bH as CssBaseline, bK as ReactDOM, R as React, bL as ErrorBoundary } from "./fonts-DnoCbbVd.js";
2
+ /**
3
+ * @license lucide-react v0.507.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const __iconNode$5 = [
9
+ ["polyline", { points: "16 18 22 12 16 6", key: "z7tu5w" }],
10
+ ["polyline", { points: "8 6 2 12 8 18", key: "1eg1df" }]
11
+ ];
12
+ const Code = createLucideIcon("code", __iconNode$5);
13
+ /**
14
+ * @license lucide-react v0.507.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ */
19
+ const __iconNode$4 = [
20
+ ["path", { d: "m11 17 2 2a1 1 0 1 0 3-3", key: "efffak" }],
21
+ [
22
+ "path",
23
+ {
24
+ d: "m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4",
25
+ key: "9pr0kb"
26
+ }
27
+ ],
28
+ ["path", { d: "m21 3 1 11h-2", key: "1tisrp" }],
29
+ ["path", { d: "M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3", key: "1uvwmv" }],
30
+ ["path", { d: "M3 4h8", key: "1ep09j" }]
31
+ ];
32
+ const Handshake = createLucideIcon("handshake", __iconNode$4);
33
+ /**
34
+ * @license lucide-react v0.507.0 - ISC
35
+ *
36
+ * This source code is licensed under the ISC license.
37
+ * See the LICENSE file in the root directory of this source tree.
38
+ */
39
+ const __iconNode$3 = [
40
+ ["line", { x1: "22", x2: "2", y1: "12", y2: "12", key: "1y58io" }],
41
+ [
42
+ "path",
43
+ {
44
+ d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",
45
+ key: "oot6mr"
46
+ }
47
+ ],
48
+ ["line", { x1: "6", x2: "6.01", y1: "16", y2: "16", key: "sgf278" }],
49
+ ["line", { x1: "10", x2: "10.01", y1: "16", y2: "16", key: "1l4acy" }]
50
+ ];
51
+ const HardDrive = createLucideIcon("hard-drive", __iconNode$3);
52
+ /**
53
+ * @license lucide-react v0.507.0 - ISC
54
+ *
55
+ * This source code is licensed under the ISC license.
56
+ * See the LICENSE file in the root directory of this source tree.
57
+ */
58
+ const __iconNode$2 = [
59
+ [
60
+ "path",
61
+ {
62
+ d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
63
+ key: "oel41y"
64
+ }
65
+ ],
66
+ ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
67
+ ];
68
+ const ShieldCheck = createLucideIcon("shield-check", __iconNode$2);
69
+ /**
70
+ * @license lucide-react v0.507.0 - ISC
71
+ *
72
+ * This source code is licensed under the ISC license.
73
+ * See the LICENSE file in the root directory of this source tree.
74
+ */
75
+ const __iconNode$1 = [
76
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
77
+ ["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }],
78
+ ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }]
79
+ ];
80
+ const Target = createLucideIcon("target", __iconNode$1);
81
+ /**
82
+ * @license lucide-react v0.507.0 - ISC
83
+ *
84
+ * This source code is licensed under the ISC license.
85
+ * See the LICENSE file in the root directory of this source tree.
86
+ */
87
+ const __iconNode = [
88
+ [
89
+ "path",
90
+ {
91
+ d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",
92
+ key: "cbrjhi"
93
+ }
94
+ ]
95
+ ];
96
+ const Wrench = createLucideIcon("wrench", __iconNode);
97
+ const AppContainer = styled(Box)(({ theme }) => ({
3
98
  display: "flex",
4
99
  height: "100vh",
5
100
  width: "100vw",
6
101
  overflow: "hidden",
7
- backgroundColor: "#0A0A0A"
102
+ backgroundColor: theme.palette.background.default
103
+ // Use theme variable
8
104
  }));
9
105
  const InstallerLayout = styled(Box)(() => ({
10
106
  display: "flex",
@@ -20,8 +116,10 @@ const FeatureSection = styled(Box)(({ theme }) => ({
20
116
  flexDirection: "column",
21
117
  justifyContent: "center",
22
118
  alignItems: "center",
23
- padding: "48px",
24
- background: `linear-gradient(135deg, ${theme.palette.background.default} 0%, #111111 100%)`,
119
+ padding: theme.spacing(6),
120
+ // Use theme spacing
121
+ backgroundColor: theme.palette.background.paper,
122
+ // Solid, slightly lighter background
25
123
  position: "relative",
26
124
  overflow: "hidden",
27
125
  "&::after": {
@@ -31,11 +129,12 @@ const FeatureSection = styled(Box)(({ theme }) => ({
31
129
  right: 0,
32
130
  bottom: 0,
33
131
  width: "1px",
34
- background: "rgba(255, 255, 255, 0.1)"
132
+ backgroundColor: theme.palette.divider
133
+ // Softer divider
35
134
  },
36
135
  "@media (max-width: 900px)": {
37
136
  flex: "1 1 auto",
38
- padding: "32px 24px",
137
+ padding: theme.spacing(4, 3),
39
138
  "&::after": {
40
139
  width: "100%",
41
140
  height: "1px",
@@ -44,16 +143,19 @@ const FeatureSection = styled(Box)(({ theme }) => ({
44
143
  }
45
144
  }
46
145
  }));
47
- const ProgressSection = styled(Box)(() => ({
146
+ const ProgressSection = styled(Box)(({ theme }) => ({
48
147
  flex: "1 1 50%",
49
148
  display: "flex",
50
149
  flexDirection: "column",
51
150
  justifyContent: "center",
52
151
  alignItems: "center",
53
- padding: "48px",
152
+ padding: theme.spacing(6),
153
+ // Use theme spacing
154
+ backgroundColor: theme.palette.background.default,
155
+ // Main background for contrast
54
156
  "@media (max-width: 900px)": {
55
157
  flex: "1 1 auto",
56
- padding: "32px 24px"
158
+ padding: theme.spacing(4, 3)
57
159
  }
58
160
  }));
59
161
  const SpinnerContainer = styled(Box)(() => ({
@@ -62,12 +164,16 @@ const SpinnerContainer = styled(Box)(() => ({
62
164
  margin: "16px 0"
63
165
  }));
64
166
  const Spinner = styled(Box)(({ theme }) => ({
65
- width: "48px",
66
- height: "48px",
67
- border: `3px solid ${theme.palette.primary.main}20`,
167
+ width: "40px",
168
+ // Slightly smaller
169
+ height: "40px",
170
+ border: `4px solid ${theme.palette.action.disabledBackground}`,
171
+ // Muted track
68
172
  borderRadius: "50%",
69
173
  borderTopColor: theme.palette.primary.main,
70
- animation: "spin 1s ease-in-out infinite",
174
+ // Accent color for spinner part
175
+ animation: "spin 0.8s linear infinite",
176
+ // Smoother, faster animation
71
177
  "@keyframes spin": {
72
178
  to: { transform: "rotate(360deg)" }
73
179
  }
@@ -80,16 +186,22 @@ const LogoContainer = styled(Box)(() => ({
80
186
  height: "120px"
81
187
  }));
82
188
  const FeatureIconContainer = styled(Box)(({ theme }) => ({
83
- width: "80px",
84
- height: "80px",
85
- borderRadius: "50%",
189
+ width: "64px",
190
+ // Smaller icon container
191
+ height: "64px",
192
+ borderRadius: theme.shape.borderRadius * 2,
193
+ // Rounded square like shadcn cards
86
194
  display: "flex",
87
195
  justifyContent: "center",
88
196
  alignItems: "center",
89
- marginBottom: "24px",
90
- background: `linear-gradient(135deg, ${theme.palette.primary.dark} 0%, ${theme.palette.primary.main} 100%)`,
91
- boxShadow: "0 8px 32px rgba(56, 201, 106, 0.2)",
92
- fontSize: "2.5rem"
197
+ marginBottom: theme.spacing(3),
198
+ backgroundColor: theme.palette.action.hover,
199
+ // Muted background
200
+ // border: `1px solid ${theme.palette.divider}`, // Subtle border
201
+ color: theme.palette.primary.main,
202
+ // Icon color
203
+ fontSize: "2rem"
204
+ // Adjusted icon size
93
205
  }));
94
206
  const fadeIn = keyframes`
95
207
  from {
@@ -123,17 +235,21 @@ const FeatureContent = styled(Box)(
123
235
  })
124
236
  );
125
237
  const FeatureTitle = styled(Typography)(({ theme }) => ({
126
- fontSize: "1.75rem",
238
+ fontSize: "1.5rem",
239
+ // Adjusted size
127
240
  fontWeight: 600,
128
- marginBottom: "16px",
129
- background: `linear-gradient(90deg, ${theme.palette.primary.main}, ${theme.palette.secondary.main})`,
130
- WebkitBackgroundClip: "text",
131
- WebkitTextFillColor: "transparent"
241
+ marginBottom: theme.spacing(1.5),
242
+ color: theme.palette.text.primary
243
+ // Solid color
132
244
  }));
133
- const FeatureDescription = styled(Typography)(() => ({
134
- fontSize: "1rem",
135
- lineHeight: 1.6,
136
- color: "rgba(255, 255, 255, 0.8)"
245
+ const FeatureDescription = styled(Typography)(({ theme }) => ({
246
+ fontSize: "0.9rem",
247
+ // Slightly smaller for balance
248
+ lineHeight: 1.7,
249
+ // Increased line height for readability
250
+ color: theme.palette.text.secondary,
251
+ maxWidth: "400px"
252
+ // Limit width for better readability
137
253
  }));
138
254
  const ProgressDots = styled(Box)(() => ({
139
255
  display: "flex",
@@ -145,11 +261,17 @@ const ProgressDots = styled(Box)(() => ({
145
261
  }));
146
262
  const ProgressDot = styled(Box)(
147
263
  ({ active, theme }) => ({
148
- width: "8px",
149
- height: "8px",
264
+ width: "10px",
265
+ // Slightly larger dots
266
+ height: "10px",
150
267
  borderRadius: "50%",
151
- background: active ? theme.palette.primary.main : "rgba(255, 255, 255, 0.2)",
152
- transition: "background 0.3s ease"
268
+ backgroundColor: active ? theme.palette.primary.main : theme.palette.action.disabledBackground,
269
+ // Muted inactive color
270
+ transition: "background-color 0.3s ease, transform 0.3s ease",
271
+ cursor: "pointer",
272
+ "&:hover": {
273
+ transform: "scale(1.2)"
274
+ }
153
275
  })
154
276
  );
155
277
  const BackgroundPattern = styled(Box)(() => ({
@@ -158,31 +280,44 @@ const BackgroundPattern = styled(Box)(() => ({
158
280
  left: 0,
159
281
  right: 0,
160
282
  bottom: 0,
161
- opacity: 0.05,
162
- backgroundImage: "radial-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px)",
163
- backgroundSize: "30px 30px",
283
+ opacity: 0.03,
284
+ // Even more subtle
285
+ backgroundImage: "radial-gradient(rgba(255, 255, 255, 0.05) 0.5px, transparent 0.5px)",
286
+ // Smaller dots
287
+ backgroundSize: "20px 20px",
288
+ // Smaller grid
164
289
  pointerEvents: "none"
165
290
  }));
166
291
  const features = [
167
292
  {
168
- icon: "🎯",
293
+ icon: Target,
169
294
  title: "Plans & Executes",
170
295
  description: "Breaks down complex goals into manageable steps and executes them with precision."
171
296
  },
172
297
  {
173
- icon: "🔒",
298
+ icon: ShieldCheck,
174
299
  title: "Prioritizes Security",
175
300
  description: "Built-in safety checks by independent AI review and user confirmations keep your system protected."
176
301
  },
177
302
  {
178
- icon: "🌐",
179
- title: "Flexible Deployment",
180
- description: "Run completely locally with Ollama models or leverage cloud providers like OpenAI."
303
+ icon: Wrench,
304
+ title: "Agentic Problem Solving",
305
+ description: "Agents can intelligently handle errors and roadblocks by adapting approaches and finding alternative solutions."
306
+ },
307
+ {
308
+ icon: Code,
309
+ title: "Universal Problem Solvers",
310
+ description: "Local Operator agents use code as a universal tool to make their own integrations on the fly and creatively solve problems."
181
311
  },
182
312
  {
183
- icon: "🔧",
184
- title: "Problem Solving",
185
- description: "Intelligently handles errors and roadblocks by adapting approaches and finding alternative solutions."
313
+ icon: Handshake,
314
+ title: "Agent-to-Agent Communication",
315
+ description: "Agents can delegate tasks and communicate with each other to solve more complex problems."
316
+ },
317
+ {
318
+ icon: HardDrive,
319
+ title: "On-Device Work",
320
+ description: "Agents can work on-device without relying on the cloud, reducing the back and forth between your files and the cloud, and improving privacy."
186
321
  }
187
322
  ];
188
323
  const FeatureCarousel = () => {
@@ -227,7 +362,7 @@ const FeatureCarousel = () => {
227
362
  pointerEvents: index === activeFeature ? "auto" : "none"
228
363
  },
229
364
  children: [
230
- /* @__PURE__ */ jsxRuntimeExports.jsx(FeatureIconContainer, { children: feature.icon }),
365
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FeatureIconContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(feature.icon, { size: 32, strokeWidth: 1 }) }),
231
366
  /* @__PURE__ */ jsxRuntimeExports.jsx(FeatureTitle, { variant: "h4", children: feature.title }),
232
367
  /* @__PURE__ */ jsxRuntimeExports.jsx(FeatureDescription, { children: feature.description })
233
368
  ]
@@ -265,53 +400,56 @@ const InstallationProgress = () => {
265
400
  maxWidth: "520px"
266
401
  },
267
402
  children: [
268
- /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { textAlign: "center" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "gradientTitle", children: "🚀 Setting Up Your Environment" }) }),
269
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { width: "100%" }, children: [
270
- /* @__PURE__ */ jsxRuntimeExports.jsx(
271
- Typography,
272
- {
273
- variant: "body1",
274
- color: "text.secondary",
275
- sx: { textAlign: "center", mb: 3 },
276
- children: "We're preparing the magic behind the scenes! This one-time setup ensures you'll have the best experience with Local Operator."
277
- }
278
- ),
279
- /* @__PURE__ */ jsxRuntimeExports.jsx(
280
- LinearProgress,
281
- {
282
- sx: {
283
- height: 8,
284
- borderRadius: 2,
285
- backgroundColor: "rgba(255, 255, 255, 0.1)",
286
- "& .MuiLinearProgress-bar": {
287
- borderRadius: 2,
288
- background: `linear-gradient(90deg, ${theme.palette.primary.main}, ${theme.palette.secondary.main})`
289
- }
290
- }
291
- }
292
- )
403
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { textAlign: "center" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "gradientTitle", children: "Setting Up Your Environment" }) }),
404
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { width: "100%" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
405
+ Typography,
406
+ {
407
+ variant: "body1",
408
+ color: "text.secondary",
409
+ sx: { textAlign: "center", mb: 3, fontSize: "1rem" },
410
+ children: "We're preparing the magic behind the scenes! This one-time setup ensures you'll have the best experience with Local Operator."
411
+ }
412
+ ) }),
413
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SpinnerContainer, { sx: { my: 2 }, children: [
414
+ " ",
415
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, {})
293
416
  ] }),
294
- /* @__PURE__ */ jsxRuntimeExports.jsx(SpinnerContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, {}) }),
295
417
  /* @__PURE__ */ jsxRuntimeExports.jsx(
296
418
  Typography,
297
419
  {
298
- variant: "body2",
299
- sx: { textAlign: "center", color: "text.secondary", mb: 2 },
300
- children: "Installing dependencies and configuring your environment..."
420
+ variant: "body1",
421
+ sx: { textAlign: "center", color: "text.secondary", fontSize: "1rem" },
422
+ children: "Installing Python and other AI dependencies for Local Operator assistants on your device..."
423
+ }
424
+ ),
425
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
426
+ Typography,
427
+ {
428
+ variant: "body1",
429
+ sx: {
430
+ textAlign: "center",
431
+ color: "text.secondary",
432
+ fontSize: "0.875rem"
433
+ },
434
+ children: "This will take a few minutes. You can minimize this window and continue using your computer in the meantime, you will get a notification when it's done."
301
435
  }
302
436
  ),
303
437
  /* @__PURE__ */ jsxRuntimeExports.jsx(
304
438
  Button,
305
439
  {
306
- variant: "contained",
440
+ variant: "outlined",
307
441
  color: "error",
308
442
  onClick: handleCancel,
309
443
  sx: {
310
444
  alignSelf: "center",
311
- px: 4,
445
+ px: 3,
312
446
  py: 1,
313
- borderRadius: 2,
314
- boxShadow: "0 4px 12px rgba(211, 47, 47, 0.2)"
447
+ borderRadius: theme.shape.borderRadius,
448
+ borderColor: theme.palette.error.main,
449
+ "&:hover": {
450
+ backgroundColor: alpha(theme.palette.error.main, 0.08),
451
+ borderColor: theme.palette.error.dark
452
+ }
315
453
  },
316
454
  children: "Cancel Setup"
317
455
  }
@@ -320,7 +458,7 @@ const InstallationProgress = () => {
320
458
  }
321
459
  );
322
460
  };
323
- const logo = "" + new URL("clear-icon-with-text-uwwUBaIu.png", import.meta.url).href;
461
+ const logo = "" + new URL("clear-icon-with-text-Cu96UxOE.png", import.meta.url).href;
324
462
  const LogoSection = () => {
325
463
  const theme = useTheme();
326
464
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
@@ -347,11 +485,9 @@ const LogoSection = () => {
347
485
  variant: "h3",
348
486
  sx: {
349
487
  textAlign: "center",
350
- mb: 4,
351
- fontWeight: 600,
352
- background: `linear-gradient(90deg, ${theme.palette.primary.main}, ${theme.palette.secondary.main})`,
353
- WebkitBackgroundClip: "text",
354
- WebkitTextFillColor: "transparent"
488
+ mb: 2,
489
+ fontWeight: 700,
490
+ color: theme.palette.text.primary
355
491
  },
356
492
  children: "Local Operator"
357
493
  }
@@ -362,9 +498,10 @@ const LogoSection = () => {
362
498
  variant: "h6",
363
499
  sx: {
364
500
  textAlign: "center",
365
- mb: 6,
366
- color: "rgba(255, 255, 255, 0.7)",
367
- maxWidth: "600px"
501
+ mb: 4,
502
+ color: theme.palette.text.secondary,
503
+ maxWidth: "500px",
504
+ fontWeight: 400
368
505
  },
369
506
  children: "Personal AI Assistants that Turn Ideas into Action"
370
507
  }
@@ -9,8 +9,8 @@
9
9
  <meta http-equiv="Content-Security-Policy"
10
10
  content="default-src 'self'; connect-src 'self' http://localhost:1111 http://127.0.0.1:1111 ws://localhost:1111 ws://127.0.0.1:1111 http://localhost:8080 http://127.0.0.1:8080 https://api.radienthq.com https://us.i.posthog.com https://login.microsoftonline.com https://accounts.google.com; script-src 'self' https://us-assets.i.posthog.com https://accounts.google.com https://login.microsoftonline.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: http://localhost:1111 http://127.0.0.1:1111; media-src 'self' http://localhost:1111 http://127.0.0.1:1111; font-src 'self'; frame-src 'self' https://accounts.google.com https://login.microsoftonline.com" />
11
11
  <meta http-equiv="Cross-Origin-Opener-Policy" content="same-origin-allow-popups" />
12
- <script type="module" crossorigin src="./assets/index-CXyUnv28.js"></script>
13
- <link rel="modulepreload" crossorigin href="./assets/fonts-BAmz1ETd.js">
12
+ <script type="module" crossorigin src="./assets/index-QzSTnyjL.js"></script>
13
+ <link rel="modulepreload" crossorigin href="./assets/fonts-DnoCbbVd.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/fonts-B9KBGB-g.css">
15
15
  <link rel="stylesheet" crossorigin href="./assets/index-0vP6mKPB.css">
16
16
  </head>
@@ -8,8 +8,8 @@
8
8
  <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
9
9
  <meta http-equiv="Content-Security-Policy"
10
10
  content="default-src 'self'; connect-src 'self' http://localhost:1111 http://127.0.0.1:1111; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: http://localhost:1111 http://127.0.0.1:1111; media-src 'self' http://localhost:1111 http://127.0.0.1:1111; font-src 'self'" />
11
- <script type="module" crossorigin src="./assets/installer-Bqr5u24x.js"></script>
12
- <link rel="modulepreload" crossorigin href="./assets/fonts-BAmz1ETd.js">
11
+ <script type="module" crossorigin src="./assets/installer-CdeVfdGR.js"></script>
12
+ <link rel="modulepreload" crossorigin href="./assets/fonts-DnoCbbVd.js">
13
13
  <link rel="stylesheet" crossorigin href="./assets/fonts-B9KBGB-g.css">
14
14
  </head>
15
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-operator-ui",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "productName": "Local Operator",
5
5
  "description": "User interface for AI agent assistants that run Python code safely on your device through an intuitive chat interface. Supports local and cloud LLM models with built-in security features.",
6
6
  "main": "./out/main/index.js",