@omg-dev/app 0.6.16 → 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.
- package/dist-lib/{ChangelogPage-BKCiI0t4.js → ChangelogPage-DWu3RBbp.js} +69 -1
- package/dist-lib/{SessionFilesPanel-CdUoE6sb.js → SessionFilesPanel-D_D5aScn.js} +1 -1
- package/dist-lib/{TermView-CsbmiLaC.js → TermView-BvO8EVcd.js} +2 -2
- package/dist-lib/agent-deepseek.svg +3 -0
- package/dist-lib/{chat-engine-BVrUwjDq.js → chat-engine-BDniuJ89.js} +1 -1
- package/dist-lib/{coding-agents-page-CpLkCbr4.js → coding-agents-page-C0ZsHBai.js} +125 -120
- package/dist-lib/{computer-page-beiShGv9.js → computer-page-CShwbqqT.js} +2 -2
- package/dist-lib/{embedded-B6IaTsrk.js → embedded-CcZHRxvN.js} +9197 -8927
- package/dist-lib/index.d.ts +1 -0
- package/dist-lib/index.js +1 -1
- package/dist-lib/{keyboard-DCTxfrP6.js → keyboard-bJd_vMhL.js} +1 -1
- package/dist-lib/{resume-session-sheet-DrNeskPy.js → resume-session-sheet-CloMAlQz.js} +1 -1
- package/dist-lib/{session-token-usage-DvEZR6Lw.js → session-token-usage-CiLIQPqQ.js} +1 -1
- package/dist-lib/{shipped-page-Cx8J7mTL.js → shipped-page-NFGDYsB2.js} +1 -1
- package/dist-lib/{streamdown-response-CNl2guA0.js → streamdown-response-D9KtlNpp.js} +1 -1
- package/dist-lib/styles.css +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,77 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { z as n } from "./embedded-
|
|
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
|
+
|
|
35
|
+
## August 28, 2026 - A desktop app preview, unread marks for chats, and the DeepSeek Harness (v0.6.17)
|
|
36
|
+
|
|
37
|
+
- **A chat that landed a reply you have not read now carries a dot.** The
|
|
38
|
+
roster could draw a session working, and it could draw nothing. "Nothing"
|
|
39
|
+
meant finished a second ago, finished and already read, and finished last
|
|
40
|
+
March, all at once, so the one state a person waits for had no mark. The dot
|
|
41
|
+
is per person, so two identities on one box do not clear each other. It is
|
|
42
|
+
held back while the session is working, because it means "ready for you" and
|
|
43
|
+
a session in the middle of a turn is not. It clears when the transcript is
|
|
44
|
+
actually on screen, not when a stored preference says a column is open. The
|
|
45
|
+
row menu has "Mark as read", and the Chat tab carries the same dot that Bots
|
|
46
|
+
already had.
|
|
47
|
+
- **An unread row is no longer tinted.** The dot, the tooltip and the screen
|
|
48
|
+
reader label say it. The row tint said it a third time, and a list with a few
|
|
49
|
+
unread sessions in it read as alarmed. Bot rows never had the tint, so the
|
|
50
|
+
two kinds of row now match.
|
|
51
|
+
- **There is a desktop app preview for macOS and Linux.** It is a Bun-native
|
|
52
|
+
Electrobun shell that contains the omg.dev web UI and server, so the packaged
|
|
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.
|
|
58
|
+
- **DeepSeek Harness is available as a coding agent.** It is in the agent
|
|
59
|
+
catalog, the setup script, and the coding agent adapters, like the other
|
|
60
|
+
harnesses.
|
|
61
|
+
- **OpenCode reports the models and variants of your connected providers.**
|
|
62
|
+
- **A \`codex exec\` session is titled by its real prompt.** A non-interactive
|
|
63
|
+
run records its prompt in a form the title scan dropped, so every exec
|
|
64
|
+
rollout fell back to the directory name. A batch of runs in one directory
|
|
65
|
+
produced identical rows in the Live roster and in resume history. The scan
|
|
66
|
+
now falls back to the first user turn in the transcript, and it skips the
|
|
67
|
+
wrapper blocks that Codex injects ahead of the real prompt.
|
|
68
|
+
- **A session row hides the assignee badge when it repeats what the row
|
|
69
|
+
already says.**
|
|
70
|
+
- **The native iOS client gained the web app's list, session view and
|
|
71
|
+
sign-in.** The subagent tree lines are aimed at the mark they descend from,
|
|
72
|
+
the list can be scoped by folder, and the usage rings open. The client ships
|
|
73
|
+
through TestFlight and EAS Update, not through this release bundle.
|
|
74
|
+
|
|
7
75
|
## August 27, 2026 - The native iOS client, native push, and a matched dark theme (v0.6.16)
|
|
8
76
|
|
|
9
77
|
- **The native omg.dev client for iOS now lives in this repository.** 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, 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-
|
|
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-
|
|
4
|
-
import { K as ZA } from "./keyboard-
|
|
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
|
*
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50" fill="none">
|
|
2
|
+
<path d="M48.8354 10.0479C48.3232 9.792 48.1025 10.2798 47.8032 10.5278C46.7793 11.624 45.9048 12.1597 44.7622 12.0957C43.0923 12 41.666 12.5356 40.4058 13.8398C40.1377 12.2319 39.2476 11.272 37.8926 10.6558C36.4668 10.0156 35.9702 9.3198 35.356 7.7275C35.2456 7.3999 35.1353 7.064 34.7651 7.0078C34.3633 6.9438 34.2056 7.2876 34.0479 7.5757C33.418 8.752 33.1733 10.0479 33.1973 11.3599C33.2524 14.312 34.4736 16.6641 36.8999 18.3359C37.1758 18.5278 37.2466 18.7197 37.1597 19C36.9946 19.5757 36.7974 20.1357 36.624 20.7119C36.5137 21.0801 36.3486 21.1597 35.9624 21C34.6309 20.4321 33.481 19.5918 32.4644 18.5757C30.7393 16.8721 29.1792 14.9917 27.2334 13.52C26.7764 13.1758 26.3193 12.856 25.8467 12.5518C23.8618 10.584 26.1069 8.9678 26.627 8.7759C27.1704 8.5757 26.8159 7.8877 25.0591 7.896C23.3022 7.9038 21.6953 8.5039 19.647 9.3037C17.563 9.8477 15.3022 9.0957 12.9033 9.376C9.106 9.8076 6.0728 11.6396 3.8433 14.7681C1.1646 18.5278.5342 22.7998 1.3066 27.2559C2.1177 31.9521 4.4658 35.8398 8.0737 38.8799C11.8159 42.0322 16.1255 43.5762 21.041 43.2803C24.0269 43.104 27.3516 42.6963 31.1016 39.4561C32.0469 39.936 33.0396 40.1279 34.686 40.272C35.9546 40.3921 37.1758 40.208 38.1211 40.0078C39.6021 39.688 39.4995 38.2881 38.9639 38.0322C34.623 35.9678 35.5762 36.8081 34.71 36.1279C36.9155 33.4639 40.2402 30.6958 41.54 21.728C41.6426 21.0161 41.5557 20.5679 41.54 19.9917C41.5322 19.6396 41.6108 19.5039 42.0049 19.4639C47.9292 18.9199 49.064 14.3438 49.3315 11.2559C49.3711 10.7837 49.3237 10.2959 48.8354 10.0479ZM24.3262 37.8398C20.1196 34.4639 18.0791 33.3521 17.2358 33.3999C16.4482 33.4482 16.5898 34.3682 16.7632 34.9678C16.9443 35.5601 17.1812 35.9683 17.5117 36.4878C17.7402 36.832 17.8979 37.3442 17.2832 37.728C15.9282 38.584 13.5728 37.4399 13.4624 37.3838C10.7207 35.7358 8.4282 33.5601 6.8135 30.584C5.2534 27.7197 4.3477 24.6479 4.1978 21.3677C4.1582 20.5757 4.3867 20.2959 5.1587 20.1519C12.4341 18.7759 18.0718 23.1118 19.2529 25.7759C21.002 27.5439 22.3252 29.6558 23.6885 31.7202C25.1377 33.9121 26.6978 36 28.6831 37.7119C29.3843 38.312 29.9434 38.7681 30.479 39.104C28.8643 39.2881 26.1699 39.3281 24.3262 37.8398ZM26.3433 24.6001C26.3433 24.248 26.6191 23.9678 26.9658 23.9678C27.3042 23.9678 27.5801 24.248 27.5801 24.6001C27.5801 24.9521 27.3042 25.2319 26.9575 25.2319C26.6108 25.2319 26.3433 24.9521 26.3433 24.6001ZM32.6064 27.8799C31.2275 28.4556 30.1641 27.9922 29.8096 27.688C28.6675 26.7124 28.6675 25.2319 28.7305 24.9199C28.8721 24.248 28.7144 23.8159 28.2495 23.4238C27.6743 22.936 26.792 23.0562 26.3511 22.856C26.1304 22.7441 25.9492 22.4639 26.1226 22.1201C26.1777 22.0078 26.4458 21.7358 26.5088 21.688C27.2256 21.272 28.0527 21.4077 28.8169 21.7197C30.5576 22.4478 32.5273 24.6636 33.1104 26.9521C33.2446 27.3521 33.0713 27.6802 32.6064 27.8799Z" fill="#4D6BFE"/>
|
|
3
|
+
</svg>
|
|
@@ -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-
|
|
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
|
|
2
|
-
import { R, B as
|
|
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(
|
|
6
|
-
return /CLI$|runtime$/i.test(
|
|
5
|
+
function B(l) {
|
|
6
|
+
return /CLI$|runtime$/i.test(l);
|
|
7
7
|
}
|
|
8
|
-
function Y(
|
|
9
|
-
return
|
|
8
|
+
function Y(l) {
|
|
9
|
+
return l.some((i) => B(i.label) && !i.ok);
|
|
10
10
|
}
|
|
11
|
-
function Z(
|
|
12
|
-
const
|
|
13
|
-
return
|
|
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(
|
|
16
|
-
const
|
|
17
|
-
return
|
|
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:
|
|
20
|
-
return /* @__PURE__ */ e("div", { className: "space-y-1", children:
|
|
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
|
-
|
|
26
|
-
/* @__PURE__ */ e("span", { className: "shrink-0", children:
|
|
27
|
-
|
|
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
|
-
|
|
30
|
+
i.label
|
|
31
31
|
)) });
|
|
32
32
|
}
|
|
33
33
|
function L({
|
|
34
|
-
icon:
|
|
35
|
-
title:
|
|
34
|
+
icon: l,
|
|
35
|
+
title: i,
|
|
36
36
|
note: r,
|
|
37
|
-
ok:
|
|
38
|
-
showDot:
|
|
39
|
-
control:
|
|
40
|
-
open:
|
|
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__ */
|
|
45
|
-
/* @__PURE__ */
|
|
46
|
-
/* @__PURE__ */
|
|
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":
|
|
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:
|
|
55
|
-
/* @__PURE__ */
|
|
56
|
-
/* @__PURE__ */
|
|
57
|
-
/* @__PURE__ */ e("span", { className: "truncate text-sm font-medium", children:
|
|
58
|
-
|
|
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
|
-
|
|
67
|
+
m && "rotate-180"
|
|
68
68
|
)
|
|
69
69
|
}
|
|
70
70
|
)
|
|
71
71
|
]
|
|
72
72
|
}
|
|
73
73
|
),
|
|
74
|
-
|
|
74
|
+
h
|
|
75
75
|
] }),
|
|
76
|
-
|
|
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:
|
|
81
|
-
onConnect:
|
|
80
|
+
provider: l,
|
|
81
|
+
onConnect: i,
|
|
82
82
|
onDisconnect: r
|
|
83
83
|
}) {
|
|
84
|
-
return /* @__PURE__ */
|
|
85
|
-
/* @__PURE__ */
|
|
86
|
-
/* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children:
|
|
87
|
-
|
|
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
|
-
|
|
89
|
+
l.connected ? /* @__PURE__ */ s(O, { children: [
|
|
90
90
|
/* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
|
|
91
|
-
|
|
91
|
+
l.fromEnv ? null : /* @__PURE__ */ e(
|
|
92
92
|
"button",
|
|
93
93
|
{
|
|
94
94
|
type: "button",
|
|
95
|
-
onClick: () => r(
|
|
96
|
-
title: `Disconnect ${
|
|
97
|
-
"aria-label": `Disconnect ${
|
|
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__ */
|
|
103
|
-
|
|
104
|
-
|
|
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:
|
|
110
|
-
agents:
|
|
109
|
+
setupChecks: l,
|
|
110
|
+
agents: i,
|
|
111
111
|
onVisibleChange: r,
|
|
112
|
-
onSetup:
|
|
113
|
-
onLogin:
|
|
114
|
-
onAddClaudeAccount:
|
|
115
|
-
onRemoveClaudeAccount:
|
|
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((
|
|
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__ */
|
|
137
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
-
|
|
154
|
-
|
|
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((
|
|
166
|
-
/* @__PURE__ */
|
|
167
|
-
|
|
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__ */
|
|
185
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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:
|
|
203
|
-
const
|
|
204
|
-
return /* @__PURE__ */
|
|
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(
|
|
210
|
-
|
|
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: (
|
|
219
|
-
if (
|
|
222
|
+
onCheckedChange: (t) => {
|
|
223
|
+
if (t && !a.configured) {
|
|
220
224
|
C(`agent:${n.key}`);
|
|
221
225
|
return;
|
|
222
226
|
}
|
|
223
|
-
r(n.key,
|
|
227
|
+
r(n.key, t);
|
|
224
228
|
},
|
|
225
229
|
"aria-label": `${n.label} visible in composer`
|
|
226
230
|
}
|
|
227
231
|
),
|
|
228
232
|
children: [
|
|
229
|
-
|
|
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__ */
|
|
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:
|
|
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__ */
|
|
239
|
-
/* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children:
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
248
|
+
t.connected ? /* @__PURE__ */ s(O, { children: [
|
|
244
249
|
/* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
|
|
245
|
-
|
|
250
|
+
t.fromEnv ? null : /* @__PURE__ */ e(
|
|
246
251
|
"button",
|
|
247
252
|
{
|
|
248
253
|
type: "button",
|
|
249
|
-
onClick: () =>
|
|
250
|
-
title: `Sign in to ${
|
|
251
|
-
"aria-label": `Sign in to ${
|
|
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__ */
|
|
257
|
-
|
|
261
|
+
] }) : /* @__PURE__ */ s(
|
|
262
|
+
u,
|
|
258
263
|
{
|
|
259
264
|
size: "sm",
|
|
260
265
|
variant: "outline",
|
|
261
|
-
onClick: () =>
|
|
266
|
+
onClick: () => c(n.key, t.id),
|
|
262
267
|
children: [
|
|
263
|
-
/* @__PURE__ */ e(
|
|
264
|
-
|
|
268
|
+
/* @__PURE__ */ e(f, { className: "size-3.5" }),
|
|
269
|
+
t.needsReconnect ? "Reconnect" : "Connect"
|
|
265
270
|
]
|
|
266
271
|
}
|
|
267
272
|
),
|
|
268
|
-
|
|
273
|
+
t.removable ? /* @__PURE__ */ e(
|
|
269
274
|
"button",
|
|
270
275
|
{
|
|
271
276
|
type: "button",
|
|
272
|
-
onClick: () =>
|
|
273
|
-
title: `Remove ${
|
|
274
|
-
"aria-label": `Remove ${
|
|
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
|
-
|
|
286
|
+
t.id
|
|
282
287
|
)) }) : null,
|
|
283
|
-
k.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: k.map((
|
|
288
|
+
k.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: k.map((t) => /* @__PURE__ */ e(
|
|
284
289
|
te,
|
|
285
290
|
{
|
|
286
|
-
provider:
|
|
291
|
+
provider: t,
|
|
287
292
|
onConnect: (N) => {
|
|
288
293
|
if (n.key === "jcode" && w) {
|
|
289
|
-
|
|
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
|
-
|
|
301
|
+
t.id
|
|
297
302
|
)) }) : null,
|
|
298
|
-
/* @__PURE__ */
|
|
299
|
-
|
|
300
|
-
|
|
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:
|
|
305
|
-
onClick: () =>
|
|
309
|
+
disabled: a.setupRunning,
|
|
310
|
+
onClick: () => d(n.key),
|
|
306
311
|
title: "Run setup for this agent",
|
|
307
312
|
children: [
|
|
308
|
-
|
|
309
|
-
|
|
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
|
-
|
|
314
|
-
|
|
318
|
+
o.length && q ? /* @__PURE__ */ s(
|
|
319
|
+
u,
|
|
315
320
|
{
|
|
316
321
|
size: "sm",
|
|
317
322
|
variant: "outline",
|
|
318
|
-
disabled:
|
|
319
|
-
onClick: () =>
|
|
323
|
+
disabled: a.setupRunning,
|
|
324
|
+
onClick: () => h(),
|
|
320
325
|
title: "Add another Claude account",
|
|
321
326
|
children: [
|
|
322
|
-
/* @__PURE__ */ e(
|
|
327
|
+
/* @__PURE__ */ e(f, { className: "size-4" }),
|
|
323
328
|
"Add account"
|
|
324
329
|
]
|
|
325
330
|
}
|
|
326
331
|
) : null,
|
|
327
|
-
|
|
328
|
-
|
|
332
|
+
a.canLoginInTerminal && !H ? /* @__PURE__ */ s(
|
|
333
|
+
u,
|
|
329
334
|
{
|
|
330
335
|
size: "sm",
|
|
331
336
|
variant: "outline",
|
|
332
|
-
disabled:
|
|
333
|
-
onClick: () =>
|
|
334
|
-
title: n.key === "aisdk" &&
|
|
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(
|
|
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-
|
|
4
|
-
import { K as Rn } from "./keyboard-
|
|
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
|
*
|