@omg-dev/app 0.6.17 → 0.6.18

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,37 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { z as n } from "./embedded-CCcPhTYL.js";
2
+ import { z as n } from "./embedded-CcZHRxvN.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 30, 2026 - A flat desktop workspace, agent account names, and remote access in Settings (v0.6.18)
8
+
9
+ - **The desktop workspace no longer draws cards around itself.** The session
10
+ rail and the session stage each rendered as a rounded card with a border, a
11
+ fill and a drop shadow, floating on the app background with a gap between
12
+ them. On a full width window that is chrome around chrome. Both are flat now.
13
+ A single divider line separates the rail from the stage, and the stage runs
14
+ to the window edge. The session header on the stage is 44px instead of 60px,
15
+ because it carries one line of title there. Phones and iPad portrait are not
16
+ affected. They use a different layout that keeps its cards, and the card is
17
+ what makes a stacked list of sessions readable.
18
+ - **Coding agents say which account they are signed in as.** Detection could
19
+ only answer whether an account was connected. A machine with several agents
20
+ under different logins looked the same as one machine with a single login,
21
+ and multi-account Claude showed "Claude 1" and "Claude 2", which name
22
+ nothing. Each agent now reads the credential file its own CLI already
23
+ writes and shows the account. No credential material is copied. A profile
24
+ appears only when you connected an account, so a platform API key never
25
+ reports a login you did not make.
26
+ - **Settings shows how to reach this server from another device.** A new
27
+ Remote access section gives the local URL, and the Tailscale state of the
28
+ machine with the exact command to serve it over your tailnet.
29
+ - **The desktop app keeps scheduled work running after you quit.** The app
30
+ used to attach to any healthy server on loopback and stop its own child on
31
+ exit, which ended schedules with the window. It now owns an isolated
32
+ embedded runtime that stays active after the window closes. A later launch
33
+ reconnects to it. A package update replaces it with the new build.
34
+
7
35
  ## August 28, 2026 - A desktop app preview, unread marks for chats, and the DeepSeek Harness (v0.6.17)
8
36
 
9
37
  - **A chat that landed a reply you have not read now carries a dot.** The
@@ -22,11 +50,11 @@ Recent product updates and deployment notes.
22
50
  two kinds of row now match.
23
51
  - **There is a desktop app preview for macOS and Linux.** It is a Bun-native
24
52
  Electrobun shell that contains the omg.dev web UI and server, so the packaged
25
- app needs no separate Bun or CLI install. At startup it uses a healthy
26
- omg.dev server on loopback when one is already running. Otherwise it starts
27
- its own runtime, and it stops only the child it started. The window is shown
28
- after the app is ready. Builds come from the \`desktop-package\` workflow as
29
- downloadable artifacts. They are not part of this release bundle.
53
+ app needs no separate Bun or CLI install. It always starts and owns an
54
+ isolated runtime, even when another omg.dev server is already running. The
55
+ window is shown after its runtime and app are ready. Builds come from the
56
+ \`desktop-package\` workflow as downloadable artifacts. They are not part of
57
+ this release bundle.
30
58
  - **DeepSeek Harness is available as a coding agent.** It is in the agent
31
59
  catalog, the setup script, and the coding agent adapters, like the other
32
60
  harnesses.
@@ -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, a3 as W, a4 as se, X as I, a5 as ie, a6 as ae, L as H, a7 as le, y as de, C as ce, a8 as L } from "./embedded-CCcPhTYL.js";
5
+ import { f as oe, a3 as W, a4 as se, X as I, a5 as ie, a6 as ae, L as H, a7 as le, y as de, C as ce, a8 as L } from "./embedded-CcZHRxvN.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, a9 as wQ, y as sQ, aa as tQ, ab as eQ, a3 as aQ, ac as MQ, R as hQ, C as NQ } from "./embedded-CCcPhTYL.js";
4
- import { K as ZA } from "./keyboard-B5L4gTN6.js";
3
+ import { f as UA, o as iQ, X as CA, a9 as wQ, y as sQ, aa as tQ, ab as eQ, a3 as aQ, ac as MQ, R as hQ, C as NQ } from "./embedded-CcZHRxvN.js";
4
+ import { K as ZA } from "./keyboard-bJd_vMhL.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *
@@ -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 { ad as uo } from "./embedded-CCcPhTYL.js";
4
+ import { ad as uo } from "./embedded-CcZHRxvN.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,61 +1,61 @@
1
- import { jsxs as t, jsx as e, Fragment as O } from "react/jsx-runtime";
2
- import { R, B as d, L as $, n as A, o as S, M as G, p as j, q as E, s as h, 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-CCcPhTYL.js";
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-CcZHRxvN.js";
3
3
  import { cn as U } from "cnfast";
4
4
  import { useState as I } from "react";
5
- function B(s) {
6
- return /CLI$|runtime$/i.test(s);
5
+ function B(l) {
6
+ return /CLI$|runtime$/i.test(l);
7
7
  }
8
- function Y(s) {
9
- return s.some((a) => B(a.label) && !a.ok);
8
+ function Y(l) {
9
+ return l.some((i) => B(i.label) && !i.ok);
10
10
  }
11
- function Z(s) {
12
- const a = s.filter((r) => !r.ok);
13
- return a.length ? a.some((r) => B(r.label)) ? "Install" : "Connect" : null;
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;
14
14
  }
15
- function ee(s) {
16
- const a = s.filter((r) => !r.ok);
17
- return a.length ? a.length === 1 ? `${a[0].label} missing` : `${a.length} checks failing` : null;
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;
18
18
  }
19
- function ne({ checks: s }) {
20
- return /* @__PURE__ */ e("div", { className: "space-y-1", children: s.map((a) => /* @__PURE__ */ t(
19
+ function ne({ checks: l }) {
20
+ return /* @__PURE__ */ e("div", { className: "space-y-1", children: l.map((i) => /* @__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
- a.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: a.label }),
27
- a.detail ? /* @__PURE__ */ e("span", { className: "min-w-0 truncate text-muted-foreground/70", children: a.detail }) : null
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
28
28
  ]
29
29
  },
30
- a.label
30
+ i.label
31
31
  )) });
32
32
  }
33
33
  function L({
34
- icon: s,
35
- title: a,
34
+ icon: l,
35
+ title: i,
36
36
  note: r,
37
- ok: m,
38
- showDot: o = !0,
39
- control: f,
40
- open: u,
37
+ ok: d,
38
+ showDot: c = !0,
39
+ control: h,
40
+ open: m,
41
41
  onToggle: x,
42
42
  children: b
43
43
  }) {
44
- return /* @__PURE__ */ t("div", { className: "px-4 py-2.5", children: [
45
- /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
46
- /* @__PURE__ */ t(
44
+ return /* @__PURE__ */ s("div", { className: "px-4 py-2.5", children: [
45
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-3", children: [
46
+ /* @__PURE__ */ s(
47
47
  "button",
48
48
  {
49
49
  type: "button",
50
50
  onClick: x,
51
- "aria-expanded": u,
51
+ "aria-expanded": m,
52
52
  className: "flex min-w-0 flex-1 items-center gap-3 text-left",
53
53
  children: [
54
- /* @__PURE__ */ e("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-[8px] border border-border bg-background", children: s }),
55
- /* @__PURE__ */ t("span", { className: "min-w-0 flex-1", children: [
56
- /* @__PURE__ */ t("span", { className: "flex items-center gap-2", children: [
57
- /* @__PURE__ */ e("span", { className: "truncate text-sm font-medium", children: a }),
58
- o && !m ? /* @__PURE__ */ e("span", { className: "size-1.5 shrink-0 rounded-full bg-destructive", "aria-hidden": !0 }) : null
54
+ /* @__PURE__ */ e("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-[8px] border border-border bg-background", children: l }),
55
+ /* @__PURE__ */ s("span", { className: "min-w-0 flex-1", children: [
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
59
59
  ] }),
60
60
  r ? /* @__PURE__ */ e("span", { className: "block truncate text-xs text-muted-foreground", children: r }) : null
61
61
  ] }),
@@ -64,55 +64,55 @@ function L({
64
64
  {
65
65
  className: U(
66
66
  "size-4 shrink-0 text-muted-foreground/60 transition-transform duration-150",
67
- u && "rotate-180"
67
+ m && "rotate-180"
68
68
  )
69
69
  }
70
70
  )
71
71
  ]
72
72
  }
73
73
  ),
74
- f
74
+ h
75
75
  ] }),
76
- u ? /* @__PURE__ */ e("div", { className: "mt-3 space-y-3 pl-11", children: b }) : null
76
+ m ? /* @__PURE__ */ e("div", { className: "mt-3 space-y-3 pl-11", children: b }) : null
77
77
  ] });
78
78
  }
79
79
  function te({
80
- provider: s,
81
- onConnect: a,
80
+ provider: l,
81
+ onConnect: i,
82
82
  onDisconnect: r
83
83
  }) {
84
- return /* @__PURE__ */ t("div", { className: "flex items-center gap-2 rounded-xl border border-border/70 bg-background/55 px-2.5 py-2", children: [
85
- /* @__PURE__ */ t("span", { className: "min-w-0 flex-1", children: [
86
- /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: s.label }),
87
- s.needsReconnect ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-destructive", children: "Sign-in expired" }) : s.detail || s.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: s.detail ?? "From the environment" }) : null
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: [
85
+ /* @__PURE__ */ s("span", { className: "min-w-0 flex-1", children: [
86
+ /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: l.label }),
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
- s.connected ? /* @__PURE__ */ t(O, { children: [
89
+ l.connected ? /* @__PURE__ */ s(O, { children: [
90
90
  /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
91
- s.fromEnv ? null : /* @__PURE__ */ e(
91
+ l.fromEnv ? null : /* @__PURE__ */ e(
92
92
  "button",
93
93
  {
94
94
  type: "button",
95
- onClick: () => r(s),
96
- title: `Disconnect ${s.label}`,
97
- "aria-label": `Disconnect ${s.label}`,
95
+ onClick: () => r(l),
96
+ title: `Disconnect ${l.label}`,
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
99
  children: /* @__PURE__ */ e(P, { className: "size-3.5" })
100
100
  }
101
101
  )
102
- ] }) : /* @__PURE__ */ t(d, { size: "sm", variant: "outline", onClick: () => a(s), children: [
103
- s.method === "oauth" ? /* @__PURE__ */ e(h, { className: "size-3.5" }) : /* @__PURE__ */ e(V, { className: "size-3.5" }),
104
- s.needsReconnect ? "Reconnect" : "Connect"
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" }),
104
+ l.needsReconnect ? "Reconnect" : "Connect"
105
105
  ] })
106
106
  ] });
107
107
  }
108
108
  function re({
109
- setupChecks: s,
110
- agents: a,
109
+ setupChecks: l,
110
+ agents: i,
111
111
  onVisibleChange: r,
112
- onSetup: m,
113
- onLogin: o,
114
- onAddClaudeAccount: f,
115
- onRemoveClaudeAccount: u,
112
+ onSetup: d,
113
+ onLogin: c,
114
+ onAddClaudeAccount: h,
115
+ onRemoveClaudeAccount: m,
116
116
  onConnectProvider: x,
117
117
  onDisconnectProvider: b,
118
118
  onSetupCheck: _,
@@ -120,7 +120,7 @@ function re({
120
120
  computerMcpEnabled: g,
121
121
  onComputerMcpChange: M
122
122
  }) {
123
- const [p, y] = I(!1), [v, C] = I(null), z = (n) => C((i) => i === n ? null : n);
123
+ const [p, y] = I(!1), [v, C] = I(null), z = (n) => C((a) => a === n ? null : n);
124
124
  async function F() {
125
125
  if (!p) {
126
126
  y(!0);
@@ -133,10 +133,10 @@ function re({
133
133
  }
134
134
  }
135
135
  }
136
- return /* @__PURE__ */ t("div", { className: "mx-auto max-w-xl space-y-3 pb-10", "data-lfg-page-column": !0, children: [
137
- /* @__PURE__ */ t("div", { className: "flex items-center justify-between px-4", children: [
136
+ return /* @__PURE__ */ s("div", { className: "mx-auto max-w-xl space-y-3 pb-10", "data-lfg-page-column": !0, children: [
137
+ /* @__PURE__ */ s("div", { className: "flex items-center justify-between px-4", children: [
138
138
  /* @__PURE__ */ e("h2", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Coding agents" }),
139
- /* @__PURE__ */ t(
139
+ /* @__PURE__ */ s(
140
140
  "button",
141
141
  {
142
142
  type: "button",
@@ -150,8 +150,8 @@ function re({
150
150
  }
151
151
  )
152
152
  ] }),
153
- s.length ? /* @__PURE__ */ t("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: [
154
- s.map((n) => /* @__PURE__ */ t(
153
+ l.length ? /* @__PURE__ */ s("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: [
154
+ l.map((n) => /* @__PURE__ */ s(
155
155
  L,
156
156
  {
157
157
  icon: /* @__PURE__ */ e(S, { className: "size-4 text-muted-foreground" }),
@@ -162,9 +162,9 @@ function re({
162
162
  onToggle: () => z(`setup:${n.key}`),
163
163
  children: [
164
164
  /* @__PURE__ */ e(ne, { checks: n.checks }),
165
- n.instructions.map((i) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: i }, i)),
166
- /* @__PURE__ */ t(
167
- d,
165
+ n.instructions.map((a) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: a }, a)),
166
+ /* @__PURE__ */ s(
167
+ u,
168
168
  {
169
169
  size: "sm",
170
170
  variant: "outline",
@@ -181,10 +181,10 @@ function re({
181
181
  },
182
182
  n.key
183
183
  )),
184
- /* @__PURE__ */ t("div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
185
- /* @__PURE__ */ t("div", { className: "flex min-w-0 items-center gap-3", children: [
184
+ /* @__PURE__ */ s("div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
185
+ /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-3", children: [
186
186
  /* @__PURE__ */ e(G, { className: "size-4 shrink-0 text-muted-foreground" }),
187
- /* @__PURE__ */ t("span", { className: "min-w-0", children: [
187
+ /* @__PURE__ */ s("span", { className: "min-w-0", children: [
188
188
  /* @__PURE__ */ e("span", { className: "block truncate text-sm font-medium", children: "Computer Use MCP" }),
189
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
190
  ] })
@@ -199,15 +199,19 @@ function re({
199
199
  )
200
200
  ] })
201
201
  ] }) : null,
202
- /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: a.map((n) => {
203
- const i = n.status, c = n.key === "aisdk" ? i.accounts ?? [] : [], k = i.providers ?? [], q = c.some((l) => l.connected), H = c.length > 0 || k.length > 0, w = Y(i.checks);
204
- return /* @__PURE__ */ t(
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);
204
+ return /* @__PURE__ */ s(
205
205
  L,
206
206
  {
207
207
  icon: /* @__PURE__ */ e("img", { src: E(n.key), alt: W(n.key), className: "size-5" }),
208
208
  title: n.label,
209
- note: Z(i.checks),
210
- ok: i.configured,
209
+ note: Z(
210
+ a.checks,
211
+ a.profile,
212
+ o.filter((t) => t.connected).length
213
+ ),
214
+ ok: a.configured,
211
215
  showDot: !1,
212
216
  open: v === `agent:${n.key}`,
213
217
  onToggle: () => z(`agent:${n.key}`),
@@ -215,125 +219,126 @@ function re({
215
219
  j,
216
220
  {
217
221
  checked: n.visible,
218
- onCheckedChange: (l) => {
219
- if (l && !i.configured) {
222
+ onCheckedChange: (t) => {
223
+ if (t && !a.configured) {
220
224
  C(`agent:${n.key}`);
221
225
  return;
222
226
  }
223
- r(n.key, l);
227
+ r(n.key, t);
224
228
  },
225
229
  "aria-label": `${n.label} visible in composer`
226
230
  }
227
231
  ),
228
232
  children: [
229
- c.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: c.map((l) => /* @__PURE__ */ t(
233
+ o.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: o.map((t) => /* @__PURE__ */ s(
230
234
  "div",
231
235
  {
232
236
  className: "flex items-center gap-2 rounded-xl border border-border/70 bg-background/55 px-2.5 py-2",
233
237
  children: [
234
- /* @__PURE__ */ t("span", { className: "relative flex size-7 shrink-0 items-center justify-center rounded-full bg-muted", children: [
238
+ /* @__PURE__ */ s("span", { className: "relative flex size-7 shrink-0 items-center justify-center rounded-full bg-muted", children: [
235
239
  /* @__PURE__ */ e("img", { src: E("aisdk"), alt: "", className: "size-4.5" }),
236
- /* @__PURE__ */ e("span", { className: "absolute -bottom-0.5 -right-0.5 flex size-3.5 items-center justify-center rounded-full bg-foreground text-[8px] font-bold text-background ring-1 ring-background", children: l.number })
240
+ /* @__PURE__ */ e("span", { className: "absolute -bottom-0.5 -right-0.5 flex size-3.5 items-center justify-center rounded-full bg-foreground text-[8px] font-bold text-background ring-1 ring-background", children: t.number })
237
241
  ] }),
238
- /* @__PURE__ */ t("span", { className: "min-w-0 flex-1", children: [
239
- /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: l.label }),
240
- l.needsReconnect ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-destructive", children: "Sign-in expired" }) : null,
241
- l.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: "From CLAUDE_CODE_OAUTH_TOKEN" }) : null
242
+ /* @__PURE__ */ s("span", { className: "min-w-0 flex-1", children: [
243
+ /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: t.label }),
244
+ t.profile ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: t.profile.detail ? `${t.profile.label} · ${t.profile.detail}` : t.profile.label }) : null,
245
+ t.needsReconnect ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-destructive", children: "Sign-in expired" }) : null,
246
+ t.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: "From CLAUDE_CODE_OAUTH_TOKEN" }) : null
242
247
  ] }),
243
- l.connected ? /* @__PURE__ */ t(O, { children: [
248
+ t.connected ? /* @__PURE__ */ s(O, { children: [
244
249
  /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
245
- l.fromEnv ? null : /* @__PURE__ */ e(
250
+ t.fromEnv ? null : /* @__PURE__ */ e(
246
251
  "button",
247
252
  {
248
253
  type: "button",
249
- onClick: () => o(n.key, l.id),
250
- title: `Sign in to ${l.label} again`,
251
- "aria-label": `Sign in to ${l.label} again`,
254
+ onClick: () => c(n.key, t.id),
255
+ title: `Sign in to ${t.label} again`,
256
+ "aria-label": `Sign in to ${t.label} again`,
252
257
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-muted hover:text-foreground",
253
258
  children: /* @__PURE__ */ e(R, { className: "size-3.5" })
254
259
  }
255
260
  )
256
- ] }) : /* @__PURE__ */ t(
257
- d,
261
+ ] }) : /* @__PURE__ */ s(
262
+ u,
258
263
  {
259
264
  size: "sm",
260
265
  variant: "outline",
261
- onClick: () => o(n.key, l.id),
266
+ onClick: () => c(n.key, t.id),
262
267
  children: [
263
- /* @__PURE__ */ e(h, { className: "size-3.5" }),
264
- l.needsReconnect ? "Reconnect" : "Connect"
268
+ /* @__PURE__ */ e(f, { className: "size-3.5" }),
269
+ t.needsReconnect ? "Reconnect" : "Connect"
265
270
  ]
266
271
  }
267
272
  ),
268
- l.removable ? /* @__PURE__ */ e(
273
+ t.removable ? /* @__PURE__ */ e(
269
274
  "button",
270
275
  {
271
276
  type: "button",
272
- onClick: () => u(l),
273
- title: `Remove ${l.label}`,
274
- "aria-label": `Remove ${l.label}`,
277
+ onClick: () => m(t),
278
+ title: `Remove ${t.label}`,
279
+ "aria-label": `Remove ${t.label}`,
275
280
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive",
276
281
  children: /* @__PURE__ */ e(P, { className: "size-3.5" })
277
282
  }
278
283
  ) : null
279
284
  ]
280
285
  },
281
- l.id
286
+ t.id
282
287
  )) }) : null,
283
- k.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: k.map((l) => /* @__PURE__ */ e(
288
+ k.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: k.map((t) => /* @__PURE__ */ e(
284
289
  te,
285
290
  {
286
- provider: l,
291
+ provider: t,
287
292
  onConnect: (N) => {
288
293
  if (n.key === "jcode" && w) {
289
- m(n.key);
294
+ d(n.key);
290
295
  return;
291
296
  }
292
297
  x(n.key, N);
293
298
  },
294
299
  onDisconnect: (N) => b(n.key, N)
295
300
  },
296
- l.id
301
+ t.id
297
302
  )) }) : null,
298
- /* @__PURE__ */ t("div", { className: "flex flex-wrap items-center gap-2", children: [
299
- i.canAutoSetup && w ? /* @__PURE__ */ t(
300
- d,
303
+ /* @__PURE__ */ s("div", { className: "flex flex-wrap items-center gap-2", children: [
304
+ a.canAutoSetup && w ? /* @__PURE__ */ s(
305
+ u,
301
306
  {
302
307
  size: "sm",
303
308
  variant: "outline",
304
- disabled: i.setupRunning,
305
- onClick: () => m(n.key),
309
+ disabled: a.setupRunning,
310
+ onClick: () => d(n.key),
306
311
  title: "Run setup for this agent",
307
312
  children: [
308
- i.setupRunning ? /* @__PURE__ */ e($, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(A, { className: "size-4" }),
309
- i.setupRunning ? "Running…" : "Install"
313
+ a.setupRunning ? /* @__PURE__ */ e($, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(A, { className: "size-4" }),
314
+ a.setupRunning ? "Running…" : "Install"
310
315
  ]
311
316
  }
312
317
  ) : null,
313
- c.length && q ? /* @__PURE__ */ t(
314
- d,
318
+ o.length && q ? /* @__PURE__ */ s(
319
+ u,
315
320
  {
316
321
  size: "sm",
317
322
  variant: "outline",
318
- disabled: i.setupRunning,
319
- onClick: () => f(),
323
+ disabled: a.setupRunning,
324
+ onClick: () => h(),
320
325
  title: "Add another Claude account",
321
326
  children: [
322
- /* @__PURE__ */ e(h, { className: "size-4" }),
327
+ /* @__PURE__ */ e(f, { className: "size-4" }),
323
328
  "Add account"
324
329
  ]
325
330
  }
326
331
  ) : null,
327
- i.canLoginInTerminal && !H ? /* @__PURE__ */ t(
328
- d,
332
+ a.canLoginInTerminal && !H ? /* @__PURE__ */ s(
333
+ u,
329
334
  {
330
335
  size: "sm",
331
336
  variant: "outline",
332
- disabled: i.setupRunning,
333
- onClick: () => o(n.key),
334
- title: n.key === "aisdk" && c.length ? "Add another Claude account" : D.has(n.key) ? `Sign in to ${n.label} in your browser` : `Open terminal and run ${i.loginCommand}`,
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}`,
335
340
  children: [
336
- D.has(n.key) ? /* @__PURE__ */ e(h, { className: "size-4" }) : /* @__PURE__ */ e(S, { className: "size-4" }),
341
+ D.has(n.key) ? /* @__PURE__ */ e(f, { className: "size-4" }) : /* @__PURE__ */ e(S, { className: "size-4" }),
337
342
  "Login"
338
343
  ]
339
344
  }
@@ -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, a3 as Ai, ab as Mn, B as Ge, R as Tn, X as Qn, L as Xi, ae as Ln } from "./embedded-CCcPhTYL.js";
4
- import { K as Rn } from "./keyboard-B5L4gTN6.js";
3
+ import { f as Fn, a3 as Ai, ab as Mn, B as Ge, R as Tn, X as Qn, L as Xi, ae as Ln } from "./embedded-CcZHRxvN.js";
4
+ import { K as Rn } from "./keyboard-bJd_vMhL.js";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
7
7
  *