@omg-dev/app 0.6.44 → 0.6.46

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,9 +1,25 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { z as n } from "./embedded-Bnp9Scvd.js";
2
+ import { z as n } from "./embedded-CvTzt7K7.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## September 5, 2026 - Free OpenCode default really launches (v0.6.46)
8
+
9
+ - **An anonymous box now launches the configured free OpenCode model.** The
10
+ picker used to take the first free model that OpenCode's catalog listed,
11
+ which was still the retired \`deepseek-v4-flash-free\`. The configured
12
+ default (\`opencode/nemotron-3.5-lightning-free\`) now wins whenever the
13
+ catalog offers it.
14
+
15
+ ## September 5, 2026 - Update coding agents and refresh models from Settings (v0.6.45)
16
+
17
+ - **Settings can update a coding agent CLI and refresh its models.** Expand
18
+ an installed agent and tap Update to reinstall the latest CLI, then re-probe
19
+ its model list. Refresh models at the top of the page re-probes without
20
+ waiting for the daily catalog cron. This is how an existing Computer picks
21
+ up a new Codex model such as GPT-6 Astra.
22
+
7
23
  ## September 5, 2026 - Mobile chat layout and auto-agent pages (v0.6.44)
8
24
 
9
25
  - **OpenCode default model is \`opencode/nemotron-3.5-lightning-free\`.** The
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as s, Fragment as te } from "react/jsx-runtime";
2
2
  import { memo as ne, useState as m, useRef as T, useCallback as v, useEffect as C, useMemo as q, Suspense as U } from "react";
3
3
  import { createPortal as re } from "react-dom";
4
4
  import { cn as y } from "cnfast";
5
- import { f as oe, a5 as W, a6 as se, X as I, a7 as ae, a8 as ie, L as H, a9 as le, y as de, C as ce, aa as L } from "./embedded-Bnp9Scvd.js";
5
+ import { f as oe, a5 as W, a6 as se, X as I, a7 as ae, a8 as ie, L as H, a9 as le, y as de, C as ce, aa as L } from "./embedded-CvTzt7K7.js";
6
6
  import { c as me } from "./create-CBk9uwJH.js";
7
7
  /**
8
8
  * @license lucide-react v0.577.0 - ISC
@@ -1,7 +1,7 @@
1
1
  import { jsxs as r, jsx as k, Fragment as vA } from "react/jsx-runtime";
2
2
  import { useState as L, useRef as R, useEffect as p, useCallback as q } from "react";
3
- import { f as UA, o as iQ, X as CA, ab as wQ, y as sQ, ac as tQ, ad as eQ, a5 as aQ, ae as MQ, R as hQ, C as NQ } from "./embedded-Bnp9Scvd.js";
4
- import { K as ZA } from "./keyboard-6BgcVuLo.js";
3
+ import { f as UA, o as iQ, X as CA, ab as wQ, y as sQ, ac as tQ, ad as eQ, a5 as aQ, ae as MQ, R as hQ, C as NQ } from "./embedded-CvTzt7K7.js";
4
+ import { K as ZA } from "./keyboard-DtOu7ThY.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *
@@ -1,6 +1,6 @@
1
1
  import { jsx as i, jsxs as l } from "react/jsx-runtime";
2
2
  import { useState as x, useEffect as h, useMemo as b } from "react";
3
- import { f as y, F as N, O as k, Q as w, a4 as v, L as I, m as A, k as _ } from "./embedded-Bnp9Scvd.js";
3
+ import { f as y, F as N, O as k, Q as w, a4 as v, L as I, m as A, k as _ } from "./embedded-CvTzt7K7.js";
4
4
  import { cn as g } from "cnfast";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
@@ -1,7 +1,7 @@
1
1
  import { jsx as ao } from "react/jsx-runtime";
2
2
  import { useRef as Dt, useCallback as Lt, useSyncExternalStore as ut, useEffect as so } from "react";
3
3
  import { g as io } from "./_commonjsHelpers-C6fGbg64.js";
4
- import { af as uo } from "./embedded-Bnp9Scvd.js";
4
+ import { af as uo } from "./embedded-CvTzt7K7.js";
5
5
  var Ar = "vercel.ai.error", co = Symbol.for(Ar), Ut, Ft, se = class Nr extends (Ft = Error, Ut = co, Ft) {
6
6
  /**
7
7
  * Creates an AI SDK Error.
@@ -1,43 +1,43 @@
1
- import { jsxs as s, jsx as e, Fragment as O } from "react/jsx-runtime";
2
- import { R, B as u, L as $, n as A, o as S, M as G, p as j, q as E, s as f, T as P, u as D, v as W, w as T, x as X, y as J, X as Q, K as V } from "./embedded-Bnp9Scvd.js";
3
- import { cn as U } from "cnfast";
4
- import { useState as I } from "react";
1
+ import { jsxs as s, jsx as e, Fragment as U } from "react/jsx-runtime";
2
+ import { R as v, B as u, L as C, n as A, o as S, M as W, p as j, q as E, s as f, T as O, u as I, v as X, w as D, x as J, y as Q, X as V, K as Y } from "./embedded-CvTzt7K7.js";
3
+ import { cn as P } from "cnfast";
4
+ import { useState as T } from "react";
5
5
  function B(l) {
6
6
  return /CLI$|runtime$/i.test(l);
7
7
  }
8
- function Y(l) {
9
- return l.some((i) => B(i.label) && !i.ok);
8
+ function Z(l) {
9
+ return l.some((a) => B(a.label) && !a.ok);
10
10
  }
11
- function Z(l, i, r = 0) {
12
- const d = l.filter((c) => !c.ok);
13
- return d.length ? d.some((c) => B(c.label)) ? "Install" : "Connect" : r > 1 ? `${r} accounts` : i?.label ?? null;
11
+ function ee(l, a, r = 0) {
12
+ const c = l.filter((d) => !d.ok);
13
+ return c.length ? c.some((d) => B(d.label)) ? "Install" : "Connect" : r > 1 ? `${r} accounts` : a?.label ?? null;
14
14
  }
15
- function ee(l) {
16
- const i = l.filter((r) => !r.ok);
17
- return i.length ? i.length === 1 ? `${i[0].label} missing` : `${i.length} checks failing` : null;
15
+ function ne(l) {
16
+ const a = l.filter((r) => !r.ok);
17
+ return a.length ? a.length === 1 ? `${a[0].label} missing` : `${a.length} checks failing` : null;
18
18
  }
19
- function ne({ checks: l }) {
20
- return /* @__PURE__ */ e("div", { className: "space-y-1", children: l.map((i) => /* @__PURE__ */ s(
19
+ function te({ checks: l }) {
20
+ return /* @__PURE__ */ e("div", { className: "space-y-1", children: l.map((a) => /* @__PURE__ */ s(
21
21
  "div",
22
22
  {
23
23
  className: "flex min-w-0 items-center gap-1.5 text-xs text-muted-foreground",
24
24
  children: [
25
- i.ok ? /* @__PURE__ */ e(J, { className: "size-3.5 shrink-0 text-success" }) : /* @__PURE__ */ e(Q, { className: "size-3.5 shrink-0 text-destructive" }),
26
- /* @__PURE__ */ e("span", { className: "shrink-0", children: i.label }),
27
- i.detail ? /* @__PURE__ */ e("span", { className: "min-w-0 truncate text-muted-foreground/70", children: i.detail }) : null
25
+ a.ok ? /* @__PURE__ */ e(Q, { className: "size-3.5 shrink-0 text-success" }) : /* @__PURE__ */ e(V, { className: "size-3.5 shrink-0 text-destructive" }),
26
+ /* @__PURE__ */ e("span", { className: "shrink-0", children: a.label }),
27
+ a.detail ? /* @__PURE__ */ e("span", { className: "min-w-0 truncate text-muted-foreground/70", children: a.detail }) : null
28
28
  ]
29
29
  },
30
- i.label
30
+ a.label
31
31
  )) });
32
32
  }
33
33
  function L({
34
34
  icon: l,
35
- title: i,
35
+ title: a,
36
36
  note: r,
37
- ok: d,
38
- showDot: c = !0,
39
- control: h,
40
- open: m,
37
+ ok: c,
38
+ showDot: d = !0,
39
+ control: m,
40
+ open: h,
41
41
  onToggle: x,
42
42
  children: b
43
43
  }) {
@@ -48,37 +48,37 @@ function L({
48
48
  {
49
49
  type: "button",
50
50
  onClick: x,
51
- "aria-expanded": m,
51
+ "aria-expanded": h,
52
52
  className: "flex min-w-0 flex-1 items-center gap-3 text-left",
53
53
  children: [
54
54
  /* @__PURE__ */ e("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-[8px] border border-border bg-background", children: l }),
55
55
  /* @__PURE__ */ s("span", { className: "min-w-0 flex-1", children: [
56
56
  /* @__PURE__ */ s("span", { className: "flex items-center gap-2", children: [
57
- /* @__PURE__ */ e("span", { className: "truncate text-sm font-medium", children: i }),
58
- c && !d ? /* @__PURE__ */ e("span", { className: "size-1.5 shrink-0 rounded-full bg-destructive", "aria-hidden": !0 }) : null
57
+ /* @__PURE__ */ e("span", { className: "truncate text-sm font-medium", children: a }),
58
+ d && !c ? /* @__PURE__ */ e("span", { className: "size-1.5 shrink-0 rounded-full bg-destructive", "aria-hidden": !0 }) : null
59
59
  ] }),
60
60
  r ? /* @__PURE__ */ e("span", { className: "block truncate text-xs text-muted-foreground", children: r }) : null
61
61
  ] }),
62
62
  /* @__PURE__ */ e(
63
- X,
63
+ J,
64
64
  {
65
- className: U(
65
+ className: P(
66
66
  "size-4 shrink-0 text-muted-foreground/60 transition-transform duration-150",
67
- m && "rotate-180"
67
+ h && "rotate-180"
68
68
  )
69
69
  }
70
70
  )
71
71
  ]
72
72
  }
73
73
  ),
74
- h
74
+ m
75
75
  ] }),
76
- m ? /* @__PURE__ */ e("div", { className: "mt-3 space-y-3 pl-11", children: b }) : null
76
+ h ? /* @__PURE__ */ e("div", { className: "mt-3 space-y-3 pl-11", children: b }) : null
77
77
  ] });
78
78
  }
79
- function te({
79
+ function se({
80
80
  provider: l,
81
- onConnect: i,
81
+ onConnect: a,
82
82
  onDisconnect: r
83
83
  }) {
84
84
  return /* @__PURE__ */ s("div", { className: "flex items-center gap-2 rounded-xl border border-border/70 bg-background/55 px-2.5 py-2", children: [
@@ -86,7 +86,7 @@ function te({
86
86
  /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: l.label }),
87
87
  l.needsReconnect ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-destructive", children: "Sign-in expired" }) : l.detail || l.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: l.detail ?? "From the environment" }) : null
88
88
  ] }),
89
- l.connected ? /* @__PURE__ */ s(O, { children: [
89
+ l.connected ? /* @__PURE__ */ s(U, { children: [
90
90
  /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
91
91
  l.fromEnv ? null : /* @__PURE__ */ e(
92
92
  "button",
@@ -96,40 +96,41 @@ function te({
96
96
  title: `Disconnect ${l.label}`,
97
97
  "aria-label": `Disconnect ${l.label}`,
98
98
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive",
99
- children: /* @__PURE__ */ e(P, { className: "size-3.5" })
99
+ children: /* @__PURE__ */ e(O, { className: "size-3.5" })
100
100
  }
101
101
  )
102
- ] }) : /* @__PURE__ */ s(u, { size: "sm", variant: "outline", onClick: () => i(l), children: [
103
- l.method === "oauth" ? /* @__PURE__ */ e(f, { className: "size-3.5" }) : /* @__PURE__ */ e(V, { className: "size-3.5" }),
102
+ ] }) : /* @__PURE__ */ s(u, { size: "sm", variant: "outline", onClick: () => a(l), children: [
103
+ l.method === "oauth" ? /* @__PURE__ */ e(f, { className: "size-3.5" }) : /* @__PURE__ */ e(Y, { className: "size-3.5" }),
104
104
  l.needsReconnect ? "Reconnect" : "Connect"
105
105
  ] })
106
106
  ] });
107
107
  }
108
- function re({
108
+ function ce({
109
109
  setupChecks: l,
110
- agents: i,
110
+ agents: a,
111
111
  onVisibleChange: r,
112
- onSetup: d,
113
- onLogin: c,
112
+ onSetup: c,
113
+ onUpdate: d,
114
+ onLogin: m,
114
115
  onAddClaudeAccount: h,
115
- onRemoveClaudeAccount: m,
116
- onConnectProvider: x,
117
- onDisconnectProvider: b,
116
+ onRemoveClaudeAccount: x,
117
+ onConnectProvider: b,
118
+ onDisconnectProvider: M,
118
119
  onSetupCheck: _,
119
120
  onRefresh: K,
120
- computerMcpEnabled: g,
121
- onComputerMcpChange: M
121
+ computerMcpEnabled: p,
122
+ onComputerMcpChange: F
122
123
  }) {
123
- const [p, y] = I(!1), [v, C] = I(null), z = (n) => C((a) => a === n ? null : n);
124
- async function F() {
125
- if (!p) {
126
- y(!0);
124
+ const [g, z] = T(!1), [R, w] = T(null), $ = (n) => w((i) => i === n ? null : n);
125
+ async function q() {
126
+ if (!g) {
127
+ z(!0);
127
128
  try {
128
- await K(), T.success("Coding agents refreshed");
129
+ await K(), D.success("Models refreshed");
129
130
  } catch (n) {
130
- T.error(n instanceof Error ? n.message : "Could not refresh coding agents");
131
+ D.error(n instanceof Error ? n.message : "Could not refresh models");
131
132
  } finally {
132
- y(!1);
133
+ z(!1);
133
134
  }
134
135
  }
135
136
  }
@@ -140,12 +141,12 @@ function re({
140
141
  "button",
141
142
  {
142
143
  type: "button",
143
- onClick: () => void F(),
144
- disabled: p,
144
+ onClick: () => void q(),
145
+ disabled: g,
145
146
  className: "flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50",
146
147
  children: [
147
- /* @__PURE__ */ e(R, { className: U("size-3.5", p && "animate-spin") }),
148
- "Refresh"
148
+ /* @__PURE__ */ e(v, { className: P("size-3.5", g && "animate-spin") }),
149
+ "Refresh models"
149
150
  ]
150
151
  }
151
152
  )
@@ -156,13 +157,13 @@ function re({
156
157
  {
157
158
  icon: /* @__PURE__ */ e(S, { className: "size-4 text-muted-foreground" }),
158
159
  title: n.label,
159
- note: ee(n.checks),
160
+ note: ne(n.checks),
160
161
  ok: n.configured,
161
- open: v === `setup:${n.key}`,
162
- onToggle: () => z(`setup:${n.key}`),
162
+ open: R === `setup:${n.key}`,
163
+ onToggle: () => $(`setup:${n.key}`),
163
164
  children: [
164
- /* @__PURE__ */ e(ne, { checks: n.checks }),
165
- n.instructions.map((a) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: a }, a)),
165
+ /* @__PURE__ */ e(te, { checks: n.checks }),
166
+ n.instructions.map((i) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: i }, i)),
166
167
  /* @__PURE__ */ s(
167
168
  u,
168
169
  {
@@ -172,7 +173,7 @@ function re({
172
173
  onClick: () => _(n.key),
173
174
  title: n.canAutoSetup ? n.actionLabel : "Install a supported coding agent first",
174
175
  children: [
175
- n.running ? /* @__PURE__ */ e($, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(A, { className: "size-4" }),
176
+ n.running ? /* @__PURE__ */ e(C, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(A, { className: "size-4" }),
176
177
  n.running ? "Running…" : n.actionLabel
177
178
  ]
178
179
  }
@@ -183,45 +184,45 @@ function re({
183
184
  )),
184
185
  /* @__PURE__ */ s("div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
185
186
  /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-3", children: [
186
- /* @__PURE__ */ e(G, { className: "size-4 shrink-0 text-muted-foreground" }),
187
+ /* @__PURE__ */ e(W, { className: "size-4 shrink-0 text-muted-foreground" }),
187
188
  /* @__PURE__ */ s("span", { className: "min-w-0", children: [
188
189
  /* @__PURE__ */ e("span", { className: "block truncate text-sm font-medium", children: "Computer Use MCP" }),
189
- /* @__PURE__ */ e("span", { className: "block text-xs text-muted-foreground", children: g ? "Agents can drive this box's desktop and browser." : "Off. Agents cannot see or drive the desktop." })
190
+ /* @__PURE__ */ e("span", { className: "block text-xs text-muted-foreground", children: p ? "Agents can drive this box's desktop and browser." : "Off. Agents cannot see or drive the desktop." })
190
191
  ] })
191
192
  ] }),
192
193
  /* @__PURE__ */ e(
193
194
  j,
194
195
  {
195
- checked: g,
196
- onCheckedChange: M,
197
- "aria-label": g ? "Disable the Computer Use MCP" : "Enable the Computer Use MCP"
196
+ checked: p,
197
+ onCheckedChange: F,
198
+ "aria-label": p ? "Disable the Computer Use MCP" : "Enable the Computer Use MCP"
198
199
  }
199
200
  )
200
201
  ] })
201
202
  ] }) : null,
202
- /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: i.map((n) => {
203
- const a = n.status, o = n.key === "aisdk" ? a.accounts ?? [] : [], k = a.providers ?? [], q = o.some((t) => t.connected), H = o.length > 0 || k.length > 0, w = Y(a.checks);
203
+ /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: a.map((n) => {
204
+ const i = n.status, o = n.key === "aisdk" ? i.accounts ?? [] : [], k = i.providers ?? [], H = o.some((t) => t.connected), G = o.length > 0 || k.length > 0, N = Z(i.checks);
204
205
  return /* @__PURE__ */ s(
205
206
  L,
206
207
  {
207
- icon: /* @__PURE__ */ e("img", { src: E(n.key), alt: W(n.key), className: "size-5" }),
208
+ icon: /* @__PURE__ */ e("img", { src: E(n.key), alt: X(n.key), className: "size-5" }),
208
209
  title: n.label,
209
- note: Z(
210
- a.checks,
211
- a.profile,
210
+ note: ee(
211
+ i.checks,
212
+ i.profile,
212
213
  o.filter((t) => t.connected).length
213
214
  ),
214
- ok: a.configured,
215
+ ok: i.configured,
215
216
  showDot: !1,
216
- open: v === `agent:${n.key}`,
217
- onToggle: () => z(`agent:${n.key}`),
217
+ open: R === `agent:${n.key}`,
218
+ onToggle: () => $(`agent:${n.key}`),
218
219
  control: /* @__PURE__ */ e(
219
220
  j,
220
221
  {
221
222
  checked: n.visible,
222
223
  onCheckedChange: (t) => {
223
- if (t && !a.configured) {
224
- C(`agent:${n.key}`);
224
+ if (t && !i.configured) {
225
+ w(`agent:${n.key}`);
225
226
  return;
226
227
  }
227
228
  r(n.key, t);
@@ -245,17 +246,17 @@ function re({
245
246
  t.needsReconnect ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-destructive", children: "Sign-in expired" }) : null,
246
247
  t.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: "From CLAUDE_CODE_OAUTH_TOKEN" }) : null
247
248
  ] }),
248
- t.connected ? /* @__PURE__ */ s(O, { children: [
249
+ t.connected ? /* @__PURE__ */ s(U, { children: [
249
250
  /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
250
251
  t.fromEnv ? null : /* @__PURE__ */ e(
251
252
  "button",
252
253
  {
253
254
  type: "button",
254
- onClick: () => c(n.key, t.id),
255
+ onClick: () => m(n.key, t.id),
255
256
  title: `Sign in to ${t.label} again`,
256
257
  "aria-label": `Sign in to ${t.label} again`,
257
258
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-muted hover:text-foreground",
258
- children: /* @__PURE__ */ e(R, { className: "size-3.5" })
259
+ children: /* @__PURE__ */ e(v, { className: "size-3.5" })
259
260
  }
260
261
  )
261
262
  ] }) : /* @__PURE__ */ s(
@@ -263,7 +264,7 @@ function re({
263
264
  {
264
265
  size: "sm",
265
266
  variant: "outline",
266
- onClick: () => c(n.key, t.id),
267
+ onClick: () => m(n.key, t.id),
267
268
  children: [
268
269
  /* @__PURE__ */ e(f, { className: "size-3.5" }),
269
270
  t.needsReconnect ? "Reconnect" : "Connect"
@@ -274,11 +275,11 @@ function re({
274
275
  "button",
275
276
  {
276
277
  type: "button",
277
- onClick: () => m(t),
278
+ onClick: () => x(t),
278
279
  title: `Remove ${t.label}`,
279
280
  "aria-label": `Remove ${t.label}`,
280
281
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive",
281
- children: /* @__PURE__ */ e(P, { className: "size-3.5" })
282
+ children: /* @__PURE__ */ e(O, { className: "size-3.5" })
282
283
  }
283
284
  ) : null
284
285
  ]
@@ -286,41 +287,55 @@ function re({
286
287
  t.id
287
288
  )) }) : null,
288
289
  k.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: k.map((t) => /* @__PURE__ */ e(
289
- te,
290
+ se,
290
291
  {
291
292
  provider: t,
292
- onConnect: (N) => {
293
- if (n.key === "jcode" && w) {
294
- d(n.key);
293
+ onConnect: (y) => {
294
+ if (n.key === "jcode" && N) {
295
+ c(n.key);
295
296
  return;
296
297
  }
297
- x(n.key, N);
298
+ b(n.key, y);
298
299
  },
299
- onDisconnect: (N) => b(n.key, N)
300
+ onDisconnect: (y) => M(n.key, y)
300
301
  },
301
302
  t.id
302
303
  )) }) : null,
303
304
  /* @__PURE__ */ s("div", { className: "flex flex-wrap items-center gap-2", children: [
304
- a.canAutoSetup && w ? /* @__PURE__ */ s(
305
+ i.canAutoSetup && N ? /* @__PURE__ */ s(
305
306
  u,
306
307
  {
307
308
  size: "sm",
308
309
  variant: "outline",
309
- disabled: a.setupRunning,
310
- onClick: () => d(n.key),
310
+ disabled: i.setupRunning,
311
+ onClick: () => c(n.key),
311
312
  title: "Run setup for this agent",
312
313
  children: [
313
- a.setupRunning ? /* @__PURE__ */ e($, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(A, { className: "size-4" }),
314
- a.setupRunning ? "Running…" : "Install"
314
+ i.setupRunning ? /* @__PURE__ */ e(C, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(A, { className: "size-4" }),
315
+ i.setupRunning ? "Running…" : "Install"
316
+ ]
317
+ }
318
+ ) : null,
319
+ i.canAutoSetup && !N ? /* @__PURE__ */ s(
320
+ u,
321
+ {
322
+ size: "sm",
323
+ variant: "outline",
324
+ disabled: i.setupRunning,
325
+ onClick: () => d(n.key),
326
+ title: "Install the latest CLI and refresh its model list",
327
+ children: [
328
+ i.setupRunning ? /* @__PURE__ */ e(C, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(v, { className: "size-4" }),
329
+ i.setupRunning ? "Updating…" : "Update"
315
330
  ]
316
331
  }
317
332
  ) : null,
318
- o.length && q ? /* @__PURE__ */ s(
333
+ o.length && H ? /* @__PURE__ */ s(
319
334
  u,
320
335
  {
321
336
  size: "sm",
322
337
  variant: "outline",
323
- disabled: a.setupRunning,
338
+ disabled: i.setupRunning,
324
339
  onClick: () => h(),
325
340
  title: "Add another Claude account",
326
341
  children: [
@@ -329,16 +344,16 @@ function re({
329
344
  ]
330
345
  }
331
346
  ) : null,
332
- a.canLoginInTerminal && !H ? /* @__PURE__ */ s(
347
+ i.canLoginInTerminal && !G ? /* @__PURE__ */ s(
333
348
  u,
334
349
  {
335
350
  size: "sm",
336
351
  variant: "outline",
337
- disabled: a.setupRunning,
338
- onClick: () => c(n.key),
339
- title: n.key === "aisdk" && o.length ? "Add another Claude account" : D.has(n.key) ? `Sign in to ${n.label} in your browser` : `Open terminal and run ${a.loginCommand}`,
352
+ disabled: i.setupRunning,
353
+ onClick: () => m(n.key),
354
+ title: n.key === "aisdk" && o.length ? "Add another Claude account" : I.has(n.key) ? `Sign in to ${n.label} in your browser` : `Open terminal and run ${i.loginCommand}`,
340
355
  children: [
341
- D.has(n.key) ? /* @__PURE__ */ e(f, { className: "size-4" }) : /* @__PURE__ */ e(S, { className: "size-4" }),
356
+ I.has(n.key) ? /* @__PURE__ */ e(f, { className: "size-4" }) : /* @__PURE__ */ e(S, { className: "size-4" }),
342
357
  "Login"
343
358
  ]
344
359
  }
@@ -352,5 +367,5 @@ function re({
352
367
  ] });
353
368
  }
354
369
  export {
355
- re as default
370
+ ce as default
356
371
  };
@@ -1,7 +1,7 @@
1
1
  import { jsxs as pe, jsx as J, Fragment as zt } from "react/jsx-runtime";
2
2
  import { useState as Ve, useRef as Qe, useCallback as ve, useEffect as Le } from "react";
3
- import { f as Fn, a5 as Ai, ad as Mn, B as Ge, R as Tn, X as Qn, L as Xi, ag as Ln } from "./embedded-Bnp9Scvd.js";
4
- import { K as Rn } from "./keyboard-6BgcVuLo.js";
3
+ import { f as Fn, a5 as Ai, ad as Mn, B as Ge, R as Tn, X as Qn, L as Xi, ag as Ln } from "./embedded-CvTzt7K7.js";
4
+ import { K as Rn } from "./keyboard-DtOu7ThY.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *