@powerhousedao/connect 6.2.2-dev.75 → 6.2.2-dev.77

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 (84) hide show
  1. package/dist/{AddDriveModal-Bw0YuxZg.js → AddDriveModal-DIMewThf.js} +4 -4
  2. package/dist/{AddDriveModal-Bw0YuxZg.js.map → AddDriveModal-DIMewThf.js.map} +1 -1
  3. package/dist/{ClearStorageModal-BP2GVtGX.js → ClearStorageModal-DKy2tPYb.js} +4 -4
  4. package/dist/{ClearStorageModal-BP2GVtGX.js.map → ClearStorageModal-DKy2tPYb.js.map} +1 -1
  5. package/dist/{ConfirmDocumentUpgradeModal-9AaaQJTs.js → ConfirmDocumentUpgradeModal-CcpgpyOB.js} +4 -4
  6. package/dist/{ConfirmDocumentUpgradeModal-9AaaQJTs.js.map → ConfirmDocumentUpgradeModal-CcpgpyOB.js.map} +1 -1
  7. package/dist/{CookiesPolicyModal-CQ-zHJdw.js → CookiesPolicyModal-Bns4789o.js} +3 -3
  8. package/dist/{CookiesPolicyModal-CQ-zHJdw.js.map → CookiesPolicyModal-Bns4789o.js.map} +1 -1
  9. package/dist/{CreateDocumentModal-NNi4p6EI.js → CreateDocumentModal-MlA2YRaW.js} +3 -3
  10. package/dist/{CreateDocumentModal-NNi4p6EI.js.map → CreateDocumentModal-MlA2YRaW.js.map} +1 -1
  11. package/dist/{DebugSettingsModal-CZNdgk7M.js → DebugSettingsModal-890WlVp4.js} +6 -6
  12. package/dist/{DebugSettingsModal-CZNdgk7M.js.map → DebugSettingsModal-890WlVp4.js.map} +1 -1
  13. package/dist/{DeleteDriveModal-C7fnXMsR.js → DeleteDriveModal-gP7j8C0Y.js} +4 -4
  14. package/dist/{DeleteDriveModal-C7fnXMsR.js.map → DeleteDriveModal-gP7j8C0Y.js.map} +1 -1
  15. package/dist/{DeleteItemModal-BK_Y8Thj.js → DeleteItemModal-CMM-fPsz.js} +4 -4
  16. package/dist/{DeleteItemModal-BK_Y8Thj.js.map → DeleteItemModal-CMM-fPsz.js.map} +1 -1
  17. package/dist/{DisclaimerModal-DJPHCnFY.js → DisclaimerModal-meOyQCfU.js} +3 -3
  18. package/dist/{DisclaimerModal-DJPHCnFY.js.map → DisclaimerModal-meOyQCfU.js.map} +1 -1
  19. package/dist/{DocumentVersionUnsupportedModal-tBHLK6b1.js → DocumentVersionUnsupportedModal-TlDH1aP5.js} +3 -3
  20. package/dist/{DocumentVersionUnsupportedModal-tBHLK6b1.js.map → DocumentVersionUnsupportedModal-TlDH1aP5.js.map} +1 -1
  21. package/dist/{DownloadDocumentWithErrorsModal-sWu46HVB.js → DownloadDocumentWithErrorsModal-CCdbt2jJ.js} +3 -3
  22. package/dist/{DownloadDocumentWithErrorsModal-sWu46HVB.js.map → DownloadDocumentWithErrorsModal-CCdbt2jJ.js.map} +1 -1
  23. package/dist/{DriveAuthRequiredModal-D3IPAst0.js → DriveAuthRequiredModal-9GsPnOYi.js} +4 -4
  24. package/dist/{DriveAuthRequiredModal-D3IPAst0.js.map → DriveAuthRequiredModal-9GsPnOYi.js.map} +1 -1
  25. package/dist/{DriveSettingsModal-7OKx8foy.js → DriveSettingsModal-Bv0y1BEK.js} +3 -3
  26. package/dist/{DriveSettingsModal-7OKx8foy.js.map → DriveSettingsModal-Bv0y1BEK.js.map} +1 -1
  27. package/dist/{InspectorModal-iCN85ElA.js → InspectorModal-C3L5F4Ma.js} +6 -6
  28. package/dist/{InspectorModal-iCN85ElA.js.map → InspectorModal-C3L5F4Ma.js.map} +1 -1
  29. package/dist/{LoginModal-Cd2wGgG4.js → LoginModal-CxFHjxz8.js} +4 -4
  30. package/dist/{LoginModal-Cd2wGgG4.js.map → LoginModal-CxFHjxz8.js.map} +1 -1
  31. package/dist/{MissingPackageModal-DyP2-Ojb.js → MissingPackageModal-C6HO-a7E.js} +4 -4
  32. package/dist/{MissingPackageModal-DyP2-Ojb.js.map → MissingPackageModal-C6HO-a7E.js.map} +1 -1
  33. package/dist/{OpenFileDocumentsModal-BDVQgfks.js → OpenFileDocumentsModal-6MK7Ourm.js} +4 -4
  34. package/dist/{OpenFileDocumentsModal-BDVQgfks.js.map → OpenFileDocumentsModal-6MK7Ourm.js.map} +1 -1
  35. package/dist/{SettingsModal-BDGa08en.js → SettingsModal-DzW3OIrB.js} +149 -9
  36. package/dist/SettingsModal-DzW3OIrB.js.map +1 -0
  37. package/dist/{UpgradeDriveModal-wo5oO9mg.js → UpgradeDriveModal-077wPR2N.js} +3 -3
  38. package/dist/{UpgradeDriveModal-wo5oO9mg.js.map → UpgradeDriveModal-077wPR2N.js.map} +1 -1
  39. package/dist/app-loader-BLbUg8o4.js +4 -0
  40. package/dist/{app-loader-B_-UnYWW.js → app-loader-VArdOK2J.js} +77 -183
  41. package/dist/app-loader-VArdOK2J.js.map +1 -0
  42. package/dist/{build-info-ClZOS0KE.js → build-info-1EmBSRGA.js} +5 -5
  43. package/dist/{build-info-ClZOS0KE.js.map → build-info-1EmBSRGA.js.map} +1 -1
  44. package/dist/components-BmUSYnlz.js +5 -0
  45. package/dist/{connect.config-C-b_Yhd6.js → connect.config-XXdN7RFy.js} +4 -3
  46. package/dist/{connect.config-C-b_Yhd6.js.map → connect.config-XXdN7RFy.js.map} +1 -1
  47. package/dist/{connection-state-KCa1yljA.js → connection-state-DTSv8MDQ.js} +4 -4
  48. package/dist/{connection-state-KCa1yljA.js.map → connection-state-DTSv8MDQ.js.map} +1 -1
  49. package/dist/cookie-banner-BJrG_u38.js +70 -0
  50. package/dist/cookie-banner-BJrG_u38.js.map +1 -0
  51. package/dist/{reload-connect-toast-DDQEupCN.js → i18n-CWyz5j1Z.js} +5 -28
  52. package/dist/i18n-CWyz5j1Z.js.map +1 -0
  53. package/dist/{load-CD4j4th2.js → load-RSUO_fUw.js} +10 -10
  54. package/dist/{load-CD4j4th2.js.map → load-RSUO_fUw.js.map} +1 -1
  55. package/dist/main.js +1 -1
  56. package/dist/{package-D471jIWr.js → package-C3Jxu89p.js} +5 -4
  57. package/dist/package-C3Jxu89p.js.map +1 -0
  58. package/dist/{pglite-seed-DRXPe7p-.js → pglite-seed-DQgqjlQu.js} +4 -4
  59. package/dist/{pglite-seed-DRXPe7p-.js.map → pglite-seed-DQgqjlQu.js.map} +1 -1
  60. package/dist/preferences-store-C-u8PIwU.js +104 -0
  61. package/dist/preferences-store-C-u8PIwU.js.map +1 -0
  62. package/dist/{reactor-C8TtroCF.js → reactor-C8E2rx64.js} +7 -7
  63. package/dist/{reactor-C8TtroCF.js.map → reactor-C8E2rx64.js.map} +1 -1
  64. package/dist/{registerServiceWorker-Bn1KWmk0.js → registerServiceWorker-D98IrUws.js} +4 -4
  65. package/dist/{registerServiceWorker-Bn1KWmk0.js.map → registerServiceWorker-D98IrUws.js.map} +1 -1
  66. package/dist/reload-connect-toast-BzHqUfbu.js +30 -0
  67. package/dist/reload-connect-toast-BzHqUfbu.js.map +1 -0
  68. package/dist/start-connect.js +1 -1
  69. package/dist/style.css +143 -0
  70. package/dist/{toast-CO6ChlzE.js → toast-DtfTKZND.js} +3 -3
  71. package/dist/{toast-CO6ChlzE.js.map → toast-DtfTKZND.js.map} +1 -1
  72. package/dist/{use-renown-login-BtGljnB4.js → use-renown-login-DtCtMWCo.js} +3 -3
  73. package/dist/{use-renown-login-BtGljnB4.js.map → use-renown-login-DtCtMWCo.js.map} +1 -1
  74. package/dist/{useRegistryPackages-DMhCvTWq.js → useRegistryPackages-dCWW6oNq.js} +3 -3
  75. package/dist/{useRegistryPackages-DMhCvTWq.js.map → useRegistryPackages-dCWW6oNq.js.map} +1 -1
  76. package/package.json +12 -11
  77. package/public/powerhouse.config.json +9 -1
  78. package/style.css +1 -0
  79. package/dist/SettingsModal-BDGa08en.js.map +0 -1
  80. package/dist/app-loader-B_-UnYWW.js.map +0 -1
  81. package/dist/app-loader-D3ujlZ31.js +0 -4
  82. package/dist/components-DGiuBUIT.js +0 -5
  83. package/dist/package-D471jIWr.js.map +0 -1
  84. package/dist/reload-connect-toast-DDQEupCN.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsModal-DzW3OIrB.js","sources":["../src/components/modal/modals/settings/about.tsx","../src/components/modal/modals/settings/ai-assistant.tsx","../src/components/modal/modals/settings/danger-zone.tsx","../src/components/modal/modals/settings/default-editor.tsx","../src/components/modal/modals/settings/package-manager.tsx","../src/components/modal/modals/SettingsModal.tsx"],"sourcesContent":["import { connectConfig } from \"@powerhousedao/connect/config\";\nimport {\n getGitSha,\n getGitUrl,\n packageJson,\n shortGitSha,\n} from \"@powerhousedao/connect/utils\";\nimport { Icon } from \"@powerhousedao/design-system\";\nimport { About as BaseAbout } from \"@powerhousedao/design-system/connect\";\nimport {\n closePHModal,\n DriveCollectionId,\n showPHModal,\n useDrives,\n useDriveSystemInfo,\n useSyncList,\n} from \"@powerhousedao/reactor-browser\";\nimport type { DocumentDriveDocument } from \"@powerhousedao/shared/document-drive\";\nimport { useMemo } from \"react\";\n\nexport const About: React.FC = () => {\n const onOpenInspector = () => {\n closePHModal();\n showPHModal({ type: \"inspector\" });\n };\n\n return (\n <div>\n <BaseAbout\n packageJson={packageJson}\n phCliVersion={\n typeof connectConfig.phCliVersion === \"string\"\n ? connectConfig.phCliVersion\n : undefined\n }\n />\n <AppGitHash />\n <ConnectedDrives />\n <div className=\"bg-background p-3\">\n <h2 className=\"mb-2 font-semibold text-foreground\">Inspector</h2>\n <p className=\"mb-3 text-sm font-normal text-foreground\">\n Explore the local database and sync state for debugging.\n </p>\n <button\n className=\"flex items-center gap-x-2 rounded-md border border-border bg-transparent px-3 py-1 text-sm font-medium text-foreground transition-colors hover:hover-effect\"\n onClick={onOpenInspector}\n type=\"button\"\n >\n Open Inspector <Icon name=\"CircleInfo\" size={16} />\n </button>\n </div>\n </div>\n );\n};\n\nfunction AppGitHash() {\n const sha = getGitSha();\n if (sha === \"unknown\") return null;\n const url = getGitUrl();\n const label = shortGitSha(sha);\n return (\n <div className=\"bg-background p-3 text-sm\">\n <span className=\"font-semibold\">Git hash: </span>\n {url ? (\n <a\n className=\"font-mono underline\"\n href={url}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n title={sha}\n >\n {label}\n </a>\n ) : (\n <span className=\"font-mono\" title={sha}>\n {label}\n </span>\n )}\n </div>\n );\n}\n\nfunction ConnectedDrives() {\n const drives = useDrives() ?? [];\n const remotes = useSyncList();\n\n const remoteDrives = useMemo(\n () =>\n drives.filter((d) =>\n remotes.some((r) =>\n r.meta.collectionId.equals(DriveCollectionId.forDrive(d.header.id)),\n ),\n ),\n [drives, remotes],\n );\n\n return (\n <div className=\"my-4 bg-background p-3\">\n <h2 className=\"mb-2 font-semibold text-foreground\">Connected drives</h2>\n {remoteDrives.length === 0 ? (\n <p className=\"text-sm font-normal text-foreground\">\n No connected remote drives.\n </p>\n ) : (\n <ul className=\"flex flex-col gap-3\">\n {remoteDrives.map((drive) => (\n <DriveAboutEntry key={drive.header.id} drive={drive} />\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nfunction DriveAboutEntry({ drive }: { drive: DocumentDriveDocument }) {\n const info = useDriveSystemInfo(drive);\n const name = drive.state.global.name || drive.header.name;\n\n return (\n <li className=\"text-sm text-foreground\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"font-medium\">{name}</span>\n {info.status === \"ready\" && (\n <span className=\"text-xs text-muted-foreground\">{info.host}</span>\n )}\n </div>\n {info.status === \"loading\" && (\n <div className=\"mt-1 text-xs text-muted-foreground\">Loading…</div>\n )}\n {info.status === \"error\" && (\n <div className=\"mt-1 text-xs text-destructive\">\n Could not load system info\n </div>\n )}\n {info.status === \"ready\" && (\n <div className=\"mt-1 text-xs text-foreground\">\n <div>\n <span className=\"font-medium\">Version:</span> {info.version}\n </div>\n <div>\n <span className=\"font-medium\">Git hash: </span>\n {info.gitUrl ? (\n <a\n className=\"font-mono hover:underline\"\n href={info.gitUrl}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n title={info.gitHash}\n >\n {shortGitSha(info.gitHash)}\n </a>\n ) : (\n <span className=\"font-mono\" title={info.gitHash}>\n {shortGitSha(info.gitHash)}\n </span>\n )}\n </div>\n </div>\n )}\n {info.status === \"local\" && (\n <div className=\"mt-1 text-xs text-muted-foreground\">\n Local drive — N/A\n </div>\n )}\n </li>\n );\n}\n","import {\n getAiSettings,\n isAiConfigured,\n updateAiSettings,\n type AiSettings,\n} from \"@powerhousedao/reactor-browser/ai\";\nimport { Bot } from \"lucide-react\";\nimport { useState } from \"react\";\n\ntype TestState =\n | { status: \"idle\" }\n | { status: \"testing\" }\n | { status: \"ok\"; message: string }\n | { status: \"error\"; message: string };\n\nconst FIELD_CLASS =\n \"w-full rounded-md border border-border bg-background p-2.5 text-sm text-foreground outline-none placeholder:text-muted-foreground\";\n\n/**\n * Settings-modal section for the in-browser AI assistant: the user master\n * toggle, the OpenAI-compatible endpoint configuration, and a\n * save-and-test-connection action. Only mounted when the deployment\n * enables the feature (`connect.ai.assistantEnabled`).\n */\nexport const AiAssistant: React.FC = () => {\n const [draft, setDraft] = useState<AiSettings>(() => getAiSettings());\n const [test, setTest] = useState<TestState>({ status: \"idle\" });\n\n const patch = (value: Partial<AiSettings>) =>\n setDraft((d) => ({ ...d, ...value }));\n\n const saveAndTest = async () => {\n updateAiSettings(draft);\n if (!isAiConfigured(draft)) {\n setTest({\n status: \"error\",\n message: \"Base URL, API key and model are all required.\",\n });\n return;\n }\n setTest({ status: \"testing\" });\n try {\n const base = draft.baseUrl.trim().replace(/\\/+$/, \"\");\n const res = await fetch(`${base}/models`, {\n headers: draft.apiKey.trim()\n ? { Authorization: `Bearer ${draft.apiKey.trim()}` }\n : undefined,\n });\n if (!res.ok) {\n throw new Error(\n `HTTP ${res.status}${res.statusText ? ` ${res.statusText}` : \"\"}`,\n );\n }\n const data: unknown = await res.json();\n const list = (data as { data?: unknown[] } | null)?.data;\n const count = Array.isArray(list) ? list.length : 0;\n setTest({\n status: \"ok\",\n message: count\n ? `Connected — ${count} model(s) available.`\n : \"Connected.\",\n });\n } catch (error) {\n setTest({\n status: \"error\",\n message: `Connection failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n });\n }\n };\n\n return (\n <div className=\"space-y-4 p-1\">\n <div>\n <h3 className=\"flex items-center gap-2 text-sm font-semibold text-foreground\">\n <Bot size={16} /> AI Assistant\n </h3>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n An in-page assistant that creates and changes documents, manages\n drives, and inspects read models through an OpenAI-compatible\n endpoint.\n </p>\n </div>\n\n <label className=\"flex items-center gap-2 text-sm text-foreground\">\n <input\n type=\"checkbox\"\n checked={draft.enabled}\n onChange={(event) => {\n patch({ enabled: event.target.checked });\n // The switch acts immediately: the FAB mounts/unmounts at once.\n updateAiSettings({ enabled: event.target.checked });\n }}\n />\n Enable AI assistant\n </label>\n\n {draft.enabled && (\n <div className=\"space-y-2 rounded-lg border border-border p-3\">\n <div className=\"mb-1 text-xs font-semibold tracking-wide text-muted-foreground uppercase\">\n Endpoint\n </div>\n <input\n type=\"url\"\n placeholder=\"Base URL (e.g. https://api.openai.com/v1)\"\n value={draft.baseUrl}\n onChange={(e) => patch({ baseUrl: e.target.value })}\n className={FIELD_CLASS}\n spellCheck={false}\n />\n <input\n type=\"password\"\n placeholder=\"API key\"\n value={draft.apiKey}\n onChange={(e) => patch({ apiKey: e.target.value })}\n className={FIELD_CLASS}\n autoComplete=\"off\"\n spellCheck={false}\n />\n <input\n type=\"text\"\n placeholder=\"Model (e.g. gpt-4o-mini)\"\n value={draft.model}\n onChange={(e) => patch({ model: e.target.value })}\n className={FIELD_CLASS}\n spellCheck={false}\n />\n <label className=\"flex items-center gap-2 pt-1 text-sm text-foreground\">\n <input\n type=\"checkbox\"\n checked={draft.autoApproveWrites}\n onChange={(event) =>\n patch({ autoApproveWrites: event.target.checked })\n }\n />\n Auto-approve write actions\n </label>\n <p className=\"text-xs text-muted-foreground\">\n Requests go directly from this browser to the endpoint; the API key\n is never sent to Powerhouse servers. The endpoint must allow\n cross-origin (CORS) requests from this site.\n </p>\n <div className=\"flex items-center gap-3 pt-1\">\n <button\n type=\"button\"\n onClick={() => void saveAndTest()}\n disabled={test.status === \"testing\"}\n className=\"rounded-md bg-primary px-3 py-1.5 text-sm font-semibold text-primary-foreground hover:bg-primary/90 disabled:disabled-effect\"\n >\n {test.status === \"testing\"\n ? \"Testing…\"\n : \"Save & test connection\"}\n </button>\n {test.status === \"ok\" && (\n <span className=\"text-xs text-foreground\">{test.message}</span>\n )}\n {test.status === \"error\" && (\n <span className=\"text-xs text-destructive\">{test.message}</span>\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n","import { DangerZone as BaseDangerZone } from \"@powerhousedao/design-system/connect\";\nimport {\n deleteDrive,\n setSelectedDrive,\n showPHModal,\n useDrives,\n} from \"@powerhousedao/reactor-browser\";\nimport type { DocumentDriveDocument } from \"@powerhousedao/shared/document-drive\";\n\nexport const DangerZone: React.FC = () => {\n const drives = useDrives();\n\n const handleDeleteDrive = async (drive: DocumentDriveDocument) => {\n await deleteDrive(drive.header.id);\n setSelectedDrive(undefined);\n };\n\n const handleClearStorage = () => {\n showPHModal({ type: \"clearStorage\" });\n };\n\n return (\n <BaseDangerZone\n drives={drives ?? []}\n onDeleteDrive={(drive) => {\n void handleDeleteDrive(drive);\n }}\n onClearStorage={handleClearStorage}\n />\n );\n};\n","import { DefaultEditor as BaseDefaultEditor } from \"@powerhousedao/design-system/connect\";\nimport { useCallback, useState } from \"react\";\n\nconst documentModelEditorOptions = [\n { label: \"V1\", value: \"document-model-editor\" },\n { label: \"V2\", value: \"document-model-editor-v2\" },\n] as const;\n\nexport const DefaultEditor: React.FC = () => {\n const [documentModelEditor, setDocumentModelEditor] = useState<\n (typeof documentModelEditorOptions)[number]\n >(documentModelEditorOptions[1]);\n\n const handleSetDocumentEditor = useCallback((value: string) => {\n const option = documentModelEditorOptions.find((dm) => dm.value == value);\n if (option) {\n setDocumentModelEditor(option);\n }\n }, []);\n\n return (\n <BaseDefaultEditor\n documentModelEditor={documentModelEditor.value}\n setDocumentModelEditor={handleSetDocumentEditor}\n documentModelEditorOptions={\n documentModelEditorOptions as unknown as {\n value: string;\n label: string;\n }[]\n }\n />\n );\n};\n","import { useRegistryPackages } from \"@powerhousedao/connect/hooks\";\nimport { toast } from \"@powerhousedao/connect/services\";\nimport { PackageManager } from \"@powerhousedao/design-system/connect\";\nimport { useVetraPackageManager } from \"@powerhousedao/reactor-browser\";\nimport React from \"react\";\n\n/**\n * Split a `name@tag` spec into its bare package name. Mirrors the design-system's\n * `parsePackageSpec` — duplicated here to avoid reaching into a deep subpath\n * export. Scoped names split on the LAST `@`, unscoped on the first.\n */\nfunction parseBareName(spec: string): string {\n const trimmed = spec.trim();\n const at = trimmed.startsWith(\"@\")\n ? trimmed.lastIndexOf(\"@\")\n : trimmed.indexOf(\"@\");\n return at > 0 ? trimmed.slice(0, at) : trimmed;\n}\n\nexport const ConnectPackageManager: React.FC = () => {\n const packageManager = useVetraPackageManager();\n const {\n registryPackageList,\n installedPackages,\n availablePackages,\n availableHasMore,\n isLoadingAvailable,\n isLoadingMoreAvailable,\n availableError,\n ensureAvailableLoaded,\n fetchAvailablePage,\n loadMoreAvailable,\n setAvailableSearch,\n updateRegistryPackageStatus,\n registerFallbackRegistryPackage,\n } = useRegistryPackages();\n\n async function handleInstall(packageSpec: string) {\n if (!packageManager) return;\n\n // The spec may include an explicit `@tag` / `@version` suffix from the\n // search input. Pass it through to the package manager as-is (the CDN\n // route already handles `name@tag` specs), but track status under the\n // bare name so the Settings list doesn't fragment.\n const bareName = parseBareName(packageSpec);\n // Packages that were in `/packages` when the user clicked Install go\n // through `updateRegistryPackageStatus` and hit an existing entry.\n // Packages that landed via the npm-uplink fallback weren't in the list,\n // so we register them explicitly rather than silently upserting a\n // placeholder — keeping the \"does not exist\" error as a signal for any\n // other code path that reaches update without a matching entry.\n const wasKnownToRegistry = registryPackageList.some(\n (p) => p.name === bareName,\n );\n const result = await packageManager.addPackage(packageSpec);\n if (result.type === \"success\") {\n if (wasKnownToRegistry) {\n updateRegistryPackageStatus(bareName, \"registry-install\");\n } else {\n registerFallbackRegistryPackage(\n bareName,\n result.package,\n packageManager.getPackageVersion(bareName) ??\n packageManager.getPackageVersion(packageSpec),\n \"registry-install\",\n );\n }\n toast(`Package \"${packageSpec}\" installed successfully`, {\n type: \"connect-success\",\n });\n } else {\n const message = result.error.message;\n console.error(\n `[Connect][PackageManager] Install failed for \"${packageSpec}\":`,\n result.error,\n );\n // `BrowserPackageManager` raises a generic \"Failed to fetch dynamically\n // imported module\" when the registry CDN returns an error. That covers\n // both \"the name exists nowhere (not on this registry AND not on the\n // npmjs uplink)\" and \"the tarball is there but doesn't look like a\n // Powerhouse package\". Map to plain-language copy — never dump the raw\n // API / loader message into the toast.\n const isLikelyNotFound = /failed to fetch|404|not found/i.test(message);\n const userMessage = isLikelyNotFound\n ? `Couldn't install \"${packageSpec}\". It isn't available on this registry or via npm.`\n : `Couldn't install \"${packageSpec}\". Please try again.`;\n toast(userMessage, { type: \"error\" });\n }\n }\n\n function handleUninstall(packageName: string) {\n if (!packageManager) return;\n try {\n packageManager.removePackage(packageName);\n updateRegistryPackageStatus(packageName, \"available\");\n\n toast(`Package \"${packageName}\" uninstalled successfully`, {\n type: \"connect-success\",\n });\n } catch (error) {\n console.error(\n `[Connect][PackageManager] Uninstall failed for \"${packageName}\":`,\n error,\n );\n toast(`Couldn't uninstall \"${packageName}\". Please try again.`, {\n type: \"error\",\n });\n }\n }\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <PackageManager\n mutable={true}\n installedPackages={installedPackages}\n availablePackages={availablePackages}\n isAvailableLoading={isLoadingAvailable}\n isLoadingMoreAvailable={isLoadingMoreAvailable}\n hasMoreAvailable={availableHasMore}\n onLoadMoreAvailable={loadMoreAvailable}\n availableError={availableError}\n onAvailableRetry={() => {\n void fetchAvailablePage({ reset: true });\n }}\n onAvailableSearchChange={setAvailableSearch}\n onAvailableTabOpen={ensureAvailableLoaded}\n onInstall={handleInstall}\n onUninstall={handleUninstall}\n />\n </div>\n );\n};\n","import {\n SettingsModal as SettingsModalV2,\n ThemeSwitch,\n} from \"@powerhousedao/design-system/connect\";\nimport { connectConfig } from \"@powerhousedao/connect/config\";\nimport { closePHModal, usePHModal } from \"@powerhousedao/reactor-browser\";\nimport { t } from \"i18next\";\nimport { Bot, CircleHelp, Package, PenLine, TriangleAlert } from \"lucide-react\";\nimport React, { useMemo } from \"react\";\nimport { About } from \"./settings/about.js\";\nimport { AiAssistant } from \"./settings/ai-assistant.js\";\nimport { DangerZone } from \"./settings/danger-zone.js\";\nimport { DefaultEditor } from \"./settings/default-editor.js\";\nimport { ConnectPackageManager } from \"./settings/package-manager.js\";\n\nconst iconProps = { size: 16 } as const;\n\nexport const SettingsModal: React.FC = () => {\n const phModal = usePHModal();\n const open = phModal?.type === \"settings\";\n\n const tabs = useMemo(\n () => [\n ...(connectConfig.aiAssistantEnabled\n ? [\n {\n id: \"ai-assistant\",\n icon: <Bot {...iconProps} />,\n label: \"AI Assistant\",\n content: AiAssistant,\n },\n ]\n : []),\n {\n id: \"package-manager\",\n icon: <Package {...iconProps} />,\n label: \"Package Manager\",\n content: ConnectPackageManager,\n },\n {\n id: \"default-editors\",\n icon: <PenLine {...iconProps} />,\n label: \"Default Editors\",\n content: DefaultEditor,\n },\n {\n id: \"danger-zone\",\n icon: <TriangleAlert {...iconProps} className=\"text-destructive\" />,\n label: <span className=\"text-destructive\">Danger Zone</span>,\n content: () => <DangerZone />,\n },\n {\n id: \"about\",\n icon: <CircleHelp {...iconProps} />,\n label: \"About\",\n content: About,\n },\n ],\n [],\n );\n\n return (\n <SettingsModalV2\n open={open}\n title={t(\"modals.connectSettings.title\")}\n onOpenChange={(status: boolean) => {\n if (!status) return closePHModal();\n }}\n tabs={tabs}\n navFooter={<ThemeSwitch horizontal />}\n />\n );\n};\n"],"names":["About","BaseAbout","packageJson","DangerZone","BaseDangerZone","DefaultEditor","BaseDefaultEditor","DefaultEditor","DangerZone","About","SettingsModalV2"],"mappings":"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","debug_id":"36fff710-998d-58f0-992e-0c5dd15b7a89"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7965f303-2a9f-5c90-b51e-cdcba42f1525")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3cbd7ba7-1f85-5cd7-99a4-4e34304144a6")}catch(e){}}();
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import "react";
@@ -30,5 +30,5 @@ const UpgradeDriveModal = () => {
30
30
  //#endregion
31
31
  export { UpgradeDriveModal };
32
32
 
33
- //# sourceMappingURL=UpgradeDriveModal-wo5oO9mg.js.map
34
- //# debugId=7965f303-2a9f-5c90-b51e-cdcba42f1525
33
+ //# sourceMappingURL=UpgradeDriveModal-077wPR2N.js.map
34
+ //# debugId=3cbd7ba7-1f85-5cd7-99a4-4e34304144a6
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeDriveModal-wo5oO9mg.js","sources":["../src/components/modal/modals/UpgradeDriveModal.tsx"],"sourcesContent":["import { ConnectUpgradeDriveModal } from \"@powerhousedao/design-system/connect\";\nimport { closePHModal, usePHModal } from \"@powerhousedao/reactor-browser\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const UpgradeDriveModal: React.FC = () => {\n const phModal = usePHModal();\n const open = phModal?.type === \"upgradeDrive\";\n const driveId = open ? phModal.driveId : undefined;\n\n const { t } = useTranslation();\n\n const onContinue = () => {\n // TODO: Implement upgrade drive\n console.log(\"Upgrade drive: \", driveId);\n closePHModal();\n };\n\n return (\n <ConnectUpgradeDriveModal\n open={open}\n onContinue={onContinue}\n header={t(\"modals.upgradeDrive.header\")}\n body={t(\"modals.upgradeDrive.body\")}\n cancelLabel={t(\"common.cancel\")}\n continueLabel={t(\"common.continue\")}\n onOpenChange={(status: boolean) => {\n if (!status) return closePHModal();\n }}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAKA,MAAa,0BAAoC;CAC/C,MAAM,UAAU,YAAY;CAC5B,MAAM,OAAO,SAAS,SAAS;CAC/B,MAAM,UAAU,OAAO,QAAQ,UAAU,KAAA;CAEzC,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,mBAAmB;AAEvB,UAAQ,IAAI,mBAAmB,QAAQ;AACvC,gBAAc;;AAGhB,QACE,oBAAC,0BAAD;EACQ;EACM;EACZ,QAAQ,EAAE,6BAA6B;EACvC,MAAM,EAAE,2BAA2B;EACnC,aAAa,EAAE,gBAAgB;EAC/B,eAAe,EAAE,kBAAkB;EACnC,eAAe,WAAoB;AACjC,OAAI,CAAC,OAAQ,QAAO,cAAc;;EAEpC,CAAA","debug_id":"7965f303-2a9f-5c90-b51e-cdcba42f1525"}
1
+ {"version":3,"file":"UpgradeDriveModal-077wPR2N.js","sources":["../src/components/modal/modals/UpgradeDriveModal.tsx"],"sourcesContent":["import { ConnectUpgradeDriveModal } from \"@powerhousedao/design-system/connect\";\nimport { closePHModal, usePHModal } from \"@powerhousedao/reactor-browser\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const UpgradeDriveModal: React.FC = () => {\n const phModal = usePHModal();\n const open = phModal?.type === \"upgradeDrive\";\n const driveId = open ? phModal.driveId : undefined;\n\n const { t } = useTranslation();\n\n const onContinue = () => {\n // TODO: Implement upgrade drive\n console.log(\"Upgrade drive: \", driveId);\n closePHModal();\n };\n\n return (\n <ConnectUpgradeDriveModal\n open={open}\n onContinue={onContinue}\n header={t(\"modals.upgradeDrive.header\")}\n body={t(\"modals.upgradeDrive.body\")}\n cancelLabel={t(\"common.cancel\")}\n continueLabel={t(\"common.continue\")}\n onOpenChange={(status: boolean) => {\n if (!status) return closePHModal();\n }}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAKA,MAAa,0BAAoC;CAC/C,MAAM,UAAU,YAAY;CAC5B,MAAM,OAAO,SAAS,SAAS;CAC/B,MAAM,UAAU,OAAO,QAAQ,UAAU,KAAA;CAEzC,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,mBAAmB;AAEvB,UAAQ,IAAI,mBAAmB,QAAQ;AACvC,gBAAc;;AAGhB,QACE,oBAAC,0BAAD;EACQ;EACM;EACZ,QAAQ,EAAE,6BAA6B;EACvC,MAAM,EAAE,2BAA2B;EACnC,aAAa,EAAE,gBAAgB;EAC/B,eAAe,EAAE,kBAAkB;EACnC,eAAe,WAAoB;AACjC,OAAI,CAAC,OAAQ,QAAO,cAAc;;EAEpC,CAAA","debug_id":"3cbd7ba7-1f85-5cd7-99a4-4e34304144a6"}
@@ -0,0 +1,4 @@
1
+ import { t as AppLoader } from "./app-loader-VArdOK2J.js";
2
+ export { AppLoader };
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="41807de5-e417-52fa-8038-dfeeb449f8ba")}catch(e){}}();
4
+ //# debugId=41807de5-e417-52fa-8038-dfeeb449f8ba
@@ -1,26 +1,29 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c82e6fa5-a719-5582-96a0-75d4c7ab33e5")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9484dd22-70cf-5c70-a426-ecd0dd523afb")}catch(e){}}();
3
3
  import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
4
4
  import { c as idbError } from "./pglite-major-B39aOEiE.js";
5
5
  import { n as cloneFileData, r as migrateIdb } from "./pglite-migrate-core-Boxqqx-c.js";
6
- import { i as i18n, n as setSentryModule } from "./reload-connect-toast-DDQEupCN.js";
7
- import { a as defaultPHDocumentEditorConfig, i as defaultPHAppConfig, r as connectConfig } from "./connect.config-C-b_Yhd6.js";
8
- import { f as PRIMARY_IDB_NAMES, r as subscribeWorkerConnection, s as getCachedMigrationMajor, t as getWorkerConnectionStatus, u as subscribeMigrationMajor } from "./connection-state-KCa1yljA.js";
9
- import { n as serviceWorkerManager, r as subscribeServiceWorkerUpdate, t as getServiceWorkerUpdateAvailable } from "./registerServiceWorker-Bn1KWmk0.js";
10
- import { n as dismissToast, r as toast, t as ToastContainer } from "./toast-CO6ChlzE.js";
11
- import { t as useOpenRenownLogin } from "./use-renown-login-BtGljnB4.js";
6
+ import { a as defaultPHDocumentEditorConfig, i as defaultPHAppConfig, r as connectConfig } from "./connect.config-XXdN7RFy.js";
7
+ import { f as PRIMARY_IDB_NAMES, r as subscribeWorkerConnection, s as getCachedMigrationMajor, t as getWorkerConnectionStatus, u as subscribeMigrationMajor } from "./connection-state-DTSv8MDQ.js";
8
+ import { n as serviceWorkerManager, r as subscribeServiceWorkerUpdate, t as getServiceWorkerUpdateAvailable } from "./registerServiceWorker-D98IrUws.js";
9
+ import { n as setSentryModule } from "./reload-connect-toast-BzHqUfbu.js";
10
+ import { n as dismissToast, r as toast, t as ToastContainer } from "./toast-DtfTKZND.js";
11
+ import { i as useIsEmbedded, r as getIsEmbedded, t as useAcceptedCookies } from "./preferences-store-C-u8PIwU.js";
12
+ import { t as useOpenRenownLogin } from "./use-renown-login-DtCtMWCo.js";
12
13
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
- import { Trans, useTranslation } from "react-i18next";
14
+ import { useTranslation } from "react-i18next";
14
15
  import React, { StrictMode, Suspense, createElement, lazy, useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
15
16
  import { DriveCollectionId, RenownWalletProvider, addFileWithProgress, getRevisionFromDate, initTheme, logout, setPHAppConfig, setPHDocumentEditorConfig, setRevisionHistoryVisible, setSelectedDrive, setSelectedNode, showPHModal, useAppModuleById, useConnectionStates, useDefaultAppModule, useDocumentById, useDocumentModelModuleById, useDocumentOperations, useDocumentVersionStatus, useDrives, useEditorModuleById, useEditorPreloader, useFallbackEditorModule, useIsAddDriveEnabled, useNodeParentFolderById, usePHModal, usePackageDiscoveryService, useReactorClientModule, useRevisionHistoryVisible, useSelectedDocument, useSelectedDocumentId, useSelectedDriveSafe, useSelectedFolder, useSelectedTimelineItem, useSyncList, useTheme, useUser, useVetraPackageManager, useVetraPackages } from "@powerhousedao/reactor-browser";
16
17
  import { childLogger } from "document-model";
17
- import { ConnectSidebar, ConnectTooltipProvider, CookieBanner, DefaultEditorLoader, DriveAuthGate, DropZoneWrapper, HomeScreen, HomeScreenAddDriveItem, HomeScreenItem, LogoAnimation, PackageInstallModal, RevisionHistory, SidebarAddDriveItem, SidebarItem, UploadFileListContainer, formatFileSize, mapProgressStageToStatus, useEns } from "@powerhousedao/design-system/connect";
18
+ import { ConnectSidebar, ConnectTooltipProvider, DefaultEditorLoader, DriveAuthGate, DropZoneWrapper, HomeScreen, HomeScreenAddDriveItem, HomeScreenItem, LogoAnimation, PackageInstallModal, RevisionHistory, SidebarAddDriveItem, SidebarItem, UploadFileListContainer, formatFileSize, mapProgressStageToStatus, useEns } from "@powerhousedao/design-system/connect";
18
19
  import { z } from "zod";
19
20
  import { Outlet, RouterProvider, createBrowserRouter, createRoutesFromChildren, matchRoutes, useLocation, useNavigationType } from "react-router-dom";
20
21
  import { useHotkeys } from "react-hotkeys-hook";
21
22
  import { Icon, Modal, PowerhouseButton } from "@powerhousedao/design-system";
22
23
  import { ErrorBoundary } from "react-error-boundary";
23
24
  import { GenericDriveExplorer } from "@powerhousedao/powerhouse-vetra-packages/editors";
25
+ import { createReactorMcpProvider } from "@powerhousedao/reactor-mcp/tools";
26
+ import { ReactorChatFab } from "@powerhousedao/reactor-browser/ai";
24
27
  import { twMerge } from "tailwind-merge";
25
28
  import { mockAdapter } from "@renown/sdk/wallet/mock";
26
29
  import { privyAdapter } from "@renown/sdk/wallet/privy";
@@ -153,17 +156,17 @@ function initLaunchQueueFileHandling() {
153
156
  //#endregion
154
157
  //#region src/utils/open-file-uploads.ts
155
158
  let uploads = [];
156
- const listeners$3 = /* @__PURE__ */ new Set();
159
+ const listeners$1 = /* @__PURE__ */ new Set();
157
160
  function notifyUploadListeners() {
158
- for (const listener of listeners$3) listener();
161
+ for (const listener of listeners$1) listener();
159
162
  }
160
163
  function getOpenFileUploads() {
161
164
  return uploads;
162
165
  }
163
166
  function subscribeOpenFileUploads(cb) {
164
- listeners$3.add(cb);
167
+ listeners$1.add(cb);
165
168
  return () => {
166
- listeners$3.delete(cb);
169
+ listeners$1.delete(cb);
167
170
  };
168
171
  }
169
172
  function removeOpenFileUpload(id) {
@@ -260,18 +263,18 @@ function runOpenFileImports(args) {
260
263
  //#endregion
261
264
  //#region src/components/migration-status.ts
262
265
  let current = null;
263
- const listeners$2 = /* @__PURE__ */ new Set();
266
+ const listeners = /* @__PURE__ */ new Set();
264
267
  function setMigrationStatus(status) {
265
268
  current = status;
266
- for (const l of listeners$2) l();
269
+ for (const l of listeners) l();
267
270
  }
268
271
  function getMigrationStatus() {
269
272
  return current;
270
273
  }
271
274
  function subscribeMigrationStatus(cb) {
272
- listeners$2.add(cb);
275
+ listeners.add(cb);
273
276
  return () => {
274
- listeners$2.delete(cb);
277
+ listeners.delete(cb);
275
278
  };
276
279
  }
277
280
  //#endregion
@@ -390,42 +393,6 @@ async function migrateAllIfNeeded() {
390
393
  });
391
394
  }
392
395
  //#endregion
393
- //#region src/hooks/useAcceptedCookies.ts
394
- const ACCEPTED_COOKIES_KEY_STORAGE = `${connectConfig.routerBasename}:acceptedCookies`;
395
- const listeners$1 = /* @__PURE__ */ new Set();
396
- let cookies = getInitial$1();
397
- function getInitial$1() {
398
- try {
399
- const value = localStorage.getItem(ACCEPTED_COOKIES_KEY_STORAGE);
400
- return value ? JSON.parse(value) : {
401
- analytics: false,
402
- marketing: false,
403
- functional: false
404
- };
405
- } catch {
406
- return {
407
- analytics: false,
408
- marketing: false,
409
- functional: false
410
- };
411
- }
412
- }
413
- function getCookies() {
414
- return cookies;
415
- }
416
- function setCookies(setter) {
417
- cookies = setter(cookies);
418
- localStorage.setItem(ACCEPTED_COOKIES_KEY_STORAGE, JSON.stringify(cookies));
419
- listeners$1.forEach((fn) => fn());
420
- }
421
- function subscribe$1(fn) {
422
- listeners$1.add(fn);
423
- return () => listeners$1.delete(fn);
424
- }
425
- const useAcceptedCookies = () => {
426
- return [useSyncExternalStore(subscribe$1, getCookies, getCookies), setCookies];
427
- };
428
- //#endregion
429
396
  //#region src/services/openpanel/buffer.ts
430
397
  const buffer = [];
431
398
  let errorHandler;
@@ -650,52 +617,6 @@ function createOpenPanelProcessorFactory(config) {
650
617
  };
651
618
  }
652
619
  //#endregion
653
- //#region src/hooks/useIsEmbedded.ts
654
- /**
655
- * Detects whether Connect is being rendered inside another app (e.g. inside
656
- * an iframe in the vetra-cli drive editor). When `?embed=1` is present in the
657
- * URL, chrome that doesn't make sense in the embedded context — the cookie
658
- * banner, the outer sidebar — is suppressed.
659
- */
660
- function getIsEmbedded() {
661
- if (typeof window === "undefined") return false;
662
- try {
663
- const value = new URLSearchParams(window.location.search).get("embed");
664
- return value !== null && value !== "0" && value !== "false";
665
- } catch {
666
- return false;
667
- }
668
- }
669
- function useIsEmbedded() {
670
- return getIsEmbedded();
671
- }
672
- const COOKIE_BANNER_KEY_STORAGE = `${connectConfig.routerBasename}:display-cookie-banner`;
673
- const listeners = /* @__PURE__ */ new Set();
674
- let bannerShown = getInitial();
675
- function getInitial() {
676
- if (getIsEmbedded()) return false;
677
- try {
678
- return localStorage.getItem(COOKIE_BANNER_KEY_STORAGE) !== "false";
679
- } catch (error) {
680
- console.error(error);
681
- return true;
682
- }
683
- }
684
- function getCookieBannerState() {
685
- return bannerShown;
686
- }
687
- function setCookieBannerState(state) {
688
- bannerShown = state;
689
- localStorage.setItem(COOKIE_BANNER_KEY_STORAGE, JSON.stringify(state));
690
- }
691
- function subscribe(fn) {
692
- listeners.add(fn);
693
- return () => listeners.delete(fn);
694
- }
695
- const useCookieBanner = () => {
696
- return [useSyncExternalStore(subscribe, getCookieBannerState, getCookieBannerState), setCookieBannerState];
697
- };
698
- //#endregion
699
620
  //#region src/hooks/useFailedInstallations.ts
700
621
  const emptyArray$1 = [];
701
622
  function useFailedInstallations() {
@@ -1275,6 +1196,30 @@ const SentryProvider = ({ children }) => {
1275
1196
  return children;
1276
1197
  };
1277
1198
  //#endregion
1199
+ //#region src/components/reactor-chat.tsx
1200
+ /**
1201
+ * Resolves the reactor tool descriptors for the chat agent from the
1202
+ * browser's live reactor client. Built lazily at send time so the reactor
1203
+ * (and its SharedWorker) do not need to be ready at render time.
1204
+ */
1205
+ function getReactorTools() {
1206
+ const ph = window.ph;
1207
+ const client = ph?.reactorClient;
1208
+ if (!client) return Promise.reject(/* @__PURE__ */ new Error("The reactor client is not available yet. Try again shortly."));
1209
+ const syncManager = ph?.reactorClientModule?.reactorModule?.syncModule?.syncManager;
1210
+ return createReactorMcpProvider({
1211
+ client,
1212
+ syncManager
1213
+ }).then((provider) => Object.values(provider.tools).map((tool) => ({
1214
+ ...tool,
1215
+ inputSchema: tool.inputSchema ?? {}
1216
+ })));
1217
+ }
1218
+ /** Connect's bottom-right AI chat FAB, bound to the browser reactor. */
1219
+ function ConnectReactorChatFab() {
1220
+ return /* @__PURE__ */ jsx(ReactorChatFab, { getTools: getReactorTools });
1221
+ }
1222
+ //#endregion
1278
1223
  //#region src/components/missing-model-banner.tsx
1279
1224
  const reasonLabels = {
1280
1225
  "no-registry": "No package registry is configured.",
@@ -1562,6 +1507,7 @@ const App = () => {
1562
1507
  }, []);
1563
1508
  return /* @__PURE__ */ jsx(SentryProvider, { children: /* @__PURE__ */ jsxs(RenownWalletProviders, { children: [
1564
1509
  /* @__PURE__ */ jsx(ToastContainer, { position: "bottom-right" }),
1510
+ connectConfig.aiAssistantEnabled && /* @__PURE__ */ jsx(ConnectReactorChatFab, {}),
1565
1511
  /* @__PURE__ */ jsx(MissingModelBanner, {}),
1566
1512
  /* @__PURE__ */ jsx(Router, {}),
1567
1513
  /* @__PURE__ */ jsx(OpenFileUploadList, {}),
@@ -1571,64 +1517,6 @@ const App = () => {
1571
1517
  ] }) });
1572
1518
  };
1573
1519
  //#endregion
1574
- //#region src/components/cookie-banner.tsx
1575
- const isCookieAccepted = (cookies, id) => {
1576
- return cookies.some((cookie) => cookie.id === id && cookie.value);
1577
- };
1578
- const CookieBanner$1 = () => {
1579
- const { t } = useTranslation(void 0, {
1580
- useSuspense: true,
1581
- i18n
1582
- });
1583
- const [showBanner, setShowBanner] = useCookieBanner();
1584
- const [, setAcceptedCookies] = useAcceptedCookies();
1585
- const cookiesInput = [{
1586
- id: "analytics-cookie",
1587
- label: t("cookieBanner.cookies.analytics"),
1588
- value: true
1589
- }];
1590
- const handleAccept = (cookies) => {
1591
- setShowBanner(false);
1592
- if (isCookieAccepted(cookies, "analytics-cookie")) setAcceptedCookies((acceptedCookies) => ({
1593
- ...acceptedCookies,
1594
- analytics: true
1595
- }));
1596
- };
1597
- const handleReject = () => {
1598
- setShowBanner(false);
1599
- setAcceptedCookies(() => ({
1600
- analytics: false,
1601
- functional: false,
1602
- marketing: false
1603
- }));
1604
- };
1605
- if (!showBanner) return null;
1606
- return /* @__PURE__ */ jsxs("div", {
1607
- className: "absolute inset-0 z-10000 backdrop-blur-sm",
1608
- children: [/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-primary opacity-15" }), /* @__PURE__ */ jsx("div", {
1609
- className: "absolute inset-x-0 bottom-0 flex justify-center bg-background px-10 pt-10 pb-16 shadow-lg",
1610
- children: /* @__PURE__ */ jsx(CookieBanner, {
1611
- className: "max-w-[1024px]",
1612
- cookies: cookiesInput,
1613
- onSubmit: handleAccept,
1614
- onReject: handleReject,
1615
- submitLabel: t("cookieBanner.accept"),
1616
- rejectLabel: t("cookieBanner.reject"),
1617
- children: /* @__PURE__ */ jsx("p", {
1618
- className: "font-semibold text-muted-foreground",
1619
- children: /* @__PURE__ */ jsx(Trans, {
1620
- i18nKey: "cookieBanner.message",
1621
- components: { a: /* @__PURE__ */ jsx("a", {
1622
- onClick: () => showPHModal({ type: "cookiesPolicy" }),
1623
- className: "cursor-pointer text-foreground hover:underline"
1624
- }, "cookieBanner.message-link") }
1625
- }, "cookieBanner.message")
1626
- })
1627
- })
1628
- })]
1629
- });
1630
- };
1631
- //#endregion
1632
1520
  //#region src/components/drive-icon.tsx
1633
1521
  function DriveIcon({ drive }) {
1634
1522
  const remotes = useSyncList();
@@ -2152,20 +2040,20 @@ const MigrationBanner = () => {
2152
2040
  };
2153
2041
  //#endregion
2154
2042
  //#region src/components/modal/modals-container.tsx
2155
- const AddDriveModal$1 = lazy(() => import("./AddDriveModal-Bw0YuxZg.js").then((m) => ({ default: m.AddDriveModal })));
2156
- const ClearStorageModal = lazy(() => import("./ClearStorageModal-BP2GVtGX.js").then((m) => ({ default: m.ClearStorageModal })));
2157
- const CookiesPolicyModal = lazy(() => import("./CookiesPolicyModal-CQ-zHJdw.js").then((m) => ({ default: m.CookiesPolicyModal })));
2158
- const CreateDocumentModal$1 = lazy(() => import("./CreateDocumentModal-NNi4p6EI.js").then((m) => ({ default: m.CreateDocumentModal })));
2159
- const DebugSettingsModal = lazy(() => import("./DebugSettingsModal-CZNdgk7M.js").then((m) => ({ default: m.DebugSettingsModal })));
2160
- const DeleteDriveModal = lazy(() => import("./DeleteDriveModal-C7fnXMsR.js").then((m) => ({ default: m.DeleteDriveModal })));
2161
- const DeleteItemModal = lazy(() => import("./DeleteItemModal-BK_Y8Thj.js").then((m) => ({ default: m.DeleteItemModal })));
2162
- const DisclaimerModal = lazy(() => import("./DisclaimerModal-DJPHCnFY.js").then((m) => ({ default: m.DisclaimerModal })));
2163
- const DriveSettingsModal$1 = lazy(() => import("./DriveSettingsModal-7OKx8foy.js").then((m) => ({ default: m.DriveSettingsModal })));
2164
- const DownloadDocumentWithErrorsModal = lazy(() => import("./DownloadDocumentWithErrorsModal-sWu46HVB.js").then((m) => ({ default: m.DownloadDocumentWithErrorsModal })));
2165
- const DocumentVersionUnsupportedModal = lazy(() => import("./DocumentVersionUnsupportedModal-tBHLK6b1.js").then((m) => ({ default: m.DocumentVersionUnsupportedModal })));
2166
- const ConfirmDocumentUpgradeModal = lazy(() => import("./ConfirmDocumentUpgradeModal-9AaaQJTs.js").then((m) => ({ default: m.ConfirmDocumentUpgradeModal })));
2167
- const SettingsModal$1 = lazy(() => import("./SettingsModal-BDGa08en.js").then((m) => ({ default: m.SettingsModal })));
2168
- const UpgradeDriveModal = lazy(() => import("./UpgradeDriveModal-wo5oO9mg.js").then((m) => ({ default: m.UpgradeDriveModal })));
2043
+ const AddDriveModal$1 = lazy(() => import("./AddDriveModal-DIMewThf.js").then((m) => ({ default: m.AddDriveModal })));
2044
+ const ClearStorageModal = lazy(() => import("./ClearStorageModal-DKy2tPYb.js").then((m) => ({ default: m.ClearStorageModal })));
2045
+ const CookiesPolicyModal = lazy(() => import("./CookiesPolicyModal-Bns4789o.js").then((m) => ({ default: m.CookiesPolicyModal })));
2046
+ const CreateDocumentModal$1 = lazy(() => import("./CreateDocumentModal-MlA2YRaW.js").then((m) => ({ default: m.CreateDocumentModal })));
2047
+ const DebugSettingsModal = lazy(() => import("./DebugSettingsModal-890WlVp4.js").then((m) => ({ default: m.DebugSettingsModal })));
2048
+ const DeleteDriveModal = lazy(() => import("./DeleteDriveModal-gP7j8C0Y.js").then((m) => ({ default: m.DeleteDriveModal })));
2049
+ const DeleteItemModal = lazy(() => import("./DeleteItemModal-CMM-fPsz.js").then((m) => ({ default: m.DeleteItemModal })));
2050
+ const DisclaimerModal = lazy(() => import("./DisclaimerModal-meOyQCfU.js").then((m) => ({ default: m.DisclaimerModal })));
2051
+ const DriveSettingsModal$1 = lazy(() => import("./DriveSettingsModal-Bv0y1BEK.js").then((m) => ({ default: m.DriveSettingsModal })));
2052
+ const DownloadDocumentWithErrorsModal = lazy(() => import("./DownloadDocumentWithErrorsModal-CCdbt2jJ.js").then((m) => ({ default: m.DownloadDocumentWithErrorsModal })));
2053
+ const DocumentVersionUnsupportedModal = lazy(() => import("./DocumentVersionUnsupportedModal-TlDH1aP5.js").then((m) => ({ default: m.DocumentVersionUnsupportedModal })));
2054
+ const ConfirmDocumentUpgradeModal = lazy(() => import("./ConfirmDocumentUpgradeModal-CcpgpyOB.js").then((m) => ({ default: m.ConfirmDocumentUpgradeModal })));
2055
+ const SettingsModal$1 = lazy(() => import("./SettingsModal-DzW3OIrB.js").then((m) => ({ default: m.SettingsModal })));
2056
+ const UpgradeDriveModal = lazy(() => import("./UpgradeDriveModal-077wPR2N.js").then((m) => ({ default: m.UpgradeDriveModal })));
2169
2057
  const modalComponents = {
2170
2058
  addDrive: AddDriveModal$1,
2171
2059
  clearStorage: ClearStorageModal,
@@ -2179,13 +2067,13 @@ const modalComponents = {
2179
2067
  downloadDocumentWithErrors: DownloadDocumentWithErrorsModal,
2180
2068
  documentVersionUnsupported: DocumentVersionUnsupportedModal,
2181
2069
  confirmDocumentUpgrade: ConfirmDocumentUpgradeModal,
2182
- inspector: lazy(() => import("./InspectorModal-iCN85ElA.js").then((m) => ({ default: m.InspectorModal }))),
2070
+ inspector: lazy(() => import("./InspectorModal-C3L5F4Ma.js").then((m) => ({ default: m.InspectorModal }))),
2183
2071
  settings: SettingsModal$1,
2184
2072
  upgradeDrive: UpgradeDriveModal,
2185
- missingPackage: lazy(() => import("./MissingPackageModal-DyP2-Ojb.js").then((m) => ({ default: m.ConnectMissingPackageModal }))),
2186
- driveAuthRequired: lazy(() => import("./DriveAuthRequiredModal-D3IPAst0.js").then((m) => ({ default: m.DriveAuthRequiredModal }))),
2187
- openFileDocuments: lazy(() => import("./OpenFileDocumentsModal-BDVQgfks.js").then((m) => ({ default: m.OpenFileDocumentsModal }))),
2188
- login: lazy(() => import("./LoginModal-Cd2wGgG4.js").then((m) => ({ default: m.LoginModal })))
2073
+ missingPackage: lazy(() => import("./MissingPackageModal-C6HO-a7E.js").then((m) => ({ default: m.ConnectMissingPackageModal }))),
2074
+ driveAuthRequired: lazy(() => import("./DriveAuthRequiredModal-9GsPnOYi.js").then((m) => ({ default: m.DriveAuthRequiredModal }))),
2075
+ openFileDocuments: lazy(() => import("./OpenFileDocumentsModal-6MK7Ourm.js").then((m) => ({ default: m.OpenFileDocumentsModal }))),
2076
+ login: lazy(() => import("./LoginModal-CxFHjxz8.js").then((m) => ({ default: m.LoginModal })))
2189
2077
  };
2190
2078
  const ModalsContainer = lazy(() => {
2191
2079
  return Promise.resolve({ default: () => {
@@ -2224,8 +2112,9 @@ const ServiceWorkerUpdatePrompt = () => {
2224
2112
  };
2225
2113
  //#endregion
2226
2114
  //#region src/components/app-loader.tsx
2115
+ const CookieBanner$1 = lazy(() => import("./cookie-banner-BJrG_u38.js").then((m) => ({ default: m.CookieBanner })));
2227
2116
  const AppLoader = (props) => {
2228
- const Load = lazy(() => import("./load-CD4j4th2.js").then((m) => m.loadComponent(props.localPackage)));
2117
+ const Load = lazy(() => import("./load-RSUO_fUw.js").then((m) => m.loadComponent(props.localPackage)));
2229
2118
  return /* @__PURE__ */ jsx(StrictMode, { children: /* @__PURE__ */ jsxs(ErrorBoundary$1, {
2230
2119
  fallbackRender: (props) => /* @__PURE__ */ jsx(AppSkeleton, { children: /* @__PURE__ */ jsx(DetailedFallback, { ...props }) }),
2231
2120
  resetKeys: [props.localPackage],
@@ -2239,9 +2128,14 @@ const AppLoader = (props) => {
2239
2128
  children: /* @__PURE__ */ jsx(App, {})
2240
2129
  })
2241
2130
  }),
2242
- /* @__PURE__ */ jsx(Suspense, {
2243
- name: "CookieBanner",
2244
- children: /* @__PURE__ */ jsx(CookieBanner$1, {})
2131
+ /* @__PURE__ */ jsx(ErrorBoundary$1, {
2132
+ variant: "silent",
2133
+ loggerContext: ["Connect", "CookieBanner"],
2134
+ children: /* @__PURE__ */ jsx(Suspense, {
2135
+ fallback: null,
2136
+ name: "CookieBanner",
2137
+ children: /* @__PURE__ */ jsx(CookieBanner$1, {})
2138
+ })
2245
2139
  }),
2246
2140
  /* @__PURE__ */ jsx(Suspense, {
2247
2141
  name: "ModalsContainer",
@@ -2254,7 +2148,7 @@ const AppLoader = (props) => {
2254
2148
  }) });
2255
2149
  };
2256
2150
  //#endregion
2257
- export { getPendingImportFiles as _, DocumentEditor as a, App as c, DocumentEditorContainer as d, OpenPanel as f, clearPendingImportFiles as g, runOpenFileImports as h, Root as i, AppContainer as l, AppSkeleton as m, Sidebar as n, DriveIcon as o, Analytics as p, Router as r, CookieBanner$1 as s, AppLoader as t, EditorLoader as u, pendingFileKey as v, subscribePendingImportFiles as y };
2151
+ export { pendingFileKey as _, DocumentEditor as a, AppContainer as c, OpenPanel as d, Analytics as f, getPendingImportFiles as g, clearPendingImportFiles as h, Root as i, EditorLoader as l, runOpenFileImports as m, Sidebar as n, DriveIcon as o, AppSkeleton as p, Router as r, App as s, AppLoader as t, DocumentEditorContainer as u, subscribePendingImportFiles as v };
2258
2152
 
2259
- //# sourceMappingURL=app-loader-B_-UnYWW.js.map
2260
- //# debugId=c82e6fa5-a719-5582-96a0-75d4c7ab33e5
2153
+ //# sourceMappingURL=app-loader-VArdOK2J.js.map
2154
+ //# debugId=9484dd22-70cf-5c70-a426-ecd0dd523afb