@omg-dev/app 0.2.20 → 0.2.22
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-BohAg8Um.js → ChangelogPage-l-UlKe1t.js} +74 -1
- package/dist-lib/{SessionFilesPanel-DktXrSTs.js → SessionFilesPanel-CIACL6m9.js} +1 -1
- package/dist-lib/{TermView-rm8onW7t.js → TermView-DRG91TBB.js} +1 -1
- package/dist-lib/{chat-engine-Cx-Cq2vI.js → chat-engine-BaoFBnjm.js} +1 -1
- package/dist-lib/coding-agents-page-BgaSJ48j.js +329 -0
- package/dist-lib/{embedded-fYVkvd7A.js → embedded-Dg1UH3AQ.js} +3267 -3248
- package/dist-lib/{highlighted-body-OFNGDK62-BoAuuZR4.js → highlighted-body-OFNGDK62-Bcdmy8xK.js} +1 -1
- package/dist-lib/{index-BnJITiuM.js → index-uXIZsv3_.js} +1 -1
- package/dist-lib/index.js +1 -1
- package/dist-lib/mermaid-GHXKKRXX-sJaUMvbY.js +4 -0
- package/dist-lib/{resume-session-sheet-Drb_ZIBL.js → resume-session-sheet-ABKL_UJZ.js} +9 -9
- package/dist-lib/{session-token-usage-C_WDz8xn.js → session-token-usage-BpE02cRH.js} +1 -1
- package/dist-lib/{shipped-page-B7XoI1In.js → shipped-page-DvL-9270.js} +13 -13
- package/dist-lib/{streamdown-response-gONFDL8V.js → streamdown-response-9boPsbKB.js} +4 -4
- package/dist-lib/styles.css +1 -1
- package/package.json +2 -2
- package/dist-lib/coding-agents-page-DGsPxBfZ.js +0 -288
- package/dist-lib/mermaid-GHXKKRXX-Du3eD6Dj.js +0 -4
|
@@ -1,9 +1,82 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { M as n } from "./embedded-
|
|
2
|
+
import { M as n } from "./embedded-Dg1UH3AQ.js";
|
|
3
3
|
const t = `# Changelog
|
|
4
4
|
|
|
5
5
|
Recent product updates and deployment notes.
|
|
6
6
|
|
|
7
|
+
## August 21, 2026 - One \`omg\` for computer setup and create / deploy (v0.2.22)
|
|
8
|
+
|
|
9
|
+
- **\`@omg-dev/cli\` 0.5.1 keeps one public \`omg\` binary.** \`0.5.0\` rejected
|
|
10
|
+
\`create\` / \`deploy\` / \`login\` after it replaced the vibes 0.4.42 line.
|
|
11
|
+
\`@omg-dev/apps\` was never published, so a fresh \`npm i -g @omg-dev/cli\`
|
|
12
|
+
lost those verbs. This version starts the hosted app flow again on the
|
|
13
|
+
same command.
|
|
14
|
+
- **\`omg computer setup\` is still the local control plane.** It still
|
|
15
|
+
installs this repository's runtime and still opens
|
|
16
|
+
http://localhost:8766. You still bring your own agent accounts. omg.dev
|
|
17
|
+
does not resell tokens.
|
|
18
|
+
- **\`omg create\`, \`omg deploy\`, and \`omg login\` start the last published
|
|
19
|
+
hosted app CLI (\`@omg-dev/cli@0.4.42\`).** The user does not type a second
|
|
20
|
+
command. A maintainer can point \`OMG_APPS_BIN\` at another runner, or put
|
|
21
|
+
\`omg-apps\` on PATH after \`@omg-dev/apps\` is published.
|
|
22
|
+
- **The published \`@omg-dev\` package tarballs match the release tag again.**
|
|
23
|
+
\`v0.2.21\` attached tarballs that were stamped \`0.2.20\`, because that
|
|
24
|
+
release was built from a branch whose version was not bumped. A host that
|
|
25
|
+
pins \`omg-dev-app-<tag>.tgz\` could not install from it. This release ships
|
|
26
|
+
\`0.2.22\` tarballs under the \`v0.2.22\` tag. The runtime code is the same as
|
|
27
|
+
\`v0.2.21\`.
|
|
28
|
+
|
|
29
|
+
## August 20, 2026 - jcode Claude and Codex login in the UI
|
|
30
|
+
|
|
31
|
+
- **jcode Claude and Codex sign-in now uses the same in-app login as the
|
|
32
|
+
other providers.** The jcode row in Settings lists Claude and Codex.
|
|
33
|
+
Connect opens the existing browser login dialog. It does not send you to
|
|
34
|
+
a terminal-only \`jcode login\` picker.
|
|
35
|
+
- **The real Codex flag is \`--provider openai\`.** There is no
|
|
36
|
+
\`--provider codex\`. Claude is \`jcode login --provider claude\`. The UI
|
|
37
|
+
starts those with \`--print-auth-url --json\`, then finishes with
|
|
38
|
+
\`--auth-code\` or \`--callback-url\`. After that, a jcode session can run
|
|
39
|
+
with the signed-in provider, the same way other signed-in harnesses do.
|
|
40
|
+
- omg.dev still drives the jcode CLI you already own. It does not resell
|
|
41
|
+
tokens.
|
|
42
|
+
- **When jcode is not installed, Connect starts setup instead of the login
|
|
43
|
+
dialog.** The jcode row shows only the missing CLI check. Helper text is
|
|
44
|
+
"Connect Claude or Codex above." The dialog title says Claude or Codex
|
|
45
|
+
once the CLI is present.
|
|
46
|
+
|
|
47
|
+
## August 20, 2026 - Coding agent toggles follow readiness
|
|
48
|
+
|
|
49
|
+
- **A coding agent is on only when it can run.** The Settings list used to
|
|
50
|
+
default every toggle on, even when the CLI was missing or no account was
|
|
51
|
+
connected. A fresh box now shows those agents off, with one word:
|
|
52
|
+
Install or Connect. A ready agent stays on. An agent you turned off stays
|
|
53
|
+
off.
|
|
54
|
+
- Turning an unready agent on no longer enables it. The row opens to the
|
|
55
|
+
missing action instead.
|
|
56
|
+
- The expanded row no longer repeats the failure, dumps install commands, or
|
|
57
|
+
labels OMG tools. Provider Connect rows and a single Install or Login
|
|
58
|
+
control stay.
|
|
59
|
+
|
|
60
|
+
## August 20, 2026 - Move an existing schedule onto a bot
|
|
61
|
+
|
|
62
|
+
- **An auto agent could not be handed to a bot.** A bot-owned routine could
|
|
63
|
+
only be created by the bot itself, from scratch. Moving one of the existing
|
|
64
|
+
schedules to a bot meant retyping its whole prompt and losing its id, run
|
|
65
|
+
history and findings. You can now reassign an existing schedule in place:
|
|
66
|
+
\`lfg agents auto assign <id> --bot <botId>\`, and \`--user\` moves it back to
|
|
67
|
+
the headless runner.
|
|
68
|
+
- \`lfg agents auto list\` and \`show\` now name each schedule's owner. A
|
|
69
|
+
bot-owned routine produces no findings, because its results go to that
|
|
70
|
+
bot's conversation instead, so this is the difference between quiet
|
|
71
|
+
because healthy and quiet because nobody is watching the right surface.
|
|
72
|
+
- The per-bot routine cap, the frequency ceiling, and the check that the
|
|
73
|
+
target bot exists and is enabled now apply to any schedule that ends up
|
|
74
|
+
bot-owned, not only to ones a bot created. Re-saving a routine the bot
|
|
75
|
+
already owns no longer trips its own cap.
|
|
76
|
+
- Documented which of the existing auto agents can move to which existing
|
|
77
|
+
bot, and which should stay headless, in
|
|
78
|
+
\`docs/bot-owned-automations-plan.md\`.
|
|
79
|
+
|
|
7
80
|
## August 20, 2026 - A new account saw no onboarding steps at all (v0.2.20)
|
|
8
81
|
|
|
9
82
|
- **A brand new hosted account landed on an empty home screen.** After
|
|
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as i, 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 I } from "react";
|
|
3
3
|
import { createPortal as re } from "react-dom";
|
|
4
4
|
import { cn as y } from "cnfast";
|
|
5
|
-
import { y as oe, z as H, F as se, X as U, E as ie, H as ae, L as J, I as le,
|
|
5
|
+
import { y as oe, z as H, F as se, X as U, E as ie, H as ae, L as J, I as le, x as de, C as ce, J as L } from "./embedded-Dg1UH3AQ.js";
|
|
6
6
|
import { c as me } from "./create-BrnHvSDE.js";
|
|
7
7
|
/**
|
|
8
8
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as r, jsx as k, Fragment as ZA } from "react/jsx-runtime";
|
|
2
2
|
import { useState as L, useRef as S, useEffect as x, useCallback as Y } from "react";
|
|
3
|
-
import { y as cA,
|
|
3
|
+
import { y as cA, n as wQ, X as DA, a7 as sQ, x as tQ, a8 as eQ, a9 as aQ, z as MQ, aa as hQ, R as NQ, C as cQ } from "./embedded-Dg1UH3AQ.js";
|
|
4
4
|
/**
|
|
5
5
|
* @license lucide-react v0.577.0 - ISC
|
|
6
6
|
*
|
|
@@ -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 { ab as uo } from "./embedded-
|
|
4
|
+
import { ab as uo } from "./embedded-Dg1UH3AQ.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.
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import { jsxs as s, jsx as n, Fragment as E } from "react/jsx-runtime";
|
|
2
|
+
import { R, B as d, L as w, m as $, n as S, o as A, p as h, T as L, q as j, s as G, u as H, v as I, w as M, x as U, X as W, K as X } from "./embedded-Dg1UH3AQ.js";
|
|
3
|
+
import { cn as B } from "cnfast";
|
|
4
|
+
import { useState as T } from "react";
|
|
5
|
+
function P(t) {
|
|
6
|
+
return /CLI$|runtime$/i.test(t);
|
|
7
|
+
}
|
|
8
|
+
function J(t) {
|
|
9
|
+
return t.some((l) => P(l.label) && !l.ok);
|
|
10
|
+
}
|
|
11
|
+
function Q(t) {
|
|
12
|
+
const l = t.filter((r) => !r.ok);
|
|
13
|
+
return l.length ? l.some((r) => P(r.label)) ? "Install" : "Connect" : null;
|
|
14
|
+
}
|
|
15
|
+
function V(t) {
|
|
16
|
+
const l = t.filter((r) => !r.ok);
|
|
17
|
+
return l.length ? l.length === 1 ? `${l[0].label} missing` : `${l.length} checks failing` : null;
|
|
18
|
+
}
|
|
19
|
+
function Y({ checks: t }) {
|
|
20
|
+
return /* @__PURE__ */ n("div", { className: "space-y-1", children: t.map((l) => /* @__PURE__ */ s(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
className: "flex min-w-0 items-center gap-1.5 text-xs text-muted-foreground",
|
|
24
|
+
children: [
|
|
25
|
+
l.ok ? /* @__PURE__ */ n(U, { className: "size-3.5 shrink-0 text-success" }) : /* @__PURE__ */ n(W, { className: "size-3.5 shrink-0 text-destructive" }),
|
|
26
|
+
/* @__PURE__ */ n("span", { className: "shrink-0", children: l.label }),
|
|
27
|
+
l.detail ? /* @__PURE__ */ n("span", { className: "min-w-0 truncate text-muted-foreground/70", children: l.detail }) : null
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
l.label
|
|
31
|
+
)) });
|
|
32
|
+
}
|
|
33
|
+
function D({
|
|
34
|
+
icon: t,
|
|
35
|
+
title: l,
|
|
36
|
+
note: r,
|
|
37
|
+
ok: m,
|
|
38
|
+
showDot: o = !0,
|
|
39
|
+
control: f,
|
|
40
|
+
open: u,
|
|
41
|
+
onToggle: b,
|
|
42
|
+
children: x
|
|
43
|
+
}) {
|
|
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
|
+
"button",
|
|
48
|
+
{
|
|
49
|
+
type: "button",
|
|
50
|
+
onClick: b,
|
|
51
|
+
"aria-expanded": u,
|
|
52
|
+
className: "flex min-w-0 flex-1 items-center gap-3 text-left",
|
|
53
|
+
children: [
|
|
54
|
+
/* @__PURE__ */ n("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-[8px] border border-border bg-background", children: t }),
|
|
55
|
+
/* @__PURE__ */ s("span", { className: "min-w-0 flex-1", children: [
|
|
56
|
+
/* @__PURE__ */ s("span", { className: "flex items-center gap-2", children: [
|
|
57
|
+
/* @__PURE__ */ n("span", { className: "truncate text-sm font-medium", children: l }),
|
|
58
|
+
o && !m ? /* @__PURE__ */ n("span", { className: "size-1.5 shrink-0 rounded-full bg-destructive", "aria-hidden": !0 }) : null
|
|
59
|
+
] }),
|
|
60
|
+
r ? /* @__PURE__ */ n("span", { className: "block truncate text-xs text-muted-foreground", children: r }) : null
|
|
61
|
+
] }),
|
|
62
|
+
/* @__PURE__ */ n(
|
|
63
|
+
M,
|
|
64
|
+
{
|
|
65
|
+
className: B(
|
|
66
|
+
"size-4 shrink-0 text-muted-foreground/60 transition-transform duration-150",
|
|
67
|
+
u && "rotate-180"
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
f
|
|
75
|
+
] }),
|
|
76
|
+
u ? /* @__PURE__ */ n("div", { className: "mt-3 space-y-3 pl-11", children: x }) : null
|
|
77
|
+
] });
|
|
78
|
+
}
|
|
79
|
+
function Z({
|
|
80
|
+
provider: t,
|
|
81
|
+
onConnect: l,
|
|
82
|
+
onDisconnect: r
|
|
83
|
+
}) {
|
|
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__ */ n("span", { className: "block truncate text-xs font-medium", children: t.label }),
|
|
87
|
+
t.detail || t.fromEnv ? /* @__PURE__ */ n("span", { className: "block truncate text-[11px] text-muted-foreground", children: t.detail ?? "From the environment" }) : null
|
|
88
|
+
] }),
|
|
89
|
+
t.connected ? /* @__PURE__ */ s(E, { children: [
|
|
90
|
+
/* @__PURE__ */ n("span", { className: "text-[11px] text-success", children: "Connected" }),
|
|
91
|
+
t.fromEnv ? null : /* @__PURE__ */ n(
|
|
92
|
+
"button",
|
|
93
|
+
{
|
|
94
|
+
type: "button",
|
|
95
|
+
onClick: () => r(t),
|
|
96
|
+
title: `Disconnect ${t.label}`,
|
|
97
|
+
"aria-label": `Disconnect ${t.label}`,
|
|
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__ */ n(L, { className: "size-3.5" })
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
] }) : /* @__PURE__ */ s(d, { size: "sm", variant: "outline", onClick: () => l(t), children: [
|
|
103
|
+
t.method === "oauth" ? /* @__PURE__ */ n(h, { className: "size-3.5" }) : /* @__PURE__ */ n(X, { className: "size-3.5" }),
|
|
104
|
+
"Connect"
|
|
105
|
+
] })
|
|
106
|
+
] });
|
|
107
|
+
}
|
|
108
|
+
function le({
|
|
109
|
+
setupChecks: t,
|
|
110
|
+
agents: l,
|
|
111
|
+
onVisibleChange: r,
|
|
112
|
+
onSetup: m,
|
|
113
|
+
onLogin: o,
|
|
114
|
+
onAddClaudeAccount: f,
|
|
115
|
+
onRemoveClaudeAccount: u,
|
|
116
|
+
onConnectProvider: b,
|
|
117
|
+
onDisconnectProvider: x,
|
|
118
|
+
onSetupCheck: K,
|
|
119
|
+
onRefresh: O
|
|
120
|
+
}) {
|
|
121
|
+
const [g, N] = T(!1), [y, v] = T(null), z = (e) => v((a) => a === e ? null : e);
|
|
122
|
+
async function q() {
|
|
123
|
+
if (!g) {
|
|
124
|
+
N(!0);
|
|
125
|
+
try {
|
|
126
|
+
await O(), I.success("Coding agents refreshed");
|
|
127
|
+
} catch (e) {
|
|
128
|
+
I.error(e instanceof Error ? e.message : "Could not refresh coding agents");
|
|
129
|
+
} finally {
|
|
130
|
+
N(!1);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return /* @__PURE__ */ s("div", { className: "mx-auto max-w-xl space-y-3 pb-10", "data-lfg-page-column": !0, children: [
|
|
135
|
+
/* @__PURE__ */ s("div", { className: "flex items-center justify-between px-4", children: [
|
|
136
|
+
/* @__PURE__ */ n("h2", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Coding agents" }),
|
|
137
|
+
/* @__PURE__ */ s(
|
|
138
|
+
"button",
|
|
139
|
+
{
|
|
140
|
+
type: "button",
|
|
141
|
+
onClick: () => void q(),
|
|
142
|
+
disabled: g,
|
|
143
|
+
className: "flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50",
|
|
144
|
+
children: [
|
|
145
|
+
/* @__PURE__ */ n(R, { className: B("size-3.5", g && "animate-spin") }),
|
|
146
|
+
"Refresh"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
] }),
|
|
151
|
+
t.length ? /* @__PURE__ */ n("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: t.map((e) => /* @__PURE__ */ s(
|
|
152
|
+
D,
|
|
153
|
+
{
|
|
154
|
+
icon: /* @__PURE__ */ n(S, { className: "size-4 text-muted-foreground" }),
|
|
155
|
+
title: e.label,
|
|
156
|
+
note: V(e.checks),
|
|
157
|
+
ok: e.configured,
|
|
158
|
+
open: y === `setup:${e.key}`,
|
|
159
|
+
onToggle: () => z(`setup:${e.key}`),
|
|
160
|
+
children: [
|
|
161
|
+
/* @__PURE__ */ n(Y, { checks: e.checks }),
|
|
162
|
+
e.instructions.map((a) => /* @__PURE__ */ n("p", { className: "text-xs text-muted-foreground", children: a }, a)),
|
|
163
|
+
/* @__PURE__ */ s(
|
|
164
|
+
d,
|
|
165
|
+
{
|
|
166
|
+
size: "sm",
|
|
167
|
+
variant: "outline",
|
|
168
|
+
disabled: !e.canAutoSetup || e.running,
|
|
169
|
+
onClick: () => K(e.key),
|
|
170
|
+
title: e.canAutoSetup ? e.actionLabel : "Install a supported coding agent first",
|
|
171
|
+
children: [
|
|
172
|
+
e.running ? /* @__PURE__ */ n(w, { className: "size-4 animate-spin" }) : /* @__PURE__ */ n($, { className: "size-4" }),
|
|
173
|
+
e.running ? "Running…" : e.actionLabel
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
e.key
|
|
180
|
+
)) }) : null,
|
|
181
|
+
/* @__PURE__ */ n("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: l.map((e) => {
|
|
182
|
+
const a = e.status, c = e.key === "aisdk" ? a.accounts ?? [] : [], p = a.providers ?? [], F = c.some((i) => i.connected), _ = c.length > 0 || p.length > 0, C = J(a.checks);
|
|
183
|
+
return /* @__PURE__ */ s(
|
|
184
|
+
D,
|
|
185
|
+
{
|
|
186
|
+
icon: /* @__PURE__ */ n("img", { src: A(e.key), alt: H(e.key), className: "size-5" }),
|
|
187
|
+
title: e.label,
|
|
188
|
+
note: Q(a.checks),
|
|
189
|
+
ok: a.configured,
|
|
190
|
+
showDot: !1,
|
|
191
|
+
open: y === `agent:${e.key}`,
|
|
192
|
+
onToggle: () => z(`agent:${e.key}`),
|
|
193
|
+
control: /* @__PURE__ */ n(
|
|
194
|
+
G,
|
|
195
|
+
{
|
|
196
|
+
checked: e.visible,
|
|
197
|
+
onCheckedChange: (i) => {
|
|
198
|
+
if (i && !a.configured) {
|
|
199
|
+
v(`agent:${e.key}`);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
r(e.key, i);
|
|
203
|
+
},
|
|
204
|
+
"aria-label": `${e.label} visible in composer`
|
|
205
|
+
}
|
|
206
|
+
),
|
|
207
|
+
children: [
|
|
208
|
+
c.length ? /* @__PURE__ */ n("div", { className: "space-y-1.5", children: c.map((i) => /* @__PURE__ */ s(
|
|
209
|
+
"div",
|
|
210
|
+
{
|
|
211
|
+
className: "flex items-center gap-2 rounded-xl border border-border/70 bg-background/55 px-2.5 py-2",
|
|
212
|
+
children: [
|
|
213
|
+
/* @__PURE__ */ s("span", { className: "relative flex size-7 shrink-0 items-center justify-center rounded-full bg-muted", children: [
|
|
214
|
+
/* @__PURE__ */ n("img", { src: A("aisdk"), alt: "", className: "size-4.5" }),
|
|
215
|
+
/* @__PURE__ */ n("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: i.number })
|
|
216
|
+
] }),
|
|
217
|
+
/* @__PURE__ */ s("span", { className: "min-w-0 flex-1", children: [
|
|
218
|
+
/* @__PURE__ */ n("span", { className: "block truncate text-xs font-medium", children: i.label }),
|
|
219
|
+
i.needsReconnect ? /* @__PURE__ */ n("span", { className: "block truncate text-[11px] text-destructive", children: "Sign-in expired" }) : null
|
|
220
|
+
] }),
|
|
221
|
+
i.connected ? /* @__PURE__ */ s(E, { children: [
|
|
222
|
+
/* @__PURE__ */ n("span", { className: "text-[11px] text-success", children: "Connected" }),
|
|
223
|
+
/* @__PURE__ */ n(
|
|
224
|
+
"button",
|
|
225
|
+
{
|
|
226
|
+
type: "button",
|
|
227
|
+
onClick: () => o(e.key, i.id),
|
|
228
|
+
title: `Sign in to ${i.label} again`,
|
|
229
|
+
"aria-label": `Sign in to ${i.label} again`,
|
|
230
|
+
className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-muted hover:text-foreground",
|
|
231
|
+
children: /* @__PURE__ */ n(R, { className: "size-3.5" })
|
|
232
|
+
}
|
|
233
|
+
)
|
|
234
|
+
] }) : /* @__PURE__ */ s(
|
|
235
|
+
d,
|
|
236
|
+
{
|
|
237
|
+
size: "sm",
|
|
238
|
+
variant: "outline",
|
|
239
|
+
onClick: () => o(e.key, i.id),
|
|
240
|
+
children: [
|
|
241
|
+
/* @__PURE__ */ n(h, { className: "size-3.5" }),
|
|
242
|
+
i.needsReconnect ? "Reconnect" : "Connect"
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
),
|
|
246
|
+
i.removable ? /* @__PURE__ */ n(
|
|
247
|
+
"button",
|
|
248
|
+
{
|
|
249
|
+
type: "button",
|
|
250
|
+
onClick: () => u(i),
|
|
251
|
+
title: `Remove ${i.label}`,
|
|
252
|
+
"aria-label": `Remove ${i.label}`,
|
|
253
|
+
className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive",
|
|
254
|
+
children: /* @__PURE__ */ n(L, { className: "size-3.5" })
|
|
255
|
+
}
|
|
256
|
+
) : null
|
|
257
|
+
]
|
|
258
|
+
},
|
|
259
|
+
i.id
|
|
260
|
+
)) }) : null,
|
|
261
|
+
p.length ? /* @__PURE__ */ n("div", { className: "space-y-1.5", children: p.map((i) => /* @__PURE__ */ n(
|
|
262
|
+
Z,
|
|
263
|
+
{
|
|
264
|
+
provider: i,
|
|
265
|
+
onConnect: (k) => {
|
|
266
|
+
if (e.key === "jcode" && C) {
|
|
267
|
+
m(e.key);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
b(e.key, k);
|
|
271
|
+
},
|
|
272
|
+
onDisconnect: (k) => x(e.key, k)
|
|
273
|
+
},
|
|
274
|
+
i.id
|
|
275
|
+
)) }) : null,
|
|
276
|
+
/* @__PURE__ */ s("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
277
|
+
a.canAutoSetup && C ? /* @__PURE__ */ s(
|
|
278
|
+
d,
|
|
279
|
+
{
|
|
280
|
+
size: "sm",
|
|
281
|
+
variant: "outline",
|
|
282
|
+
disabled: a.setupRunning,
|
|
283
|
+
onClick: () => m(e.key),
|
|
284
|
+
title: "Run setup for this agent",
|
|
285
|
+
children: [
|
|
286
|
+
a.setupRunning ? /* @__PURE__ */ n(w, { className: "size-4 animate-spin" }) : /* @__PURE__ */ n($, { className: "size-4" }),
|
|
287
|
+
a.setupRunning ? "Running…" : "Install"
|
|
288
|
+
]
|
|
289
|
+
}
|
|
290
|
+
) : null,
|
|
291
|
+
c.length && F ? /* @__PURE__ */ s(
|
|
292
|
+
d,
|
|
293
|
+
{
|
|
294
|
+
size: "sm",
|
|
295
|
+
variant: "outline",
|
|
296
|
+
disabled: a.setupRunning,
|
|
297
|
+
onClick: () => f(),
|
|
298
|
+
title: "Add another Claude account",
|
|
299
|
+
children: [
|
|
300
|
+
/* @__PURE__ */ n(h, { className: "size-4" }),
|
|
301
|
+
"Add account"
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
) : null,
|
|
305
|
+
a.canLoginInTerminal && !_ ? /* @__PURE__ */ s(
|
|
306
|
+
d,
|
|
307
|
+
{
|
|
308
|
+
size: "sm",
|
|
309
|
+
variant: "outline",
|
|
310
|
+
disabled: a.setupRunning,
|
|
311
|
+
onClick: () => o(e.key),
|
|
312
|
+
title: e.key === "aisdk" && c.length ? "Add another Claude account" : j.has(e.key) ? `Sign in to ${e.label} in your browser` : `Open terminal and run ${a.loginCommand}`,
|
|
313
|
+
children: [
|
|
314
|
+
j.has(e.key) ? /* @__PURE__ */ n(h, { className: "size-4" }) : /* @__PURE__ */ n(S, { className: "size-4" }),
|
|
315
|
+
"Login"
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
) : null
|
|
319
|
+
] })
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
e.key
|
|
323
|
+
);
|
|
324
|
+
}) })
|
|
325
|
+
] });
|
|
326
|
+
}
|
|
327
|
+
export {
|
|
328
|
+
le as default
|
|
329
|
+
};
|