@burdenoff/microfe-vibecontrols 2026.601.5 → 2026.601.7

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 (45) hide show
  1. package/dist/components/sessions/EntityInfoPopover.js +183 -0
  2. package/dist/components/sessions/EntityInfoPopover.js.map +1 -0
  3. package/dist/components/sessions/SessionCard.js +80 -72
  4. package/dist/components/sessions/SessionCard.js.map +1 -1
  5. package/dist/components/sessions/SessionGroup.js +49 -0
  6. package/dist/components/sessions/SessionGroup.js.map +1 -0
  7. package/dist/components/sessions/SessionInfoPanel.js +128 -0
  8. package/dist/components/sessions/SessionInfoPanel.js.map +1 -0
  9. package/dist/components/sessions/SessionList.js +109 -96
  10. package/dist/components/sessions/SessionList.js.map +1 -1
  11. package/dist/components/sessions/SessionsCommandPalette.js +36 -0
  12. package/dist/components/sessions/SessionsCommandPalette.js.map +1 -0
  13. package/dist/components/sessions/ShortcutCheatsheet.js +73 -0
  14. package/dist/components/sessions/ShortcutCheatsheet.js.map +1 -0
  15. package/dist/components/sessions/TerminalPanel.js +640 -537
  16. package/dist/components/sessions/TerminalPanel.js.map +1 -1
  17. package/dist/components/sessions/groupSessions.js +46 -0
  18. package/dist/components/sessions/groupSessions.js.map +1 -0
  19. package/dist/components/sessions/index.js +7 -0
  20. package/dist/components/sessions/sessionShortcuts.js +149 -0
  21. package/dist/components/sessions/sessionShortcuts.js.map +1 -0
  22. package/dist/components/shared/FilterDropdown.js +14 -13
  23. package/dist/components/shared/FilterDropdown.js.map +1 -1
  24. package/dist/components/shared/LinkToVibePanel.js.map +1 -1
  25. package/dist/components/vibe/VibeLinkedEntitiesPanel.js.map +1 -1
  26. package/dist/generated/wspace-operations.js +21 -0
  27. package/dist/generated/wspace-operations.js.map +1 -1
  28. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js +17 -0
  29. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -0
  30. package/dist/pages/AgentGraphPage.js +65 -65
  31. package/dist/pages/AgentGraphPage.js.map +1 -1
  32. package/dist/pages/SessionsPage.js +1189 -920
  33. package/dist/pages/SessionsPage.js.map +1 -1
  34. package/dist/pages/TargetsPage.js +105 -92
  35. package/dist/pages/TargetsPage.js.map +1 -1
  36. package/dist/pages/VibeCalendarPage.js +2 -1
  37. package/dist/pages/VibeCalendarPage.js.map +1 -1
  38. package/dist/pages/ai/AgentManagerPage.js.map +1 -1
  39. package/dist/providers/VibeControlsProvider.js +147 -113
  40. package/dist/providers/VibeControlsProvider.js.map +1 -1
  41. package/dist/store/vibeControlsStore.js +16 -1
  42. package/dist/store/vibeControlsStore.js.map +1 -1
  43. package/dist/translations/en.js +97 -2
  44. package/dist/translations/en.js.map +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1,36 @@
1
+ import { useTr as e } from "../../shared/hooks/useTr.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import { CommandDialog as r, CommandEmpty as i, CommandGroup as a, CommandInput as o, CommandItem as s, CommandList as c, CommandShortcut as l } from "@burdenoff/fe-libs/ui";
4
+ //#region src/components/sessions/SessionsCommandPalette.tsx
5
+ function u({ open: u, onOpenChange: d, commands: f }) {
6
+ let p = e(), m = [];
7
+ for (let e of f) m.includes(e.group) || m.push(e.group);
8
+ return /* @__PURE__ */ n(r, {
9
+ open: u,
10
+ onOpenChange: d,
11
+ title: p("sessions.palette.title", "Sessions command palette"),
12
+ description: p("sessions.palette.description", "Search sessions or run a command"),
13
+ children: [/* @__PURE__ */ t(o, {
14
+ placeholder: p("sessions.palette.placeholder", "Search sessions or type a command…"),
15
+ "data-testid": "sessions-palette-input"
16
+ }), /* @__PURE__ */ n(c, { children: [/* @__PURE__ */ t(i, { children: p("sessions.palette.empty", "No results.") }), m.map((e) => /* @__PURE__ */ t(a, {
17
+ heading: e,
18
+ children: f.filter((t) => t.group === e).map((e) => /* @__PURE__ */ n(s, {
19
+ value: `${e.label} ${e.keywords ?? ""}`,
20
+ onSelect: () => {
21
+ d(!1), e.run();
22
+ },
23
+ "data-testid": `sessions-palette-item-${e.id}`,
24
+ children: [
25
+ e.icon,
26
+ /* @__PURE__ */ t("span", { children: e.label }),
27
+ e.shortcut && /* @__PURE__ */ t(l, { children: e.shortcut })
28
+ ]
29
+ }, e.id))
30
+ }, e))] })]
31
+ });
32
+ }
33
+ //#endregion
34
+ export { u as SessionsCommandPalette };
35
+
36
+ //# sourceMappingURL=SessionsCommandPalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionsCommandPalette.js","names":[],"sources":["../../../src/components/sessions/SessionsCommandPalette.tsx"],"sourcesContent":["/**\n * SessionsCommandPalette — a cmdk action palette for the Sessions page.\n * Renders grouped, fuzzy-searchable commands (Actions / View / Sessions /\n * Navigation). Every action is supplied by the page so the palette and the\n * keyboard shortcuts share the same handler functions.\n */\nimport type { ReactNode } from 'react';\nimport {\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n} from '@burdenoff/fe-libs/ui';\nimport { useTr } from '../../shared/hooks/useTr';\n\nexport interface PaletteCommand {\n id: string;\n label: string;\n group: string;\n icon?: ReactNode;\n shortcut?: string;\n /** Extra text folded into the fuzzy-search value. */\n keywords?: string;\n run: () => void;\n}\n\nexport interface SessionsCommandPaletteProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n commands: PaletteCommand[];\n}\n\nexport function SessionsCommandPalette({\n open,\n onOpenChange,\n commands,\n}: SessionsCommandPaletteProps) {\n const tr = useTr();\n\n // Preserve group insertion order.\n const groups: string[] = [];\n for (const cmd of commands) {\n if (!groups.includes(cmd.group)) groups.push(cmd.group);\n }\n\n return (\n <CommandDialog\n open={open}\n onOpenChange={onOpenChange}\n title={tr('sessions.palette.title', 'Sessions command palette')}\n description={tr('sessions.palette.description', 'Search sessions or run a command')}\n >\n <CommandInput\n placeholder={tr('sessions.palette.placeholder', 'Search sessions or type a command…')}\n data-testid=\"sessions-palette-input\"\n />\n <CommandList>\n <CommandEmpty>{tr('sessions.palette.empty', 'No results.')}</CommandEmpty>\n {groups.map((group) => (\n <CommandGroup key={group} heading={group}>\n {commands\n .filter((cmd) => cmd.group === group)\n .map((cmd) => (\n <CommandItem\n key={cmd.id}\n value={`${cmd.label} ${cmd.keywords ?? ''}`}\n onSelect={() => {\n onOpenChange(false);\n cmd.run();\n }}\n data-testid={`sessions-palette-item-${cmd.id}`}\n >\n {cmd.icon}\n <span>{cmd.label}</span>\n {cmd.shortcut && <CommandShortcut>{cmd.shortcut}</CommandShortcut>}\n </CommandItem>\n ))}\n </CommandGroup>\n ))}\n </CommandList>\n </CommandDialog>\n );\n}\n"],"mappings":";;;;AAmCA,SAAgB,EAAuB,EACrC,SACA,iBACA,eAC8B;CAC9B,IAAM,IAAK,GAAO,EAGZ,IAAmB,EAAE;AAC3B,MAAK,IAAM,KAAO,EAChB,CAAK,EAAO,SAAS,EAAI,MAAM,IAAE,EAAO,KAAK,EAAI,MAAM;AAGzD,QACE,kBAAC,GAAD;EACQ;EACQ;EACd,OAAO,EAAG,0BAA0B,2BAA2B;EAC/D,aAAa,EAAG,gCAAgC,mCAAmC;YAJrF,CAME,kBAAC,GAAD;GACE,aAAa,EAAG,gCAAgC,qCAAqC;GACrF,eAAY;GACZ,CAAA,EACF,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAe,EAAG,0BAA0B,cAAc,EAAgB,CAAA,EACzE,EAAO,KAAK,MACX,kBAAC,GAAD;GAA0B,SAAS;aAChC,EACE,QAAQ,MAAQ,EAAI,UAAU,EAAM,CACpC,KAAK,MACJ,kBAAC,GAAD;IAEE,OAAO,GAAG,EAAI,MAAM,GAAG,EAAI,YAAY;IACvC,gBAAgB;AAEd,KADA,EAAa,GAAM,EACnB,EAAI,KAAK;;IAEX,eAAa,yBAAyB,EAAI;cAP5C;KASG,EAAI;KACL,kBAAC,QAAD,EAAA,UAAO,EAAI,OAAa,CAAA;KACvB,EAAI,YAAY,kBAAC,GAAD,EAAA,UAAkB,EAAI,UAA2B,CAAA;KACtD;MAXP,EAAI,GAWG,CACd;GACS,EAlBI,EAkBJ,CACf,CACU,EAAA,CAAA,CACA"}
@@ -0,0 +1,73 @@
1
+ import { useTr as e } from "../../shared/hooks/useTr.js";
2
+ import { groupShortcutsByCategory as t } from "./sessionShortcuts.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/components/sessions/ShortcutCheatsheet.tsx
5
+ var i = {
6
+ Actions: "Actions",
7
+ Tabs: "Tabs",
8
+ View: "View",
9
+ Navigation: "Navigation",
10
+ Help: "Help"
11
+ };
12
+ function a({ isOpen: a, onClose: o, shortcuts: s }) {
13
+ let c = e();
14
+ if (!a) return null;
15
+ let l = t(s);
16
+ return /* @__PURE__ */ n("div", {
17
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-bg-overlay/80 backdrop-blur-sm p-4",
18
+ role: "dialog",
19
+ "aria-modal": "true",
20
+ "aria-labelledby": "sessions-cheatsheet-title",
21
+ onClick: o,
22
+ "data-testid": "sessions-cheatsheet",
23
+ children: /* @__PURE__ */ r("div", {
24
+ className: "bg-bg-surface border border-border-default rounded-xl shadow-2xl p-6 max-w-2xl w-full max-h-[80vh] overflow-y-auto",
25
+ onClick: (e) => e.stopPropagation(),
26
+ children: [
27
+ /* @__PURE__ */ r("div", {
28
+ className: "flex items-center justify-between mb-4",
29
+ children: [/* @__PURE__ */ n("h2", {
30
+ id: "sessions-cheatsheet-title",
31
+ className: "text-lg font-semibold text-text-primary",
32
+ children: c("sessions.cheatsheet.title", "Keyboard shortcuts")
33
+ }), /* @__PURE__ */ n("button", {
34
+ type: "button",
35
+ onClick: o,
36
+ className: "px-2.5 py-1 text-sm rounded-md bg-bg-sunken hover:bg-bg-elevated text-text-secondary transition-colors",
37
+ children: c("common.close", "Close")
38
+ })]
39
+ }),
40
+ /* @__PURE__ */ n("div", {
41
+ className: "grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-5",
42
+ children: l.map(([e, t]) => /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("h3", {
43
+ className: "text-[11px] font-semibold uppercase tracking-wider text-text-tertiary mb-2",
44
+ children: c(`sessions.cheatsheet.cat.${e}`, i[e] ?? e)
45
+ }), /* @__PURE__ */ n("dl", {
46
+ className: "space-y-1.5",
47
+ children: t.map((e) => /* @__PURE__ */ r("div", {
48
+ className: "flex items-center justify-between gap-4",
49
+ children: [/* @__PURE__ */ n("dt", {
50
+ className: "text-sm text-text-primary",
51
+ children: e.description
52
+ }), /* @__PURE__ */ n("dd", {
53
+ className: "shrink-0",
54
+ children: /* @__PURE__ */ n("kbd", {
55
+ className: "font-mono text-[11px] px-1.5 py-0.5 rounded bg-bg-sunken border border-border-subtle text-text-secondary whitespace-nowrap",
56
+ children: e.keysDisplay
57
+ })
58
+ })]
59
+ }, e.id))
60
+ })] }, e))
61
+ }),
62
+ /* @__PURE__ */ n("p", {
63
+ className: "mt-5 text-xs text-text-tertiary",
64
+ children: c("sessions.cheatsheet.hint", "Shortcuts are ignored while typing in an input. Sequences like “g a” mean press g then a.")
65
+ })
66
+ ]
67
+ })
68
+ });
69
+ }
70
+ //#endregion
71
+ export { a as ShortcutCheatsheet };
72
+
73
+ //# sourceMappingURL=ShortcutCheatsheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShortcutCheatsheet.js","names":[],"sources":["../../../src/components/sessions/ShortcutCheatsheet.tsx"],"sourcesContent":["/**\n * ShortcutCheatsheet — a keyboard-shortcut reference overlay rendered\n * directly from the shared shortcut registry, grouped by category. Because\n * it reads the same `SessionShortcut[]` the keydown handler is built from,\n * the help can never drift from the actual bindings.\n */\nimport { useTr } from '../../shared/hooks/useTr';\nimport { groupShortcutsByCategory, type SessionShortcut } from './sessionShortcuts';\n\nconst CATEGORY_LABELS: Record<string, string> = {\n Actions: 'Actions',\n Tabs: 'Tabs',\n View: 'View',\n Navigation: 'Navigation',\n Help: 'Help',\n};\n\nexport interface ShortcutCheatsheetProps {\n isOpen: boolean;\n onClose: () => void;\n shortcuts: SessionShortcut[];\n}\n\nexport function ShortcutCheatsheet({ isOpen, onClose, shortcuts }: ShortcutCheatsheetProps) {\n const tr = useTr();\n if (!isOpen) return null;\n const groups = groupShortcutsByCategory(shortcuts);\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-bg-overlay/80 backdrop-blur-sm p-4\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sessions-cheatsheet-title\"\n onClick={onClose}\n data-testid=\"sessions-cheatsheet\"\n >\n <div\n className=\"bg-bg-surface border border-border-default rounded-xl shadow-2xl p-6 max-w-2xl w-full max-h-[80vh] overflow-y-auto\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex items-center justify-between mb-4\">\n <h2 id=\"sessions-cheatsheet-title\" className=\"text-lg font-semibold text-text-primary\">\n {tr('sessions.cheatsheet.title', 'Keyboard shortcuts')}\n </h2>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"px-2.5 py-1 text-sm rounded-md bg-bg-sunken hover:bg-bg-elevated text-text-secondary transition-colors\"\n >\n {tr('common.close', 'Close')}\n </button>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-5\">\n {groups.map(([category, items]) => (\n <div key={category}>\n <h3 className=\"text-[11px] font-semibold uppercase tracking-wider text-text-tertiary mb-2\">\n {tr(`sessions.cheatsheet.cat.${category}`, CATEGORY_LABELS[category] ?? category)}\n </h3>\n <dl className=\"space-y-1.5\">\n {items.map((sc) => (\n <div key={sc.id} className=\"flex items-center justify-between gap-4\">\n <dt className=\"text-sm text-text-primary\">{sc.description}</dt>\n <dd className=\"shrink-0\">\n <kbd className=\"font-mono text-[11px] px-1.5 py-0.5 rounded bg-bg-sunken border border-border-subtle text-text-secondary whitespace-nowrap\">\n {sc.keysDisplay}\n </kbd>\n </dd>\n </div>\n ))}\n </dl>\n </div>\n ))}\n </div>\n <p className=\"mt-5 text-xs text-text-tertiary\">\n {tr(\n 'sessions.cheatsheet.hint',\n 'Shortcuts are ignored while typing in an input. Sequences like “g a” mean press g then a.'\n )}\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AASA,IAAM,IAA0C;CAC9C,SAAS;CACT,MAAM;CACN,MAAM;CACN,YAAY;CACZ,MAAM;CACP;AAQD,SAAgB,EAAmB,EAAE,WAAQ,YAAS,gBAAsC;CAC1F,IAAM,IAAK,GAAO;AAClB,KAAI,CAAC,EAAQ,QAAO;CACpB,IAAM,IAAS,EAAyB,EAAU;AAElD,QACE,kBAAC,OAAD;EACE,WAAU;EACV,MAAK;EACL,cAAW;EACX,mBAAgB;EAChB,SAAS;EACT,eAAY;YAEZ,kBAAC,OAAD;GACE,WAAU;GACV,UAAU,MAAM,EAAE,iBAAiB;aAFrC;IAIE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MAAI,IAAG;MAA4B,WAAU;gBAC1C,EAAG,6BAA6B,qBAAqB;MACnD,CAAA,EACL,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,WAAU;gBAET,EAAG,gBAAgB,QAAQ;MACrB,CAAA,CACL;;IACN,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAO,KAAK,CAAC,GAAU,OACtB,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAG,2BAA2B,KAAY,EAAgB,MAAa,EAAS;MAC9E,CAAA,EACL,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAM,KAAK,MACV,kBAAC,OAAD;OAAiB,WAAU;iBAA3B,CACE,kBAAC,MAAD;QAAI,WAAU;kBAA6B,EAAG;QAAiB,CAAA,EAC/D,kBAAC,MAAD;QAAI,WAAU;kBACZ,kBAAC,OAAD;SAAK,WAAU;mBACZ,EAAG;SACA,CAAA;QACH,CAAA,CACD;SAPI,EAAG,GAOP,CACN;MACC,CAAA,CACD,EAAA,EAhBI,EAgBJ,CACN;KACE,CAAA;IACN,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,4BACA,4FACD;KACC,CAAA;IACA;;EACF,CAAA"}