@volter-ai-dev/supercode-ui 0.1.56 → 0.1.58
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/components.mjs +21 -24
- package/embed.mjs +21 -24
- package/messenger.mjs +21 -24
- package/package.json +1 -1
- package/react/components.mjs +21 -24
- package/react/messenger.mjs +21 -24
- package/react/sessions.mjs +12 -12
- package/react/subagents.mjs +9 -12
- package/sessions.mjs +12 -12
- package/styles.css +6 -6
- package/subagents.mjs +9 -12
package/components.mjs
CHANGED
|
@@ -2345,32 +2345,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
2345
2345
|
/* @__PURE__ */ jsxs7("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
2346
2346
|
/* @__PURE__ */ jsx8(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
2347
2347
|
/* @__PURE__ */ jsxs7("span", { className: "scui-session-copy", children: [
|
|
2348
|
-
/* @__PURE__ */
|
|
2349
|
-
/* @__PURE__ */ jsx8("strong", { children: title }),
|
|
2350
|
-
/* @__PURE__ */ jsx8("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx8("time", { children: age }) : null })
|
|
2351
|
-
] }),
|
|
2348
|
+
/* @__PURE__ */ jsx8("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx8("strong", { children: title }) }),
|
|
2352
2349
|
path.complete ? /* @__PURE__ */ jsxs7("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
2353
2350
|
/* @__PURE__ */ jsx8("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
2354
2351
|
path.separator ? /* @__PURE__ */ jsx8("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
2355
2352
|
path.trailing ? /* @__PURE__ */ jsx8("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
2356
2353
|
] }) : null,
|
|
2357
|
-
working || preview
|
|
2354
|
+
working || preview ? /* @__PURE__ */ jsxs7("span", { className: "scui-session-preview", children: [
|
|
2358
2355
|
working ? /* @__PURE__ */ jsxs7("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
2359
2356
|
/* @__PURE__ */ jsx8("i", {}),
|
|
2360
2357
|
/* @__PURE__ */ jsx8("i", {}),
|
|
2361
2358
|
/* @__PURE__ */ jsx8("i", {})
|
|
2362
2359
|
] }) : null,
|
|
2363
|
-
preview || working ? /* @__PURE__ */ jsx8("small", { children: preview || "Working\u2026" }) : null
|
|
2364
|
-
unreadCount ? /* @__PURE__ */ jsx8("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2360
|
+
preview || working ? /* @__PURE__ */ jsx8("small", { children: preview || "Working\u2026" }) : null
|
|
2365
2361
|
] }) : null,
|
|
2366
2362
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx8("em", { children: state.attachError.message }) : null
|
|
2367
2363
|
] })
|
|
2368
2364
|
] }),
|
|
2369
|
-
row.subagentCount ? /* @__PURE__ */ jsxs7("
|
|
2370
|
-
/* @__PURE__ */
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2365
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs7("span", { className: "scui-session-rail", children: [
|
|
2366
|
+
/* @__PURE__ */ jsxs7("span", { className: "scui-session-rail-meta", children: [
|
|
2367
|
+
row.subagentCount ? /* @__PURE__ */ jsxs7("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
2368
|
+
/* @__PURE__ */ jsx8(UiIcon, { name: "agents", size: 14 }),
|
|
2369
|
+
/* @__PURE__ */ jsx8("span", { children: row.subagentCount })
|
|
2370
|
+
] }) : null,
|
|
2371
|
+
age ? /* @__PURE__ */ jsx8("time", { children: age }) : null
|
|
2372
|
+
] }),
|
|
2373
|
+
unreadCount ? /* @__PURE__ */ jsx8("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2374
2374
|
] }) : null
|
|
2375
2375
|
] });
|
|
2376
2376
|
}
|
|
@@ -2450,7 +2450,6 @@ function SessionList({ state, adapter, onOpen, onOpenSubagents, onNew, onClose,
|
|
|
2450
2450
|
// src/subagents.jsx
|
|
2451
2451
|
import { useEffect as useEffect7, useRef as useRef6, useState as useState5 } from "preact/hooks";
|
|
2452
2452
|
import { jsx as jsx9, jsxs as jsxs8 } from "preact/jsx-runtime";
|
|
2453
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
2454
2453
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
2455
2454
|
function activityLabel(activity, age) {
|
|
2456
2455
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -2484,13 +2483,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
2484
2483
|
}
|
|
2485
2484
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
2486
2485
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
2487
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
2488
2486
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
2489
|
-
const
|
|
2490
|
-
const [
|
|
2487
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
2488
|
+
const [historyOpen, setHistoryOpen] = useState5(false);
|
|
2491
2489
|
const backButton = useRef6(null);
|
|
2492
2490
|
useEffect7(() => {
|
|
2493
|
-
if (inspector.status === "ready" && !
|
|
2491
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
2494
2492
|
}, [inspector.parentKey, inspector.status]);
|
|
2495
2493
|
useEffect7(() => {
|
|
2496
2494
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -2520,8 +2518,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2520
2518
|
/* @__PURE__ */ jsx9("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx9(UiIcon, { name: "back", size: 17 }) }),
|
|
2521
2519
|
selected ? /* @__PURE__ */ jsx9(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx9(UiIcon, { name: "agents", size: 20 }),
|
|
2522
2520
|
/* @__PURE__ */ jsxs8("span", { className: "scui-head-copy", children: [
|
|
2523
|
-
/* @__PURE__ */ jsx9("strong", { children: selected ? sessionDisplayName(selected) :
|
|
2524
|
-
/* @__PURE__ */ jsx9("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
2521
|
+
/* @__PURE__ */ jsx9("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
2522
|
+
/* @__PURE__ */ jsx9("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
2525
2523
|
] })
|
|
2526
2524
|
] }),
|
|
2527
2525
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs8("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -2533,15 +2531,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2533
2531
|
] }) : null,
|
|
2534
2532
|
inspector.error ? /* @__PURE__ */ jsx9("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
2535
2533
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs8("div", { className: "scui-subagent-rows", children: [
|
|
2536
|
-
/* @__PURE__ */ jsx9(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
2537
2534
|
/* @__PURE__ */ jsx9(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
2538
|
-
|
|
2535
|
+
history.length ? /* @__PURE__ */ jsxs8("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
2539
2536
|
/* @__PURE__ */ jsxs8("summary", { children: [
|
|
2540
|
-
/* @__PURE__ */ jsx9("span", { children: "
|
|
2541
|
-
/* @__PURE__ */ jsx9("small", { children:
|
|
2537
|
+
/* @__PURE__ */ jsx9("span", { children: "History" }),
|
|
2538
|
+
/* @__PURE__ */ jsx9("small", { children: history.length }),
|
|
2542
2539
|
/* @__PURE__ */ jsx9(UiIcon, { name: "chevron", size: 14 })
|
|
2543
2540
|
] }),
|
|
2544
|
-
/* @__PURE__ */ jsx9("div", { children:
|
|
2541
|
+
/* @__PURE__ */ jsx9("div", { children: history.map((row) => /* @__PURE__ */ jsx9(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
2545
2542
|
] }) : null
|
|
2546
2543
|
] }) : null,
|
|
2547
2544
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx9("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|
package/embed.mjs
CHANGED
|
@@ -2262,32 +2262,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
2262
2262
|
/* @__PURE__ */ jsxs6("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
2263
2263
|
/* @__PURE__ */ jsx7(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
2264
2264
|
/* @__PURE__ */ jsxs6("span", { className: "scui-session-copy", children: [
|
|
2265
|
-
/* @__PURE__ */
|
|
2266
|
-
/* @__PURE__ */ jsx7("strong", { children: title }),
|
|
2267
|
-
/* @__PURE__ */ jsx7("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx7("time", { children: age }) : null })
|
|
2268
|
-
] }),
|
|
2265
|
+
/* @__PURE__ */ jsx7("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx7("strong", { children: title }) }),
|
|
2269
2266
|
path.complete ? /* @__PURE__ */ jsxs6("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
2270
2267
|
/* @__PURE__ */ jsx7("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
2271
2268
|
path.separator ? /* @__PURE__ */ jsx7("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
2272
2269
|
path.trailing ? /* @__PURE__ */ jsx7("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
2273
2270
|
] }) : null,
|
|
2274
|
-
working || preview
|
|
2271
|
+
working || preview ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-preview", children: [
|
|
2275
2272
|
working ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
2276
2273
|
/* @__PURE__ */ jsx7("i", {}),
|
|
2277
2274
|
/* @__PURE__ */ jsx7("i", {}),
|
|
2278
2275
|
/* @__PURE__ */ jsx7("i", {})
|
|
2279
2276
|
] }) : null,
|
|
2280
|
-
preview || working ? /* @__PURE__ */ jsx7("small", { children: preview || "Working\u2026" }) : null
|
|
2281
|
-
unreadCount ? /* @__PURE__ */ jsx7("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2277
|
+
preview || working ? /* @__PURE__ */ jsx7("small", { children: preview || "Working\u2026" }) : null
|
|
2282
2278
|
] }) : null,
|
|
2283
2279
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx7("em", { children: state.attachError.message }) : null
|
|
2284
2280
|
] })
|
|
2285
2281
|
] }),
|
|
2286
|
-
row.subagentCount ? /* @__PURE__ */ jsxs6("
|
|
2287
|
-
/* @__PURE__ */
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2282
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-rail", children: [
|
|
2283
|
+
/* @__PURE__ */ jsxs6("span", { className: "scui-session-rail-meta", children: [
|
|
2284
|
+
row.subagentCount ? /* @__PURE__ */ jsxs6("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
2285
|
+
/* @__PURE__ */ jsx7(UiIcon, { name: "agents", size: 14 }),
|
|
2286
|
+
/* @__PURE__ */ jsx7("span", { children: row.subagentCount })
|
|
2287
|
+
] }) : null,
|
|
2288
|
+
age ? /* @__PURE__ */ jsx7("time", { children: age }) : null
|
|
2289
|
+
] }),
|
|
2290
|
+
unreadCount ? /* @__PURE__ */ jsx7("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2291
2291
|
] }) : null
|
|
2292
2292
|
] });
|
|
2293
2293
|
}
|
|
@@ -2367,7 +2367,6 @@ function SessionList({ state, adapter, onOpen, onOpenSubagents, onNew, onClose,
|
|
|
2367
2367
|
// src/subagents.jsx
|
|
2368
2368
|
import { useEffect as useEffect7, useRef as useRef6, useState as useState5 } from "preact/hooks";
|
|
2369
2369
|
import { jsx as jsx8, jsxs as jsxs7 } from "preact/jsx-runtime";
|
|
2370
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
2371
2370
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
2372
2371
|
function activityLabel(activity, age) {
|
|
2373
2372
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -2401,13 +2400,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
2401
2400
|
}
|
|
2402
2401
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
2403
2402
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
2404
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
2405
2403
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
2406
|
-
const
|
|
2407
|
-
const [
|
|
2404
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
2405
|
+
const [historyOpen, setHistoryOpen] = useState5(false);
|
|
2408
2406
|
const backButton = useRef6(null);
|
|
2409
2407
|
useEffect7(() => {
|
|
2410
|
-
if (inspector.status === "ready" && !
|
|
2408
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
2411
2409
|
}, [inspector.parentKey, inspector.status]);
|
|
2412
2410
|
useEffect7(() => {
|
|
2413
2411
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -2437,8 +2435,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2437
2435
|
/* @__PURE__ */ jsx8("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx8(UiIcon, { name: "back", size: 17 }) }),
|
|
2438
2436
|
selected ? /* @__PURE__ */ jsx8(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx8(UiIcon, { name: "agents", size: 20 }),
|
|
2439
2437
|
/* @__PURE__ */ jsxs7("span", { className: "scui-head-copy", children: [
|
|
2440
|
-
/* @__PURE__ */ jsx8("strong", { children: selected ? sessionDisplayName(selected) :
|
|
2441
|
-
/* @__PURE__ */ jsx8("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
2438
|
+
/* @__PURE__ */ jsx8("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
2439
|
+
/* @__PURE__ */ jsx8("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
2442
2440
|
] })
|
|
2443
2441
|
] }),
|
|
2444
2442
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs7("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -2450,15 +2448,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2450
2448
|
] }) : null,
|
|
2451
2449
|
inspector.error ? /* @__PURE__ */ jsx8("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
2452
2450
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs7("div", { className: "scui-subagent-rows", children: [
|
|
2453
|
-
/* @__PURE__ */ jsx8(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
2454
2451
|
/* @__PURE__ */ jsx8(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
2455
|
-
|
|
2452
|
+
history.length ? /* @__PURE__ */ jsxs7("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
2456
2453
|
/* @__PURE__ */ jsxs7("summary", { children: [
|
|
2457
|
-
/* @__PURE__ */ jsx8("span", { children: "
|
|
2458
|
-
/* @__PURE__ */ jsx8("small", { children:
|
|
2454
|
+
/* @__PURE__ */ jsx8("span", { children: "History" }),
|
|
2455
|
+
/* @__PURE__ */ jsx8("small", { children: history.length }),
|
|
2459
2456
|
/* @__PURE__ */ jsx8(UiIcon, { name: "chevron", size: 14 })
|
|
2460
2457
|
] }),
|
|
2461
|
-
/* @__PURE__ */ jsx8("div", { children:
|
|
2458
|
+
/* @__PURE__ */ jsx8("div", { children: history.map((row) => /* @__PURE__ */ jsx8(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
2462
2459
|
] }) : null
|
|
2463
2460
|
] }) : null,
|
|
2464
2461
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx8("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|
package/messenger.mjs
CHANGED
|
@@ -2259,32 +2259,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
2259
2259
|
/* @__PURE__ */ jsxs6("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
2260
2260
|
/* @__PURE__ */ jsx7(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
2261
2261
|
/* @__PURE__ */ jsxs6("span", { className: "scui-session-copy", children: [
|
|
2262
|
-
/* @__PURE__ */
|
|
2263
|
-
/* @__PURE__ */ jsx7("strong", { children: title }),
|
|
2264
|
-
/* @__PURE__ */ jsx7("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx7("time", { children: age }) : null })
|
|
2265
|
-
] }),
|
|
2262
|
+
/* @__PURE__ */ jsx7("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx7("strong", { children: title }) }),
|
|
2266
2263
|
path.complete ? /* @__PURE__ */ jsxs6("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
2267
2264
|
/* @__PURE__ */ jsx7("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
2268
2265
|
path.separator ? /* @__PURE__ */ jsx7("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
2269
2266
|
path.trailing ? /* @__PURE__ */ jsx7("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
2270
2267
|
] }) : null,
|
|
2271
|
-
working || preview
|
|
2268
|
+
working || preview ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-preview", children: [
|
|
2272
2269
|
working ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
2273
2270
|
/* @__PURE__ */ jsx7("i", {}),
|
|
2274
2271
|
/* @__PURE__ */ jsx7("i", {}),
|
|
2275
2272
|
/* @__PURE__ */ jsx7("i", {})
|
|
2276
2273
|
] }) : null,
|
|
2277
|
-
preview || working ? /* @__PURE__ */ jsx7("small", { children: preview || "Working\u2026" }) : null
|
|
2278
|
-
unreadCount ? /* @__PURE__ */ jsx7("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2274
|
+
preview || working ? /* @__PURE__ */ jsx7("small", { children: preview || "Working\u2026" }) : null
|
|
2279
2275
|
] }) : null,
|
|
2280
2276
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx7("em", { children: state.attachError.message }) : null
|
|
2281
2277
|
] })
|
|
2282
2278
|
] }),
|
|
2283
|
-
row.subagentCount ? /* @__PURE__ */ jsxs6("
|
|
2284
|
-
/* @__PURE__ */
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2279
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-rail", children: [
|
|
2280
|
+
/* @__PURE__ */ jsxs6("span", { className: "scui-session-rail-meta", children: [
|
|
2281
|
+
row.subagentCount ? /* @__PURE__ */ jsxs6("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
2282
|
+
/* @__PURE__ */ jsx7(UiIcon, { name: "agents", size: 14 }),
|
|
2283
|
+
/* @__PURE__ */ jsx7("span", { children: row.subagentCount })
|
|
2284
|
+
] }) : null,
|
|
2285
|
+
age ? /* @__PURE__ */ jsx7("time", { children: age }) : null
|
|
2286
|
+
] }),
|
|
2287
|
+
unreadCount ? /* @__PURE__ */ jsx7("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2288
2288
|
] }) : null
|
|
2289
2289
|
] });
|
|
2290
2290
|
}
|
|
@@ -2364,7 +2364,6 @@ function SessionList({ state, adapter, onOpen, onOpenSubagents, onNew, onClose,
|
|
|
2364
2364
|
// src/subagents.jsx
|
|
2365
2365
|
import { useEffect as useEffect7, useRef as useRef6, useState as useState5 } from "preact/hooks";
|
|
2366
2366
|
import { jsx as jsx8, jsxs as jsxs7 } from "preact/jsx-runtime";
|
|
2367
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
2368
2367
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
2369
2368
|
function activityLabel(activity, age) {
|
|
2370
2369
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -2398,13 +2397,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
2398
2397
|
}
|
|
2399
2398
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
2400
2399
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
2401
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
2402
2400
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
2403
|
-
const
|
|
2404
|
-
const [
|
|
2401
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
2402
|
+
const [historyOpen, setHistoryOpen] = useState5(false);
|
|
2405
2403
|
const backButton = useRef6(null);
|
|
2406
2404
|
useEffect7(() => {
|
|
2407
|
-
if (inspector.status === "ready" && !
|
|
2405
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
2408
2406
|
}, [inspector.parentKey, inspector.status]);
|
|
2409
2407
|
useEffect7(() => {
|
|
2410
2408
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -2434,8 +2432,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2434
2432
|
/* @__PURE__ */ jsx8("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx8(UiIcon, { name: "back", size: 17 }) }),
|
|
2435
2433
|
selected ? /* @__PURE__ */ jsx8(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx8(UiIcon, { name: "agents", size: 20 }),
|
|
2436
2434
|
/* @__PURE__ */ jsxs7("span", { className: "scui-head-copy", children: [
|
|
2437
|
-
/* @__PURE__ */ jsx8("strong", { children: selected ? sessionDisplayName(selected) :
|
|
2438
|
-
/* @__PURE__ */ jsx8("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
2435
|
+
/* @__PURE__ */ jsx8("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
2436
|
+
/* @__PURE__ */ jsx8("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
2439
2437
|
] })
|
|
2440
2438
|
] }),
|
|
2441
2439
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs7("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -2447,15 +2445,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2447
2445
|
] }) : null,
|
|
2448
2446
|
inspector.error ? /* @__PURE__ */ jsx8("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
2449
2447
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs7("div", { className: "scui-subagent-rows", children: [
|
|
2450
|
-
/* @__PURE__ */ jsx8(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
2451
2448
|
/* @__PURE__ */ jsx8(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
2452
|
-
|
|
2449
|
+
history.length ? /* @__PURE__ */ jsxs7("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
2453
2450
|
/* @__PURE__ */ jsxs7("summary", { children: [
|
|
2454
|
-
/* @__PURE__ */ jsx8("span", { children: "
|
|
2455
|
-
/* @__PURE__ */ jsx8("small", { children:
|
|
2451
|
+
/* @__PURE__ */ jsx8("span", { children: "History" }),
|
|
2452
|
+
/* @__PURE__ */ jsx8("small", { children: history.length }),
|
|
2456
2453
|
/* @__PURE__ */ jsx8(UiIcon, { name: "chevron", size: 14 })
|
|
2457
2454
|
] }),
|
|
2458
|
-
/* @__PURE__ */ jsx8("div", { children:
|
|
2455
|
+
/* @__PURE__ */ jsx8("div", { children: history.map((row) => /* @__PURE__ */ jsx8(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
2459
2456
|
] }) : null
|
|
2460
2457
|
] }) : null,
|
|
2461
2458
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx8("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|
package/package.json
CHANGED
package/react/components.mjs
CHANGED
|
@@ -2345,32 +2345,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
2345
2345
|
/* @__PURE__ */ jsxs7("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
2346
2346
|
/* @__PURE__ */ jsx8(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
2347
2347
|
/* @__PURE__ */ jsxs7("span", { className: "scui-session-copy", children: [
|
|
2348
|
-
/* @__PURE__ */
|
|
2349
|
-
/* @__PURE__ */ jsx8("strong", { children: title }),
|
|
2350
|
-
/* @__PURE__ */ jsx8("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx8("time", { children: age }) : null })
|
|
2351
|
-
] }),
|
|
2348
|
+
/* @__PURE__ */ jsx8("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx8("strong", { children: title }) }),
|
|
2352
2349
|
path.complete ? /* @__PURE__ */ jsxs7("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
2353
2350
|
/* @__PURE__ */ jsx8("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
2354
2351
|
path.separator ? /* @__PURE__ */ jsx8("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
2355
2352
|
path.trailing ? /* @__PURE__ */ jsx8("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
2356
2353
|
] }) : null,
|
|
2357
|
-
working || preview
|
|
2354
|
+
working || preview ? /* @__PURE__ */ jsxs7("span", { className: "scui-session-preview", children: [
|
|
2358
2355
|
working ? /* @__PURE__ */ jsxs7("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
2359
2356
|
/* @__PURE__ */ jsx8("i", {}),
|
|
2360
2357
|
/* @__PURE__ */ jsx8("i", {}),
|
|
2361
2358
|
/* @__PURE__ */ jsx8("i", {})
|
|
2362
2359
|
] }) : null,
|
|
2363
|
-
preview || working ? /* @__PURE__ */ jsx8("small", { children: preview || "Working\u2026" }) : null
|
|
2364
|
-
unreadCount ? /* @__PURE__ */ jsx8("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2360
|
+
preview || working ? /* @__PURE__ */ jsx8("small", { children: preview || "Working\u2026" }) : null
|
|
2365
2361
|
] }) : null,
|
|
2366
2362
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx8("em", { children: state.attachError.message }) : null
|
|
2367
2363
|
] })
|
|
2368
2364
|
] }),
|
|
2369
|
-
row.subagentCount ? /* @__PURE__ */ jsxs7("
|
|
2370
|
-
/* @__PURE__ */
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2365
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs7("span", { className: "scui-session-rail", children: [
|
|
2366
|
+
/* @__PURE__ */ jsxs7("span", { className: "scui-session-rail-meta", children: [
|
|
2367
|
+
row.subagentCount ? /* @__PURE__ */ jsxs7("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
2368
|
+
/* @__PURE__ */ jsx8(UiIcon, { name: "agents", size: 14 }),
|
|
2369
|
+
/* @__PURE__ */ jsx8("span", { children: row.subagentCount })
|
|
2370
|
+
] }) : null,
|
|
2371
|
+
age ? /* @__PURE__ */ jsx8("time", { children: age }) : null
|
|
2372
|
+
] }),
|
|
2373
|
+
unreadCount ? /* @__PURE__ */ jsx8("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2374
2374
|
] }) : null
|
|
2375
2375
|
] });
|
|
2376
2376
|
}
|
|
@@ -2450,7 +2450,6 @@ function SessionList({ state, adapter, onOpen, onOpenSubagents, onNew, onClose,
|
|
|
2450
2450
|
// src/subagents.jsx
|
|
2451
2451
|
import { useEffect as useEffect7, useRef as useRef6, useState as useState5 } from "react";
|
|
2452
2452
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2453
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
2454
2453
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
2455
2454
|
function activityLabel(activity, age) {
|
|
2456
2455
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -2484,13 +2483,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
2484
2483
|
}
|
|
2485
2484
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
2486
2485
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
2487
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
2488
2486
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
2489
|
-
const
|
|
2490
|
-
const [
|
|
2487
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
2488
|
+
const [historyOpen, setHistoryOpen] = useState5(false);
|
|
2491
2489
|
const backButton = useRef6(null);
|
|
2492
2490
|
useEffect7(() => {
|
|
2493
|
-
if (inspector.status === "ready" && !
|
|
2491
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
2494
2492
|
}, [inspector.parentKey, inspector.status]);
|
|
2495
2493
|
useEffect7(() => {
|
|
2496
2494
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -2520,8 +2518,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2520
2518
|
/* @__PURE__ */ jsx9("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx9(UiIcon, { name: "back", size: 17 }) }),
|
|
2521
2519
|
selected ? /* @__PURE__ */ jsx9(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx9(UiIcon, { name: "agents", size: 20 }),
|
|
2522
2520
|
/* @__PURE__ */ jsxs8("span", { className: "scui-head-copy", children: [
|
|
2523
|
-
/* @__PURE__ */ jsx9("strong", { children: selected ? sessionDisplayName(selected) :
|
|
2524
|
-
/* @__PURE__ */ jsx9("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
2521
|
+
/* @__PURE__ */ jsx9("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
2522
|
+
/* @__PURE__ */ jsx9("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
2525
2523
|
] })
|
|
2526
2524
|
] }),
|
|
2527
2525
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs8("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -2533,15 +2531,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2533
2531
|
] }) : null,
|
|
2534
2532
|
inspector.error ? /* @__PURE__ */ jsx9("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
2535
2533
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs8("div", { className: "scui-subagent-rows", children: [
|
|
2536
|
-
/* @__PURE__ */ jsx9(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
2537
2534
|
/* @__PURE__ */ jsx9(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
2538
|
-
|
|
2535
|
+
history.length ? /* @__PURE__ */ jsxs8("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
2539
2536
|
/* @__PURE__ */ jsxs8("summary", { children: [
|
|
2540
|
-
/* @__PURE__ */ jsx9("span", { children: "
|
|
2541
|
-
/* @__PURE__ */ jsx9("small", { children:
|
|
2537
|
+
/* @__PURE__ */ jsx9("span", { children: "History" }),
|
|
2538
|
+
/* @__PURE__ */ jsx9("small", { children: history.length }),
|
|
2542
2539
|
/* @__PURE__ */ jsx9(UiIcon, { name: "chevron", size: 14 })
|
|
2543
2540
|
] }),
|
|
2544
|
-
/* @__PURE__ */ jsx9("div", { children:
|
|
2541
|
+
/* @__PURE__ */ jsx9("div", { children: history.map((row) => /* @__PURE__ */ jsx9(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
2545
2542
|
] }) : null
|
|
2546
2543
|
] }) : null,
|
|
2547
2544
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx9("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|
package/react/messenger.mjs
CHANGED
|
@@ -2259,32 +2259,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
2259
2259
|
/* @__PURE__ */ jsxs6("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
2260
2260
|
/* @__PURE__ */ jsx7(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
2261
2261
|
/* @__PURE__ */ jsxs6("span", { className: "scui-session-copy", children: [
|
|
2262
|
-
/* @__PURE__ */
|
|
2263
|
-
/* @__PURE__ */ jsx7("strong", { children: title }),
|
|
2264
|
-
/* @__PURE__ */ jsx7("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx7("time", { children: age }) : null })
|
|
2265
|
-
] }),
|
|
2262
|
+
/* @__PURE__ */ jsx7("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx7("strong", { children: title }) }),
|
|
2266
2263
|
path.complete ? /* @__PURE__ */ jsxs6("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
2267
2264
|
/* @__PURE__ */ jsx7("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
2268
2265
|
path.separator ? /* @__PURE__ */ jsx7("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
2269
2266
|
path.trailing ? /* @__PURE__ */ jsx7("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
2270
2267
|
] }) : null,
|
|
2271
|
-
working || preview
|
|
2268
|
+
working || preview ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-preview", children: [
|
|
2272
2269
|
working ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
2273
2270
|
/* @__PURE__ */ jsx7("i", {}),
|
|
2274
2271
|
/* @__PURE__ */ jsx7("i", {}),
|
|
2275
2272
|
/* @__PURE__ */ jsx7("i", {})
|
|
2276
2273
|
] }) : null,
|
|
2277
|
-
preview || working ? /* @__PURE__ */ jsx7("small", { children: preview || "Working\u2026" }) : null
|
|
2278
|
-
unreadCount ? /* @__PURE__ */ jsx7("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2274
|
+
preview || working ? /* @__PURE__ */ jsx7("small", { children: preview || "Working\u2026" }) : null
|
|
2279
2275
|
] }) : null,
|
|
2280
2276
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx7("em", { children: state.attachError.message }) : null
|
|
2281
2277
|
] })
|
|
2282
2278
|
] }),
|
|
2283
|
-
row.subagentCount ? /* @__PURE__ */ jsxs6("
|
|
2284
|
-
/* @__PURE__ */
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2279
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs6("span", { className: "scui-session-rail", children: [
|
|
2280
|
+
/* @__PURE__ */ jsxs6("span", { className: "scui-session-rail-meta", children: [
|
|
2281
|
+
row.subagentCount ? /* @__PURE__ */ jsxs6("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
2282
|
+
/* @__PURE__ */ jsx7(UiIcon, { name: "agents", size: 14 }),
|
|
2283
|
+
/* @__PURE__ */ jsx7("span", { children: row.subagentCount })
|
|
2284
|
+
] }) : null,
|
|
2285
|
+
age ? /* @__PURE__ */ jsx7("time", { children: age }) : null
|
|
2286
|
+
] }),
|
|
2287
|
+
unreadCount ? /* @__PURE__ */ jsx7("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
2288
2288
|
] }) : null
|
|
2289
2289
|
] });
|
|
2290
2290
|
}
|
|
@@ -2364,7 +2364,6 @@ function SessionList({ state, adapter, onOpen, onOpenSubagents, onNew, onClose,
|
|
|
2364
2364
|
// src/subagents.jsx
|
|
2365
2365
|
import { useEffect as useEffect7, useRef as useRef6, useState as useState5 } from "react";
|
|
2366
2366
|
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2367
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
2368
2367
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
2369
2368
|
function activityLabel(activity, age) {
|
|
2370
2369
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -2398,13 +2397,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
2398
2397
|
}
|
|
2399
2398
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
2400
2399
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
2401
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
2402
2400
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
2403
|
-
const
|
|
2404
|
-
const [
|
|
2401
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
2402
|
+
const [historyOpen, setHistoryOpen] = useState5(false);
|
|
2405
2403
|
const backButton = useRef6(null);
|
|
2406
2404
|
useEffect7(() => {
|
|
2407
|
-
if (inspector.status === "ready" && !
|
|
2405
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
2408
2406
|
}, [inspector.parentKey, inspector.status]);
|
|
2409
2407
|
useEffect7(() => {
|
|
2410
2408
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -2434,8 +2432,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2434
2432
|
/* @__PURE__ */ jsx8("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx8(UiIcon, { name: "back", size: 17 }) }),
|
|
2435
2433
|
selected ? /* @__PURE__ */ jsx8(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx8(UiIcon, { name: "agents", size: 20 }),
|
|
2436
2434
|
/* @__PURE__ */ jsxs7("span", { className: "scui-head-copy", children: [
|
|
2437
|
-
/* @__PURE__ */ jsx8("strong", { children: selected ? sessionDisplayName(selected) :
|
|
2438
|
-
/* @__PURE__ */ jsx8("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
2435
|
+
/* @__PURE__ */ jsx8("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
2436
|
+
/* @__PURE__ */ jsx8("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
2439
2437
|
] })
|
|
2440
2438
|
] }),
|
|
2441
2439
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs7("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -2447,15 +2445,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
2447
2445
|
] }) : null,
|
|
2448
2446
|
inspector.error ? /* @__PURE__ */ jsx8("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
2449
2447
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs7("div", { className: "scui-subagent-rows", children: [
|
|
2450
|
-
/* @__PURE__ */ jsx8(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
2451
2448
|
/* @__PURE__ */ jsx8(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
2452
|
-
|
|
2449
|
+
history.length ? /* @__PURE__ */ jsxs7("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
2453
2450
|
/* @__PURE__ */ jsxs7("summary", { children: [
|
|
2454
|
-
/* @__PURE__ */ jsx8("span", { children: "
|
|
2455
|
-
/* @__PURE__ */ jsx8("small", { children:
|
|
2451
|
+
/* @__PURE__ */ jsx8("span", { children: "History" }),
|
|
2452
|
+
/* @__PURE__ */ jsx8("small", { children: history.length }),
|
|
2456
2453
|
/* @__PURE__ */ jsx8(UiIcon, { name: "chevron", size: 14 })
|
|
2457
2454
|
] }),
|
|
2458
|
-
/* @__PURE__ */ jsx8("div", { children:
|
|
2455
|
+
/* @__PURE__ */ jsx8("div", { children: history.map((row) => /* @__PURE__ */ jsx8(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
2459
2456
|
] }) : null
|
|
2460
2457
|
] }) : null,
|
|
2461
2458
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx8("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|
package/react/sessions.mjs
CHANGED
|
@@ -351,32 +351,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
351
351
|
/* @__PURE__ */ jsxs5("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
352
352
|
/* @__PURE__ */ jsx6(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
353
353
|
/* @__PURE__ */ jsxs5("span", { className: "scui-session-copy", children: [
|
|
354
|
-
/* @__PURE__ */
|
|
355
|
-
/* @__PURE__ */ jsx6("strong", { children: title }),
|
|
356
|
-
/* @__PURE__ */ jsx6("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx6("time", { children: age }) : null })
|
|
357
|
-
] }),
|
|
354
|
+
/* @__PURE__ */ jsx6("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx6("strong", { children: title }) }),
|
|
358
355
|
path.complete ? /* @__PURE__ */ jsxs5("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
359
356
|
/* @__PURE__ */ jsx6("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
360
357
|
path.separator ? /* @__PURE__ */ jsx6("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
361
358
|
path.trailing ? /* @__PURE__ */ jsx6("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
362
359
|
] }) : null,
|
|
363
|
-
working || preview
|
|
360
|
+
working || preview ? /* @__PURE__ */ jsxs5("span", { className: "scui-session-preview", children: [
|
|
364
361
|
working ? /* @__PURE__ */ jsxs5("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
365
362
|
/* @__PURE__ */ jsx6("i", {}),
|
|
366
363
|
/* @__PURE__ */ jsx6("i", {}),
|
|
367
364
|
/* @__PURE__ */ jsx6("i", {})
|
|
368
365
|
] }) : null,
|
|
369
|
-
preview || working ? /* @__PURE__ */ jsx6("small", { children: preview || "Working\u2026" }) : null
|
|
370
|
-
unreadCount ? /* @__PURE__ */ jsx6("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
366
|
+
preview || working ? /* @__PURE__ */ jsx6("small", { children: preview || "Working\u2026" }) : null
|
|
371
367
|
] }) : null,
|
|
372
368
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx6("em", { children: state.attachError.message }) : null
|
|
373
369
|
] })
|
|
374
370
|
] }),
|
|
375
|
-
row.subagentCount ? /* @__PURE__ */ jsxs5("
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
371
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs5("span", { className: "scui-session-rail", children: [
|
|
372
|
+
/* @__PURE__ */ jsxs5("span", { className: "scui-session-rail-meta", children: [
|
|
373
|
+
row.subagentCount ? /* @__PURE__ */ jsxs5("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
374
|
+
/* @__PURE__ */ jsx6(UiIcon, { name: "agents", size: 14 }),
|
|
375
|
+
/* @__PURE__ */ jsx6("span", { children: row.subagentCount })
|
|
376
|
+
] }) : null,
|
|
377
|
+
age ? /* @__PURE__ */ jsx6("time", { children: age }) : null
|
|
378
|
+
] }),
|
|
379
|
+
unreadCount ? /* @__PURE__ */ jsx6("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
380
380
|
] }) : null
|
|
381
381
|
] });
|
|
382
382
|
}
|
package/react/subagents.mjs
CHANGED
|
@@ -1405,7 +1405,6 @@ function HarnessLogo({ id, activity, size = 28, onMissingLogo }) {
|
|
|
1405
1405
|
|
|
1406
1406
|
// src/subagents.jsx
|
|
1407
1407
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1408
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
1409
1408
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
1410
1409
|
function activityLabel(activity, age) {
|
|
1411
1410
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -1439,13 +1438,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
1439
1438
|
}
|
|
1440
1439
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
1441
1440
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
1442
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
1443
1441
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
1444
|
-
const
|
|
1445
|
-
const [
|
|
1442
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
1443
|
+
const [historyOpen, setHistoryOpen] = useState3(false);
|
|
1446
1444
|
const backButton = useRef4(null);
|
|
1447
1445
|
useEffect5(() => {
|
|
1448
|
-
if (inspector.status === "ready" && !
|
|
1446
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
1449
1447
|
}, [inspector.parentKey, inspector.status]);
|
|
1450
1448
|
useEffect5(() => {
|
|
1451
1449
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -1475,8 +1473,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
1475
1473
|
/* @__PURE__ */ jsx6("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx6(UiIcon, { name: "back", size: 17 }) }),
|
|
1476
1474
|
selected ? /* @__PURE__ */ jsx6(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx6(UiIcon, { name: "agents", size: 20 }),
|
|
1477
1475
|
/* @__PURE__ */ jsxs5("span", { className: "scui-head-copy", children: [
|
|
1478
|
-
/* @__PURE__ */ jsx6("strong", { children: selected ? sessionDisplayName(selected) :
|
|
1479
|
-
/* @__PURE__ */ jsx6("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
1476
|
+
/* @__PURE__ */ jsx6("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
1477
|
+
/* @__PURE__ */ jsx6("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
1480
1478
|
] })
|
|
1481
1479
|
] }),
|
|
1482
1480
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs5("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -1488,15 +1486,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
1488
1486
|
] }) : null,
|
|
1489
1487
|
inspector.error ? /* @__PURE__ */ jsx6("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
1490
1488
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs5("div", { className: "scui-subagent-rows", children: [
|
|
1491
|
-
/* @__PURE__ */ jsx6(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
1492
1489
|
/* @__PURE__ */ jsx6(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
1493
|
-
|
|
1490
|
+
history.length ? /* @__PURE__ */ jsxs5("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
1494
1491
|
/* @__PURE__ */ jsxs5("summary", { children: [
|
|
1495
|
-
/* @__PURE__ */ jsx6("span", { children: "
|
|
1496
|
-
/* @__PURE__ */ jsx6("small", { children:
|
|
1492
|
+
/* @__PURE__ */ jsx6("span", { children: "History" }),
|
|
1493
|
+
/* @__PURE__ */ jsx6("small", { children: history.length }),
|
|
1497
1494
|
/* @__PURE__ */ jsx6(UiIcon, { name: "chevron", size: 14 })
|
|
1498
1495
|
] }),
|
|
1499
|
-
/* @__PURE__ */ jsx6("div", { children:
|
|
1496
|
+
/* @__PURE__ */ jsx6("div", { children: history.map((row) => /* @__PURE__ */ jsx6(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
1500
1497
|
] }) : null
|
|
1501
1498
|
] }) : null,
|
|
1502
1499
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx6("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|
package/sessions.mjs
CHANGED
|
@@ -351,32 +351,32 @@ function SessionRow({ row, state, onOpen, onOpenSubagents, now = Date.now() }) {
|
|
|
351
351
|
/* @__PURE__ */ jsxs5("button", { className: "scui-session-main", "data-session-key": row.key, type: "button", "aria-label": `${title} \xB7 ${harnessDisplayName(row.harness)}${row.writable ? "" : " \xB7 Read-only"}${working ? " \xB7 Working" : ""}${path.complete ? ` \xB7 ${path.complete}` : ""}${preview ? ` \xB7 ${preview}` : ""}${unreadCount ? ` \xB7 ${unreadCount} unread` : ""}${age ? ` \xB7 ${age}` : ""}`, "aria-current": row.active ? "true" : void 0, onClick: () => onOpen(row), children: [
|
|
352
352
|
/* @__PURE__ */ jsx6(HarnessLogo, { id: row.harness, activity, size: 34 }),
|
|
353
353
|
/* @__PURE__ */ jsxs5("span", { className: "scui-session-copy", children: [
|
|
354
|
-
/* @__PURE__ */
|
|
355
|
-
/* @__PURE__ */ jsx6("strong", { children: title }),
|
|
356
|
-
/* @__PURE__ */ jsx6("span", { className: "scui-session-meta", children: age ? /* @__PURE__ */ jsx6("time", { children: age }) : null })
|
|
357
|
-
] }),
|
|
354
|
+
/* @__PURE__ */ jsx6("span", { className: "scui-session-title", children: /* @__PURE__ */ jsx6("strong", { children: title }) }),
|
|
358
355
|
path.complete ? /* @__PURE__ */ jsxs5("small", { className: "scui-session-path", title: row.cwd, children: [
|
|
359
356
|
/* @__PURE__ */ jsx6("span", { className: "scui-session-path-leading", children: path.leading }),
|
|
360
357
|
path.separator ? /* @__PURE__ */ jsx6("span", { className: "scui-session-path-separator", children: path.separator }) : null,
|
|
361
358
|
path.trailing ? /* @__PURE__ */ jsx6("span", { className: "scui-session-path-trailing", children: path.trailing }) : null
|
|
362
359
|
] }) : null,
|
|
363
|
-
working || preview
|
|
360
|
+
working || preview ? /* @__PURE__ */ jsxs5("span", { className: "scui-session-preview", children: [
|
|
364
361
|
working ? /* @__PURE__ */ jsxs5("span", { className: "scui-session-working", "aria-hidden": "true", children: [
|
|
365
362
|
/* @__PURE__ */ jsx6("i", {}),
|
|
366
363
|
/* @__PURE__ */ jsx6("i", {}),
|
|
367
364
|
/* @__PURE__ */ jsx6("i", {})
|
|
368
365
|
] }) : null,
|
|
369
|
-
preview || working ? /* @__PURE__ */ jsx6("small", { children: preview || "Working\u2026" }) : null
|
|
370
|
-
unreadCount ? /* @__PURE__ */ jsx6("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
366
|
+
preview || working ? /* @__PURE__ */ jsx6("small", { children: preview || "Working\u2026" }) : null
|
|
371
367
|
] }) : null,
|
|
372
368
|
state.attachError?.key === row.key ? /* @__PURE__ */ jsx6("em", { children: state.attachError.message }) : null
|
|
373
369
|
] })
|
|
374
370
|
] }),
|
|
375
|
-
row.subagentCount ? /* @__PURE__ */ jsxs5("
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
371
|
+
row.subagentCount || age || unreadCount ? /* @__PURE__ */ jsxs5("span", { className: "scui-session-rail", children: [
|
|
372
|
+
/* @__PURE__ */ jsxs5("span", { className: "scui-session-rail-meta", children: [
|
|
373
|
+
row.subagentCount ? /* @__PURE__ */ jsxs5("button", { className: "scui-session-agents", type: "button", title: `${row.subagentCount} agent sessions`, "aria-label": `Open ${row.subagentCount} agent sessions in ${title}`, onClick: () => onOpenSubagents?.(row), children: [
|
|
374
|
+
/* @__PURE__ */ jsx6(UiIcon, { name: "agents", size: 14 }),
|
|
375
|
+
/* @__PURE__ */ jsx6("span", { children: row.subagentCount })
|
|
376
|
+
] }) : null,
|
|
377
|
+
age ? /* @__PURE__ */ jsx6("time", { children: age }) : null
|
|
378
|
+
] }),
|
|
379
|
+
unreadCount ? /* @__PURE__ */ jsx6("b", { "aria-label": `${unreadCount} unread messages`, children: unreadLabel }) : null
|
|
380
380
|
] }) : null
|
|
381
381
|
] });
|
|
382
382
|
}
|
package/styles.css
CHANGED
|
@@ -102,18 +102,18 @@
|
|
|
102
102
|
.scui-search { display:flex; flex:1; min-width:0; align-items:center; gap:7px; padding:6px 8px; border:1px solid var(--scui-border); border-radius:8px; background:var(--scui-bg-raised); color:var(--scui-muted) }
|
|
103
103
|
.scui-search input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:var(--scui-fg) }
|
|
104
104
|
.scui-session-rows { flex:1; min-height:0; overflow:auto; padding:0 6px 8px }
|
|
105
|
-
.scui-session { display:
|
|
105
|
+
.scui-session { display:grid; grid-template-columns:minmax(0,1fr) auto; width:100%; align-items:stretch; border-radius:7px; background:transparent }
|
|
106
106
|
.scui-session:hover,.scui-session[data-active="true"] { background:var(--scui-fill) }
|
|
107
|
-
.scui-session-main { display:flex; min-width:0;
|
|
108
|
-
.scui-session-
|
|
107
|
+
.scui-session-main { display:flex; min-width:0; align-items:flex-start; gap:9px; padding:8px; border:0; background:transparent; text-align:left; cursor:pointer }
|
|
108
|
+
.scui-session-rail { display:grid; min-width:26px; align-content:space-between; justify-items:end; gap:4px; padding:8px 8px 8px 0 }.scui-session-rail-meta { display:flex; align-items:center; justify-content:flex-end; gap:4px }.scui-session-rail time { color:var(--scui-muted); font-size:10px; white-space:nowrap }.scui-session-rail > b { display:grid; min-width:16px; height:16px; padding:0 4px; place-items:center; border-radius:8px; background:var(--scui-accent); color:var(--scui-bg); font-size:9px; line-height:16px }
|
|
109
|
+
.scui-session-agents { display:flex; flex:none; align-items:center; gap:2px; padding:2px 4px; border:0; border-radius:6px; background:transparent; color:var(--scui-muted); cursor:pointer; font-size:9px; font-variant-numeric:tabular-nums; white-space:nowrap }.scui-session-agents:hover { background:var(--scui-bg-raised); color:var(--scui-fg) }
|
|
109
110
|
.scui-session-copy { display:grid; flex:1; min-width:0; gap:1px }
|
|
110
111
|
.scui-session-copy > span { display:flex; align-items:baseline; gap:7px; min-width:0 }
|
|
111
112
|
.scui-session-copy strong,.scui-session-copy span > small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
|
|
112
|
-
.scui-session-copy strong { flex:1; font-size:12.5px }.scui-session-
|
|
113
|
+
.scui-session-copy strong { flex:1; font-size:12.5px }.scui-session-working { display:flex; flex:none; width:14px; height:8px; align-self:center; align-items:center; justify-content:space-between; color:var(--scui-muted) }.scui-session-working > i { width:3px; height:3px; border-radius:50%; background:currentColor; animation:scui-session-dots 1.2s ease-in-out infinite }.scui-session-working > i:nth-child(2) { animation-delay:.15s }.scui-session-working > i:nth-child(3) { animation-delay:.3s }
|
|
113
114
|
.scui-session-path { display:flex; min-width:0; overflow:hidden; color:var(--scui-muted); font-size:9.5px; white-space:nowrap }
|
|
114
115
|
.scui-session-path-leading { flex:0 1 auto; overflow:hidden; text-overflow:ellipsis }.scui-session-path-separator { flex:none }.scui-session-path-trailing { flex:none; max-width:58%; overflow:hidden; direction:rtl; text-align:left; text-overflow:ellipsis; unicode-bidi:plaintext }
|
|
115
|
-
.scui-session-preview small { flex:1; min-width:0; color:var(--scui-muted); font-size:10.5px }.scui-session-
|
|
116
|
-
.scui-session[data-writable="false"] .scui-session-preview b { background:var(--scui-muted) }
|
|
116
|
+
.scui-session-preview small { flex:1; min-width:0; color:var(--scui-muted); font-size:10.5px }.scui-session[data-writable="false"] .scui-session-rail > b { background:var(--scui-muted) }
|
|
117
117
|
.scui-session-copy em { overflow:hidden; color:var(--scui-danger); font-size:10px; font-style:normal; text-overflow:ellipsis; white-space:nowrap }
|
|
118
118
|
.scui-load { display:block; margin:7px auto; padding:5px 10px; border:1px solid var(--scui-border); border-radius:8px; background:var(--scui-bg-raised); color:var(--scui-muted); cursor:pointer }.scui-load:disabled { opacity:.65; cursor:default }
|
|
119
119
|
|
package/subagents.mjs
CHANGED
|
@@ -1405,7 +1405,6 @@ function HarnessLogo({ id, activity, size = 28, onMissingLogo }) {
|
|
|
1405
1405
|
|
|
1406
1406
|
// src/subagents.jsx
|
|
1407
1407
|
import { jsx as jsx6, jsxs as jsxs5 } from "preact/jsx-runtime";
|
|
1408
|
-
var ATTENTION_ACTIVITY = /* @__PURE__ */ new Set(["needs-input", "failed", "unseen"]);
|
|
1409
1408
|
var ACTIVE_ACTIVITY = /* @__PURE__ */ new Set(["working", "running", "recent"]);
|
|
1410
1409
|
function activityLabel(activity, age) {
|
|
1411
1410
|
if (activity === "needs-input") return "Needs input";
|
|
@@ -1439,13 +1438,12 @@ function SubagentSection({ label, rows, inspector, adapter }) {
|
|
|
1439
1438
|
}
|
|
1440
1439
|
function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
1441
1440
|
const selected = inspector.items.find((row) => row.key === inspector.selectedKey) ?? null;
|
|
1442
|
-
const attention = inspector.items.filter((row) => ATTENTION_ACTIVITY.has(row.activity));
|
|
1443
1441
|
const active = inspector.items.filter((row) => ACTIVE_ACTIVITY.has(row.activity));
|
|
1444
|
-
const
|
|
1445
|
-
const [
|
|
1442
|
+
const history = inspector.items.filter((row) => !ACTIVE_ACTIVITY.has(row.activity));
|
|
1443
|
+
const [historyOpen, setHistoryOpen] = useState3(false);
|
|
1446
1444
|
const backButton = useRef4(null);
|
|
1447
1445
|
useEffect5(() => {
|
|
1448
|
-
if (inspector.status === "ready" && !
|
|
1446
|
+
if (inspector.status === "ready" && !active.length) setHistoryOpen(true);
|
|
1449
1447
|
}, [inspector.parentKey, inspector.status]);
|
|
1450
1448
|
useEffect5(() => {
|
|
1451
1449
|
backButton.current?.focus({ preventScroll: true });
|
|
@@ -1475,8 +1473,8 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
1475
1473
|
/* @__PURE__ */ jsx6("button", { ref: backButton, type: "button", "aria-label": selected ? "Back to agents" : "Back to chats", onClick: back, children: /* @__PURE__ */ jsx6(UiIcon, { name: "back", size: 17 }) }),
|
|
1476
1474
|
selected ? /* @__PURE__ */ jsx6(HarnessLogo, { id: selected.harness, activity: selected.activity, size: 24 }) : /* @__PURE__ */ jsx6(UiIcon, { name: "agents", size: 20 }),
|
|
1477
1475
|
/* @__PURE__ */ jsxs5("span", { className: "scui-head-copy", children: [
|
|
1478
|
-
/* @__PURE__ */ jsx6("strong", { children: selected ? sessionDisplayName(selected) :
|
|
1479
|
-
/* @__PURE__ */ jsx6("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : inspector.parentTitle })
|
|
1476
|
+
/* @__PURE__ */ jsx6("strong", { children: selected ? sessionDisplayName(selected) : "Agents" }),
|
|
1477
|
+
/* @__PURE__ */ jsx6("small", { children: selected ? `${harnessDisplayName(selected.harness)} \xB7 Read-only` : `${inspector.items.length} ${inspector.items.length === 1 ? "session" : "sessions"} \xB7 ${inspector.parentTitle}` })
|
|
1480
1478
|
] })
|
|
1481
1479
|
] }),
|
|
1482
1480
|
inspector.status === "loading" ? /* @__PURE__ */ jsxs5("div", { className: "scui-subagents-loading", role: "status", children: [
|
|
@@ -1488,15 +1486,14 @@ function SubagentInspectorContent({ state, adapter, onClose, inspector }) {
|
|
|
1488
1486
|
] }) : null,
|
|
1489
1487
|
inspector.error ? /* @__PURE__ */ jsx6("div", { className: "scui-error", role: "alert", children: inspector.error }) : null,
|
|
1490
1488
|
!selected && inspector.status === "ready" && inspector.items.length ? /* @__PURE__ */ jsxs5("div", { className: "scui-subagent-rows", children: [
|
|
1491
|
-
/* @__PURE__ */ jsx6(SubagentSection, { label: "Needs attention", rows: attention, inspector, adapter }),
|
|
1492
1489
|
/* @__PURE__ */ jsx6(SubagentSection, { label: "Active", rows: active, inspector, adapter }),
|
|
1493
|
-
|
|
1490
|
+
history.length ? /* @__PURE__ */ jsxs5("details", { className: "scui-subagent-history", open: historyOpen, onToggle: (event) => setHistoryOpen(event.currentTarget.open), children: [
|
|
1494
1491
|
/* @__PURE__ */ jsxs5("summary", { children: [
|
|
1495
|
-
/* @__PURE__ */ jsx6("span", { children: "
|
|
1496
|
-
/* @__PURE__ */ jsx6("small", { children:
|
|
1492
|
+
/* @__PURE__ */ jsx6("span", { children: "History" }),
|
|
1493
|
+
/* @__PURE__ */ jsx6("small", { children: history.length }),
|
|
1497
1494
|
/* @__PURE__ */ jsx6(UiIcon, { name: "chevron", size: 14 })
|
|
1498
1495
|
] }),
|
|
1499
|
-
/* @__PURE__ */ jsx6("div", { children:
|
|
1496
|
+
/* @__PURE__ */ jsx6("div", { children: history.map((row) => /* @__PURE__ */ jsx6(SubagentRow, { row, inspector, adapter }, row.key)) })
|
|
1500
1497
|
] }) : null
|
|
1501
1498
|
] }) : null,
|
|
1502
1499
|
!selected && inspector.status === "ready" && !inspector.items.length ? /* @__PURE__ */ jsx6("div", { className: "scui-empty", children: "No native child sessions were found." }) : null,
|