@markmo/europacore-session-ui 0.3.0 → 0.4.0

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.
Files changed (51) hide show
  1. package/dist/ArtifactsPage-BxaqShTv.js +1178 -0
  2. package/dist/{BoardPage-DDcf5vup.js → BoardPage-DH7p5o99.js} +54 -54
  3. package/dist/{CardDetail-D0TLVhf7.js → CardDetail-LfDCJQhS.js} +26 -26
  4. package/dist/{ComparePage-C32hPOqV.js → ComparePage-CrbCyu4u.js} +33 -33
  5. package/dist/MemoriesPage-BRA53Hlb.js +679 -0
  6. package/dist/{OverviewPage-BkeuYg6d.js → OverviewPage-BSBqY83_.js} +31 -31
  7. package/dist/{RegisterPage-Dawr26jh.js → RegisterPage-64yGl9E-.js} +75 -75
  8. package/dist/SessionPage-C4hSlxWQ.js +906 -0
  9. package/dist/api/agentClient.d.ts +62 -1
  10. package/dist/api/wire.d.ts +461 -4
  11. package/dist/features/artifacts/ArtifactDetail.d.ts +15 -0
  12. package/dist/features/artifacts/ArtifactDialogs.d.ts +29 -0
  13. package/dist/features/artifacts/ArtifactLedger.d.ts +11 -0
  14. package/dist/features/artifacts/ArtifactStats.d.ts +9 -0
  15. package/dist/features/artifacts/ArtifactsPage.d.ts +1 -0
  16. package/dist/features/artifacts/artifactsCommands.d.ts +3 -0
  17. package/dist/features/artifacts/artifactsStore.d.ts +27 -0
  18. package/dist/features/artifacts/artifactsUi.d.ts +33 -0
  19. package/dist/features/bootstrap.d.ts +1 -0
  20. package/dist/features/chat/model/artifactAccess.d.ts +50 -0
  21. package/dist/features/chat/model/artifactCsv.d.ts +11 -0
  22. package/dist/features/chat/model/artifactExport.d.ts +45 -0
  23. package/dist/features/chat/model/artifactStats.d.ts +79 -0
  24. package/dist/features/chat/model/artifacts.d.ts +151 -0
  25. package/dist/features/chat/model/claims.d.ts +102 -0
  26. package/dist/features/chat/model/contextSources.d.ts +41 -0
  27. package/dist/features/chat/model/entries.d.ts +32 -2
  28. package/dist/features/chat/model/format.d.ts +6 -0
  29. package/dist/features/chat/model/memoryRecords.d.ts +79 -0
  30. package/dist/features/chat/model/monitors.d.ts +11 -0
  31. package/dist/features/chat/model/progress.d.ts +73 -0
  32. package/dist/features/chat/model/tasks.d.ts +1 -1
  33. package/dist/features/chat/panels/ProgressPanel.d.ts +8 -0
  34. package/dist/features/chat/session/SessionController.d.ts +3 -2
  35. package/dist/features/chat/session/useFileMentions.d.ts +18 -5
  36. package/dist/features/chat/transcript/ArtifactCard.d.ts +8 -0
  37. package/dist/features/chat/transcript/Rows.d.ts +12 -1
  38. package/dist/features/memories/MemoriesPage.d.ts +1 -0
  39. package/dist/features/memories/memoriesCommands.d.ts +3 -0
  40. package/dist/features/memories/memoriesController.d.ts +81 -0
  41. package/dist/features/workspace/claimsCommands.d.ts +26 -0
  42. package/dist/features/workspace/collisionsWatcher.d.ts +7 -0
  43. package/dist/features/workspace/useSessionPageHooks.d.ts +1 -1
  44. package/dist/{index-B0hmy2Cw.js → index-CMPf-3JZ.js} +4412 -3293
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.js +86 -82
  47. package/dist/lib/paths.d.ts +12 -0
  48. package/dist/lib/zip.d.ts +14 -0
  49. package/dist/{promptHistory-DQyt2Br0.js → promptHistory-BR0NpLCI.js} +14 -14
  50. package/package.json +1 -1
  51. package/dist/SessionPage-68nDek9w.js +0 -881
@@ -2,17 +2,17 @@ import { jsxs as l, jsx as t, Fragment as re } from "react/jsx-runtime";
2
2
  import { useState as x, useRef as W, useEffect as K, forwardRef as De, useMemo as Re } from "react";
3
3
  import { useNavigate as Ae, useSearchParams as Oe, Link as B } from "react-router";
4
4
  import { Hourglass as Te, Send as Ke, Play as Le, Plus as $e, LayoutList as oe, Inbox as ce, Search as de, X as Ie, Pin as q, MessageSquareReply as pe, Eye as Me, PinOff as Ue, Pencil as _e } from "lucide-react";
5
- import { g as ee, y as c, u as Be, Z as Fe, H as D, V as Ne, C as F, w as Y, x as ve, $ as He, a0 as Z, s as We, a1 as je, a2 as he, a3 as qe, z as ue, a4 as Ge, J as me, a as $, a5 as Je, a6 as Qe, a7 as Ve, F as fe, a8 as G, M as xe, a9 as Xe, aa as ge, ab as Ye, ac as be, ad as Ze, ae as et, r as ye, af as I, ag as J, I as Q, ah as tt, ai as nt } from "./index-B0hmy2Cw.js";
6
- import { C as st } from "./CardDetail-D0TLVhf7.js";
7
- import { d as Se, P as at, p as we } from "./promptHistory-DQyt2Br0.js";
8
- const V = /* @__PURE__ */ new Map(), Ce = "Commands run in a session: open it to run one.";
9
- function H(i) {
5
+ import { n as ee, K as c, u as Be, a6 as He, Y as D, a3 as Ne, C as H, H as X, J as ve, a8 as Fe, a9 as Z, s as We, aa as je, ab as he, ac as qe, O as ue, ad as Ye, Z as me, a as $, ae as Ge, af as Je, ag as Qe, V as fe, ah as Y, $ as xe, ai as Ve, aj as ge, ak as Xe, al as be, am as Ze, an as et, r as ye, ao as I, ap as G, I as J, aq as tt, ar as nt } from "./index-CMPf-3JZ.js";
6
+ import { C as st } from "./CardDetail-LfDCJQhS.js";
7
+ import { d as Se, P as at, p as we } from "./promptHistory-BR0NpLCI.js";
8
+ const Q = /* @__PURE__ */ new Map(), Ce = "Commands run in a session: open it to run one.";
9
+ function F(i) {
10
10
  return !!i.id && !i.parent && !i.run;
11
11
  }
12
12
  function it({ row: i, onOpen: m, onClose: v, autoFocus: S = !0 }) {
13
13
  const { toast: R } = ee(), g = i.id ? c.get(i.id) : void 0;
14
- Be(g, F.pause, F.run, F.session, F.reset);
15
- const [w, M] = x(() => V.get(i.key) ?? ""), [f, o] = x(null), [P, b] = x(!1), A = W(null);
14
+ Be(g, H.pause, H.run, H.session, H.reset);
15
+ const [w, M] = x(() => Q.get(i.key) ?? ""), [f, o] = x(null), [P, b] = x(!1), A = W(null);
16
16
  K(() => {
17
17
  i.id && !c.get(i.id) && c.attach(i.id);
18
18
  }, [i.id]);
@@ -23,7 +23,7 @@ function it({ row: i, onOpen: m, onClose: v, autoFocus: S = !0 }) {
23
23
  S && !h && A.current?.focus();
24
24
  }, [S, h]);
25
25
  const k = (r) => {
26
- M(r), o(null), r ? V.set(i.key, r) : V.delete(i.key);
26
+ M(r), o(null), r ? Q.set(i.key, r) : Q.delete(i.key);
27
27
  }, C = async () => {
28
28
  const r = w.trim();
29
29
  if (!r) return m();
@@ -38,7 +38,7 @@ function it({ row: i, onOpen: m, onClose: v, autoFocus: S = !0 }) {
38
38
  }
39
39
  };
40
40
  return h && g ? /* @__PURE__ */ l("fieldset", { className: "flex min-w-0 flex-col gap-2", "aria-label": `Decision for ${i.title}`, children: [
41
- /* @__PURE__ */ t(at, { controller: g, collisions: Fe.collisions }),
41
+ /* @__PURE__ */ t(at, { controller: g, collisions: He.collisions }),
42
42
  w.trim() && /* @__PURE__ */ t("button", { type: "button", className: "self-start text-[12px] text-muted hover:text-ink", onClick: () => b(!1), children: "Back to your message" })
43
43
  ] }) : /* @__PURE__ */ l("div", { className: "flex flex-col gap-1.5", children: [
44
44
  y && /* @__PURE__ */ l("div", { className: "flex items-center gap-2 rounded-lg border border-warn-line bg-warn-soft px-2.5 py-1.5 text-[12.5px] text-ink", children: [
@@ -85,7 +85,7 @@ function rt(i) {
85
85
  }
86
86
  }
87
87
  const ot = De(function({ onStarted: m, onOpenNew: v, onLeave: S }, R) {
88
- const { toast: g } = ee(), w = Y((n) => n.agents), M = Y((n) => n.features), f = ve(w, M), [o, P] = x(() => ({ agent: "", workspace: "", ...lt() })), [b, A] = x(null), [y, h] = x(""), [k, C] = x(null), [r, O] = x(!1), p = f.find((n) => n.name === o.agent) ?? f.find((n) => n.name === "chat") ?? f[0], z = !!(p && He.has(p.name)), N = b?.find((n) => n.path === o.workspace) ?? b?.[0] ?? null;
88
+ const { toast: g } = ee(), w = X((n) => n.agents), M = X((n) => n.features), f = ve(w, M), [o, P] = x(() => ({ agent: "", workspace: "", ...lt() })), [b, A] = x(null), [y, h] = x(""), [k, C] = x(null), [r, O] = x(!1), p = f.find((n) => n.name === o.agent) ?? f.find((n) => n.name === "chat") ?? f[0], z = !!(p && Fe.has(p.name)), N = b?.find((n) => n.path === o.workspace) ?? b?.[0] ?? null;
89
89
  K(() => {
90
90
  if (!z || b !== null) return;
91
91
  const n = We().workspaces;
@@ -144,20 +144,20 @@ const ot = De(function({ onStarted: m, onOpenNew: v, onLeave: S }, R) {
144
144
  function pt(i, m) {
145
145
  return i.flatMap((v) => [{ row: v, depth: 0 }, ...m.has(v.key) ? v.children.map((S) => ({ row: S, depth: 1 })) : []]);
146
146
  }
147
- const X = (i) => !!(i?.id && !i.parent && !i.run);
147
+ const V = (i) => !!(i?.id && !i.parent && !i.run);
148
148
  function yt() {
149
- const i = je(), m = Ae(), { toast: v } = ee(), S = Y((e) => ve(e.agents, e.features).length > 0), R = he(ct), g = he(dt), w = R ? "aside" : g ? "table" : "card", [M, f] = Oe(), o = M.get("view") === "inbox" ? "inbox" : "all", [P, b] = x(/* @__PURE__ */ new Set()), [A, y] = x(null), [h, k] = x(""), [C, r] = x(null), [O, p] = x(null), z = W(null), N = W(null), L = W(null), T = c.seen, n = qe(o === "inbox" ? c.inbox() : i, h), d = Re(() => o === "inbox" ? n.map((e) => ({ row: e, depth: 0 })) : pt(n, P), [n, P, o]), E = Math.max(0, d.findIndex((e) => e.row.key === A)), s = d[E]?.row ?? null, U = s !== null && C === s.key, te = (e) => {
149
+ const i = je(), m = Ae(), { toast: v } = ee(), S = X((e) => ve(e.agents, e.features).length > 0), R = he(ct), g = he(dt), w = R ? "aside" : g ? "table" : "card", [M, f] = Oe(), o = M.get("view") === "inbox" ? "inbox" : "all", [P, b] = x(/* @__PURE__ */ new Set()), [A, y] = x(null), [h, k] = x(""), [C, r] = x(null), [O, p] = x(null), z = W(null), N = W(null), L = W(null), T = c.seen, n = qe(o === "inbox" ? c.inbox() : i, h), d = Re(() => o === "inbox" ? n.map((e) => ({ row: e, depth: 0 })) : pt(n, P), [n, P, o]), E = Math.max(0, d.findIndex((e) => e.row.key === A)), s = d[E]?.row ?? null, U = s !== null && C === s.key, te = (e) => {
150
150
  const a = d[Math.max(0, Math.min(d.length - 1, e))]?.row;
151
151
  a && y(a.key);
152
152
  };
153
153
  K(() => (c.wantFleetTasks([...P], "overview"), () => c.wantFleetTasks([], "overview")), [P]);
154
154
  const j = (e) => {
155
155
  if (e) {
156
- if (!H(e)) return m(I(e));
156
+ if (!F(e)) return m(I(e));
157
157
  y(e.key), r(e.key);
158
158
  }
159
159
  }, ne = (e) => {
160
- if (!X(e)) return;
160
+ if (!V(e)) return;
161
161
  const a = c.togglePin(e.id);
162
162
  v(a ? `Pinned “${e.title}” to the top` : `Unpinned “${e.title}”`, "ok");
163
163
  }, Pe = ({ agent: e, workspace: a }) => {
@@ -175,7 +175,7 @@ function yt() {
175
175
  else if (a.key === "n" && S) L.current?.focus();
176
176
  else if (a.key === "/") N.current?.focus();
177
177
  else if (a.key === "*") ne(s);
178
- else if (a.key === "e" && X(s)) p(s.key);
178
+ else if (a.key === "e" && V(s)) p(s.key);
179
179
  else if (a.key === "m" && s) c.markSeen(s);
180
180
  else if (a.key === "Escape" && h) k("");
181
181
  else if (a.key === "Escape" && C) r(null);
@@ -193,14 +193,14 @@ function yt() {
193
193
  const se = (e) => b((a) => {
194
194
  const u = new Set(a);
195
195
  return u.has(e) ? u.delete(e) : u.add(e), u;
196
- }), ze = (e, a) => O === e.key && w === "table" ? /* @__PURE__ */ t(J, { row: e, onDone: () => p(null) }) : /* @__PURE__ */ l(B, { to: I(e), className: $("flex min-w-0 items-center gap-1", a, e.attention && "font-semibold"), children: [
196
+ }), ze = (e, a) => O === e.key && w === "table" ? /* @__PURE__ */ t(G, { row: e, onDone: () => p(null) }) : /* @__PURE__ */ l(B, { to: I(e), className: $("flex min-w-0 items-center gap-1", a, e.attention && "font-semibold"), children: [
197
197
  c.isPinned(e.id) && /* @__PURE__ */ t(q, { size: 11, "aria-label": "Pinned", className: "shrink-0 text-accent" }),
198
198
  /* @__PURE__ */ t("span", { className: "truncate", children: e.title })
199
- ] }), ae = c.inbox().length, ie = s && H(s) && /* @__PURE__ */ t(it, { row: s, onOpen: () => m(ue(s.key)), onClose: () => r(null), autoFocus: U }, s.key), le = !!(s?.id && c.get(s.id) && Se(c.get(s.id)));
199
+ ] }), ae = c.inbox().length, ie = s && F(s) && /* @__PURE__ */ t(it, { row: s, onOpen: () => m(ue(s.key)), onClose: () => r(null), autoFocus: U }, s.key), le = !!(s?.id && c.get(s.id) && Se(c.get(s.id)));
200
200
  return /* @__PURE__ */ l("div", { className: "flex h-full min-h-0 flex-col", children: [
201
201
  /* @__PURE__ */ l("div", { className: "shrink-0 px-4 pt-5 sm:px-6", children: [
202
202
  /* @__PURE__ */ t(
203
- Ge,
203
+ Ye,
204
204
  {
205
205
  eyebrow: "Agents",
206
206
  title: o === "inbox" ? "Inbox" : "Sessions",
@@ -253,7 +253,7 @@ function yt() {
253
253
  o === "all" && // biome-ignore lint/a11y/noLabelWithoutControl: NativeSelect is a select
254
254
  /* @__PURE__ */ l("label", { className: "ml-auto flex items-center gap-2 text-[12.5px] text-muted", children: [
255
255
  "Sort",
256
- /* @__PURE__ */ t(Z, { value: c.sort, onChange: (e) => Ve(e.target.value) && c.setSort(e.target.value), className: "h-8 w-auto text-[12.5px]", children: Je.map((e) => /* @__PURE__ */ t("option", { value: e, children: Qe[e] }, e)) })
256
+ /* @__PURE__ */ t(Z, { value: c.sort, onChange: (e) => Qe(e.target.value) && c.setSort(e.target.value), className: "h-8 w-auto text-[12.5px]", children: Ge.map((e) => /* @__PURE__ */ t("option", { value: e, children: Je[e] }, e)) })
257
257
  ] })
258
258
  ] })
259
259
  ] }),
@@ -270,7 +270,7 @@ function yt() {
270
270
  /* @__PURE__ */ t("th", { className: "py-2 pr-3 text-right", children: "Updated" })
271
271
  ] }) }),
272
272
  /* @__PURE__ */ t("tbody", { children: d.map(({ row: e, depth: a }, u) => {
273
- const _ = G(e, T);
273
+ const _ = Y(e, T);
274
274
  return /* @__PURE__ */ l(
275
275
  "tr",
276
276
  {
@@ -283,7 +283,7 @@ function yt() {
283
283
  /* @__PURE__ */ t("td", { className: "py-2 pl-3", children: /* @__PURE__ */ t(xe, { row: e }) }),
284
284
  /* @__PURE__ */ l("td", { className: "max-w-0 py-2 pr-3", children: [
285
285
  /* @__PURE__ */ l("div", { className: "flex items-center gap-1.5", style: { paddingLeft: a * 16 }, children: [
286
- e.children.length > 0 && /* @__PURE__ */ t(Xe, { open: P.has(e.key), onClick: () => se(e.key), label: "Tasks" }),
286
+ e.children.length > 0 && /* @__PURE__ */ t(Ve, { open: P.has(e.key), onClick: () => se(e.key), label: "Tasks" }),
287
287
  ze(e, "text-ink hover:text-accent")
288
288
  ] }),
289
289
  /* @__PURE__ */ l("div", { className: "flex gap-2 truncate text-[11.5px] text-faint", style: { paddingLeft: a * 16 }, children: [
@@ -298,7 +298,7 @@ function yt() {
298
298
  ] }),
299
299
  /* @__PURE__ */ t("td", { className: "py-2 pr-3", children: o === "inbox" && _ ? /* @__PURE__ */ t("span", { className: $("text-[12px] font-semibold", _ === "input" ? "text-warn" : _ === "failed" ? "text-danger" : "text-ok"), children: ke[_] }) : /* @__PURE__ */ l("span", { className: "flex items-center gap-1.5", children: [
300
300
  /* @__PURE__ */ t(ge, { stage: e.stage, text: e.stageText }),
301
- e.stageSince && /* @__PURE__ */ t("span", { className: "text-[11px] text-faint", children: Ye(Date.now() - e.stageSince) })
301
+ e.stageSince && /* @__PURE__ */ t("span", { className: "text-[11px] text-faint", children: Xe(Date.now() - e.stageSince) })
302
302
  ] }) }),
303
303
  /* @__PURE__ */ t("td", { className: "hidden py-2 pr-3 lg:table-cell", children: /* @__PURE__ */ t(be, { pct: e.contextPct, width: "w-14" }) }),
304
304
  /* @__PURE__ */ t("td", { className: "hidden py-2 pr-3 text-right text-muted tabular-nums lg:table-cell", children: e.tokens ? Ze(e.tokens) : "" }),
@@ -311,9 +311,9 @@ function yt() {
311
311
  }) })
312
312
  ] }),
313
313
  /* @__PURE__ */ t("ul", { className: "divide-y divide-line-soft md:hidden", children: d.map(({ row: e, depth: a }) => {
314
- const u = G(e, T);
314
+ const u = Y(e, T);
315
315
  return /* @__PURE__ */ l("li", { className: "flex items-stretch", style: { paddingLeft: a * 16 }, children: [
316
- O === e.key && w === "card" ? /* @__PURE__ */ t("div", { className: "flex-1 px-3 py-2.5", children: /* @__PURE__ */ t(J, { row: e, onDone: () => p(null) }) }) : /* @__PURE__ */ l(B, { to: I(e), className: "flex min-h-14 min-w-0 flex-1 items-start gap-2.5 px-3 py-2.5 active:bg-surface-hover", children: [
316
+ O === e.key && w === "card" ? /* @__PURE__ */ t("div", { className: "flex-1 px-3 py-2.5", children: /* @__PURE__ */ t(G, { row: e, onDone: () => p(null) }) }) : /* @__PURE__ */ l(B, { to: I(e), className: "flex min-h-14 min-w-0 flex-1 items-start gap-2.5 px-3 py-2.5 active:bg-surface-hover", children: [
317
317
  /* @__PURE__ */ t(xe, { row: e, className: "mt-1" }),
318
318
  /* @__PURE__ */ l("span", { className: "min-w-0 flex-1", children: [
319
319
  /* @__PURE__ */ l("span", { className: $("flex items-center gap-1 text-[14px] text-ink", e.attention && "font-semibold"), children: [
@@ -331,21 +331,21 @@ function yt() {
331
331
  /* @__PURE__ */ t(be, { pct: e.contextPct, width: "w-10", showLabel: !1 })
332
332
  ] })
333
333
  ] }),
334
- H(e) && /* @__PURE__ */ t(Q, { label: e.status === "input" ? `Answer ${e.title}` : `Reply to ${e.title}`, className: "m-1 h-12 w-12 self-center", onClick: () => j(e), children: /* @__PURE__ */ t(pe, { size: 16 }) })
334
+ F(e) && /* @__PURE__ */ t(J, { label: e.status === "input" ? `Answer ${e.title}` : `Reply to ${e.title}`, className: "m-1 h-12 w-12 self-center", onClick: () => j(e), children: /* @__PURE__ */ t(pe, { size: 16 }) })
335
335
  ] }, e.key);
336
336
  }) })
337
337
  ] }) : h ? /* @__PURE__ */ t(fe, { icon: /* @__PURE__ */ t(de, { size: 20 }), title: "Nothing matches the filter", children: /* @__PURE__ */ t(D, { size: "sm", onClick: () => k(""), children: "Clear it" }) }) : /* @__PURE__ */ t(fe, { icon: o === "inbox" ? /* @__PURE__ */ t(ce, { size: 20 }) : /* @__PURE__ */ t(oe, { size: 20 }), title: o === "inbox" ? "Nothing needs you" : c.listedOnce ? "No sessions yet" : "Loading…", children: o === "inbox" ? "When a session waits for a decision, fails or finishes, it shows here." : null }) }),
338
338
  s && /* @__PURE__ */ l("aside", { className: "hidden w-96 shrink-0 flex-col gap-3 overflow-y-auto rounded-lg border border-line bg-surface p-4 xl:flex", "aria-label": "Selected session", children: [
339
- /* @__PURE__ */ t("h2", { className: "text-[14px] font-semibold text-ink", children: O === s.key && w === "aside" ? /* @__PURE__ */ t(J, { row: s, onDone: () => p(null) }) : s.title }),
339
+ /* @__PURE__ */ t("h2", { className: "text-[14px] font-semibold text-ink", children: O === s.key && w === "aside" ? /* @__PURE__ */ t(G, { row: s, onDone: () => p(null) }) : s.title }),
340
340
  /* @__PURE__ */ t(st, { card: { row: s, fleet: null }, seen: T }),
341
341
  R && (U || le) && ie,
342
342
  /* @__PURE__ */ l("div", { className: "flex flex-wrap gap-2", children: [
343
343
  /* @__PURE__ */ t(B, { to: I(s), children: /* @__PURE__ */ t(D, { size: "sm", variant: "primary", children: "Open" }) }),
344
- H(s) && !U && !le && /* @__PURE__ */ t(D, { size: "sm", icon: /* @__PURE__ */ t(pe, { size: 13 }), onClick: () => j(s), children: s.status === "input" ? "Answer" : "Reply" }),
345
- G(s, T) && /* @__PURE__ */ t(D, { size: "sm", icon: /* @__PURE__ */ t(Me, { size: 13 }), onClick: () => c.markSeen(s), children: "Mark seen" }),
346
- X(s) && /* @__PURE__ */ l(re, { children: [
347
- /* @__PURE__ */ t(Q, { size: "sm", label: c.isPinned(s.id) ? "Unpin" : "Pin to the top", onClick: () => ne(s), children: c.isPinned(s.id) ? /* @__PURE__ */ t(Ue, { size: 14 }) : /* @__PURE__ */ t(q, { size: 14 }) }),
348
- /* @__PURE__ */ t(Q, { size: "sm", label: "Rename", onClick: () => p(s.key), children: /* @__PURE__ */ t(_e, { size: 14 }) })
344
+ F(s) && !U && !le && /* @__PURE__ */ t(D, { size: "sm", icon: /* @__PURE__ */ t(pe, { size: 13 }), onClick: () => j(s), children: s.status === "input" ? "Answer" : "Reply" }),
345
+ Y(s, T) && /* @__PURE__ */ t(D, { size: "sm", icon: /* @__PURE__ */ t(Me, { size: 13 }), onClick: () => c.markSeen(s), children: "Mark seen" }),
346
+ V(s) && /* @__PURE__ */ l(re, { children: [
347
+ /* @__PURE__ */ t(J, { size: "sm", label: c.isPinned(s.id) ? "Unpin" : "Pin to the top", onClick: () => ne(s), children: c.isPinned(s.id) ? /* @__PURE__ */ t(Ue, { size: 14 }) : /* @__PURE__ */ t(q, { size: 14 }) }),
348
+ /* @__PURE__ */ t(J, { size: "sm", label: "Rename", onClick: () => p(s.key), children: /* @__PURE__ */ t(_e, { size: 14 }) })
349
349
  ] }),
350
350
  s.prUrl && /* @__PURE__ */ t("a", { href: s.prUrl, target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ t(D, { size: "sm", children: "Pull request" }) })
351
351
  ] }),
@@ -1,8 +1,8 @@
1
- import { jsxs as o, jsx as s, Fragment as Ce } from "react/jsx-runtime";
2
- import { useState as m, useSyncExternalStore as $e, useEffect as Ae, useMemo as k, useCallback as Ee, Fragment as Le } from "react";
3
- import { useSearchParams as Me, Link as De } from "react-router";
4
- import { Download as Re, FileText as Fe, FileSpreadsheet as Te, FileJson as je, Search as X, RotateCcw as Ie, BookMarked as _e } from "lucide-react";
5
- import { aF as P, g as ye, aG as ze, y, aH as Oe, aI as z, aJ as Be, a4 as Pe, H as D, au as Ue, ax as qe, av as Ve, a0 as Z, aK as O, aL as ee, aM as se, aA as te, aB as Je, F as ne, aN as ae, aO as ie, aP as oe, aQ as le, aR as re, a as B, aS as Ke, aT as He, Q as Ge, z as Qe, r as We, aU as Ye, aV as Xe, aW as Ze } from "./index-B0hmy2Cw.js";
1
+ import { jsxs as o, jsx as s, Fragment as $e } from "react/jsx-runtime";
2
+ import { useState as m, useSyncExternalStore as Ce, useEffect as Ee, useMemo as k, useCallback as Ae, Fragment as De } from "react";
3
+ import { useSearchParams as Le, Link as Me } from "react-router";
4
+ import { Download as Re, FileText as Te, FileSpreadsheet as je, FileJson as Fe, Search as X, RotateCcw as _e, BookMarked as Ie } from "lucide-react";
5
+ import { aO as B, n as Oe, aP as ye, K as O, aQ as ze, aR as y, aS as Pe, ad as Be, Y as M, aD as Ue, aG as qe, aE as Ve, a9 as Z, aT as z, aU as ee, aV as se, aJ as te, aK as Ke, V as ne, aW as ae, aX as ie, aY as oe, aZ as le, a_ as re, a as P, a$ as Je, b0 as Ye, a2 as Ge, O as We, r as He, b1 as Qe, b2 as Xe, b3 as Ze } from "./index-CMPf-3JZ.js";
6
6
  import { Menu as es, MenuButton as ss } from "@headlessui/react";
7
7
  function U(t) {
8
8
  if (Number.isNaN(t.getTime())) return "";
@@ -30,12 +30,12 @@ function de(t) {
30
30
  return [ce, ce.map(() => "---"), ...i].map((n) => `| ${n.map(ts).join(" | ")} |`);
31
31
  }
32
32
  function as(t, i) {
33
- const n = [...t].sort(P), r = `Generated ${U(i.generatedAt)}${i.workspace ? ` · workspace \`${i.workspace}\`` : ""}`, c = [`# ${i.title ?? "Decision register"}`, "", r, ""], h = [
33
+ const n = [...t].sort(B), r = `Generated ${U(i.generatedAt)}${i.workspace ? ` · workspace \`${i.workspace}\`` : ""}`, c = [`# ${i.title ?? "Decision register"}`, "", r, ""], h = [
34
34
  ["Decisions", "decision"],
35
35
  ["Requirements", "requirement"]
36
36
  ];
37
- for (const [p, C] of h) {
38
- const x = n.filter((b) => b.kind === C && b.status === "active");
37
+ for (const [p, $] of h) {
38
+ const x = n.filter((b) => b.kind === $ && b.status === "active");
39
39
  c.push(`## ${p}`, "", ...x.length ? de(x) : ["_None recorded._"], "");
40
40
  }
41
41
  const g = n.filter((p) => p.status !== "active");
@@ -61,7 +61,7 @@ const os = [
61
61
  "arguments"
62
62
  ];
63
63
  function ls(t) {
64
- const i = [...t].sort(P).map((n) => [
64
+ const i = [...t].sort(B).map((n) => [
65
65
  n.id,
66
66
  n.kind,
67
67
  U(new Date(n.createdAt)),
@@ -79,16 +79,16 @@ function ls(t) {
79
79
  `).join("");
80
80
  }
81
81
  function rs(t) {
82
- return `${JSON.stringify([...t].sort(P), null, 2)}
82
+ return `${JSON.stringify([...t].sort(B), null, 2)}
83
83
  `;
84
84
  }
85
85
  function cs(t, i, n) {
86
86
  return t === "csv" ? ls(i) : t === "json" ? rs(i) : as(i, n);
87
87
  }
88
88
  const ds = 100, he = [
89
- { format: "md", label: "Markdown", icon: Fe, type: "text/markdown;charset=utf-8" },
90
- { format: "csv", label: "CSV", icon: Te, type: "text/csv;charset=utf-8" },
91
- { format: "json", label: "JSON", icon: je, type: "application/json;charset=utf-8" }
89
+ { format: "md", label: "Markdown", icon: Te, type: "text/markdown;charset=utf-8" },
90
+ { format: "csv", label: "CSV", icon: je, type: "text/csv;charset=utf-8" },
91
+ { format: "json", label: "JSON", icon: Fe, type: "application/json;charset=utf-8" }
92
92
  ];
93
93
  function us(t) {
94
94
  const i = (n) => String(n).padStart(2, "0");
@@ -98,8 +98,8 @@ function ms(t) {
98
98
  return t.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "register";
99
99
  }
100
100
  function ps(t, i, n, r = /* @__PURE__ */ new Date()) {
101
- const c = cs(t, i, { workspace: n === z ? null : n, generatedAt: r }), h = he.find((g) => g.format === t).type;
102
- return { text: c, type: h, filename: `decision-register-${ms(O(n))}-${us(r)}.${t}` };
101
+ const c = cs(t, i, { workspace: n === y ? null : n, generatedAt: r }), h = he.find((g) => g.format === t).type;
102
+ return { text: c, type: h, filename: `decision-register-${ms(z(n))}-${us(r)}.${t}` };
103
103
  }
104
104
  function hs(t, i, n) {
105
105
  const r = URL.createObjectURL(new Blob([t], { type: i })), c = document.createElement("a");
@@ -125,102 +125,102 @@ function ue(t, i) {
125
125
  }
126
126
  function me({ entry: t, sessions: i, className: n }) {
127
127
  return /* @__PURE__ */ s(
128
- De,
128
+ Me,
129
129
  {
130
- to: Qe(t.sessionId),
131
- className: B("truncate text-muted hover:text-accent hover:underline", n),
130
+ to: We(t.sessionId),
131
+ className: P("truncate text-muted hover:text-accent hover:underline", n),
132
132
  title: `Open ${ue(t, i)}`,
133
133
  children: ue(t, i)
134
134
  }
135
135
  );
136
136
  }
137
137
  function pe({ iso: t }) {
138
- return /* @__PURE__ */ s("time", { dateTime: t, title: new Date(t).toLocaleString(), children: We(t) });
138
+ return /* @__PURE__ */ s("time", { dateTime: t, title: new Date(t).toLocaleString(), children: He(t) });
139
139
  }
140
140
  function ks() {
141
- const { toast: t } = ye(), [i, n] = Me(), [r, c] = m([]), [h, g] = m(/* @__PURE__ */ new Map()), [p, C] = m(!0), [x, b] = m(null), [ge, fe] = m(0), [v, q] = m("all"), [N, V] = m("all"), [w, J] = m("all"), [$, K] = m(""), [R, A] = m(null), [F, H] = m(null), xe = ze(), be = $e(y.subscribe, y.getVersion);
142
- Ae(() => {
141
+ const { toast: t } = Oe(), [i, n] = Le(), [r, c] = m([]), [h, g] = m(/* @__PURE__ */ new Map()), [p, $] = m(!0), [x, b] = m(null), [ge, fe] = m(0), [v, q] = m("all"), [N, V] = m("all"), [w, K] = m("all"), [C, J] = m(""), [R, E] = m(null), [T, Y] = m(null), xe = ye(), be = Ce(O.subscribe, O.getVersion);
142
+ Ee(() => {
143
143
  let e = !1;
144
- return C(!0), b(null), gs(c, () => e).catch((a) => {
144
+ return $(!0), b(null), gs(c, () => e).catch((a) => {
145
145
  e || b(a instanceof Error ? a.message : String(a));
146
146
  }).finally(() => {
147
- e || C(!1);
147
+ e || $(!1);
148
148
  }), () => {
149
149
  e = !0;
150
150
  };
151
151
  }, [ge]);
152
- const E = k(() => {
152
+ const A = k(() => {
153
153
  const e = new Map(r.map((a) => [a.id, a]));
154
154
  for (const [a, l] of h) e.set(a, l);
155
- for (const a of y.attached()) a.session && e.has(a.id) && e.set(a.id, a.session);
155
+ for (const a of O.attached()) a.session && e.has(a.id) && e.set(a.id, a.session);
156
156
  return e;
157
- }, [r, h, xe, be]), S = k(() => [...E.values()], [E]), T = k(() => Oe(S), [S]), d = i.get("scope") ?? T[0]?.scope ?? z, u = k(() => Be(S, d), [S, d]), L = k(
157
+ }, [r, h, xe, be]), S = k(() => [...A.values()], [A]), j = k(() => ze(S), [S]), d = i.get("scope") ?? j[0]?.scope ?? y, u = k(() => Pe(S, d), [S, d]), D = k(
158
158
  () => u.filter(
159
- (e) => (v === "all" || e.kind === v) && (N === "all" || e.status === N) && (w === "all" || e.source === w) && fs(e, $.trim())
159
+ (e) => (v === "all" || e.kind === v) && (N === "all" || e.status === N) && (w === "all" || e.source === w) && fs(e, C.trim())
160
160
  ),
161
- [u, v, N, w, $]
162
- ), j = u.filter((e) => e.status === "active"), M = j.filter((e) => e.kind === "decision").length, G = v !== "all" || N !== "all" || w !== "all" || $.trim() !== "", ve = (e) => {
163
- A(null), n(
161
+ [u, v, N, w, C]
162
+ ), F = u.filter((e) => e.status === "active"), L = F.filter((e) => e.kind === "decision").length, G = v !== "all" || N !== "all" || w !== "all" || C.trim() !== "", ve = (e) => {
163
+ E(null), n(
164
164
  (a) => {
165
165
  const l = new URLSearchParams(a);
166
166
  return l.set("scope", e), l;
167
167
  },
168
168
  { replace: !0 }
169
169
  );
170
- }, Q = () => {
171
- q("all"), V("all"), J("all"), K("");
172
- }, Ne = Ee((e) => {
170
+ }, W = () => {
171
+ q("all"), V("all"), K("all"), J("");
172
+ }, Ne = Ae((e) => {
173
173
  g((a) => {
174
174
  const l = new Map(a);
175
175
  for (const f of e) f && l.set(f.id, f);
176
176
  return l;
177
177
  });
178
- }, []), I = { scope: d, sessions: S }, _ = async (e, a) => {
179
- H(e.uid);
178
+ }, []), _ = { scope: d, sessions: S }, I = async (e, a) => {
179
+ Y(e.uid);
180
180
  try {
181
181
  const l = await a();
182
- t(l.message, l.ok ? "ok" : "danger"), l.ok && (Ne([l.session, ...l.sessions ?? []]), A(null));
182
+ t(l.message, l.ok ? "ok" : "danger"), l.ok && (Ne([l.session, ...l.sessions ?? []]), E(null));
183
183
  } finally {
184
- H(null);
184
+ Y(null);
185
185
  }
186
- }, W = (e, a) => {
187
- a === "retire" ? _(e, () => Ze(I, e.id)) : A({ uid: e.uid, mode: a });
186
+ }, H = (e, a) => {
187
+ a === "retire" ? I(e, () => Ze(_, e.id)) : E({ uid: e.uid, mode: a });
188
188
  }, we = (e, a, l, f) => {
189
- a === "edit" ? _(e, () => Ye(I, e.id, { text: l, rationale: f })) : _(e, () => Xe(I, e.id, { text: l, rationale: f }));
189
+ a === "edit" ? I(e, () => Qe(_, e.id, { text: l, rationale: f })) : I(e, () => Xe(_, e.id, { text: l, rationale: f }));
190
190
  }, Se = (e) => {
191
191
  const a = ps(e, u, d);
192
192
  hs(a.text, a.type, a.filename);
193
- }, Y = (e) => R?.uid === e.uid ? /* @__PURE__ */ s(
194
- He,
193
+ }, Q = (e) => R?.uid === e.uid ? /* @__PURE__ */ s(
194
+ Ye,
195
195
  {
196
196
  entry: e,
197
197
  mode: R.mode,
198
- busy: F === e.uid,
198
+ busy: T === e.uid,
199
199
  onSave: (a, l) => we(e, R.mode, a, l),
200
- onCancel: () => A(null)
200
+ onCancel: () => E(null)
201
201
  }
202
- ) : null, ke = T.some((e) => e.scope === d);
202
+ ) : null, ke = j.some((e) => e.scope === d);
203
203
  return /* @__PURE__ */ o("div", { className: "min-h-full bg-bg", children: [
204
204
  /* @__PURE__ */ s(
205
- Pe,
205
+ Be,
206
206
  {
207
207
  eyebrow: "Memory",
208
208
  title: "Decision register",
209
209
  subtitle: /* @__PURE__ */ o("span", { className: "inline-flex min-w-0 max-w-full items-center gap-1", children: [
210
- /* @__PURE__ */ s("span", { className: "truncate font-mono text-[12px]", title: d, children: d === z ? "Chats without a workspace" : d }),
210
+ /* @__PURE__ */ s("span", { className: "truncate font-mono text-[12px]", title: d, children: d === y ? "Chats without a workspace" : d }),
211
211
  /* @__PURE__ */ s("span", { "aria-hidden": "true", children: "·" }),
212
212
  /* @__PURE__ */ o("span", { className: "whitespace-nowrap", children: [
213
- M,
213
+ L,
214
214
  " ",
215
- M === 1 ? "decision" : "decisions",
215
+ L === 1 ? "decision" : "decisions",
216
216
  " · ",
217
- j.length - M,
217
+ F.length - L,
218
218
  " ",
219
- j.length - M === 1 ? "requirement" : "requirements"
219
+ F.length - L === 1 ? "requirement" : "requirements"
220
220
  ] })
221
221
  ] }),
222
222
  actions: /* @__PURE__ */ o(es, { children: [
223
- /* @__PURE__ */ s(ss, { as: D, icon: /* @__PURE__ */ s(Re, { size: 15 }), disabled: !u.length, children: "Export" }),
223
+ /* @__PURE__ */ s(ss, { as: M, icon: /* @__PURE__ */ s(Re, { size: 15 }), disabled: !u.length, children: "Export" }),
224
224
  /* @__PURE__ */ o(Ue, { children: [
225
225
  /* @__PURE__ */ o(qe, { children: [
226
226
  "All ",
@@ -236,9 +236,9 @@ function ks() {
236
236
  /* @__PURE__ */ o("div", { className: "mx-auto max-w-[1300px] px-4 py-4 sm:px-5", children: [
237
237
  /* @__PURE__ */ o("div", { className: "mb-3 grid gap-2 sm:grid-cols-2 lg:flex lg:flex-wrap lg:items-center", children: [
238
238
  /* @__PURE__ */ s("div", { className: "sm:col-span-2 lg:w-72", children: /* @__PURE__ */ o(Z, { "aria-label": "Scope", value: d, onChange: (e) => ve(e.target.value), className: "h-8 text-[13px]", children: [
239
- !ke && /* @__PURE__ */ s("option", { value: d, children: O(d) }),
240
- T.map((e) => /* @__PURE__ */ o("option", { value: e.scope, title: e.scope, children: [
241
- O(e.scope),
239
+ !ke && /* @__PURE__ */ s("option", { value: d, children: z(d) }),
240
+ j.map((e) => /* @__PURE__ */ o("option", { value: e.scope, title: e.scope, children: [
241
+ z(e.scope),
242
242
  " · ",
243
243
  e.active,
244
244
  " active · ",
@@ -253,8 +253,8 @@ function ks() {
253
253
  "input",
254
254
  {
255
255
  type: "search",
256
- value: $,
257
- onChange: (e) => K(e.target.value),
256
+ value: C,
257
+ onChange: (e) => J(e.target.value),
258
258
  placeholder: "Search statements, rationales, sessions",
259
259
  "aria-label": "Search the register",
260
260
  className: "h-8 w-full rounded-md border border-line bg-surface pr-2 pl-8 text-[13px] text-ink placeholder:text-faint focus:border-accent focus:ring-2 focus:ring-accent/20 focus:outline-none"
@@ -288,7 +288,7 @@ function ks() {
288
288
  ]
289
289
  }
290
290
  ),
291
- /* @__PURE__ */ s("div", { className: "lg:w-40", children: /* @__PURE__ */ o(Z, { "aria-label": "Source", value: w, onChange: (e) => J(e.target.value), className: "h-8 text-[13px]", children: [
291
+ /* @__PURE__ */ s("div", { className: "lg:w-40", children: /* @__PURE__ */ o(Z, { "aria-label": "Source", value: w, onChange: (e) => K(e.target.value), className: "h-8 text-[13px]", children: [
292
292
  /* @__PURE__ */ s("option", { value: "all", children: "Any source" }),
293
293
  Object.keys(se).map((e) => /* @__PURE__ */ s("option", { value: e, children: se[e] }, e))
294
294
  ] }) }),
@@ -299,18 +299,18 @@ function ks() {
299
299
  r.length ? `${r.length} sessions…` : "sessions…"
300
300
  ] }),
301
301
  !p && /* @__PURE__ */ o("span", { children: [
302
- G ? `${L.length} of ${u.length}` : u.length,
302
+ G ? `${D.length} of ${u.length}` : u.length,
303
303
  " ",
304
304
  u.length === 1 ? "entry" : "entries"
305
305
  ] }),
306
- G && /* @__PURE__ */ s(D, { size: "xs", variant: "subtle", icon: /* @__PURE__ */ s(Ie, { size: 12 }), onClick: Q, children: "Clear" })
306
+ G && /* @__PURE__ */ s(M, { size: "xs", variant: "subtle", icon: /* @__PURE__ */ s(_e, { size: 12 }), onClick: W, children: "Clear" })
307
307
  ] })
308
308
  ] }),
309
- x && /* @__PURE__ */ o(Je, { tone: "danger", className: "mb-3", action: /* @__PURE__ */ s(D, { size: "xs", onClick: () => fe((e) => e + 1), children: "Retry" }), children: [
309
+ x && /* @__PURE__ */ o(Ke, { tone: "danger", className: "mb-3", action: /* @__PURE__ */ s(M, { size: "xs", onClick: () => fe((e) => e + 1), children: "Retry" }), children: [
310
310
  "Could not read every session: ",
311
311
  x
312
312
  ] }),
313
- u.length === 0 ? /* @__PURE__ */ s("div", { className: "rounded-xl border border-line bg-surface", children: p ? /* @__PURE__ */ s("div", { className: "flex justify-center py-16 text-accent", children: /* @__PURE__ */ s(te, {}) }) : /* @__PURE__ */ o(ne, { icon: /* @__PURE__ */ s(_e, { size: 20 }), title: "Nothing remembered here yet", children: [
313
+ u.length === 0 ? /* @__PURE__ */ s("div", { className: "rounded-xl border border-line bg-surface", children: p ? /* @__PURE__ */ s("div", { className: "flex justify-center py-16 text-accent", children: /* @__PURE__ */ s(te, {}) }) : /* @__PURE__ */ o(ne, { icon: /* @__PURE__ */ s(Ie, { size: 20 }), title: "Nothing remembered here yet", children: [
314
314
  "In a session, ",
315
315
  /* @__PURE__ */ s("code", { className: "font-mono", children: "/decision" }),
316
316
  " or ",
@@ -318,7 +318,7 @@ function ks() {
318
318
  " records one, approvals are remembered as you make them, and ",
319
319
  /* @__PURE__ */ s("code", { className: "font-mono", children: "/decisions extract" }),
320
320
  " asks the agent for what was agreed."
321
- ] }) }) : L.length === 0 ? /* @__PURE__ */ s("div", { className: "rounded-xl border border-line bg-surface", children: /* @__PURE__ */ s(ne, { icon: /* @__PURE__ */ s(X, { size: 20 }), title: "No entries match", action: /* @__PURE__ */ s(D, { size: "sm", onClick: Q, children: "Clear filters" }), children: "Nothing in this scope matches the filters." }) }) : /* @__PURE__ */ o(Ce, { children: [
321
+ ] }) }) : D.length === 0 ? /* @__PURE__ */ s("div", { className: "rounded-xl border border-line bg-surface", children: /* @__PURE__ */ s(ne, { icon: /* @__PURE__ */ s(X, { size: 20 }), title: "No entries match", action: /* @__PURE__ */ s(M, { size: "sm", onClick: W, children: "Clear filters" }), children: "Nothing in this scope matches the filters." }) }) : /* @__PURE__ */ o($e, { children: [
322
322
  /* @__PURE__ */ s("div", { className: "hidden overflow-hidden rounded-xl border border-line bg-surface md:block", children: /* @__PURE__ */ o("table", { className: "w-full table-fixed text-left text-[13px]", children: [
323
323
  /* @__PURE__ */ o("colgroup", { children: [
324
324
  /* @__PURE__ */ s("col", { className: "w-[84px]" }),
@@ -338,36 +338,36 @@ function ks() {
338
338
  /* @__PURE__ */ s("th", { scope: "col", children: "Status" }),
339
339
  /* @__PURE__ */ s("th", { scope: "col", children: /* @__PURE__ */ s("span", { className: "sr-only", children: "Actions" }) })
340
340
  ] }) }),
341
- /* @__PURE__ */ s("tbody", { className: "divide-y divide-line-soft [&_td]:px-3 [&_td]:py-2.5 [&_td]:align-top", children: L.map((e) => {
342
- const a = Y(e);
343
- return /* @__PURE__ */ o(Le, { children: [
344
- /* @__PURE__ */ o("tr", { className: B("group transition-colors hover:bg-surface-hover/50", e.status !== "active" && "bg-surface-alt/60"), children: [
341
+ /* @__PURE__ */ s("tbody", { className: "divide-y divide-line-soft [&_td]:px-3 [&_td]:py-2.5 [&_td]:align-top", children: D.map((e) => {
342
+ const a = Q(e);
343
+ return /* @__PURE__ */ o(De, { children: [
344
+ /* @__PURE__ */ o("tr", { className: P("group transition-colors hover:bg-surface-hover/50", e.status !== "active" && "bg-surface-alt/60"), children: [
345
345
  /* @__PURE__ */ s("td", { children: /* @__PURE__ */ s(ae, { entry: e }) }),
346
346
  /* @__PURE__ */ s("td", { children: /* @__PURE__ */ s(ie, { entry: e }) }),
347
347
  /* @__PURE__ */ s("td", { className: "hidden text-[12.5px] text-muted lg:table-cell", children: oe(e) }),
348
- /* @__PURE__ */ s("td", { className: "text-[12.5px]", children: /* @__PURE__ */ s(me, { entry: e, sessions: E, className: "block" }) }),
348
+ /* @__PURE__ */ s("td", { className: "text-[12.5px]", children: /* @__PURE__ */ s(me, { entry: e, sessions: A, className: "block" }) }),
349
349
  /* @__PURE__ */ s("td", { className: "text-[12.5px] whitespace-nowrap text-muted", children: /* @__PURE__ */ s(pe, { iso: e.createdAt }) }),
350
350
  /* @__PURE__ */ s("td", { children: /* @__PURE__ */ s(le, { status: e.status }) }),
351
- /* @__PURE__ */ s("td", { className: "text-right", children: /* @__PURE__ */ s(re, { entry: e, onAction: (l) => W(e, l), disabled: F === e.uid }) })
351
+ /* @__PURE__ */ s("td", { className: "text-right", children: /* @__PURE__ */ s(re, { entry: e, onAction: (l) => H(e, l), disabled: T === e.uid }) })
352
352
  ] }),
353
353
  a && /* @__PURE__ */ s("tr", { children: /* @__PURE__ */ s("td", { colSpan: 7, className: "bg-surface-alt", children: a }) })
354
354
  ] }, e.uid);
355
355
  }) })
356
356
  ] }) }),
357
- /* @__PURE__ */ s("ul", { className: "space-y-2 md:hidden", children: L.map((e) => {
358
- const a = Y(e);
359
- return /* @__PURE__ */ o("li", { className: B("rounded-xl border border-line bg-surface p-3", e.status !== "active" && "bg-surface-alt"), children: [
357
+ /* @__PURE__ */ s("ul", { className: "space-y-2 md:hidden", children: D.map((e) => {
358
+ const a = Q(e);
359
+ return /* @__PURE__ */ o("li", { className: P("rounded-xl border border-line bg-surface p-3", e.status !== "active" && "bg-surface-alt"), children: [
360
360
  /* @__PURE__ */ o("div", { className: "mb-1.5 flex items-center gap-1.5", children: [
361
361
  /* @__PURE__ */ s(ae, { entry: e }),
362
- /* @__PURE__ */ s(Ke, { kind: e.kind }),
362
+ /* @__PURE__ */ s(Je, { kind: e.kind }),
363
363
  /* @__PURE__ */ s(le, { status: e.status, quietActive: !0 }),
364
- /* @__PURE__ */ s("div", { className: "ml-auto", children: /* @__PURE__ */ s(re, { entry: e, onAction: (l) => W(e, l), disabled: F === e.uid }) })
364
+ /* @__PURE__ */ s("div", { className: "ml-auto", children: /* @__PURE__ */ s(re, { entry: e, onAction: (l) => H(e, l), disabled: T === e.uid }) })
365
365
  ] }),
366
366
  a ?? /* @__PURE__ */ s(ie, { entry: e }),
367
367
  /* @__PURE__ */ o("div", { className: "mt-2 flex min-w-0 items-center gap-1.5 text-[12px] text-faint", children: [
368
368
  /* @__PURE__ */ s("span", { className: "shrink-0", children: oe(e) }),
369
369
  /* @__PURE__ */ s("span", { "aria-hidden": "true", children: "·" }),
370
- /* @__PURE__ */ s(me, { entry: e, sessions: E, className: "min-w-0" }),
370
+ /* @__PURE__ */ s(me, { entry: e, sessions: A, className: "min-w-0" }),
371
371
  /* @__PURE__ */ s("span", { "aria-hidden": "true", children: "·" }),
372
372
  /* @__PURE__ */ s("span", { className: "shrink-0", children: /* @__PURE__ */ s(pe, { iso: e.createdAt }) })
373
373
  ] })