@omg-dev/app 0.1.379 → 0.1.381

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,33 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { M as n } from "./embedded-DU9yLcqm.js";
2
+ import { M as n } from "./embedded-CBqdeYDX.js";
3
3
  const t = `# Changelog
4
4
 
5
5
  Recent product updates and deployment notes.
6
6
 
7
+ ## August 15, 2026 - One session, one row (v0.1.381)
8
+
9
+ - **A delegated Codex session no longer appears twice in the session list.**
10
+ The per-turn engine process the harness spawns internally was being listed
11
+ as a session of its own, so one conversation showed up as two rows that both
12
+ opened the same transcript.
13
+ - **Delegated sessions are titled by the actual ask.** They were showing
14
+ "=== LFG SUBAGENT OPERATING CONTRACT === - You are an LFG-managed subage…"
15
+ because a subagent prompt carries two nested envelopes and only the outer one
16
+ was being stripped for display.
17
+
18
+ ## August 15, 2026 - Connect OpenCode Go without a terminal (v0.1.380)
19
+
20
+ - **OpenCode's Go plan and Zen now connect with an API key in Settings →
21
+ Coding agents.** Paste the key on the provider row and it is stored with
22
+ OpenCode's own credentials. Previously the only way in was running
23
+ \`opencode auth login\` in a terminal, which a hosted Computer may not have.
24
+ - **The OpenCode row now shows which providers are connected**, including ones
25
+ signed in earlier from the CLI, instead of only reporting that OpenCode is
26
+ signed in somewhere.
27
+ - **Connecting or disconnecting one provider leaves the others untouched**, so
28
+ adding a Go key no longer risks the ChatGPT login \`opencode auth login\`
29
+ wrote.
30
+
7
31
  ## August 15, 2026 - Plans run the agents they advertise (v0.1.378)
8
32
 
9
33
  - **Starter and Starter Plus Computers now run three agents at once**, as their
@@ -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, l as de, x as ce, J as L } from "./embedded-DU9yLcqm.js";
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, l as de, x as ce, J as L } from "./embedded-CBqdeYDX.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, S as wQ, X as DA, a7 as sQ, l as tQ, a8 as eQ, a9 as aQ, z as MQ, aa as hQ, R as NQ, x as cQ } from "./embedded-DU9yLcqm.js";
3
+ import { y as cA, S as wQ, X as DA, a7 as sQ, l as tQ, a8 as eQ, a9 as aQ, z as MQ, aa as hQ, R as NQ, x as cQ } from "./embedded-CBqdeYDX.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-DU9yLcqm.js";
4
+ import { ab as uo } from "./embedded-CBqdeYDX.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,18 +1,18 @@
1
- import { jsxs as t, jsx as e, Fragment as G } from "react/jsx-runtime";
2
- import { R as K, B as d, L as C, P as z, S as w, f as R, g as p, T as L, h as m, i as F, j as M, k as $, C as _, l as q, X as H, K as U } from "./embedded-DU9yLcqm.js";
3
- import { cn as T } from "cnfast";
4
- import { useState as S } from "react";
5
- function j(l) {
6
- const i = l.filter((r) => !r.ok);
1
+ import { jsxs as t, jsx as e, Fragment as K } from "react/jsx-runtime";
2
+ import { R as F, B as d, L as z, P as w, S as R, f as $, g, T, h as m, i as M, j as _, k as S, C as q, l as H, X as U, K as W } from "./embedded-CBqdeYDX.js";
3
+ import { cn as E } from "cnfast";
4
+ import { useState as A } from "react";
5
+ function j(a) {
6
+ const i = a.filter((r) => !r.ok);
7
7
  return i.length ? i.length === 1 ? `${i[0].label} missing` : `${i.length} checks failing` : null;
8
8
  }
9
- function A({ checks: l }) {
10
- return /* @__PURE__ */ e("div", { className: "space-y-1", children: l.map((i) => /* @__PURE__ */ t(
9
+ function I({ checks: a }) {
10
+ return /* @__PURE__ */ e("div", { className: "space-y-1", children: a.map((i) => /* @__PURE__ */ t(
11
11
  "div",
12
12
  {
13
13
  className: "flex min-w-0 items-center gap-1.5 text-xs text-muted-foreground",
14
14
  children: [
15
- i.ok ? /* @__PURE__ */ e(q, { className: "size-3.5 shrink-0 text-success" }) : /* @__PURE__ */ e(H, { className: "size-3.5 shrink-0 text-destructive" }),
15
+ i.ok ? /* @__PURE__ */ e(H, { className: "size-3.5 shrink-0 text-success" }) : /* @__PURE__ */ e(U, { className: "size-3.5 shrink-0 text-destructive" }),
16
16
  /* @__PURE__ */ e("span", { className: "shrink-0", children: i.label }),
17
17
  i.detail ? /* @__PURE__ */ e("span", { className: "min-w-0 truncate text-muted-foreground/70", children: i.detail }) : null
18
18
  ]
@@ -20,8 +20,8 @@ function A({ checks: l }) {
20
20
  i.label
21
21
  )) });
22
22
  }
23
- function I({
24
- icon: l,
23
+ function L({
24
+ icon: a,
25
25
  title: i,
26
26
  note: r,
27
27
  ok: u,
@@ -40,7 +40,7 @@ function I({
40
40
  "aria-expanded": c,
41
41
  className: "flex min-w-0 flex-1 items-center gap-3 text-left",
42
42
  children: [
43
- /* @__PURE__ */ e("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-[8px] border border-border bg-background", children: l }),
43
+ /* @__PURE__ */ e("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-[8px] border border-border bg-background", children: a }),
44
44
  /* @__PURE__ */ t("span", { className: "min-w-0 flex-1", children: [
45
45
  /* @__PURE__ */ t("span", { className: "flex items-center gap-2", children: [
46
46
  /* @__PURE__ */ e("span", { className: "truncate text-sm font-medium", children: i }),
@@ -49,9 +49,9 @@ function I({
49
49
  r ? /* @__PURE__ */ e("span", { className: "block truncate text-xs text-muted-foreground", children: r }) : null
50
50
  ] }),
51
51
  /* @__PURE__ */ e(
52
- _,
52
+ q,
53
53
  {
54
- className: T(
54
+ className: E(
55
55
  "size-4 shrink-0 text-muted-foreground/60 transition-transform duration-150",
56
56
  c && "rotate-180"
57
57
  )
@@ -65,58 +65,58 @@ function I({
65
65
  c ? /* @__PURE__ */ e("div", { className: "mt-3 space-y-3 pl-11", children: f }) : null
66
66
  ] });
67
67
  }
68
- function W({
69
- provider: l,
68
+ function X({
69
+ provider: a,
70
70
  onConnect: i,
71
71
  onDisconnect: r
72
72
  }) {
73
73
  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: [
74
74
  /* @__PURE__ */ t("span", { className: "min-w-0 flex-1", children: [
75
- /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: l.label }),
76
- l.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: "From the environment" }) : null
75
+ /* @__PURE__ */ e("span", { className: "block truncate text-xs font-medium", children: a.label }),
76
+ a.detail || a.fromEnv ? /* @__PURE__ */ e("span", { className: "block truncate text-[11px] text-muted-foreground", children: a.detail ?? "From the environment" }) : null
77
77
  ] }),
78
- l.connected ? /* @__PURE__ */ t(G, { children: [
78
+ a.connected ? /* @__PURE__ */ t(K, { children: [
79
79
  /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }),
80
- l.fromEnv ? null : /* @__PURE__ */ e(
80
+ a.fromEnv ? null : /* @__PURE__ */ e(
81
81
  "button",
82
82
  {
83
83
  type: "button",
84
- onClick: () => r(l),
85
- title: `Disconnect ${l.label}`,
86
- "aria-label": `Disconnect ${l.label}`,
84
+ onClick: () => r(a),
85
+ title: `Disconnect ${a.label}`,
86
+ "aria-label": `Disconnect ${a.label}`,
87
87
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive",
88
- children: /* @__PURE__ */ e(L, { className: "size-3.5" })
88
+ children: /* @__PURE__ */ e(T, { className: "size-3.5" })
89
89
  }
90
90
  )
91
- ] }) : /* @__PURE__ */ t(d, { size: "sm", variant: "outline", onClick: () => i(l), children: [
92
- l.method === "oauth" ? /* @__PURE__ */ e(p, { className: "size-3.5" }) : /* @__PURE__ */ e(U, { className: "size-3.5" }),
91
+ ] }) : /* @__PURE__ */ t(d, { size: "sm", variant: "outline", onClick: () => i(a), children: [
92
+ a.method === "oauth" ? /* @__PURE__ */ e(g, { className: "size-3.5" }) : /* @__PURE__ */ e(W, { className: "size-3.5" }),
93
93
  "Connect"
94
94
  ] })
95
95
  ] });
96
96
  }
97
- function Y({
98
- setupChecks: l,
97
+ function Z({
98
+ setupChecks: a,
99
99
  agents: i,
100
100
  onVisibleChange: r,
101
101
  onSetup: u,
102
102
  onLogin: o,
103
103
  onAddClaudeAccount: c,
104
104
  onRemoveClaudeAccount: h,
105
- onConnectPiProvider: f,
106
- onDisconnectPiProvider: E,
107
- onSetupCheck: D,
105
+ onConnectProvider: f,
106
+ onDisconnectProvider: D,
107
+ onSetupCheck: O,
108
108
  onRefresh: P
109
109
  }) {
110
- const [x, g] = S(!1), [N, O] = S(null), k = (n) => O((s) => s === n ? null : n);
111
- async function B() {
110
+ const [x, k] = A(!1), [N, B] = A(null), y = (n) => B((s) => s === n ? null : n);
111
+ async function G() {
112
112
  if (!x) {
113
- g(!0);
113
+ k(!0);
114
114
  try {
115
- await P(), $.success("Coding agents refreshed");
115
+ await P(), S.success("Coding agents refreshed");
116
116
  } catch (n) {
117
- $.error(n instanceof Error ? n.message : "Could not refresh coding agents");
117
+ S.error(n instanceof Error ? n.message : "Could not refresh coding agents");
118
118
  } finally {
119
- g(!1);
119
+ k(!1);
120
120
  }
121
121
  }
122
122
  }
@@ -127,27 +127,27 @@ function Y({
127
127
  "button",
128
128
  {
129
129
  type: "button",
130
- onClick: () => void B(),
130
+ onClick: () => void G(),
131
131
  disabled: x,
132
132
  className: "flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50",
133
133
  children: [
134
- /* @__PURE__ */ e(K, { className: T("size-3.5", x && "animate-spin") }),
134
+ /* @__PURE__ */ e(F, { className: E("size-3.5", x && "animate-spin") }),
135
135
  "Refresh"
136
136
  ]
137
137
  }
138
138
  )
139
139
  ] }),
140
- l.length ? /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: l.map((n) => /* @__PURE__ */ t(
141
- I,
140
+ a.length ? /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: a.map((n) => /* @__PURE__ */ t(
141
+ L,
142
142
  {
143
- icon: /* @__PURE__ */ e(w, { className: "size-4 text-muted-foreground" }),
143
+ icon: /* @__PURE__ */ e(R, { className: "size-4 text-muted-foreground" }),
144
144
  title: n.label,
145
145
  note: j(n.checks),
146
146
  ok: n.configured,
147
147
  open: N === `setup:${n.key}`,
148
- onToggle: () => k(`setup:${n.key}`),
148
+ onToggle: () => y(`setup:${n.key}`),
149
149
  children: [
150
- /* @__PURE__ */ e(A, { checks: n.checks }),
150
+ /* @__PURE__ */ e(I, { checks: n.checks }),
151
151
  n.instructions.map((s) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: s }, s)),
152
152
  /* @__PURE__ */ t(
153
153
  d,
@@ -155,10 +155,10 @@ function Y({
155
155
  size: "sm",
156
156
  variant: "outline",
157
157
  disabled: !n.canAutoSetup || n.running,
158
- onClick: () => D(n.key),
158
+ onClick: () => O(n.key),
159
159
  title: n.canAutoSetup ? n.actionLabel : "Install a supported coding agent first",
160
160
  children: [
161
- n.running ? /* @__PURE__ */ e(C, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(z, { className: "size-4" }),
161
+ n.running ? /* @__PURE__ */ e(z, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(w, { className: "size-4" }),
162
162
  n.running ? "Running…" : n.actionLabel
163
163
  ]
164
164
  }
@@ -168,73 +168,73 @@ function Y({
168
168
  n.key
169
169
  )) }) : null,
170
170
  /* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 divide-y divide-border", children: i.map((n) => {
171
- const s = n.status, b = n.key === "aisdk" ? s.accounts ?? [] : [], y = s.providers ?? [], v = b.some((a) => a.connected);
171
+ const s = n.status, b = n.key === "aisdk" ? s.accounts ?? [] : [], v = s.providers ?? [], C = b.some((l) => l.connected);
172
172
  return /* @__PURE__ */ t(
173
- I,
173
+ L,
174
174
  {
175
- icon: /* @__PURE__ */ e("img", { src: R(n.key), alt: M(n.key), className: "size-5" }),
175
+ icon: /* @__PURE__ */ e("img", { src: $(n.key), alt: _(n.key), className: "size-5" }),
176
176
  title: n.label,
177
177
  note: j(s.checks),
178
178
  ok: s.configured,
179
179
  open: N === `agent:${n.key}`,
180
- onToggle: () => k(`agent:${n.key}`),
180
+ onToggle: () => y(`agent:${n.key}`),
181
181
  control: /* @__PURE__ */ e(
182
- F,
182
+ M,
183
183
  {
184
184
  checked: n.visible,
185
- onCheckedChange: (a) => r(n.key, a),
185
+ onCheckedChange: (l) => r(n.key, l),
186
186
  "aria-label": `${n.label} visible in composer`
187
187
  }
188
188
  ),
189
189
  children: [
190
- /* @__PURE__ */ e(A, { checks: s.checks }),
191
- b.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: b.map((a) => /* @__PURE__ */ t(
190
+ /* @__PURE__ */ e(I, { checks: s.checks }),
191
+ b.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: b.map((l) => /* @__PURE__ */ t(
192
192
  "div",
193
193
  {
194
194
  className: "flex items-center gap-2 rounded-xl border border-border/70 bg-background/55 px-2.5 py-2",
195
195
  children: [
196
196
  /* @__PURE__ */ t("span", { className: "relative flex size-7 shrink-0 items-center justify-center rounded-full bg-muted", children: [
197
- /* @__PURE__ */ e("img", { src: R("aisdk"), alt: "", className: "size-4.5" }),
198
- /* @__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: a.number })
197
+ /* @__PURE__ */ e("img", { src: $("aisdk"), alt: "", className: "size-4.5" }),
198
+ /* @__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 })
199
199
  ] }),
200
- /* @__PURE__ */ e("span", { className: "min-w-0 flex-1 truncate text-xs font-medium", children: a.label }),
201
- a.connected ? /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }) : /* @__PURE__ */ t(
200
+ /* @__PURE__ */ e("span", { className: "min-w-0 flex-1 truncate text-xs font-medium", children: l.label }),
201
+ l.connected ? /* @__PURE__ */ e("span", { className: "text-[11px] text-success", children: "Connected" }) : /* @__PURE__ */ t(
202
202
  d,
203
203
  {
204
204
  size: "sm",
205
205
  variant: "outline",
206
- onClick: () => o(n.key, a.id),
206
+ onClick: () => o(n.key, l.id),
207
207
  children: [
208
- /* @__PURE__ */ e(p, { className: "size-3.5" }),
208
+ /* @__PURE__ */ e(g, { className: "size-3.5" }),
209
209
  "Connect"
210
210
  ]
211
211
  }
212
212
  ),
213
- a.removable ? /* @__PURE__ */ e(
213
+ l.removable ? /* @__PURE__ */ e(
214
214
  "button",
215
215
  {
216
216
  type: "button",
217
- onClick: () => h(a),
218
- title: `Remove ${a.label}`,
219
- "aria-label": `Remove ${a.label}`,
217
+ onClick: () => h(l),
218
+ title: `Remove ${l.label}`,
219
+ "aria-label": `Remove ${l.label}`,
220
220
  className: "flex size-7 items-center justify-center rounded-full text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive",
221
- children: /* @__PURE__ */ e(L, { className: "size-3.5" })
221
+ children: /* @__PURE__ */ e(T, { className: "size-3.5" })
222
222
  }
223
223
  ) : null
224
224
  ]
225
225
  },
226
- a.id
226
+ l.id
227
227
  )) }) : null,
228
- y.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: y.map((a) => /* @__PURE__ */ e(
229
- W,
228
+ v.length ? /* @__PURE__ */ e("div", { className: "space-y-1.5", children: v.map((l) => /* @__PURE__ */ e(
229
+ X,
230
230
  {
231
- provider: a,
232
- onConnect: f,
233
- onDisconnect: E
231
+ provider: l,
232
+ onConnect: (p) => f(n.key, p),
233
+ onDisconnect: (p) => D(n.key, p)
234
234
  },
235
- a.id
235
+ l.id
236
236
  )) }) : null,
237
- s.instructions.map((a) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: a }, a)),
237
+ s.instructions.map((l) => /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground", children: l }, l)),
238
238
  !s.configured && (s.installCommand || s.loginCommand && !m.has(n.key)) ? /* @__PURE__ */ t("div", { className: "space-y-1 text-xs text-muted-foreground", children: [
239
239
  s.installCommand ? /* @__PURE__ */ t("div", { className: "truncate", children: [
240
240
  "Install: ",
@@ -255,7 +255,7 @@ function Y({
255
255
  onClick: () => u(n.key),
256
256
  title: "Run setup for this agent",
257
257
  children: [
258
- s.setupRunning ? /* @__PURE__ */ e(C, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(z, { className: "size-4" }),
258
+ s.setupRunning ? /* @__PURE__ */ e(z, { className: "size-4 animate-spin" }) : /* @__PURE__ */ e(w, { className: "size-4" }),
259
259
  s.setupRunning ? "Running…" : "Install"
260
260
  ]
261
261
  }
@@ -266,11 +266,11 @@ function Y({
266
266
  size: "sm",
267
267
  variant: "outline",
268
268
  disabled: s.setupRunning,
269
- onClick: () => n.key === "aisdk" && v ? c() : o(n.key),
269
+ onClick: () => n.key === "aisdk" && C ? c() : o(n.key),
270
270
  title: m.has(n.key) ? `Sign in to ${n.label} in your browser` : `Open terminal and run ${s.loginCommand}`,
271
271
  children: [
272
- m.has(n.key) ? /* @__PURE__ */ e(p, { className: "size-4" }) : /* @__PURE__ */ e(w, { className: "size-4" }),
273
- n.key === "aisdk" && v ? "Add account" : "Login"
272
+ m.has(n.key) ? /* @__PURE__ */ e(g, { className: "size-4" }) : /* @__PURE__ */ e(R, { className: "size-4" }),
273
+ n.key === "aisdk" && C ? "Add account" : "Login"
274
274
  ]
275
275
  }
276
276
  ) : null,
@@ -284,5 +284,5 @@ function Y({
284
284
  ] });
285
285
  }
286
286
  export {
287
- Y as default
287
+ Z as default
288
288
  };