@polderlabs/bizar 7.0.2 → 7.0.4

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 (27) hide show
  1. package/bizar-dash/dist/assets/EnvVarsSection-BfhAz3ax.js.map +1 -1
  2. package/bizar-dash/dist/assets/Toast-ATSAmbdi.js.map +1 -1
  3. package/bizar-dash/dist/assets/main-CJAtrosO.css +1 -0
  4. package/bizar-dash/dist/assets/main-DKKj9dsq.js +430 -0
  5. package/bizar-dash/dist/assets/main-DKKj9dsq.js.map +1 -0
  6. package/bizar-dash/dist/assets/mobile-layout-GZ3bE8L6.js.map +1 -1
  7. package/bizar-dash/dist/assets/useSlashCommands-BOwD7lNb.js.map +1 -1
  8. package/bizar-dash/dist/index.html +2 -2
  9. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  10. package/bizar-dash/src/web/components/SettingsNav.tsx +9 -4
  11. package/bizar-dash/src/web/components/Topbar.tsx +45 -0
  12. package/bizar-dash/src/web/styles/main.css +87 -89
  13. package/bizar-dash/src/web/styles/memory.css +30 -35
  14. package/bizar-dash/src/web/styles/settings.css +6 -26
  15. package/bizar-dash/src/web/ui/data/data.css +6 -1
  16. package/bizar-dash/src/web/ui/index.ts +1 -0
  17. package/bizar-dash/src/web/views/Memory.tsx +94 -62
  18. package/bizar-dash/src/web/views/Overview.tsx +2 -23
  19. package/bizar-dash/tests/settings-layout.test.tsx +2 -2
  20. package/bizar-dash/tests/settings-nav.test.tsx +6 -6
  21. package/cli/provision-claude.mjs +108 -5
  22. package/package.json +1 -1
  23. package/packages/sdk/.harness/agents.json +17 -0
  24. package/packages/sdk/.harness/topology.json +4 -0
  25. package/bizar-dash/dist/assets/main-306CZfn6.js +0 -430
  26. package/bizar-dash/dist/assets/main-306CZfn6.js.map +0 -1
  27. package/bizar-dash/dist/assets/main-G3bNDpY3.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Toast-ATSAmbdi.js","sources":["../../../../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../../../../node_modules/lucide-react/dist/esm/icons/circle-check.js","../../../../../../node_modules/lucide-react/dist/esm/icons/info.js","../../../../../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../../src/web/components/Toast.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"ChevronDown\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleAlert = createLucideIcon(\"CircleAlert\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n]);\n\nexport { CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheck = createLucideIcon(\"CircleCheck\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Info = createLucideIcon(\"Info\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n]);\n\nexport { Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst TriangleAlert = createLucideIcon(\"TriangleAlert\", [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n]);\n\nexport { TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","// src/components/Toast.tsx — toast context, provider hook, container.\n\nimport {\n createContext,\n useEffect,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CheckCircle2, AlertTriangle, AlertCircle, Info, X } from 'lucide-react';\n\nexport type ToastKind = 'info' | 'success' | 'error' | 'warning';\n\nexport type Toast = {\n id: number;\n kind: ToastKind;\n message: string;\n};\n\nexport type ToastApi = {\n show: (message: string, kind?: ToastKind, durationMs?: number) => void;\n info: (message: string, durationMs?: number) => void;\n success: (message: string, durationMs?: number) => void;\n error: (message: string, durationMs?: number) => void;\n warning: (message: string, durationMs?: number) => void;\n dismiss: (id: number) => void;\n toasts: Toast[];\n};\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\nexport function useToast(): ToastApi {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n // Fallback no-op so tests/Storybook don't crash\n return {\n show: () => undefined,\n info: () => undefined,\n success: () => undefined,\n error: () => undefined,\n warning: () => undefined,\n dismiss: () => undefined,\n toasts: [],\n };\n }\n return ctx;\n}\n\nconst ICONS: Record<ToastKind, typeof Info> = {\n info: Info,\n success: CheckCircle2,\n error: AlertCircle,\n warning: AlertTriangle,\n};\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [toasts, setToasts] = useState<Toast[]>([]);\n const idRef = useRef(1);\n const timersRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(new Map());\n\n const dismiss = useCallback((id: number) => {\n setToasts((cur) => cur.filter((t) => t.id !== id));\n const timer = timersRef.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(id);\n }\n }, []);\n\n const show = useCallback<ToastApi['show']>(\n (message, kind = 'info', durationMs = 4000) => {\n const id = idRef.current++;\n setToasts((cur) => [...cur, { id, kind, message }]);\n if (durationMs > 0) {\n const timer = setTimeout(() => dismiss(id), durationMs);\n timersRef.current.set(id, timer);\n }\n },\n [dismiss],\n );\n\n useEffect(() => {\n return () => {\n for (const timer of timersRef.current.values()) clearTimeout(timer);\n timersRef.current.clear();\n };\n }, []);\n\n const api = useMemo<ToastApi>(\n () => ({\n show,\n info: (m, d) => show(m, 'info', d),\n success: (m, d) => show(m, 'success', d),\n error: (m, d) => show(m, 'error', d),\n warning: (m, d) => show(m, 'warning', d),\n dismiss,\n toasts,\n }),\n [show, dismiss, toasts],\n );\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastContainer toasts={toasts} onDismiss={dismiss} />\n </ToastContext.Provider>\n );\n}\n\nexport function ToastContainer({\n toasts,\n onDismiss,\n}: {\n toasts: Toast[];\n onDismiss: (id: number) => void;\n}) {\n return (\n <div className=\"toast-stack\" aria-live=\"polite\">\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} onDismiss={onDismiss} />\n ))}\n </div>\n );\n}\n\nfunction ToastItem({\n toast,\n onDismiss,\n}: {\n toast: Toast;\n onDismiss: (id: number) => void;\n}) {\n const Icon = ICONS[toast.kind];\n return (\n <div className={`toast toast-${toast.kind}`} role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n <Icon size={16} className=\"toast-icon\" />\n <span className=\"toast-message\">{toast.message}</span>\n <button\n type=\"button\"\n className=\"toast-close\"\n aria-label=\"Dismiss\"\n onClick={() => onDismiss(toast.id)}\n >\n <X size={14} />\n </button>\n </div>\n );\n}\n"],"names":["ChevronDown","createLucideIcon","CircleAlert","CircleCheck","Info","TriangleAlert","ToastContext","createContext","useToast","ctx","useContext","ICONS","CheckCircle2","AlertCircle","AlertTriangle","ToastProvider","children","toasts","setToasts","useState","idRef","useRef","timersRef","dismiss","useCallback","id","cur","t","timer","show","message","kind","durationMs","useEffect","api","useMemo","m","d","jsxs","jsx","ToastContainer","onDismiss","ToastItem","toast","Icon","X"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
1
+ {"version":3,"file":"Toast-ATSAmbdi.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/circle-check.js","../../../node_modules/lucide-react/dist/esm/icons/info.js","../../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../../src/web/components/Toast.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"ChevronDown\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleAlert = createLucideIcon(\"CircleAlert\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n]);\n\nexport { CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheck = createLucideIcon(\"CircleCheck\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Info = createLucideIcon(\"Info\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n]);\n\nexport { Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst TriangleAlert = createLucideIcon(\"TriangleAlert\", [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n]);\n\nexport { TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","// src/components/Toast.tsx — toast context, provider hook, container.\n\nimport {\n createContext,\n useEffect,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CheckCircle2, AlertTriangle, AlertCircle, Info, X } from 'lucide-react';\n\nexport type ToastKind = 'info' | 'success' | 'error' | 'warning';\n\nexport type Toast = {\n id: number;\n kind: ToastKind;\n message: string;\n};\n\nexport type ToastApi = {\n show: (message: string, kind?: ToastKind, durationMs?: number) => void;\n info: (message: string, durationMs?: number) => void;\n success: (message: string, durationMs?: number) => void;\n error: (message: string, durationMs?: number) => void;\n warning: (message: string, durationMs?: number) => void;\n dismiss: (id: number) => void;\n toasts: Toast[];\n};\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\nexport function useToast(): ToastApi {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n // Fallback no-op so tests/Storybook don't crash\n return {\n show: () => undefined,\n info: () => undefined,\n success: () => undefined,\n error: () => undefined,\n warning: () => undefined,\n dismiss: () => undefined,\n toasts: [],\n };\n }\n return ctx;\n}\n\nconst ICONS: Record<ToastKind, typeof Info> = {\n info: Info,\n success: CheckCircle2,\n error: AlertCircle,\n warning: AlertTriangle,\n};\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [toasts, setToasts] = useState<Toast[]>([]);\n const idRef = useRef(1);\n const timersRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(new Map());\n\n const dismiss = useCallback((id: number) => {\n setToasts((cur) => cur.filter((t) => t.id !== id));\n const timer = timersRef.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timersRef.current.delete(id);\n }\n }, []);\n\n const show = useCallback<ToastApi['show']>(\n (message, kind = 'info', durationMs = 4000) => {\n const id = idRef.current++;\n setToasts((cur) => [...cur, { id, kind, message }]);\n if (durationMs > 0) {\n const timer = setTimeout(() => dismiss(id), durationMs);\n timersRef.current.set(id, timer);\n }\n },\n [dismiss],\n );\n\n useEffect(() => {\n return () => {\n for (const timer of timersRef.current.values()) clearTimeout(timer);\n timersRef.current.clear();\n };\n }, []);\n\n const api = useMemo<ToastApi>(\n () => ({\n show,\n info: (m, d) => show(m, 'info', d),\n success: (m, d) => show(m, 'success', d),\n error: (m, d) => show(m, 'error', d),\n warning: (m, d) => show(m, 'warning', d),\n dismiss,\n toasts,\n }),\n [show, dismiss, toasts],\n );\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastContainer toasts={toasts} onDismiss={dismiss} />\n </ToastContext.Provider>\n );\n}\n\nexport function ToastContainer({\n toasts,\n onDismiss,\n}: {\n toasts: Toast[];\n onDismiss: (id: number) => void;\n}) {\n return (\n <div className=\"toast-stack\" aria-live=\"polite\">\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} onDismiss={onDismiss} />\n ))}\n </div>\n );\n}\n\nfunction ToastItem({\n toast,\n onDismiss,\n}: {\n toast: Toast;\n onDismiss: (id: number) => void;\n}) {\n const Icon = ICONS[toast.kind];\n return (\n <div className={`toast toast-${toast.kind}`} role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n <Icon size={16} className=\"toast-icon\" />\n <span className=\"toast-message\">{toast.message}</span>\n <button\n type=\"button\"\n className=\"toast-close\"\n aria-label=\"Dismiss\"\n onClick={() => onDismiss(toast.id)}\n >\n <X size={14} />\n </button>\n </div>\n );\n}\n"],"names":["ChevronDown","createLucideIcon","CircleAlert","CircleCheck","Info","TriangleAlert","ToastContext","createContext","useToast","ctx","useContext","ICONS","CheckCircle2","AlertCircle","AlertTriangle","ToastProvider","children","toasts","setToasts","useState","idRef","useRef","timersRef","dismiss","useCallback","id","cur","t","timer","show","message","kind","durationMs","useEffect","api","useMemo","m","d","jsxs","jsx","ToastContainer","onDismiss","ToastItem","toast","Icon","X"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}