@booboo-brain/panel 0.5.1 → 0.5.3

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/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # @booboo-brain/panel
2
+
3
+ The [Booboo](https://github.com/jessedu29260-netizen/booboo) **organigram** — your agent
4
+ fleet as a real org chart, where the chart is the **authority**, not a diagram. Drag an
5
+ agent under a new parent, hit apply, and the org file changes: validated before every
6
+ write (a cycle can never land), versioned in git. Agents that boot with `booboo_boot`
7
+ obey the new shape next session.
8
+
9
+ ## Standalone (no React app needed)
10
+
11
+ ```bash
12
+ booboo panel --org org.booboo.json [--snapshot brain.json] [--port 8990] [--no-open]
13
+ ```
14
+
15
+ The package ships a prebuilt static app (`dist-app/`) that the
16
+ [`@booboo-brain/cli`](https://www.npmjs.com/package/@booboo-brain/cli) `panel` command
17
+ serves directly. Pass `--snapshot` to light up live memory/report counts on each dossier.
18
+
19
+ Five tabs over one org file + one snapshot:
20
+
21
+ | Tab | What it shows |
22
+ |-----|---------------|
23
+ | **organigram** | the drag-drop hierarchy — every agent a card: rules, skills, buckets, latest reports |
24
+ | **buckets** | each memory bucket with live counts and the agents that reach it |
25
+ | **reports** | what the fleet closed, newest first, filterable per agent |
26
+ | **rules** | who declares each rule, who inherits it (rules inherit top-down) |
27
+ | **graph** | the 3D brain, embedded ([`@booboo-brain/viewer`](https://www.npmjs.com/package/@booboo-brain/viewer)) |
28
+
29
+ Reports and buckets fill two ways: **live**, when an agent calls `booboo_remember` /
30
+ `booboo_report` over MCP (durable journal writes, no rebuild), or **in bulk** from your
31
+ own tables via config — see the repo's
32
+ [docs/CONFIG.md](https://github.com/jessedu29260-netizen/booboo/blob/main/docs/CONFIG.md).
33
+
34
+ ## As a React component
35
+
36
+ ```bash
37
+ npm install @booboo-brain/panel react react-dom
38
+ ```
39
+
40
+ ```tsx
41
+ import { Panel } from "@booboo-brain/panel";
42
+
43
+ // Standalone default: same-origin /api/*. A host app injects its own backend:
44
+ export function OrgPage() {
45
+ return <Panel api={(path, init) => fetch(`/my-backend${path}`, init).then((r) => r.json())} />;
46
+ }
47
+ ```
48
+
49
+ `Panel` mounts the full five-tab app; the `api` prop (`ApiFn`) routes every read/write so
50
+ you can back it with anything that speaks the same `/api/*` shape the CLI serves.
51
+
52
+ Part of [Booboo](https://github.com/jessedu29260-netizen/booboo) — the unified operational brain. MIT.
package/dist/index.d.ts CHANGED
@@ -5,6 +5,6 @@ declare function Panel({ api }?: {
5
5
  api?: ApiFn;
6
6
  }): react.JSX.Element;
7
7
 
8
- declare const PANEL_VERSION = "0.4.0";
8
+ declare const PANEL_VERSION: string;
9
9
 
10
10
  export { type ApiFn, PANEL_VERSION, Panel };
package/dist/index.js CHANGED
@@ -511,10 +511,34 @@ body { font-family: var(--font); color: var(--ink); background: var(--bg); overf
511
511
  .pnl-fatal.calm { color: var(--ink-2); }
512
512
 
513
513
  @media (max-width: 760px) {
514
- .doss { position: fixed; right: 0; top: 0; bottom: 0; z-index: 5; width: min(340px, 88vw); box-shadow: -18px 0 50px rgba(0, 0, 0, 0.5); }
515
- .tree { padding: 20px 14px 60px; }
514
+ /* compact chrome */
515
+ .bar { gap: 8px 14px; padding: 9px 12px; }
516
+ .bar-brand { font-size: 13px; }
517
+ .bar-stats { gap: 11px; font-size: 11px; }
518
+ .bar-stats b { font-size: 12.5px; }
519
+ .bar-actions { gap: 6px; }
520
+ .btn { padding: 6px 11px; font-size: 11.5px; }
521
+ .tabs { padding: 0 4px; }
522
+ .tab { padding: 10px 9px 9px; font-size: 11.5px; }
523
+ .tree { padding: 12px 8px 40px; }
524
+ .tree-hint { display: none; }
516
525
  .ag { max-width: 100%; }
517
526
  .ag-role { display: none; }
527
+ .screen { padding: 18px 13px 60px; }
528
+ /* the dossier becomes a BOTTOM SHEET inside the pane — the chart above stays
529
+ tappable to switch agents; the ✕ closes. ABSOLUTE (not fixed) so it can
530
+ never overlap an embedding host's chrome. */
531
+ .doss {
532
+ position: absolute; left: 0; right: 0; bottom: 0; top: 34%;
533
+ width: auto; z-index: 6; border-radius: 16px 16px 0 0;
534
+ border-top: 1px solid var(--line);
535
+ box-shadow: 0 -18px 50px rgba(0, 0, 0, 0.55);
536
+ }
537
+ .doss { animation: sheetup 0.25s ease both; }
538
+ @keyframes sheetup { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
539
+ .doss-close { display: grid; }
540
+ /* zoom control clears the sheet — top-right of the chart */
541
+ .zoomer { top: 4px; right: 8px; bottom: auto; }
518
542
  }
519
543
  `;
520
544
 
@@ -873,6 +897,7 @@ function Dossier({
873
897
  onAdd,
874
898
  onRemove,
875
899
  onSelect,
900
+ onClose,
876
901
  health = null
877
902
  }) {
878
903
  const api = useApi();
@@ -963,7 +988,8 @@ function Dossier({
963
988
  ] }),
964
989
  /* @__PURE__ */ jsxs("div", { className: "doss-head-actions", children: [
965
990
  !edit && /* @__PURE__ */ jsx("button", { className: "doss-3d", title: "edit this agent", onClick: startEdit, children: "\u270E edit" }),
966
- hasSnapshot && /* @__PURE__ */ jsx("button", { className: "doss-3d", title: "see the whole brain in 3D", onClick: () => nav("/graph"), children: "\u25C9 3D" })
991
+ hasSnapshot && /* @__PURE__ */ jsx("button", { className: "doss-3d", title: "see the whole brain in 3D", onClick: () => nav("/graph"), children: "\u25C9 3D" }),
992
+ /* @__PURE__ */ jsx("button", { className: "doss-close", title: "close the dossier", "aria-label": "close the dossier", onClick: onClose, children: "\u2715" })
967
993
  ] })
968
994
  ] }),
969
995
  edit && /* @__PURE__ */ jsxs("div", { className: "doss-edit", children: [
@@ -1275,6 +1301,7 @@ function OrgScreen({
1275
1301
  onAdd,
1276
1302
  onRemove,
1277
1303
  onSelect: setSelected,
1304
+ onClose: () => setSelected(null),
1278
1305
  health
1279
1306
  }
1280
1307
  )
@@ -1707,8 +1734,67 @@ function Panel({ api = defaultApi } = {}) {
1707
1734
  ] });
1708
1735
  }
1709
1736
 
1737
+ // package.json
1738
+ var package_default = {
1739
+ name: "@booboo-brain/panel",
1740
+ version: "0.5.3",
1741
+ description: "Booboo panel \u2014 the organigram. Run your agents like a company: a drag-drop hierarchy your agents boot from, with buckets, reports, rules and the 3D graph, over one org file + snapshot.",
1742
+ license: "MIT",
1743
+ repository: {
1744
+ type: "git",
1745
+ url: "git+https://github.com/jessedu29260-netizen/booboo.git",
1746
+ directory: "packages/panel"
1747
+ },
1748
+ bugs: {
1749
+ url: "https://github.com/jessedu29260-netizen/booboo/issues"
1750
+ },
1751
+ homepage: "https://github.com/jessedu29260-netizen/booboo#readme",
1752
+ type: "module",
1753
+ main: "./dist/index.js",
1754
+ module: "./dist/index.js",
1755
+ types: "./dist/index.d.ts",
1756
+ exports: {
1757
+ ".": {
1758
+ types: "./dist/index.d.ts",
1759
+ import: "./dist/index.js"
1760
+ },
1761
+ "./package.json": "./package.json"
1762
+ },
1763
+ files: [
1764
+ "dist",
1765
+ "dist-app"
1766
+ ],
1767
+ scripts: {
1768
+ build: "tsup src/index.ts --format esm --dts --clean --external react,react-dom,@booboo-brain/spec && vite build --config vite.app.config.ts",
1769
+ dev: "vite"
1770
+ },
1771
+ peerDependencies: {
1772
+ react: ">=18",
1773
+ "react-dom": ">=18"
1774
+ },
1775
+ dependencies: {
1776
+ "@booboo-brain/spec": "workspace:*"
1777
+ },
1778
+ devDependencies: {
1779
+ react: "^19.0.0",
1780
+ "react-dom": "^19.0.0",
1781
+ "@types/react": "^19.0.0",
1782
+ "@types/react-dom": "^19.0.0",
1783
+ vite: "^6.0.0",
1784
+ "@vitejs/plugin-react": "^4.3.0",
1785
+ tsup: "^8",
1786
+ typescript: "^5"
1787
+ },
1788
+ publishConfig: {
1789
+ access: "public"
1790
+ },
1791
+ engines: {
1792
+ node: ">=18"
1793
+ }
1794
+ };
1795
+
1710
1796
  // src/index.ts
1711
- var PANEL_VERSION = "0.4.0";
1797
+ var PANEL_VERSION = package_default.version;
1712
1798
  export {
1713
1799
  PANEL_VERSION,
1714
1800
  Panel