@withbuddi/buddi 0.1.0-pre.52 → 0.1.0-pre.54
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/extension/background.js +38 -7
- package/extension/manifest.json +2 -2
- package/extension/popup.html +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/dashboard-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/dashboard-cmd.js +6 -3
- package/node_modules/@buddi/cli/dist/dashboard-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +2 -2
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/status.d.ts +16 -2
- package/node_modules/@buddi/cli/dist/status.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/status.js +42 -2
- package/node_modules/@buddi/cli/dist/status.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts +6 -0
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/core/dist/backup/archive.d.ts +6 -0
- package/node_modules/@buddi/core/dist/backup/archive.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/backup/archive.js +19 -6
- package/node_modules/@buddi/core/dist/backup/archive.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.d.ts +21 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.js +72 -10
- package/node_modules/@buddi/core/dist/postgres/binaries.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/cluster.d.ts +8 -0
- package/node_modules/@buddi/core/dist/postgres/cluster.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/cluster.js +119 -17
- package/node_modules/@buddi/core/dist/postgres/cluster.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/windows-guard.d.ts +20 -0
- package/node_modules/@buddi/core/dist/postgres/windows-guard.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/postgres/windows-guard.js +140 -0
- package/node_modules/@buddi/core/dist/postgres/windows-guard.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js +3 -2
- package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +6 -6
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +5 -5
- package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/browser-host.js +1 -1
- package/node_modules/@buddi/gateway/dist/browser-host.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts +10 -10
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js +20 -20
- package/node_modules/@buddi/gateway/dist/missions/chrome-scope.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +11 -11
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.js +5 -5
- package/node_modules/@buddi/gateway/dist/missions/reminders.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/npm.d.ts +9 -2
- package/node_modules/@buddi/gateway/dist/plugins/npm.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/npm.js +29 -6
- package/node_modules/@buddi/gateway/dist/plugins/npm.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.js +2 -2
- package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.d.ts +11 -0
- package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js +42 -1
- package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +6 -6
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js +22 -11
- package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +4 -4
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/service.d.ts +6 -1
- package/node_modules/@buddi/gateway/dist/web/service.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/service.js +10 -1
- package/node_modules/@buddi/gateway/dist/web/service.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/skills.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/skills.js +2 -1
- package/node_modules/@buddi/gateway/dist/web/skills.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.js +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/app-layout.d.ts +53 -0
- package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/app-layout.js +123 -10
- package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
- package/node_modules/@buddi/install/dist/cloudflared.js +2 -2
- package/node_modules/@buddi/install/dist/cloudflared.js.map +1 -1
- package/node_modules/@buddi/install/dist/environment.d.ts +40 -1
- package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/environment.js +158 -12
- package/node_modules/@buddi/install/dist/environment.js.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +340 -54
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/linux-install.d.ts +41 -0
- package/node_modules/@buddi/install/dist/linux-install.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/linux-install.js +86 -0
- package/node_modules/@buddi/install/dist/linux-install.js.map +1 -0
- package/node_modules/@buddi/install/dist/postgres-check.js +1 -1
- package/node_modules/@buddi/install/dist/postgres-check.js.map +1 -1
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts +14 -0
- package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/product-uninstall.js +10 -0
- package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -1
- package/node_modules/@buddi/install/dist/runtime-info.d.ts +23 -0
- package/node_modules/@buddi/install/dist/runtime-info.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/runtime-info.js +72 -0
- package/node_modules/@buddi/install/dist/runtime-info.js.map +1 -0
- package/node_modules/@buddi/install/dist/supervisor.d.ts +60 -3
- package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/supervisor.js +175 -17
- package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts +49 -3
- package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.js +184 -27
- package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.d.ts +20 -5
- package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.js +125 -62
- package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
- package/node_modules/@buddi/install/dist/windows-install.d.ts +102 -0
- package/node_modules/@buddi/install/dist/windows-install.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/windows-install.js +223 -0
- package/node_modules/@buddi/install/dist/windows-install.js.map +1 -0
- package/node_modules/@buddi/install/dist/windows-setup.d.ts +107 -0
- package/node_modules/@buddi/install/dist/windows-setup.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/windows-setup.js +700 -0
- package/node_modules/@buddi/install/dist/windows-setup.js.map +1 -0
- package/node_modules/@buddi/install/dist/windows-task.d.ts +49 -0
- package/node_modules/@buddi/install/dist/windows-task.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/windows-task.js +167 -0
- package/node_modules/@buddi/install/dist/windows-task.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
- package/node_modules/@buddi/runtime/dist/openai.d.ts +11 -0
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +36 -3
- package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.js +3 -3
- package/node_modules/@buddi/tool-artifacts/dist/tools/write.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.js +1 -0
- package/node_modules/@buddi/tool-browser/dist/availability.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/brand.d.ts +19 -0
- package/node_modules/@buddi/tool-browser/dist/brand.d.ts.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/brand.js +31 -0
- package/node_modules/@buddi/tool-browser/dist/brand.js.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +16 -7
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/downloads.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/downloads.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts +3 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.js +4 -4
- package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts +3 -2
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +7 -6
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts +12 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.js +31 -14
- package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +2 -0
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +6 -6
- package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/telemetry.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/telemetry.js +2 -2
- package/node_modules/@buddi/tool-browser/dist/telemetry.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-host/dist/index.d.ts +2 -1
- package/node_modules/@buddi/tool-host/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/index.js +11 -2
- package/node_modules/@buddi/tool-host/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/process.d.ts +58 -1
- package/node_modules/@buddi/tool-host/dist/process.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/process.js +229 -15
- package/node_modules/@buddi/tool-host/dist/process.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/service.d.ts +2 -0
- package/node_modules/@buddi/tool-host/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/service.js +8 -6
- package/node_modules/@buddi/tool-host/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-host/dist/skill-run.d.ts +10 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.d.ts.map +1 -1
- package/node_modules/@buddi/tool-host/dist/skill-run.js +14 -0
- package/node_modules/@buddi/tool-host/dist/skill-run.js.map +1 -1
- package/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/util.d.ts +6 -3
- package/node_modules/content-disposition/README.md +105 -35
- package/node_modules/content-disposition/dist/index.d.ts +72 -0
- package/node_modules/content-disposition/dist/index.js +388 -0
- package/node_modules/content-disposition/dist/index.js.map +1 -0
- package/node_modules/content-disposition/package.json +31 -19
- package/node_modules/docx/dist/index.cjs +182 -80
- package/node_modules/docx/dist/index.d.cts +63 -6
- package/node_modules/docx/dist/index.d.ts +63 -6
- package/node_modules/docx/dist/index.iife.js +182 -80
- package/node_modules/docx/dist/index.mjs +182 -80
- package/node_modules/docx/dist/index.umd.cjs +182 -80
- package/node_modules/docx/dist/layout.cjs +1 -6
- package/node_modules/docx/dist/layout.iife.js +1 -6
- package/node_modules/docx/dist/layout.mjs +1 -6
- package/node_modules/docx/dist/layout.umd.cjs +1 -6
- package/node_modules/docx/package.json +4 -3
- package/node_modules/express/Readme.md +15 -9
- package/node_modules/express/lib/application.js +2 -2
- package/node_modules/express/lib/request.js +32 -19
- package/node_modules/express/lib/response.js +27 -30
- package/node_modules/express/node_modules/content-type/LICENSE +22 -0
- package/node_modules/express/node_modules/content-type/README.md +71 -0
- package/node_modules/express/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/express/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/express/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/express/node_modules/content-type/package.json +52 -0
- package/node_modules/express/package.json +10 -10
- package/node_modules/imapflow/CHANGELOG.md +33 -0
- package/node_modules/imapflow/dist/cjs/commands/append.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/commands/append.js +15 -4
- package/node_modules/imapflow/dist/cjs/commands/compress.js +2 -2
- package/node_modules/imapflow/dist/cjs/commands/id.js +5 -3
- package/node_modules/imapflow/dist/cjs/commands/idle.js +9 -9
- package/node_modules/imapflow/dist/cjs/commands/list.js +2 -2
- package/node_modules/imapflow/dist/cjs/commands/namespace.js +18 -14
- package/node_modules/imapflow/dist/cjs/commands/quota.js +2 -3
- package/node_modules/imapflow/dist/cjs/commands/status.js +2 -4
- package/node_modules/imapflow/dist/cjs/connection-deadline.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/connection-deadline.js +2 -4
- package/node_modules/imapflow/dist/cjs/download.js +66 -35
- package/node_modules/imapflow/dist/cjs/errors.d.ts +15 -0
- package/node_modules/imapflow/dist/cjs/errors.js +22 -0
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.d.ts +4 -4
- package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +18 -18
- package/node_modules/imapflow/dist/cjs/handler/imap-parser.js +28 -3
- package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +9 -8
- package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/handler/limits.js +5 -7
- package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +23 -38
- package/node_modules/imapflow/dist/cjs/handler/token-parser.d.ts +12 -0
- package/node_modules/imapflow/dist/cjs/handler/token-parser.js +44 -104
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +4 -3
- package/node_modules/imapflow/dist/cjs/imap-flow.js +98 -72
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/cjs/proxy-connection.js +2 -5
- package/node_modules/imapflow/dist/cjs/search-compiler.js +2 -3
- package/node_modules/imapflow/dist/cjs/tools.d.ts +14 -3
- package/node_modules/imapflow/dist/cjs/tools.js +30 -18
- package/node_modules/imapflow/dist/cjs/types.d.ts +11 -0
- package/node_modules/imapflow/dist/esm/commands/append.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/commands/append.js +15 -4
- package/node_modules/imapflow/dist/esm/commands/compress.js +2 -2
- package/node_modules/imapflow/dist/esm/commands/id.js +6 -4
- package/node_modules/imapflow/dist/esm/commands/idle.js +9 -9
- package/node_modules/imapflow/dist/esm/commands/list.js +3 -3
- package/node_modules/imapflow/dist/esm/commands/namespace.js +19 -15
- package/node_modules/imapflow/dist/esm/commands/quota.js +3 -4
- package/node_modules/imapflow/dist/esm/commands/status.js +2 -4
- package/node_modules/imapflow/dist/esm/connection-deadline.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/connection-deadline.js +2 -4
- package/node_modules/imapflow/dist/esm/download.js +66 -35
- package/node_modules/imapflow/dist/esm/errors.d.ts +15 -0
- package/node_modules/imapflow/dist/esm/errors.js +21 -0
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.d.ts +4 -4
- package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +18 -18
- package/node_modules/imapflow/dist/esm/handler/imap-parser.js +28 -3
- package/node_modules/imapflow/dist/esm/handler/imap-stream.js +9 -8
- package/node_modules/imapflow/dist/esm/handler/limits.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/handler/limits.js +5 -7
- package/node_modules/imapflow/dist/esm/handler/parser-instance.js +23 -38
- package/node_modules/imapflow/dist/esm/handler/token-parser.d.ts +12 -0
- package/node_modules/imapflow/dist/esm/handler/token-parser.js +44 -104
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +4 -3
- package/node_modules/imapflow/dist/esm/imap-flow.js +99 -73
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/proxy-connection.js +2 -5
- package/node_modules/imapflow/dist/esm/search-compiler.js +2 -3
- package/node_modules/imapflow/dist/esm/tools.d.ts +14 -3
- package/node_modules/imapflow/dist/esm/tools.js +30 -19
- package/node_modules/imapflow/dist/esm/types.d.ts +11 -0
- package/node_modules/imapflow/package.json +6 -3
- package/node_modules/ip-address/README.md +70 -70
- package/node_modules/ip-address/dist/ipv6.js +7 -4
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/dist/v6/constants.d.ts +3 -0
- package/node_modules/ip-address/dist/v6/constants.js +3 -0
- package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/ip-address/package.json +2 -1
- package/node_modules/marked/bin/main.js +1 -1
- package/node_modules/marked/lib/marked.d.ts +6 -3
- package/node_modules/marked/lib/marked.esm.js +48 -50
- package/node_modules/marked/lib/marked.esm.js.map +3 -3
- package/node_modules/marked/lib/marked.umd.js +45 -47
- package/node_modules/marked/lib/marked.umd.js.map +3 -3
- package/node_modules/marked/man/marked.1 +1 -1
- package/node_modules/marked/package.json +1 -1
- package/node_modules/process-warning/.github/workflows/ci.yml +1 -1
- package/node_modules/process-warning/.github/workflows/lock-threads.yml +1 -1
- package/node_modules/process-warning/.github/workflows/release.yml +24 -0
- package/node_modules/process-warning/README.md +46 -46
- package/node_modules/process-warning/package.json +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/dashboard-cmd.d.ts.map +1 -1
- package/packages/cli/dist/dashboard-cmd.js +6 -3
- package/packages/cli/dist/dashboard-cmd.js.map +1 -1
- package/packages/cli/dist/main.js +2 -2
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/status.d.ts +16 -2
- package/packages/cli/dist/status.d.ts.map +1 -1
- package/packages/cli/dist/status.js +42 -2
- package/packages/cli/dist/status.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/catalog.d.ts +6 -0
- package/packages/core/dist/agents/catalog.d.ts.map +1 -1
- package/packages/core/dist/agents/catalog.js +1 -1
- package/packages/core/dist/agents/catalog.js.map +1 -1
- package/packages/core/dist/backup/archive.d.ts +6 -0
- package/packages/core/dist/backup/archive.d.ts.map +1 -1
- package/packages/core/dist/backup/archive.js +19 -6
- package/packages/core/dist/backup/archive.js.map +1 -1
- package/packages/core/dist/postgres/binaries.d.ts +21 -1
- package/packages/core/dist/postgres/binaries.d.ts.map +1 -1
- package/packages/core/dist/postgres/binaries.js +72 -10
- package/packages/core/dist/postgres/binaries.js.map +1 -1
- package/packages/core/dist/postgres/cluster.d.ts +8 -0
- package/packages/core/dist/postgres/cluster.d.ts.map +1 -1
- package/packages/core/dist/postgres/cluster.js +119 -17
- package/packages/core/dist/postgres/cluster.js.map +1 -1
- package/packages/core/dist/postgres/windows-guard.d.ts +20 -0
- package/packages/core/dist/postgres/windows-guard.d.ts.map +1 -0
- package/packages/core/dist/postgres/windows-guard.js +140 -0
- package/packages/core/dist/postgres/windows-guard.js.map +1 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalog.js +3 -2
- package/packages/gateway/dist/agents/catalog.js.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.d.ts +2 -2
- package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalogue-package.js +1 -1
- package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.d.ts +6 -6
- package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform-catalogue.js +5 -5
- package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
- package/packages/gateway/dist/browser-host.js +1 -1
- package/packages/gateway/dist/browser-host.js.map +1 -1
- package/packages/gateway/dist/missions/chrome-scope.d.ts +10 -10
- package/packages/gateway/dist/missions/chrome-scope.d.ts.map +1 -1
- package/packages/gateway/dist/missions/chrome-scope.js +20 -20
- package/packages/gateway/dist/missions/chrome-scope.js.map +1 -1
- package/packages/gateway/dist/missions/execute.d.ts +2 -2
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +11 -11
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/reminders.d.ts +2 -2
- package/packages/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/packages/gateway/dist/missions/reminders.js +5 -5
- package/packages/gateway/dist/missions/reminders.js.map +1 -1
- package/packages/gateway/dist/owner-notify.js +1 -1
- package/packages/gateway/dist/owner-notify.js.map +1 -1
- package/packages/gateway/dist/plugins/npm.d.ts +9 -2
- package/packages/gateway/dist/plugins/npm.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/npm.js +29 -6
- package/packages/gateway/dist/plugins/npm.js.map +1 -1
- package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/stage.js +2 -2
- package/packages/gateway/dist/plugins/stage.js.map +1 -1
- package/packages/gateway/dist/serve.js +1 -1
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.d.ts +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.js +1 -1
- package/packages/gateway/dist/system-context.d.ts +11 -0
- package/packages/gateway/dist/system-context.d.ts.map +1 -1
- package/packages/gateway/dist/system-context.js +42 -1
- package/packages/gateway/dist/system-context.js.map +1 -1
- package/packages/gateway/dist/telegram/approvals.js +1 -1
- package/packages/gateway/dist/telegram/approvals.js.map +1 -1
- package/packages/gateway/dist/telegram/browser-view.js +1 -1
- package/packages/gateway/dist/telegram/browser-view.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +6 -6
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/approval-ask.js +1 -1
- package/packages/gateway/dist/web/extension.d.ts +6 -0
- package/packages/gateway/dist/web/extension.d.ts.map +1 -1
- package/packages/gateway/dist/web/extension.js +22 -11
- package/packages/gateway/dist/web/extension.js.map +1 -1
- package/packages/gateway/dist/web/read.d.ts +1 -1
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +4 -4
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/service.d.ts +6 -1
- package/packages/gateway/dist/web/service.d.ts.map +1 -1
- package/packages/gateway/dist/web/service.js +10 -1
- package/packages/gateway/dist/web/service.js.map +1 -1
- package/packages/gateway/dist/web/skills.d.ts.map +1 -1
- package/packages/gateway/dist/web/skills.js +2 -1
- package/packages/gateway/dist/web/skills.js.map +1 -1
- package/packages/gateway/dist/web/write.d.ts +1 -1
- package/packages/gateway/dist/web/write.js +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/app-layout.d.ts +53 -0
- package/packages/install/dist/app-layout.d.ts.map +1 -1
- package/packages/install/dist/app-layout.js +123 -10
- package/packages/install/dist/app-layout.js.map +1 -1
- package/packages/install/dist/cloudflared.js +2 -2
- package/packages/install/dist/cloudflared.js.map +1 -1
- package/packages/install/dist/environment.d.ts +40 -1
- package/packages/install/dist/environment.d.ts.map +1 -1
- package/packages/install/dist/environment.js +158 -12
- package/packages/install/dist/environment.js.map +1 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +340 -54
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/linux-install.d.ts +41 -0
- package/packages/install/dist/linux-install.d.ts.map +1 -0
- package/packages/install/dist/linux-install.js +86 -0
- package/packages/install/dist/linux-install.js.map +1 -0
- package/packages/install/dist/postgres-check.js +1 -1
- package/packages/install/dist/postgres-check.js.map +1 -1
- package/packages/install/dist/product-uninstall.d.ts +14 -0
- package/packages/install/dist/product-uninstall.d.ts.map +1 -1
- package/packages/install/dist/product-uninstall.js +10 -0
- package/packages/install/dist/product-uninstall.js.map +1 -1
- package/packages/install/dist/runtime-info.d.ts +23 -0
- package/packages/install/dist/runtime-info.d.ts.map +1 -0
- package/packages/install/dist/runtime-info.js +72 -0
- package/packages/install/dist/runtime-info.js.map +1 -0
- package/packages/install/dist/supervisor.d.ts +60 -3
- package/packages/install/dist/supervisor.d.ts.map +1 -1
- package/packages/install/dist/supervisor.js +175 -17
- package/packages/install/dist/supervisor.js.map +1 -1
- package/packages/install/dist/uninstall.d.ts +49 -3
- package/packages/install/dist/uninstall.d.ts.map +1 -1
- package/packages/install/dist/uninstall.js +184 -27
- package/packages/install/dist/uninstall.js.map +1 -1
- package/packages/install/dist/upgrade.d.ts +20 -5
- package/packages/install/dist/upgrade.d.ts.map +1 -1
- package/packages/install/dist/upgrade.js +125 -62
- package/packages/install/dist/upgrade.js.map +1 -1
- package/packages/install/dist/windows-install.d.ts +102 -0
- package/packages/install/dist/windows-install.d.ts.map +1 -0
- package/packages/install/dist/windows-install.js +223 -0
- package/packages/install/dist/windows-install.js.map +1 -0
- package/packages/install/dist/windows-setup.d.ts +107 -0
- package/packages/install/dist/windows-setup.d.ts.map +1 -0
- package/packages/install/dist/windows-setup.js +700 -0
- package/packages/install/dist/windows-setup.js.map +1 -0
- package/packages/install/dist/windows-task.d.ts +49 -0
- package/packages/install/dist/windows-task.d.ts.map +1 -0
- package/packages/install/dist/windows-task.js +167 -0
- package/packages/install/dist/windows-task.js.map +1 -0
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/codex-direct.d.ts +1 -1
- package/packages/runtime/dist/codex-direct.js +1 -1
- package/packages/runtime/dist/openai.d.ts +11 -0
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +36 -3
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/artifacts/dist/tools/write.js +3 -3
- package/packages/tools/artifacts/dist/tools/write.js.map +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/availability.d.ts.map +1 -1
- package/packages/tools/browser/dist/availability.js +1 -0
- package/packages/tools/browser/dist/availability.js.map +1 -1
- package/packages/tools/browser/dist/brand.d.ts +19 -0
- package/packages/tools/browser/dist/brand.d.ts.map +1 -0
- package/packages/tools/browser/dist/brand.js +31 -0
- package/packages/tools/browser/dist/brand.js.map +1 -0
- package/packages/tools/browser/dist/controller.d.ts +2 -2
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +16 -7
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/downloads.js +1 -1
- package/packages/tools/browser/dist/downloads.js.map +1 -1
- package/packages/tools/browser/dist/extension.d.ts +3 -1
- package/packages/tools/browser/dist/extension.d.ts.map +1 -1
- package/packages/tools/browser/dist/extension.js +4 -4
- package/packages/tools/browser/dist/extension.js.map +1 -1
- package/packages/tools/browser/dist/index.d.ts +3 -2
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +7 -6
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/routes.d.ts +12 -1
- package/packages/tools/browser/dist/routes.d.ts.map +1 -1
- package/packages/tools/browser/dist/routes.js +31 -14
- package/packages/tools/browser/dist/routes.js.map +1 -1
- package/packages/tools/browser/dist/service.d.ts +2 -0
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +6 -6
- package/packages/tools/browser/dist/service.js.map +1 -1
- package/packages/tools/browser/dist/telemetry.d.ts +2 -2
- package/packages/tools/browser/dist/telemetry.js +2 -2
- package/packages/tools/browser/dist/telemetry.js.map +1 -1
- package/packages/tools/browser/dist/types.js +1 -1
- package/packages/tools/browser/dist/types.js.map +1 -1
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/host/dist/index.d.ts +2 -1
- package/packages/tools/host/dist/index.d.ts.map +1 -1
- package/packages/tools/host/dist/index.js +11 -2
- package/packages/tools/host/dist/index.js.map +1 -1
- package/packages/tools/host/dist/process.d.ts +58 -1
- package/packages/tools/host/dist/process.d.ts.map +1 -1
- package/packages/tools/host/dist/process.js +229 -15
- package/packages/tools/host/dist/process.js.map +1 -1
- package/packages/tools/host/dist/service.d.ts +2 -0
- package/packages/tools/host/dist/service.d.ts.map +1 -1
- package/packages/tools/host/dist/service.js +8 -6
- package/packages/tools/host/dist/service.js.map +1 -1
- package/packages/tools/host/dist/skill-run.d.ts +10 -0
- package/packages/tools/host/dist/skill-run.d.ts.map +1 -1
- package/packages/tools/host/dist/skill-run.js +14 -0
- package/packages/tools/host/dist/skill-run.js.map +1 -1
- package/packages/web/dist/assets/index-DnZhfnM7.js +155 -0
- package/packages/web/dist/assets/{lottie_light-DROBTM6Y.js → lottie_light-CGUtDt_b.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +1 -1
- package/packages/web/dist/precache.json +3 -3
- package/node_modules/content-disposition/index.js +0 -536
- package/packages/web/dist/assets/index-oxmxR39o.js +0 -155
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
var YL=Object.defineProperty;var L0=e=>{throw TypeError(e)};var QL=(e,n,s)=>n in e?YL(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var F0=(e,n,s)=>QL(e,typeof n!="symbol"?n+"":n,s),_0=(e,n,s)=>n.has(e)||L0("Cannot "+s);var Ut=(e,n,s)=>(_0(e,n,"read from private field"),s?s.call(e):n.get(e)),zi=(e,n,s)=>n.has(e)?L0("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(e):n.set(e,s),is=(e,n,s,r)=>(_0(e,n,"write to private field"),r?r.call(e,s):n.set(e,s),s);function JL(e,n){for(var s=0;s<n.length;s++){const r=n[s];if(typeof r!="string"&&!Array.isArray(r)){for(const a in r)if(a!=="default"&&!(a in e)){const i=Object.getOwnPropertyDescriptor(r,a);i&&Object.defineProperty(e,a,i.get?i:{enumerable:!0,get:()=>r[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function s(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(a){if(a.ep)return;a.ep=!0;const i=s(a);fetch(a.href,i)}})();var Tue=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function XL(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var cA={exports:{}},km={},uA={exports:{}},St={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var id=Symbol.for("react.element"),ZL=Symbol.for("react.portal"),eF=Symbol.for("react.fragment"),tF=Symbol.for("react.strict_mode"),nF=Symbol.for("react.profiler"),sF=Symbol.for("react.provider"),rF=Symbol.for("react.context"),aF=Symbol.for("react.forward_ref"),iF=Symbol.for("react.suspense"),lF=Symbol.for("react.memo"),oF=Symbol.for("react.lazy"),z0=Symbol.iterator;function cF(e){return e===null||typeof e!="object"?null:(e=z0&&e[z0]||e["@@iterator"],typeof e=="function"?e:null)}var dA={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},hA=Object.assign,fA={};function Go(e,n,s){this.props=e,this.context=n,this.refs=fA,this.updater=s||dA}Go.prototype.isReactComponent={};Go.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};Go.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function mA(){}mA.prototype=Go.prototype;function _y(e,n,s){this.props=e,this.context=n,this.refs=fA,this.updater=s||dA}var zy=_y.prototype=new mA;zy.constructor=_y;hA(zy,Go.prototype);zy.isPureReactComponent=!0;var U0=Array.isArray,pA=Object.prototype.hasOwnProperty,Uy={current:null},gA={key:!0,ref:!0,__self:!0,__source:!0};function xA(e,n,s){var r,a={},i=null,l=null;if(n!=null)for(r in n.ref!==void 0&&(l=n.ref),n.key!==void 0&&(i=""+n.key),n)pA.call(n,r)&&!gA.hasOwnProperty(r)&&(a[r]=n[r]);var o=arguments.length-2;if(o===1)a.children=s;else if(1<o){for(var c=Array(o),u=0;u<o;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)a[r]===void 0&&(a[r]=o[r]);return{$$typeof:id,type:e,key:i,ref:l,props:a,_owner:Uy.current}}function uF(e,n){return{$$typeof:id,type:e.type,key:n,ref:e.ref,props:e.props,_owner:e._owner}}function By(e){return typeof e=="object"&&e!==null&&e.$$typeof===id}function dF(e){var n={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(s){return n[s]})}var B0=/\/+/g;function qp(e,n){return typeof e=="object"&&e!==null&&e.key!=null?dF(""+e.key):n.toString(36)}function Ph(e,n,s,r,a){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var l=!1;if(e===null)l=!0;else switch(i){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case id:case ZL:l=!0}}if(l)return l=e,a=a(l),e=r===""?"."+qp(l,0):r,U0(a)?(s="",e!=null&&(s=e.replace(B0,"$&/")+"/"),Ph(a,n,s,"",function(u){return u})):a!=null&&(By(a)&&(a=uF(a,s+(!a.key||l&&l.key===a.key?"":(""+a.key).replace(B0,"$&/")+"/")+e)),n.push(a)),1;if(l=0,r=r===""?".":r+":",U0(e))for(var o=0;o<e.length;o++){i=e[o];var c=r+qp(i,o);l+=Ph(i,n,s,c,a)}else if(c=cF(e),typeof c=="function")for(e=c.call(e),o=0;!(i=e.next()).done;)i=i.value,c=r+qp(i,o++),l+=Ph(i,n,s,c,a);else if(i==="object")throw n=String(e),Error("Objects are not valid as a React child (found: "+(n==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.");return l}function zd(e,n,s){if(e==null)return e;var r=[],a=0;return Ph(e,r,"","",function(i){return n.call(s,i,a++)}),r}function hF(e){if(e._status===-1){var n=e._result;n=n(),n.then(function(s){(e._status===0||e._status===-1)&&(e._status=1,e._result=s)},function(s){(e._status===0||e._status===-1)&&(e._status=2,e._result=s)}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var ps={current:null},Mh={transition:null},fF={ReactCurrentDispatcher:ps,ReactCurrentBatchConfig:Mh,ReactCurrentOwner:Uy};function vA(){throw Error("act(...) is not supported in production builds of React.")}St.Children={map:zd,forEach:function(e,n,s){zd(e,function(){n.apply(this,arguments)},s)},count:function(e){var n=0;return zd(e,function(){n++}),n},toArray:function(e){return zd(e,function(n){return n})||[]},only:function(e){if(!By(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};St.Component=Go;St.Fragment=eF;St.Profiler=nF;St.PureComponent=_y;St.StrictMode=tF;St.Suspense=iF;St.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=fF;St.act=vA;St.cloneElement=function(e,n,s){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var r=hA({},e.props),a=e.key,i=e.ref,l=e._owner;if(n!=null){if(n.ref!==void 0&&(i=n.ref,l=Uy.current),n.key!==void 0&&(a=""+n.key),e.type&&e.type.defaultProps)var o=e.type.defaultProps;for(c in n)pA.call(n,c)&&!gA.hasOwnProperty(c)&&(r[c]=n[c]===void 0&&o!==void 0?o[c]:n[c])}var c=arguments.length-2;if(c===1)r.children=s;else if(1<c){o=Array(c);for(var u=0;u<c;u++)o[u]=arguments[u+2];r.children=o}return{$$typeof:id,type:e.type,key:a,ref:i,props:r,_owner:l}};St.createContext=function(e){return e={$$typeof:rF,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:sF,_context:e},e.Consumer=e};St.createElement=xA;St.createFactory=function(e){var n=xA.bind(null,e);return n.type=e,n};St.createRef=function(){return{current:null}};St.forwardRef=function(e){return{$$typeof:aF,render:e}};St.isValidElement=By;St.lazy=function(e){return{$$typeof:oF,_payload:{_status:-1,_result:e},_init:hF}};St.memo=function(e,n){return{$$typeof:lF,type:e,compare:n===void 0?null:n}};St.startTransition=function(e){var n=Mh.transition;Mh.transition={};try{e()}finally{Mh.transition=n}};St.unstable_act=vA;St.useCallback=function(e,n){return ps.current.useCallback(e,n)};St.useContext=function(e){return ps.current.useContext(e)};St.useDebugValue=function(){};St.useDeferredValue=function(e){return ps.current.useDeferredValue(e)};St.useEffect=function(e,n){return ps.current.useEffect(e,n)};St.useId=function(){return ps.current.useId()};St.useImperativeHandle=function(e,n,s){return ps.current.useImperativeHandle(e,n,s)};St.useInsertionEffect=function(e,n){return ps.current.useInsertionEffect(e,n)};St.useLayoutEffect=function(e,n){return ps.current.useLayoutEffect(e,n)};St.useMemo=function(e,n){return ps.current.useMemo(e,n)};St.useReducer=function(e,n,s){return ps.current.useReducer(e,n,s)};St.useRef=function(e){return ps.current.useRef(e)};St.useState=function(e){return ps.current.useState(e)};St.useSyncExternalStore=function(e,n,s){return ps.current.useSyncExternalStore(e,n,s)};St.useTransition=function(){return ps.current.useTransition()};St.version="18.3.1";uA.exports=St;var d=uA.exports;const mF=XL(d),qo=JL({__proto__:null,default:mF},[d]);/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react-jsx-runtime.production.min.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var pF=d,gF=Symbol.for("react.element"),xF=Symbol.for("react.fragment"),vF=Object.prototype.hasOwnProperty,jF=pF.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,yF={key:!0,ref:!0,__self:!0,__source:!0};function jA(e,n,s){var r,a={},i=null,l=null;s!==void 0&&(i=""+s),n.key!==void 0&&(i=""+n.key),n.ref!==void 0&&(l=n.ref);for(r in n)vF.call(n,r)&&!yF.hasOwnProperty(r)&&(a[r]=n[r]);if(e&&e.defaultProps)for(r in n=e.defaultProps,n)a[r]===void 0&&(a[r]=n[r]);return{$$typeof:gF,type:e,key:i,ref:l,props:a,_owner:jF.current}}km.Fragment=xF;km.jsx=jA;km.jsxs=jA;cA.exports=km;var t=cA.exports,yA={exports:{}},Gs={},wA={exports:{}},bA={};/**
|
|
18
|
+
* @license React
|
|
19
|
+
* scheduler.production.min.js
|
|
20
|
+
*
|
|
21
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
22
|
+
*
|
|
23
|
+
* This source code is licensed under the MIT license found in the
|
|
24
|
+
* LICENSE file in the root directory of this source tree.
|
|
25
|
+
*/(function(e){function n(M,z){var D=M.length;M.push(z);e:for(;0<D;){var H=D-1>>>1,K=M[H];if(0<a(K,z))M[H]=z,M[D]=K,D=H;else break e}}function s(M){return M.length===0?null:M[0]}function r(M){if(M.length===0)return null;var z=M[0],D=M.pop();if(D!==z){M[0]=D;e:for(var H=0,K=M.length,X=K>>>1;H<X;){var W=2*(H+1)-1,me=M[W],fe=W+1,oe=M[fe];if(0>a(me,D))fe<K&&0>a(oe,me)?(M[H]=oe,M[fe]=D,H=fe):(M[H]=me,M[W]=D,H=W);else if(fe<K&&0>a(oe,D))M[H]=oe,M[fe]=D,H=fe;else break e}}return z}function a(M,z){var D=M.sortIndex-z.sortIndex;return D!==0?D:M.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var l=Date,o=l.now();e.unstable_now=function(){return l.now()-o}}var c=[],u=[],h=1,f=null,m=3,p=!1,x=!1,g=!1,b=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function y(M){for(var z=s(u);z!==null;){if(z.callback===null)r(u);else if(z.startTime<=M)r(u),z.sortIndex=z.expirationTime,n(c,z);else break;z=s(u)}}function k(M){if(g=!1,y(M),!x)if(s(c)!==null)x=!0,U(N);else{var z=s(u);z!==null&&L(k,z.startTime-M)}}function N(M,z){x=!1,g&&(g=!1,j(C),C=-1),p=!0;var D=m;try{for(y(z),f=s(c);f!==null&&(!(f.expirationTime>z)||M&&!R());){var H=f.callback;if(typeof H=="function"){f.callback=null,m=f.priorityLevel;var K=H(f.expirationTime<=z);z=e.unstable_now(),typeof K=="function"?f.callback=K:f===s(c)&&r(c),y(z)}else r(c);f=s(c)}if(f!==null)var X=!0;else{var W=s(u);W!==null&&L(k,W.startTime-z),X=!1}return X}finally{f=null,m=D,p=!1}}var w=!1,S=null,C=-1,E=5,$=-1;function R(){return!(e.unstable_now()-$<E)}function P(){if(S!==null){var M=e.unstable_now();$=M;var z=!0;try{z=S(!0,M)}finally{z?O():(w=!1,S=null)}}else w=!1}var O;if(typeof v=="function")O=function(){v(P)};else if(typeof MessageChannel<"u"){var I=new MessageChannel,F=I.port2;I.port1.onmessage=P,O=function(){F.postMessage(null)}}else O=function(){b(P,0)};function U(M){S=M,w||(w=!0,O())}function L(M,z){C=b(function(){M(e.unstable_now())},z)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_continueExecution=function(){x||p||(x=!0,U(N))},e.unstable_forceFrameRate=function(M){0>M||125<M?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):E=0<M?Math.floor(1e3/M):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_getFirstCallbackNode=function(){return s(c)},e.unstable_next=function(M){switch(m){case 1:case 2:case 3:var z=3;break;default:z=m}var D=m;m=z;try{return M()}finally{m=D}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(M,z){switch(M){case 1:case 2:case 3:case 4:case 5:break;default:M=3}var D=m;m=M;try{return z()}finally{m=D}},e.unstable_scheduleCallback=function(M,z,D){var H=e.unstable_now();switch(typeof D=="object"&&D!==null?(D=D.delay,D=typeof D=="number"&&0<D?H+D:H):D=H,M){case 1:var K=-1;break;case 2:K=250;break;case 5:K=1073741823;break;case 4:K=1e4;break;default:K=5e3}return K=D+K,M={id:h++,callback:z,priorityLevel:M,startTime:D,expirationTime:K,sortIndex:-1},D>H?(M.sortIndex=D,n(u,M),s(c)===null&&M===s(u)&&(g?(j(C),C=-1):g=!0,L(k,D-H))):(M.sortIndex=K,n(c,M),x||p||(x=!0,U(N))),M},e.unstable_shouldYield=R,e.unstable_wrapCallback=function(M){var z=m;return function(){var D=m;m=z;try{return M.apply(this,arguments)}finally{m=D}}}})(bA);wA.exports=bA;var wF=wA.exports;/**
|
|
26
|
+
* @license React
|
|
27
|
+
* react-dom.production.min.js
|
|
28
|
+
*
|
|
29
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
30
|
+
*
|
|
31
|
+
* This source code is licensed under the MIT license found in the
|
|
32
|
+
* LICENSE file in the root directory of this source tree.
|
|
33
|
+
*/var bF=d,Ws=wF;function $e(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,s=1;s<arguments.length;s++)n+="&args[]="+encodeURIComponent(arguments[s]);return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var kA=new Set,uu={};function bl(e,n){Co(e,n),Co(e+"Capture",n)}function Co(e,n){for(uu[e]=n,e=0;e<n.length;e++)kA.add(n[e])}var Ra=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Lx=Object.prototype.hasOwnProperty,kF=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,W0={},H0={};function NF(e){return Lx.call(H0,e)?!0:Lx.call(W0,e)?!1:kF.test(e)?H0[e]=!0:(W0[e]=!0,!1)}function SF(e,n,s,r){if(s!==null&&s.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return r?!1:s!==null?!s.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function CF(e,n,s,r){if(n===null||typeof n>"u"||SF(e,n,s,r))return!0;if(r)return!1;if(s!==null)switch(s.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function gs(e,n,s,r,a,i,l){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=s,this.propertyName=e,this.type=n,this.sanitizeURL=i,this.removeEmptyString=l}var Gn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Gn[e]=new gs(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];Gn[n]=new gs(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Gn[e]=new gs(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Gn[e]=new gs(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Gn[e]=new gs(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Gn[e]=new gs(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Gn[e]=new gs(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Gn[e]=new gs(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Gn[e]=new gs(e,5,!1,e.toLowerCase(),null,!1,!1)});var Wy=/[\-:]([a-z])/g;function Hy(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Wy,Hy);Gn[n]=new gs(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Wy,Hy);Gn[n]=new gs(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Wy,Hy);Gn[n]=new gs(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Gn[e]=new gs(e,1,!1,e.toLowerCase(),null,!1,!1)});Gn.xlinkHref=new gs("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Gn[e]=new gs(e,1,!1,e.toLowerCase(),null,!0,!0)});function Ky(e,n,s,r){var a=Gn.hasOwnProperty(n)?Gn[n]:null;(a!==null?a.type!==0:r||!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(CF(n,s,a,r)&&(s=null),r||a===null?NF(n)&&(s===null?e.removeAttribute(n):e.setAttribute(n,""+s)):a.mustUseProperty?e[a.propertyName]=s===null?a.type===3?!1:"":s:(n=a.attributeName,r=a.attributeNamespace,s===null?e.removeAttribute(n):(a=a.type,s=a===3||a===4&&s===!0?"":""+s,r?e.setAttributeNS(r,n,s):e.setAttribute(n,s))))}var _a=bF.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ud=Symbol.for("react.element"),Yl=Symbol.for("react.portal"),Ql=Symbol.for("react.fragment"),Vy=Symbol.for("react.strict_mode"),Fx=Symbol.for("react.profiler"),NA=Symbol.for("react.provider"),SA=Symbol.for("react.context"),Gy=Symbol.for("react.forward_ref"),_x=Symbol.for("react.suspense"),zx=Symbol.for("react.suspense_list"),qy=Symbol.for("react.memo"),qa=Symbol.for("react.lazy"),CA=Symbol.for("react.offscreen"),K0=Symbol.iterator;function jc(e){return e===null||typeof e!="object"?null:(e=K0&&e[K0]||e["@@iterator"],typeof e=="function"?e:null)}var hn=Object.assign,Yp;function Dc(e){if(Yp===void 0)try{throw Error()}catch(s){var n=s.stack.trim().match(/\n( *(at )?)/);Yp=n&&n[1]||""}return`
|
|
34
|
+
`+Yp+e}var Qp=!1;function Jp(e,n){if(!e||Qp)return"";Qp=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(n,[])}catch(u){var r=u}Reflect.construct(e,[],n)}else{try{n.call()}catch(u){r=u}e.call(n.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&typeof u.stack=="string"){for(var a=u.stack.split(`
|
|
35
|
+
`),i=r.stack.split(`
|
|
36
|
+
`),l=a.length-1,o=i.length-1;1<=l&&0<=o&&a[l]!==i[o];)o--;for(;1<=l&&0<=o;l--,o--)if(a[l]!==i[o]){if(l!==1||o!==1)do if(l--,o--,0>o||a[l]!==i[o]){var c=`
|
|
37
|
+
`+a[l].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=l&&0<=o);break}}}finally{Qp=!1,Error.prepareStackTrace=s}return(e=e?e.displayName||e.name:"")?Dc(e):""}function EF(e){switch(e.tag){case 5:return Dc(e.type);case 16:return Dc("Lazy");case 13:return Dc("Suspense");case 19:return Dc("SuspenseList");case 0:case 2:case 15:return e=Jp(e.type,!1),e;case 11:return e=Jp(e.type.render,!1),e;case 1:return e=Jp(e.type,!0),e;default:return""}}function Ux(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Ql:return"Fragment";case Yl:return"Portal";case Fx:return"Profiler";case Vy:return"StrictMode";case _x:return"Suspense";case zx:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case SA:return(e.displayName||"Context")+".Consumer";case NA:return(e._context.displayName||"Context")+".Provider";case Gy:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case qy:return n=e.displayName||null,n!==null?n:Ux(e.type)||"Memo";case qa:n=e._payload,e=e._init;try{return Ux(e(n))}catch{}}return null}function AF(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ux(n);case 8:return n===Vy?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function mi(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function EA(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function $F(e){var n=EA(e)?"checked":"value",s=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof s<"u"&&typeof s.get=="function"&&typeof s.set=="function"){var a=s.get,i=s.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return a.call(this)},set:function(l){r=""+l,i.call(this,l)}}),Object.defineProperty(e,n,{enumerable:s.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Bd(e){e._valueTracker||(e._valueTracker=$F(e))}function AA(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var s=n.getValue(),r="";return e&&(r=EA(e)?e.checked?"true":"false":e.value),e=r,e!==s?(n.setValue(e),!0):!1}function df(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Bx(e,n){var s=n.checked;return hn({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s??e._wrapperState.initialChecked})}function V0(e,n){var s=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;s=mi(n.value!=null?n.value:s),e._wrapperState={initialChecked:r,initialValue:s,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function $A(e,n){n=n.checked,n!=null&&Ky(e,"checked",n,!1)}function Wx(e,n){$A(e,n);var s=mi(n.value),r=n.type;if(s!=null)r==="number"?(s===0&&e.value===""||e.value!=s)&&(e.value=""+s):e.value!==""+s&&(e.value=""+s);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Hx(e,n.type,s):n.hasOwnProperty("defaultValue")&&Hx(e,n.type,mi(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function G0(e,n,s){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,s||n===e.value||(e.value=n),e.defaultValue=n}s=e.name,s!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,s!==""&&(e.name=s)}function Hx(e,n,s){(n!=="number"||df(e.ownerDocument)!==e)&&(s==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+s&&(e.defaultValue=""+s))}var Lc=Array.isArray;function fo(e,n,s,r){if(e=e.options,n){n={};for(var a=0;a<s.length;a++)n["$"+s[a]]=!0;for(s=0;s<e.length;s++)a=n.hasOwnProperty("$"+e[s].value),e[s].selected!==a&&(e[s].selected=a),a&&r&&(e[s].defaultSelected=!0)}else{for(s=""+mi(s),n=null,a=0;a<e.length;a++){if(e[a].value===s){e[a].selected=!0,r&&(e[a].defaultSelected=!0);return}n!==null||e[a].disabled||(n=e[a])}n!==null&&(n.selected=!0)}}function Kx(e,n){if(n.dangerouslySetInnerHTML!=null)throw Error($e(91));return hn({},n,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function q0(e,n){var s=n.value;if(s==null){if(s=n.children,n=n.defaultValue,s!=null){if(n!=null)throw Error($e(92));if(Lc(s)){if(1<s.length)throw Error($e(93));s=s[0]}n=s}n==null&&(n=""),s=n}e._wrapperState={initialValue:mi(s)}}function TA(e,n){var s=mi(n.value),r=mi(n.defaultValue);s!=null&&(s=""+s,s!==e.value&&(e.value=s),n.defaultValue==null&&e.defaultValue!==s&&(e.defaultValue=s)),r!=null&&(e.defaultValue=""+r)}function Y0(e){var n=e.textContent;n===e._wrapperState.initialValue&&n!==""&&n!==null&&(e.value=n)}function RA(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Vx(e,n){return e==null||e==="http://www.w3.org/1999/xhtml"?RA(n):e==="http://www.w3.org/2000/svg"&&n==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Wd,IA=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(n,s,r,a){MSApp.execUnsafeLocalFunction(function(){return e(n,s,r,a)})}:e}(function(e,n){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=n;else{for(Wd=Wd||document.createElement("div"),Wd.innerHTML="<svg>"+n.valueOf().toString()+"</svg>",n=Wd.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function du(e,n){if(n){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=n;return}}e.textContent=n}var Kc={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},TF=["Webkit","ms","Moz","O"];Object.keys(Kc).forEach(function(e){TF.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Kc[n]=Kc[e]})});function PA(e,n,s){return n==null||typeof n=="boolean"||n===""?"":s||typeof n!="number"||n===0||Kc.hasOwnProperty(e)&&Kc[e]?(""+n).trim():n+"px"}function MA(e,n){e=e.style;for(var s in n)if(n.hasOwnProperty(s)){var r=s.indexOf("--")===0,a=PA(s,n[s],r);s==="float"&&(s="cssFloat"),r?e.setProperty(s,a):e[s]=a}}var RF=hn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Gx(e,n){if(n){if(RF[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error($e(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error($e(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error($e(61))}if(n.style!=null&&typeof n.style!="object")throw Error($e(62))}}function qx(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Yx=null;function Yy(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Qx=null,mo=null,po=null;function Q0(e){if(e=cd(e)){if(typeof Qx!="function")throw Error($e(280));var n=e.stateNode;n&&(n=Am(n),Qx(e.stateNode,e.type,n))}}function OA(e){mo?po?po.push(e):po=[e]:mo=e}function DA(){if(mo){var e=mo,n=po;if(po=mo=null,Q0(e),n)for(e=0;e<n.length;e++)Q0(n[e])}}function LA(e,n){return e(n)}function FA(){}var Xp=!1;function _A(e,n,s){if(Xp)return e(n,s);Xp=!0;try{return LA(e,n,s)}finally{Xp=!1,(mo!==null||po!==null)&&(FA(),DA())}}function hu(e,n){var s=e.stateNode;if(s===null)return null;var r=Am(s);if(r===null)return null;s=r[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(e=e.type,r=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!r;break e;default:e=!1}if(e)return null;if(s&&typeof s!="function")throw Error($e(231,n,typeof s));return s}var Jx=!1;if(Ra)try{var yc={};Object.defineProperty(yc,"passive",{get:function(){Jx=!0}}),window.addEventListener("test",yc,yc),window.removeEventListener("test",yc,yc)}catch{Jx=!1}function IF(e,n,s,r,a,i,l,o,c){var u=Array.prototype.slice.call(arguments,3);try{n.apply(s,u)}catch(h){this.onError(h)}}var Vc=!1,hf=null,ff=!1,Xx=null,PF={onError:function(e){Vc=!0,hf=e}};function MF(e,n,s,r,a,i,l,o,c){Vc=!1,hf=null,IF.apply(PF,arguments)}function OF(e,n,s,r,a,i,l,o,c){if(MF.apply(this,arguments),Vc){if(Vc){var u=hf;Vc=!1,hf=null}else throw Error($e(198));ff||(ff=!0,Xx=u)}}function kl(e){var n=e,s=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,n.flags&4098&&(s=n.return),e=n.return;while(e)}return n.tag===3?s:null}function zA(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function J0(e){if(kl(e)!==e)throw Error($e(188))}function DF(e){var n=e.alternate;if(!n){if(n=kl(e),n===null)throw Error($e(188));return n!==e?null:e}for(var s=e,r=n;;){var a=s.return;if(a===null)break;var i=a.alternate;if(i===null){if(r=a.return,r!==null){s=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===s)return J0(a),e;if(i===r)return J0(a),n;i=i.sibling}throw Error($e(188))}if(s.return!==r.return)s=a,r=i;else{for(var l=!1,o=a.child;o;){if(o===s){l=!0,s=a,r=i;break}if(o===r){l=!0,r=a,s=i;break}o=o.sibling}if(!l){for(o=i.child;o;){if(o===s){l=!0,s=i,r=a;break}if(o===r){l=!0,r=i,s=a;break}o=o.sibling}if(!l)throw Error($e(189))}}if(s.alternate!==r)throw Error($e(190))}if(s.tag!==3)throw Error($e(188));return s.stateNode.current===s?e:n}function UA(e){return e=DF(e),e!==null?BA(e):null}function BA(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var n=BA(e);if(n!==null)return n;e=e.sibling}return null}var WA=Ws.unstable_scheduleCallback,X0=Ws.unstable_cancelCallback,LF=Ws.unstable_shouldYield,FF=Ws.unstable_requestPaint,jn=Ws.unstable_now,_F=Ws.unstable_getCurrentPriorityLevel,Qy=Ws.unstable_ImmediatePriority,HA=Ws.unstable_UserBlockingPriority,mf=Ws.unstable_NormalPriority,zF=Ws.unstable_LowPriority,KA=Ws.unstable_IdlePriority,Nm=null,sa=null;function UF(e){if(sa&&typeof sa.onCommitFiberRoot=="function")try{sa.onCommitFiberRoot(Nm,e,void 0,(e.current.flags&128)===128)}catch{}}var $r=Math.clz32?Math.clz32:HF,BF=Math.log,WF=Math.LN2;function HF(e){return e>>>=0,e===0?32:31-(BF(e)/WF|0)|0}var Hd=64,Kd=4194304;function Fc(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pf(e,n){var s=e.pendingLanes;if(s===0)return 0;var r=0,a=e.suspendedLanes,i=e.pingedLanes,l=s&268435455;if(l!==0){var o=l&~a;o!==0?r=Fc(o):(i&=l,i!==0&&(r=Fc(i)))}else l=s&~a,l!==0?r=Fc(l):i!==0&&(r=Fc(i));if(r===0)return 0;if(n!==0&&n!==r&&!(n&a)&&(a=r&-r,i=n&-n,a>=i||a===16&&(i&4194240)!==0))return n;if(r&4&&(r|=s&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0<n;)s=31-$r(n),a=1<<s,r|=e[s],n&=~a;return r}function KF(e,n){switch(e){case 1:case 2:case 4:return n+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function VF(e,n){for(var s=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,i=e.pendingLanes;0<i;){var l=31-$r(i),o=1<<l,c=a[l];c===-1?(!(o&s)||o&r)&&(a[l]=KF(o,n)):c<=n&&(e.expiredLanes|=o),i&=~o}}function Zx(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function VA(){var e=Hd;return Hd<<=1,!(Hd&4194240)&&(Hd=64),e}function Zp(e){for(var n=[],s=0;31>s;s++)n.push(e);return n}function ld(e,n,s){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-$r(n),e[n]=s}function GF(e,n){var s=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<s;){var a=31-$r(s),i=1<<a;n[a]=0,r[a]=-1,e[a]=-1,s&=~i}}function Jy(e,n){var s=e.entangledLanes|=n;for(e=e.entanglements;s;){var r=31-$r(s),a=1<<r;a&n|e[r]&n&&(e[r]|=n),s&=~a}}var Ft=0;function GA(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var qA,Xy,YA,QA,JA,ev=!1,Vd=[],si=null,ri=null,ai=null,fu=new Map,mu=new Map,Qa=[],qF="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Z0(e,n){switch(e){case"focusin":case"focusout":si=null;break;case"dragenter":case"dragleave":ri=null;break;case"mouseover":case"mouseout":ai=null;break;case"pointerover":case"pointerout":fu.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":mu.delete(n.pointerId)}}function wc(e,n,s,r,a,i){return e===null||e.nativeEvent!==i?(e={blockedOn:n,domEventName:s,eventSystemFlags:r,nativeEvent:i,targetContainers:[a]},n!==null&&(n=cd(n),n!==null&&Xy(n)),e):(e.eventSystemFlags|=r,n=e.targetContainers,a!==null&&n.indexOf(a)===-1&&n.push(a),e)}function YF(e,n,s,r,a){switch(n){case"focusin":return si=wc(si,e,n,s,r,a),!0;case"dragenter":return ri=wc(ri,e,n,s,r,a),!0;case"mouseover":return ai=wc(ai,e,n,s,r,a),!0;case"pointerover":var i=a.pointerId;return fu.set(i,wc(fu.get(i)||null,e,n,s,r,a)),!0;case"gotpointercapture":return i=a.pointerId,mu.set(i,wc(mu.get(i)||null,e,n,s,r,a)),!0}return!1}function XA(e){var n=Yi(e.target);if(n!==null){var s=kl(n);if(s!==null){if(n=s.tag,n===13){if(n=zA(s),n!==null){e.blockedOn=n,JA(e.priority,function(){YA(s)});return}}else if(n===3&&s.stateNode.current.memoizedState.isDehydrated){e.blockedOn=s.tag===3?s.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Oh(e){if(e.blockedOn!==null)return!1;for(var n=e.targetContainers;0<n.length;){var s=tv(e.domEventName,e.eventSystemFlags,n[0],e.nativeEvent);if(s===null){s=e.nativeEvent;var r=new s.constructor(s.type,s);Yx=r,s.target.dispatchEvent(r),Yx=null}else return n=cd(s),n!==null&&Xy(n),e.blockedOn=s,!1;n.shift()}return!0}function eN(e,n,s){Oh(e)&&s.delete(n)}function QF(){ev=!1,si!==null&&Oh(si)&&(si=null),ri!==null&&Oh(ri)&&(ri=null),ai!==null&&Oh(ai)&&(ai=null),fu.forEach(eN),mu.forEach(eN)}function bc(e,n){e.blockedOn===n&&(e.blockedOn=null,ev||(ev=!0,Ws.unstable_scheduleCallback(Ws.unstable_NormalPriority,QF)))}function pu(e){function n(a){return bc(a,e)}if(0<Vd.length){bc(Vd[0],e);for(var s=1;s<Vd.length;s++){var r=Vd[s];r.blockedOn===e&&(r.blockedOn=null)}}for(si!==null&&bc(si,e),ri!==null&&bc(ri,e),ai!==null&&bc(ai,e),fu.forEach(n),mu.forEach(n),s=0;s<Qa.length;s++)r=Qa[s],r.blockedOn===e&&(r.blockedOn=null);for(;0<Qa.length&&(s=Qa[0],s.blockedOn===null);)XA(s),s.blockedOn===null&&Qa.shift()}var go=_a.ReactCurrentBatchConfig,gf=!0;function JF(e,n,s,r){var a=Ft,i=go.transition;go.transition=null;try{Ft=1,Zy(e,n,s,r)}finally{Ft=a,go.transition=i}}function XF(e,n,s,r){var a=Ft,i=go.transition;go.transition=null;try{Ft=4,Zy(e,n,s,r)}finally{Ft=a,go.transition=i}}function Zy(e,n,s,r){if(gf){var a=tv(e,n,s,r);if(a===null)cg(e,n,r,xf,s),Z0(e,r);else if(YF(a,e,n,s,r))r.stopPropagation();else if(Z0(e,r),n&4&&-1<qF.indexOf(e)){for(;a!==null;){var i=cd(a);if(i!==null&&qA(i),i=tv(e,n,s,r),i===null&&cg(e,n,r,xf,s),i===a)break;a=i}a!==null&&r.stopPropagation()}else cg(e,n,r,null,s)}}var xf=null;function tv(e,n,s,r){if(xf=null,e=Yy(r),e=Yi(e),e!==null)if(n=kl(e),n===null)e=null;else if(s=n.tag,s===13){if(e=zA(n),e!==null)return e;e=null}else if(s===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null);return xf=e,null}function ZA(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(_F()){case Qy:return 1;case HA:return 4;case mf:case zF:return 16;case KA:return 536870912;default:return 16}default:return 16}}var Za=null,ew=null,Dh=null;function e$(){if(Dh)return Dh;var e,n=ew,s=n.length,r,a="value"in Za?Za.value:Za.textContent,i=a.length;for(e=0;e<s&&n[e]===a[e];e++);var l=s-e;for(r=1;r<=l&&n[s-r]===a[i-r];r++);return Dh=a.slice(e,1<r?1-r:void 0)}function Lh(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&n===13&&(e=13)):e=n,e===10&&(e=13),32<=e||e===13?e:0}function Gd(){return!0}function tN(){return!1}function qs(e){function n(s,r,a,i,l){this._reactName=s,this._targetInst=a,this.type=r,this.nativeEvent=i,this.target=l,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(s=e[o],this[o]=s?s(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented!=null?i.defaultPrevented:i.returnValue===!1)?Gd:tN,this.isPropagationStopped=tN,this}return hn(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():typeof s.returnValue!="unknown"&&(s.returnValue=!1),this.isDefaultPrevented=Gd)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():typeof s.cancelBubble!="unknown"&&(s.cancelBubble=!0),this.isPropagationStopped=Gd)},persist:function(){},isPersistent:Gd}),n}var Yo={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},tw=qs(Yo),od=hn({},Yo,{view:0,detail:0}),ZF=qs(od),eg,tg,kc,Sm=hn({},od,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:nw,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==kc&&(kc&&e.type==="mousemove"?(eg=e.screenX-kc.screenX,tg=e.screenY-kc.screenY):tg=eg=0,kc=e),eg)},movementY:function(e){return"movementY"in e?e.movementY:tg}}),nN=qs(Sm),e_=hn({},Sm,{dataTransfer:0}),t_=qs(e_),n_=hn({},od,{relatedTarget:0}),ng=qs(n_),s_=hn({},Yo,{animationName:0,elapsedTime:0,pseudoElement:0}),r_=qs(s_),a_=hn({},Yo,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),i_=qs(a_),l_=hn({},Yo,{data:0}),sN=qs(l_),o_={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},c_={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},u_={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function d_(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=u_[e])?!!n[e]:!1}function nw(){return d_}var h_=hn({},od,{key:function(e){if(e.key){var n=o_[e.key]||e.key;if(n!=="Unidentified")return n}return e.type==="keypress"?(e=Lh(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?c_[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:nw,charCode:function(e){return e.type==="keypress"?Lh(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Lh(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),f_=qs(h_),m_=hn({},Sm,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),rN=qs(m_),p_=hn({},od,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:nw}),g_=qs(p_),x_=hn({},Yo,{propertyName:0,elapsedTime:0,pseudoElement:0}),v_=qs(x_),j_=hn({},Sm,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),y_=qs(j_),w_=[9,13,27,32],sw=Ra&&"CompositionEvent"in window,Gc=null;Ra&&"documentMode"in document&&(Gc=document.documentMode);var b_=Ra&&"TextEvent"in window&&!Gc,t$=Ra&&(!sw||Gc&&8<Gc&&11>=Gc),aN=" ",iN=!1;function n$(e,n){switch(e){case"keyup":return w_.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function s$(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Jl=!1;function k_(e,n){switch(e){case"compositionend":return s$(n);case"keypress":return n.which!==32?null:(iN=!0,aN);case"textInput":return e=n.data,e===aN&&iN?null:e;default:return null}}function N_(e,n){if(Jl)return e==="compositionend"||!sw&&n$(e,n)?(e=e$(),Dh=ew=Za=null,Jl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return t$&&n.locale!=="ko"?null:n.data;default:return null}}var S_={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function lN(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!S_[e.type]:n==="textarea"}function r$(e,n,s,r){OA(r),n=vf(n,"onChange"),0<n.length&&(s=new tw("onChange","change",null,s,r),e.push({event:s,listeners:n}))}var qc=null,gu=null;function C_(e){p$(e,0)}function Cm(e){var n=eo(e);if(AA(n))return e}function E_(e,n){if(e==="change")return n}var a$=!1;if(Ra){var sg;if(Ra){var rg="oninput"in document;if(!rg){var oN=document.createElement("div");oN.setAttribute("oninput","return;"),rg=typeof oN.oninput=="function"}sg=rg}else sg=!1;a$=sg&&(!document.documentMode||9<document.documentMode)}function cN(){qc&&(qc.detachEvent("onpropertychange",i$),gu=qc=null)}function i$(e){if(e.propertyName==="value"&&Cm(gu)){var n=[];r$(n,gu,e,Yy(e)),_A(C_,n)}}function A_(e,n,s){e==="focusin"?(cN(),qc=n,gu=s,qc.attachEvent("onpropertychange",i$)):e==="focusout"&&cN()}function $_(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Cm(gu)}function T_(e,n){if(e==="click")return Cm(n)}function R_(e,n){if(e==="input"||e==="change")return Cm(n)}function I_(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var Pr=typeof Object.is=="function"?Object.is:I_;function xu(e,n){if(Pr(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;var s=Object.keys(e),r=Object.keys(n);if(s.length!==r.length)return!1;for(r=0;r<s.length;r++){var a=s[r];if(!Lx.call(n,a)||!Pr(e[a],n[a]))return!1}return!0}function uN(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function dN(e,n){var s=uN(e);e=0;for(var r;s;){if(s.nodeType===3){if(r=e+s.textContent.length,e<=n&&r>=n)return{node:s,offset:n-e};e=r}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=uN(s)}}function l$(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?l$(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function o$(){for(var e=window,n=df();n instanceof e.HTMLIFrameElement;){try{var s=typeof n.contentWindow.location.href=="string"}catch{s=!1}if(s)e=n.contentWindow;else break;n=df(e.document)}return n}function rw(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function P_(e){var n=o$(),s=e.focusedElem,r=e.selectionRange;if(n!==s&&s&&s.ownerDocument&&l$(s.ownerDocument.documentElement,s)){if(r!==null&&rw(s)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in s)s.selectionStart=n,s.selectionEnd=Math.min(e,s.value.length);else if(e=(n=s.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var a=s.textContent.length,i=Math.min(r.start,a);r=r.end===void 0?i:Math.min(r.end,a),!e.extend&&i>r&&(a=r,r=i,i=a),a=dN(s,i);var l=dN(s,r);a&&l&&(e.rangeCount!==1||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(n=n.createRange(),n.setStart(a.node,a.offset),e.removeAllRanges(),i>r?(e.addRange(n),e.extend(l.node,l.offset)):(n.setEnd(l.node,l.offset),e.addRange(n)))}}for(n=[],e=s;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s<n.length;s++)e=n[s],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var M_=Ra&&"documentMode"in document&&11>=document.documentMode,Xl=null,nv=null,Yc=null,sv=!1;function hN(e,n,s){var r=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;sv||Xl==null||Xl!==df(r)||(r=Xl,"selectionStart"in r&&rw(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Yc&&xu(Yc,r)||(Yc=r,r=vf(nv,"onSelect"),0<r.length&&(n=new tw("onSelect","select",null,n,s),e.push({event:n,listeners:r}),n.target=Xl)))}function qd(e,n){var s={};return s[e.toLowerCase()]=n.toLowerCase(),s["Webkit"+e]="webkit"+n,s["Moz"+e]="moz"+n,s}var Zl={animationend:qd("Animation","AnimationEnd"),animationiteration:qd("Animation","AnimationIteration"),animationstart:qd("Animation","AnimationStart"),transitionend:qd("Transition","TransitionEnd")},ag={},c$={};Ra&&(c$=document.createElement("div").style,"AnimationEvent"in window||(delete Zl.animationend.animation,delete Zl.animationiteration.animation,delete Zl.animationstart.animation),"TransitionEvent"in window||delete Zl.transitionend.transition);function Em(e){if(ag[e])return ag[e];if(!Zl[e])return e;var n=Zl[e],s;for(s in n)if(n.hasOwnProperty(s)&&s in c$)return ag[e]=n[s];return e}var u$=Em("animationend"),d$=Em("animationiteration"),h$=Em("animationstart"),f$=Em("transitionend"),m$=new Map,fN="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Ni(e,n){m$.set(e,n),bl(n,[e])}for(var ig=0;ig<fN.length;ig++){var lg=fN[ig],O_=lg.toLowerCase(),D_=lg[0].toUpperCase()+lg.slice(1);Ni(O_,"on"+D_)}Ni(u$,"onAnimationEnd");Ni(d$,"onAnimationIteration");Ni(h$,"onAnimationStart");Ni("dblclick","onDoubleClick");Ni("focusin","onFocus");Ni("focusout","onBlur");Ni(f$,"onTransitionEnd");Co("onMouseEnter",["mouseout","mouseover"]);Co("onMouseLeave",["mouseout","mouseover"]);Co("onPointerEnter",["pointerout","pointerover"]);Co("onPointerLeave",["pointerout","pointerover"]);bl("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));bl("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));bl("onBeforeInput",["compositionend","keypress","textInput","paste"]);bl("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));bl("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));bl("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _c="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),L_=new Set("cancel close invalid load scroll toggle".split(" ").concat(_c));function mN(e,n,s){var r=e.type||"unknown-event";e.currentTarget=s,OF(r,n,void 0,e),e.currentTarget=null}function p$(e,n){n=(n&4)!==0;for(var s=0;s<e.length;s++){var r=e[s],a=r.event;r=r.listeners;e:{var i=void 0;if(n)for(var l=r.length-1;0<=l;l--){var o=r[l],c=o.instance,u=o.currentTarget;if(o=o.listener,c!==i&&a.isPropagationStopped())break e;mN(a,o,u),i=c}else for(l=0;l<r.length;l++){if(o=r[l],c=o.instance,u=o.currentTarget,o=o.listener,c!==i&&a.isPropagationStopped())break e;mN(a,o,u),i=c}}}if(ff)throw e=Xx,ff=!1,Xx=null,e}function Xt(e,n){var s=n[ov];s===void 0&&(s=n[ov]=new Set);var r=e+"__bubble";s.has(r)||(g$(n,e,2,!1),s.add(r))}function og(e,n,s){var r=0;n&&(r|=4),g$(s,e,r,n)}var Yd="_reactListening"+Math.random().toString(36).slice(2);function vu(e){if(!e[Yd]){e[Yd]=!0,kA.forEach(function(s){s!=="selectionchange"&&(L_.has(s)||og(s,!1,e),og(s,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[Yd]||(n[Yd]=!0,og("selectionchange",!1,n))}}function g$(e,n,s,r){switch(ZA(n)){case 1:var a=JF;break;case 4:a=XF;break;default:a=Zy}s=a.bind(null,n,s,e),a=void 0,!Jx||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(a=!0),r?a!==void 0?e.addEventListener(n,s,{capture:!0,passive:a}):e.addEventListener(n,s,!0):a!==void 0?e.addEventListener(n,s,{passive:a}):e.addEventListener(n,s,!1)}function cg(e,n,s,r,a){var i=r;if(!(n&1)&&!(n&2)&&r!==null)e:for(;;){if(r===null)return;var l=r.tag;if(l===3||l===4){var o=r.stateNode.containerInfo;if(o===a||o.nodeType===8&&o.parentNode===a)break;if(l===4)for(l=r.return;l!==null;){var c=l.tag;if((c===3||c===4)&&(c=l.stateNode.containerInfo,c===a||c.nodeType===8&&c.parentNode===a))return;l=l.return}for(;o!==null;){if(l=Yi(o),l===null)return;if(c=l.tag,c===5||c===6){r=i=l;continue e}o=o.parentNode}}r=r.return}_A(function(){var u=i,h=Yy(s),f=[];e:{var m=m$.get(e);if(m!==void 0){var p=tw,x=e;switch(e){case"keypress":if(Lh(s)===0)break e;case"keydown":case"keyup":p=f_;break;case"focusin":x="focus",p=ng;break;case"focusout":x="blur",p=ng;break;case"beforeblur":case"afterblur":p=ng;break;case"click":if(s.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":p=nN;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":p=t_;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":p=g_;break;case u$:case d$:case h$:p=r_;break;case f$:p=v_;break;case"scroll":p=ZF;break;case"wheel":p=y_;break;case"copy":case"cut":case"paste":p=i_;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":p=rN}var g=(n&4)!==0,b=!g&&e==="scroll",j=g?m!==null?m+"Capture":null:m;g=[];for(var v=u,y;v!==null;){y=v;var k=y.stateNode;if(y.tag===5&&k!==null&&(y=k,j!==null&&(k=hu(v,j),k!=null&&g.push(ju(v,k,y)))),b)break;v=v.return}0<g.length&&(m=new p(m,x,null,s,h),f.push({event:m,listeners:g}))}}if(!(n&7)){e:{if(m=e==="mouseover"||e==="pointerover",p=e==="mouseout"||e==="pointerout",m&&s!==Yx&&(x=s.relatedTarget||s.fromElement)&&(Yi(x)||x[Ia]))break e;if((p||m)&&(m=h.window===h?h:(m=h.ownerDocument)?m.defaultView||m.parentWindow:window,p?(x=s.relatedTarget||s.toElement,p=u,x=x?Yi(x):null,x!==null&&(b=kl(x),x!==b||x.tag!==5&&x.tag!==6)&&(x=null)):(p=null,x=u),p!==x)){if(g=nN,k="onMouseLeave",j="onMouseEnter",v="mouse",(e==="pointerout"||e==="pointerover")&&(g=rN,k="onPointerLeave",j="onPointerEnter",v="pointer"),b=p==null?m:eo(p),y=x==null?m:eo(x),m=new g(k,v+"leave",p,s,h),m.target=b,m.relatedTarget=y,k=null,Yi(h)===u&&(g=new g(j,v+"enter",x,s,h),g.target=y,g.relatedTarget=b,k=g),b=k,p&&x)t:{for(g=p,j=x,v=0,y=g;y;y=Ll(y))v++;for(y=0,k=j;k;k=Ll(k))y++;for(;0<v-y;)g=Ll(g),v--;for(;0<y-v;)j=Ll(j),y--;for(;v--;){if(g===j||j!==null&&g===j.alternate)break t;g=Ll(g),j=Ll(j)}g=null}else g=null;p!==null&&pN(f,m,p,g,!1),x!==null&&b!==null&&pN(f,b,x,g,!0)}}e:{if(m=u?eo(u):window,p=m.nodeName&&m.nodeName.toLowerCase(),p==="select"||p==="input"&&m.type==="file")var N=E_;else if(lN(m))if(a$)N=R_;else{N=$_;var w=A_}else(p=m.nodeName)&&p.toLowerCase()==="input"&&(m.type==="checkbox"||m.type==="radio")&&(N=T_);if(N&&(N=N(e,u))){r$(f,N,s,h);break e}w&&w(e,m,u),e==="focusout"&&(w=m._wrapperState)&&w.controlled&&m.type==="number"&&Hx(m,"number",m.value)}switch(w=u?eo(u):window,e){case"focusin":(lN(w)||w.contentEditable==="true")&&(Xl=w,nv=u,Yc=null);break;case"focusout":Yc=nv=Xl=null;break;case"mousedown":sv=!0;break;case"contextmenu":case"mouseup":case"dragend":sv=!1,hN(f,s,h);break;case"selectionchange":if(M_)break;case"keydown":case"keyup":hN(f,s,h)}var S;if(sw)e:{switch(e){case"compositionstart":var C="onCompositionStart";break e;case"compositionend":C="onCompositionEnd";break e;case"compositionupdate":C="onCompositionUpdate";break e}C=void 0}else Jl?n$(e,s)&&(C="onCompositionEnd"):e==="keydown"&&s.keyCode===229&&(C="onCompositionStart");C&&(t$&&s.locale!=="ko"&&(Jl||C!=="onCompositionStart"?C==="onCompositionEnd"&&Jl&&(S=e$()):(Za=h,ew="value"in Za?Za.value:Za.textContent,Jl=!0)),w=vf(u,C),0<w.length&&(C=new sN(C,e,null,s,h),f.push({event:C,listeners:w}),S?C.data=S:(S=s$(s),S!==null&&(C.data=S)))),(S=b_?k_(e,s):N_(e,s))&&(u=vf(u,"onBeforeInput"),0<u.length&&(h=new sN("onBeforeInput","beforeinput",null,s,h),f.push({event:h,listeners:u}),h.data=S))}p$(f,n)})}function ju(e,n,s){return{instance:e,listener:n,currentTarget:s}}function vf(e,n){for(var s=n+"Capture",r=[];e!==null;){var a=e,i=a.stateNode;a.tag===5&&i!==null&&(a=i,i=hu(e,s),i!=null&&r.unshift(ju(e,i,a)),i=hu(e,n),i!=null&&r.push(ju(e,i,a))),e=e.return}return r}function Ll(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function pN(e,n,s,r,a){for(var i=n._reactName,l=[];s!==null&&s!==r;){var o=s,c=o.alternate,u=o.stateNode;if(c!==null&&c===r)break;o.tag===5&&u!==null&&(o=u,a?(c=hu(s,i),c!=null&&l.unshift(ju(s,c,o))):a||(c=hu(s,i),c!=null&&l.push(ju(s,c,o)))),s=s.return}l.length!==0&&e.push({event:n,listeners:l})}var F_=/\r\n?/g,__=/\u0000|\uFFFD/g;function gN(e){return(typeof e=="string"?e:""+e).replace(F_,`
|
|
38
|
+
`).replace(__,"")}function Qd(e,n,s){if(n=gN(n),gN(e)!==n&&s)throw Error($e(425))}function jf(){}var rv=null,av=null;function iv(e,n){return e==="textarea"||e==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var lv=typeof setTimeout=="function"?setTimeout:void 0,z_=typeof clearTimeout=="function"?clearTimeout:void 0,xN=typeof Promise=="function"?Promise:void 0,U_=typeof queueMicrotask=="function"?queueMicrotask:typeof xN<"u"?function(e){return xN.resolve(null).then(e).catch(B_)}:lv;function B_(e){setTimeout(function(){throw e})}function ug(e,n){var s=n,r=0;do{var a=s.nextSibling;if(e.removeChild(s),a&&a.nodeType===8)if(s=a.data,s==="/$"){if(r===0){e.removeChild(a),pu(n);return}r--}else s!=="$"&&s!=="$?"&&s!=="$!"||r++;s=a}while(s);pu(n)}function ii(e){for(;e!=null;e=e.nextSibling){var n=e.nodeType;if(n===1||n===3)break;if(n===8){if(n=e.data,n==="$"||n==="$!"||n==="$?")break;if(n==="/$")return null}}return e}function vN(e){e=e.previousSibling;for(var n=0;e;){if(e.nodeType===8){var s=e.data;if(s==="$"||s==="$!"||s==="$?"){if(n===0)return e;n--}else s==="/$"&&n++}e=e.previousSibling}return null}var Qo=Math.random().toString(36).slice(2),Jr="__reactFiber$"+Qo,yu="__reactProps$"+Qo,Ia="__reactContainer$"+Qo,ov="__reactEvents$"+Qo,W_="__reactListeners$"+Qo,H_="__reactHandles$"+Qo;function Yi(e){var n=e[Jr];if(n)return n;for(var s=e.parentNode;s;){if(n=s[Ia]||s[Jr]){if(s=n.alternate,n.child!==null||s!==null&&s.child!==null)for(e=vN(e);e!==null;){if(s=e[Jr])return s;e=vN(e)}return n}e=s,s=e.parentNode}return null}function cd(e){return e=e[Jr]||e[Ia],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function eo(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error($e(33))}function Am(e){return e[yu]||null}var cv=[],to=-1;function Si(e){return{current:e}}function Zt(e){0>to||(e.current=cv[to],cv[to]=null,to--)}function Qt(e,n){to++,cv[to]=e.current,e.current=n}var pi={},ns=Si(pi),Ns=Si(!1),ol=pi;function Eo(e,n){var s=e.type.contextTypes;if(!s)return pi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var a={},i;for(i in s)a[i]=n[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=a),a}function Ss(e){return e=e.childContextTypes,e!=null}function yf(){Zt(Ns),Zt(ns)}function jN(e,n,s){if(ns.current!==pi)throw Error($e(168));Qt(ns,n),Qt(Ns,s)}function x$(e,n,s){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!="function")return s;r=r.getChildContext();for(var a in r)if(!(a in n))throw Error($e(108,AF(e)||"Unknown",a));return hn({},s,r)}function wf(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||pi,ol=ns.current,Qt(ns,e),Qt(Ns,Ns.current),!0}function yN(e,n,s){var r=e.stateNode;if(!r)throw Error($e(169));s?(e=x$(e,n,ol),r.__reactInternalMemoizedMergedChildContext=e,Zt(Ns),Zt(ns),Qt(ns,e)):Zt(Ns),Qt(Ns,s)}var ya=null,$m=!1,dg=!1;function v$(e){ya===null?ya=[e]:ya.push(e)}function K_(e){$m=!0,v$(e)}function Ci(){if(!dg&&ya!==null){dg=!0;var e=0,n=Ft;try{var s=ya;for(Ft=1;e<s.length;e++){var r=s[e];do r=r(!0);while(r!==null)}ya=null,$m=!1}catch(a){throw ya!==null&&(ya=ya.slice(e+1)),WA(Qy,Ci),a}finally{Ft=n,dg=!1}}return null}var no=[],so=0,bf=null,kf=0,ir=[],lr=0,cl=null,Na=1,Sa="";function Ki(e,n){no[so++]=kf,no[so++]=bf,bf=e,kf=n}function j$(e,n,s){ir[lr++]=Na,ir[lr++]=Sa,ir[lr++]=cl,cl=e;var r=Na;e=Sa;var a=32-$r(r)-1;r&=~(1<<a),s+=1;var i=32-$r(n)+a;if(30<i){var l=a-a%5;i=(r&(1<<l)-1).toString(32),r>>=l,a-=l,Na=1<<32-$r(n)+a|s<<a|r,Sa=i+e}else Na=1<<i|s<<a|r,Sa=e}function aw(e){e.return!==null&&(Ki(e,1),j$(e,1,0))}function iw(e){for(;e===bf;)bf=no[--so],no[so]=null,kf=no[--so],no[so]=null;for(;e===cl;)cl=ir[--lr],ir[lr]=null,Sa=ir[--lr],ir[lr]=null,Na=ir[--lr],ir[lr]=null}var _s=null,Ls=null,sn=!1,Sr=null;function y$(e,n){var s=ur(5,null,null,0);s.elementType="DELETED",s.stateNode=n,s.return=e,n=e.deletions,n===null?(e.deletions=[s],e.flags|=16):n.push(s)}function wN(e,n){switch(e.tag){case 5:var s=e.type;return n=n.nodeType!==1||s.toLowerCase()!==n.nodeName.toLowerCase()?null:n,n!==null?(e.stateNode=n,_s=e,Ls=ii(n.firstChild),!0):!1;case 6:return n=e.pendingProps===""||n.nodeType!==3?null:n,n!==null?(e.stateNode=n,_s=e,Ls=null,!0):!1;case 13:return n=n.nodeType!==8?null:n,n!==null?(s=cl!==null?{id:Na,overflow:Sa}:null,e.memoizedState={dehydrated:n,treeContext:s,retryLane:1073741824},s=ur(18,null,null,0),s.stateNode=n,s.return=e,e.child=s,_s=e,Ls=null,!0):!1;default:return!1}}function uv(e){return(e.mode&1)!==0&&(e.flags&128)===0}function dv(e){if(sn){var n=Ls;if(n){var s=n;if(!wN(e,n)){if(uv(e))throw Error($e(418));n=ii(s.nextSibling);var r=_s;n&&wN(e,n)?y$(r,s):(e.flags=e.flags&-4097|2,sn=!1,_s=e)}}else{if(uv(e))throw Error($e(418));e.flags=e.flags&-4097|2,sn=!1,_s=e}}}function bN(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;_s=e}function Jd(e){if(e!==_s)return!1;if(!sn)return bN(e),sn=!0,!1;var n;if((n=e.tag!==3)&&!(n=e.tag!==5)&&(n=e.type,n=n!=="head"&&n!=="body"&&!iv(e.type,e.memoizedProps)),n&&(n=Ls)){if(uv(e))throw w$(),Error($e(418));for(;n;)y$(e,n),n=ii(n.nextSibling)}if(bN(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error($e(317));e:{for(e=e.nextSibling,n=0;e;){if(e.nodeType===8){var s=e.data;if(s==="/$"){if(n===0){Ls=ii(e.nextSibling);break e}n--}else s!=="$"&&s!=="$!"&&s!=="$?"||n++}e=e.nextSibling}Ls=null}}else Ls=_s?ii(e.stateNode.nextSibling):null;return!0}function w$(){for(var e=Ls;e;)e=ii(e.nextSibling)}function Ao(){Ls=_s=null,sn=!1}function lw(e){Sr===null?Sr=[e]:Sr.push(e)}var V_=_a.ReactCurrentBatchConfig;function Nc(e,n,s){if(e=s.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(s._owner){if(s=s._owner,s){if(s.tag!==1)throw Error($e(309));var r=s.stateNode}if(!r)throw Error($e(147,e));var a=r,i=""+e;return n!==null&&n.ref!==null&&typeof n.ref=="function"&&n.ref._stringRef===i?n.ref:(n=function(l){var o=a.refs;l===null?delete o[i]:o[i]=l},n._stringRef=i,n)}if(typeof e!="string")throw Error($e(284));if(!s._owner)throw Error($e(290,e))}return e}function Xd(e,n){throw e=Object.prototype.toString.call(n),Error($e(31,e==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":e))}function kN(e){var n=e._init;return n(e._payload)}function b$(e){function n(j,v){if(e){var y=j.deletions;y===null?(j.deletions=[v],j.flags|=16):y.push(v)}}function s(j,v){if(!e)return null;for(;v!==null;)n(j,v),v=v.sibling;return null}function r(j,v){for(j=new Map;v!==null;)v.key!==null?j.set(v.key,v):j.set(v.index,v),v=v.sibling;return j}function a(j,v){return j=ui(j,v),j.index=0,j.sibling=null,j}function i(j,v,y){return j.index=y,e?(y=j.alternate,y!==null?(y=y.index,y<v?(j.flags|=2,v):y):(j.flags|=2,v)):(j.flags|=1048576,v)}function l(j){return e&&j.alternate===null&&(j.flags|=2),j}function o(j,v,y,k){return v===null||v.tag!==6?(v=vg(y,j.mode,k),v.return=j,v):(v=a(v,y),v.return=j,v)}function c(j,v,y,k){var N=y.type;return N===Ql?h(j,v,y.props.children,k,y.key):v!==null&&(v.elementType===N||typeof N=="object"&&N!==null&&N.$$typeof===qa&&kN(N)===v.type)?(k=a(v,y.props),k.ref=Nc(j,v,y),k.return=j,k):(k=Hh(y.type,y.key,y.props,null,j.mode,k),k.ref=Nc(j,v,y),k.return=j,k)}function u(j,v,y,k){return v===null||v.tag!==4||v.stateNode.containerInfo!==y.containerInfo||v.stateNode.implementation!==y.implementation?(v=jg(y,j.mode,k),v.return=j,v):(v=a(v,y.children||[]),v.return=j,v)}function h(j,v,y,k,N){return v===null||v.tag!==7?(v=rl(y,j.mode,k,N),v.return=j,v):(v=a(v,y),v.return=j,v)}function f(j,v,y){if(typeof v=="string"&&v!==""||typeof v=="number")return v=vg(""+v,j.mode,y),v.return=j,v;if(typeof v=="object"&&v!==null){switch(v.$$typeof){case Ud:return y=Hh(v.type,v.key,v.props,null,j.mode,y),y.ref=Nc(j,null,v),y.return=j,y;case Yl:return v=jg(v,j.mode,y),v.return=j,v;case qa:var k=v._init;return f(j,k(v._payload),y)}if(Lc(v)||jc(v))return v=rl(v,j.mode,y,null),v.return=j,v;Xd(j,v)}return null}function m(j,v,y,k){var N=v!==null?v.key:null;if(typeof y=="string"&&y!==""||typeof y=="number")return N!==null?null:o(j,v,""+y,k);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case Ud:return y.key===N?c(j,v,y,k):null;case Yl:return y.key===N?u(j,v,y,k):null;case qa:return N=y._init,m(j,v,N(y._payload),k)}if(Lc(y)||jc(y))return N!==null?null:h(j,v,y,k,null);Xd(j,y)}return null}function p(j,v,y,k,N){if(typeof k=="string"&&k!==""||typeof k=="number")return j=j.get(y)||null,o(v,j,""+k,N);if(typeof k=="object"&&k!==null){switch(k.$$typeof){case Ud:return j=j.get(k.key===null?y:k.key)||null,c(v,j,k,N);case Yl:return j=j.get(k.key===null?y:k.key)||null,u(v,j,k,N);case qa:var w=k._init;return p(j,v,y,w(k._payload),N)}if(Lc(k)||jc(k))return j=j.get(y)||null,h(v,j,k,N,null);Xd(v,k)}return null}function x(j,v,y,k){for(var N=null,w=null,S=v,C=v=0,E=null;S!==null&&C<y.length;C++){S.index>C?(E=S,S=null):E=S.sibling;var $=m(j,S,y[C],k);if($===null){S===null&&(S=E);break}e&&S&&$.alternate===null&&n(j,S),v=i($,v,C),w===null?N=$:w.sibling=$,w=$,S=E}if(C===y.length)return s(j,S),sn&&Ki(j,C),N;if(S===null){for(;C<y.length;C++)S=f(j,y[C],k),S!==null&&(v=i(S,v,C),w===null?N=S:w.sibling=S,w=S);return sn&&Ki(j,C),N}for(S=r(j,S);C<y.length;C++)E=p(S,j,C,y[C],k),E!==null&&(e&&E.alternate!==null&&S.delete(E.key===null?C:E.key),v=i(E,v,C),w===null?N=E:w.sibling=E,w=E);return e&&S.forEach(function(R){return n(j,R)}),sn&&Ki(j,C),N}function g(j,v,y,k){var N=jc(y);if(typeof N!="function")throw Error($e(150));if(y=N.call(y),y==null)throw Error($e(151));for(var w=N=null,S=v,C=v=0,E=null,$=y.next();S!==null&&!$.done;C++,$=y.next()){S.index>C?(E=S,S=null):E=S.sibling;var R=m(j,S,$.value,k);if(R===null){S===null&&(S=E);break}e&&S&&R.alternate===null&&n(j,S),v=i(R,v,C),w===null?N=R:w.sibling=R,w=R,S=E}if($.done)return s(j,S),sn&&Ki(j,C),N;if(S===null){for(;!$.done;C++,$=y.next())$=f(j,$.value,k),$!==null&&(v=i($,v,C),w===null?N=$:w.sibling=$,w=$);return sn&&Ki(j,C),N}for(S=r(j,S);!$.done;C++,$=y.next())$=p(S,j,C,$.value,k),$!==null&&(e&&$.alternate!==null&&S.delete($.key===null?C:$.key),v=i($,v,C),w===null?N=$:w.sibling=$,w=$);return e&&S.forEach(function(P){return n(j,P)}),sn&&Ki(j,C),N}function b(j,v,y,k){if(typeof y=="object"&&y!==null&&y.type===Ql&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case Ud:e:{for(var N=y.key,w=v;w!==null;){if(w.key===N){if(N=y.type,N===Ql){if(w.tag===7){s(j,w.sibling),v=a(w,y.props.children),v.return=j,j=v;break e}}else if(w.elementType===N||typeof N=="object"&&N!==null&&N.$$typeof===qa&&kN(N)===w.type){s(j,w.sibling),v=a(w,y.props),v.ref=Nc(j,w,y),v.return=j,j=v;break e}s(j,w);break}else n(j,w);w=w.sibling}y.type===Ql?(v=rl(y.props.children,j.mode,k,y.key),v.return=j,j=v):(k=Hh(y.type,y.key,y.props,null,j.mode,k),k.ref=Nc(j,v,y),k.return=j,j=k)}return l(j);case Yl:e:{for(w=y.key;v!==null;){if(v.key===w)if(v.tag===4&&v.stateNode.containerInfo===y.containerInfo&&v.stateNode.implementation===y.implementation){s(j,v.sibling),v=a(v,y.children||[]),v.return=j,j=v;break e}else{s(j,v);break}else n(j,v);v=v.sibling}v=jg(y,j.mode,k),v.return=j,j=v}return l(j);case qa:return w=y._init,b(j,v,w(y._payload),k)}if(Lc(y))return x(j,v,y,k);if(jc(y))return g(j,v,y,k);Xd(j,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,v!==null&&v.tag===6?(s(j,v.sibling),v=a(v,y),v.return=j,j=v):(s(j,v),v=vg(y,j.mode,k),v.return=j,j=v),l(j)):s(j,v)}return b}var $o=b$(!0),k$=b$(!1),Nf=Si(null),Sf=null,ro=null,ow=null;function cw(){ow=ro=Sf=null}function uw(e){var n=Nf.current;Zt(Nf),e._currentValue=n}function hv(e,n,s){for(;e!==null;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,r!==null&&(r.childLanes|=n)):r!==null&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===s)break;e=e.return}}function xo(e,n){Sf=e,ow=ro=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&n&&(bs=!0),e.firstContext=null)}function fr(e){var n=e._currentValue;if(ow!==e)if(e={context:e,memoizedValue:n,next:null},ro===null){if(Sf===null)throw Error($e(308));ro=e,Sf.dependencies={lanes:0,firstContext:e}}else ro=ro.next=e;return n}var Qi=null;function dw(e){Qi===null?Qi=[e]:Qi.push(e)}function N$(e,n,s,r){var a=n.interleaved;return a===null?(s.next=s,dw(n)):(s.next=a.next,a.next=s),n.interleaved=s,Pa(e,r)}function Pa(e,n){e.lanes|=n;var s=e.alternate;for(s!==null&&(s.lanes|=n),s=e,e=e.return;e!==null;)e.childLanes|=n,s=e.alternate,s!==null&&(s.childLanes|=n),s=e,e=e.return;return s.tag===3?s.stateNode:null}var Ya=!1;function hw(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function S$(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ca(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function li(e,n,s){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Tt&2){var a=r.pending;return a===null?n.next=n:(n.next=a.next,a.next=n),r.pending=n,Pa(e,s)}return a=r.interleaved,a===null?(n.next=n,dw(r)):(n.next=a.next,a.next=n),r.interleaved=n,Pa(e,s)}function Fh(e,n,s){if(n=n.updateQueue,n!==null&&(n=n.shared,(s&4194240)!==0)){var r=n.lanes;r&=e.pendingLanes,s|=r,n.lanes=s,Jy(e,s)}}function NN(e,n){var s=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,s===r)){var a=null,i=null;if(s=s.firstBaseUpdate,s!==null){do{var l={eventTime:s.eventTime,lane:s.lane,tag:s.tag,payload:s.payload,callback:s.callback,next:null};i===null?a=i=l:i=i.next=l,s=s.next}while(s!==null);i===null?a=i=n:i=i.next=n}else a=i=n;s={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=s;return}e=s.lastBaseUpdate,e===null?s.firstBaseUpdate=n:e.next=n,s.lastBaseUpdate=n}function Cf(e,n,s,r){var a=e.updateQueue;Ya=!1;var i=a.firstBaseUpdate,l=a.lastBaseUpdate,o=a.shared.pending;if(o!==null){a.shared.pending=null;var c=o,u=c.next;c.next=null,l===null?i=u:l.next=u,l=c;var h=e.alternate;h!==null&&(h=h.updateQueue,o=h.lastBaseUpdate,o!==l&&(o===null?h.firstBaseUpdate=u:o.next=u,h.lastBaseUpdate=c))}if(i!==null){var f=a.baseState;l=0,h=u=c=null,o=i;do{var m=o.lane,p=o.eventTime;if((r&m)===m){h!==null&&(h=h.next={eventTime:p,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var x=e,g=o;switch(m=n,p=s,g.tag){case 1:if(x=g.payload,typeof x=="function"){f=x.call(p,f,m);break e}f=x;break e;case 3:x.flags=x.flags&-65537|128;case 0:if(x=g.payload,m=typeof x=="function"?x.call(p,f,m):x,m==null)break e;f=hn({},f,m);break e;case 2:Ya=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,m=a.effects,m===null?a.effects=[o]:m.push(o))}else p={eventTime:p,lane:m,tag:o.tag,payload:o.payload,callback:o.callback,next:null},h===null?(u=h=p,c=f):h=h.next=p,l|=m;if(o=o.next,o===null){if(o=a.shared.pending,o===null)break;m=o,o=m.next,m.next=null,a.lastBaseUpdate=m,a.shared.pending=null}}while(!0);if(h===null&&(c=f),a.baseState=c,a.firstBaseUpdate=u,a.lastBaseUpdate=h,n=a.shared.interleaved,n!==null){a=n;do l|=a.lane,a=a.next;while(a!==n)}else i===null&&(a.shared.lanes=0);dl|=l,e.lanes=l,e.memoizedState=f}}function SN(e,n,s){if(e=n.effects,n.effects=null,e!==null)for(n=0;n<e.length;n++){var r=e[n],a=r.callback;if(a!==null){if(r.callback=null,r=s,typeof a!="function")throw Error($e(191,a));a.call(r)}}}var ud={},ra=Si(ud),wu=Si(ud),bu=Si(ud);function Ji(e){if(e===ud)throw Error($e(174));return e}function fw(e,n){switch(Qt(bu,n),Qt(wu,e),Qt(ra,ud),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:Vx(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=Vx(n,e)}Zt(ra),Qt(ra,n)}function To(){Zt(ra),Zt(wu),Zt(bu)}function C$(e){Ji(bu.current);var n=Ji(ra.current),s=Vx(n,e.type);n!==s&&(Qt(wu,e),Qt(ra,s))}function mw(e){wu.current===e&&(Zt(ra),Zt(wu))}var ln=Si(0);function Ef(e){for(var n=e;n!==null;){if(n.tag===13){var s=n.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var hg=[];function pw(){for(var e=0;e<hg.length;e++)hg[e]._workInProgressVersionPrimary=null;hg.length=0}var _h=_a.ReactCurrentDispatcher,fg=_a.ReactCurrentBatchConfig,ul=0,on=null,Tn=null,Ln=null,Af=!1,Qc=!1,ku=0,G_=0;function Jn(){throw Error($e(321))}function gw(e,n){if(n===null)return!1;for(var s=0;s<n.length&&s<e.length;s++)if(!Pr(e[s],n[s]))return!1;return!0}function xw(e,n,s,r,a,i){if(ul=i,on=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,_h.current=e===null||e.memoizedState===null?J_:X_,e=s(r,a),Qc){i=0;do{if(Qc=!1,ku=0,25<=i)throw Error($e(301));i+=1,Ln=Tn=null,n.updateQueue=null,_h.current=Z_,e=s(r,a)}while(Qc)}if(_h.current=$f,n=Tn!==null&&Tn.next!==null,ul=0,Ln=Tn=on=null,Af=!1,n)throw Error($e(300));return e}function vw(){var e=ku!==0;return ku=0,e}function Yr(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ln===null?on.memoizedState=Ln=e:Ln=Ln.next=e,Ln}function mr(){if(Tn===null){var e=on.alternate;e=e!==null?e.memoizedState:null}else e=Tn.next;var n=Ln===null?on.memoizedState:Ln.next;if(n!==null)Ln=n,Tn=e;else{if(e===null)throw Error($e(310));Tn=e,e={memoizedState:Tn.memoizedState,baseState:Tn.baseState,baseQueue:Tn.baseQueue,queue:Tn.queue,next:null},Ln===null?on.memoizedState=Ln=e:Ln=Ln.next=e}return Ln}function Nu(e,n){return typeof n=="function"?n(e):n}function mg(e){var n=mr(),s=n.queue;if(s===null)throw Error($e(311));s.lastRenderedReducer=e;var r=Tn,a=r.baseQueue,i=s.pending;if(i!==null){if(a!==null){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,s.pending=null}if(a!==null){i=a.next,r=r.baseState;var o=l=null,c=null,u=i;do{var h=u.lane;if((ul&h)===h)c!==null&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var f={lane:h,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};c===null?(o=c=f,l=r):c=c.next=f,on.lanes|=h,dl|=h}u=u.next}while(u!==null&&u!==i);c===null?l=r:c.next=o,Pr(r,n.memoizedState)||(bs=!0),n.memoizedState=r,n.baseState=l,n.baseQueue=c,s.lastRenderedState=r}if(e=s.interleaved,e!==null){a=e;do i=a.lane,on.lanes|=i,dl|=i,a=a.next;while(a!==e)}else a===null&&(s.lanes=0);return[n.memoizedState,s.dispatch]}function pg(e){var n=mr(),s=n.queue;if(s===null)throw Error($e(311));s.lastRenderedReducer=e;var r=s.dispatch,a=s.pending,i=n.memoizedState;if(a!==null){s.pending=null;var l=a=a.next;do i=e(i,l.action),l=l.next;while(l!==a);Pr(i,n.memoizedState)||(bs=!0),n.memoizedState=i,n.baseQueue===null&&(n.baseState=i),s.lastRenderedState=i}return[i,r]}function E$(){}function A$(e,n){var s=on,r=mr(),a=n(),i=!Pr(r.memoizedState,a);if(i&&(r.memoizedState=a,bs=!0),r=r.queue,jw(R$.bind(null,s,r,e),[e]),r.getSnapshot!==n||i||Ln!==null&&Ln.memoizedState.tag&1){if(s.flags|=2048,Su(9,T$.bind(null,s,r,a,n),void 0,null),zn===null)throw Error($e(349));ul&30||$$(s,n,a)}return a}function $$(e,n,s){e.flags|=16384,e={getSnapshot:n,value:s},n=on.updateQueue,n===null?(n={lastEffect:null,stores:null},on.updateQueue=n,n.stores=[e]):(s=n.stores,s===null?n.stores=[e]:s.push(e))}function T$(e,n,s,r){n.value=s,n.getSnapshot=r,I$(n)&&P$(e)}function R$(e,n,s){return s(function(){I$(n)&&P$(e)})}function I$(e){var n=e.getSnapshot;e=e.value;try{var s=n();return!Pr(e,s)}catch{return!0}}function P$(e){var n=Pa(e,1);n!==null&&Tr(n,e,1,-1)}function CN(e){var n=Yr();return typeof e=="function"&&(e=e()),n.memoizedState=n.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Nu,lastRenderedState:e},n.queue=e,e=e.dispatch=Q_.bind(null,on,e),[n.memoizedState,e]}function Su(e,n,s,r){return e={tag:e,create:n,destroy:s,deps:r,next:null},n=on.updateQueue,n===null?(n={lastEffect:null,stores:null},on.updateQueue=n,n.lastEffect=e.next=e):(s=n.lastEffect,s===null?n.lastEffect=e.next=e:(r=s.next,s.next=e,e.next=r,n.lastEffect=e)),e}function M$(){return mr().memoizedState}function zh(e,n,s,r){var a=Yr();on.flags|=e,a.memoizedState=Su(1|n,s,void 0,r===void 0?null:r)}function Tm(e,n,s,r){var a=mr();r=r===void 0?null:r;var i=void 0;if(Tn!==null){var l=Tn.memoizedState;if(i=l.destroy,r!==null&&gw(r,l.deps)){a.memoizedState=Su(n,s,i,r);return}}on.flags|=e,a.memoizedState=Su(1|n,s,i,r)}function EN(e,n){return zh(8390656,8,e,n)}function jw(e,n){return Tm(2048,8,e,n)}function O$(e,n){return Tm(4,2,e,n)}function D$(e,n){return Tm(4,4,e,n)}function L$(e,n){if(typeof n=="function")return e=e(),n(e),function(){n(null)};if(n!=null)return e=e(),n.current=e,function(){n.current=null}}function F$(e,n,s){return s=s!=null?s.concat([e]):null,Tm(4,4,L$.bind(null,n,e),s)}function yw(){}function _$(e,n){var s=mr();n=n===void 0?null:n;var r=s.memoizedState;return r!==null&&n!==null&&gw(n,r[1])?r[0]:(s.memoizedState=[e,n],e)}function z$(e,n){var s=mr();n=n===void 0?null:n;var r=s.memoizedState;return r!==null&&n!==null&&gw(n,r[1])?r[0]:(e=e(),s.memoizedState=[e,n],e)}function U$(e,n,s){return ul&21?(Pr(s,n)||(s=VA(),on.lanes|=s,dl|=s,e.baseState=!0),n):(e.baseState&&(e.baseState=!1,bs=!0),e.memoizedState=s)}function q_(e,n){var s=Ft;Ft=s!==0&&4>s?s:4,e(!0);var r=fg.transition;fg.transition={};try{e(!1),n()}finally{Ft=s,fg.transition=r}}function B$(){return mr().memoizedState}function Y_(e,n,s){var r=ci(e);if(s={lane:r,action:s,hasEagerState:!1,eagerState:null,next:null},W$(e))H$(n,s);else if(s=N$(e,n,s,r),s!==null){var a=ds();Tr(s,e,r,a),K$(s,n,r)}}function Q_(e,n,s){var r=ci(e),a={lane:r,action:s,hasEagerState:!1,eagerState:null,next:null};if(W$(e))H$(n,a);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=n.lastRenderedReducer,i!==null))try{var l=n.lastRenderedState,o=i(l,s);if(a.hasEagerState=!0,a.eagerState=o,Pr(o,l)){var c=n.interleaved;c===null?(a.next=a,dw(n)):(a.next=c.next,c.next=a),n.interleaved=a;return}}catch{}finally{}s=N$(e,n,a,r),s!==null&&(a=ds(),Tr(s,e,r,a),K$(s,n,r))}}function W$(e){var n=e.alternate;return e===on||n!==null&&n===on}function H$(e,n){Qc=Af=!0;var s=e.pending;s===null?n.next=n:(n.next=s.next,s.next=n),e.pending=n}function K$(e,n,s){if(s&4194240){var r=n.lanes;r&=e.pendingLanes,s|=r,n.lanes=s,Jy(e,s)}}var $f={readContext:fr,useCallback:Jn,useContext:Jn,useEffect:Jn,useImperativeHandle:Jn,useInsertionEffect:Jn,useLayoutEffect:Jn,useMemo:Jn,useReducer:Jn,useRef:Jn,useState:Jn,useDebugValue:Jn,useDeferredValue:Jn,useTransition:Jn,useMutableSource:Jn,useSyncExternalStore:Jn,useId:Jn,unstable_isNewReconciler:!1},J_={readContext:fr,useCallback:function(e,n){return Yr().memoizedState=[e,n===void 0?null:n],e},useContext:fr,useEffect:EN,useImperativeHandle:function(e,n,s){return s=s!=null?s.concat([e]):null,zh(4194308,4,L$.bind(null,n,e),s)},useLayoutEffect:function(e,n){return zh(4194308,4,e,n)},useInsertionEffect:function(e,n){return zh(4,2,e,n)},useMemo:function(e,n){var s=Yr();return n=n===void 0?null:n,e=e(),s.memoizedState=[e,n],e},useReducer:function(e,n,s){var r=Yr();return n=s!==void 0?s(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=Y_.bind(null,on,e),[r.memoizedState,e]},useRef:function(e){var n=Yr();return e={current:e},n.memoizedState=e},useState:CN,useDebugValue:yw,useDeferredValue:function(e){return Yr().memoizedState=e},useTransition:function(){var e=CN(!1),n=e[0];return e=q_.bind(null,e[1]),Yr().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,s){var r=on,a=Yr();if(sn){if(s===void 0)throw Error($e(407));s=s()}else{if(s=n(),zn===null)throw Error($e(349));ul&30||$$(r,n,s)}a.memoizedState=s;var i={value:s,getSnapshot:n};return a.queue=i,EN(R$.bind(null,r,i,e),[e]),r.flags|=2048,Su(9,T$.bind(null,r,i,s,n),void 0,null),s},useId:function(){var e=Yr(),n=zn.identifierPrefix;if(sn){var s=Sa,r=Na;s=(r&~(1<<32-$r(r)-1)).toString(32)+s,n=":"+n+"R"+s,s=ku++,0<s&&(n+="H"+s.toString(32)),n+=":"}else s=G_++,n=":"+n+"r"+s.toString(32)+":";return e.memoizedState=n},unstable_isNewReconciler:!1},X_={readContext:fr,useCallback:_$,useContext:fr,useEffect:jw,useImperativeHandle:F$,useInsertionEffect:O$,useLayoutEffect:D$,useMemo:z$,useReducer:mg,useRef:M$,useState:function(){return mg(Nu)},useDebugValue:yw,useDeferredValue:function(e){var n=mr();return U$(n,Tn.memoizedState,e)},useTransition:function(){var e=mg(Nu)[0],n=mr().memoizedState;return[e,n]},useMutableSource:E$,useSyncExternalStore:A$,useId:B$,unstable_isNewReconciler:!1},Z_={readContext:fr,useCallback:_$,useContext:fr,useEffect:jw,useImperativeHandle:F$,useInsertionEffect:O$,useLayoutEffect:D$,useMemo:z$,useReducer:pg,useRef:M$,useState:function(){return pg(Nu)},useDebugValue:yw,useDeferredValue:function(e){var n=mr();return Tn===null?n.memoizedState=e:U$(n,Tn.memoizedState,e)},useTransition:function(){var e=pg(Nu)[0],n=mr().memoizedState;return[e,n]},useMutableSource:E$,useSyncExternalStore:A$,useId:B$,unstable_isNewReconciler:!1};function kr(e,n){if(e&&e.defaultProps){n=hn({},n),e=e.defaultProps;for(var s in e)n[s]===void 0&&(n[s]=e[s]);return n}return n}function fv(e,n,s,r){n=e.memoizedState,s=s(r,n),s=s==null?n:hn({},n,s),e.memoizedState=s,e.lanes===0&&(e.updateQueue.baseState=s)}var Rm={isMounted:function(e){return(e=e._reactInternals)?kl(e)===e:!1},enqueueSetState:function(e,n,s){e=e._reactInternals;var r=ds(),a=ci(e),i=Ca(r,a);i.payload=n,s!=null&&(i.callback=s),n=li(e,i,a),n!==null&&(Tr(n,e,a,r),Fh(n,e,a))},enqueueReplaceState:function(e,n,s){e=e._reactInternals;var r=ds(),a=ci(e),i=Ca(r,a);i.tag=1,i.payload=n,s!=null&&(i.callback=s),n=li(e,i,a),n!==null&&(Tr(n,e,a,r),Fh(n,e,a))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var s=ds(),r=ci(e),a=Ca(s,r);a.tag=2,n!=null&&(a.callback=n),n=li(e,a,r),n!==null&&(Tr(n,e,r,s),Fh(n,e,r))}};function AN(e,n,s,r,a,i,l){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,i,l):n.prototype&&n.prototype.isPureReactComponent?!xu(s,r)||!xu(a,i):!0}function V$(e,n,s){var r=!1,a=pi,i=n.contextType;return typeof i=="object"&&i!==null?i=fr(i):(a=Ss(n)?ol:ns.current,r=n.contextTypes,i=(r=r!=null)?Eo(e,a):pi),n=new n(s,i),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=Rm,e.stateNode=n,n._reactInternals=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=i),n}function $N(e,n,s,r){e=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(s,r),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(s,r),n.state!==e&&Rm.enqueueReplaceState(n,n.state,null)}function mv(e,n,s,r){var a=e.stateNode;a.props=s,a.state=e.memoizedState,a.refs={},hw(e);var i=n.contextType;typeof i=="object"&&i!==null?a.context=fr(i):(i=Ss(n)?ol:ns.current,a.context=Eo(e,i)),a.state=e.memoizedState,i=n.getDerivedStateFromProps,typeof i=="function"&&(fv(e,n,i,s),a.state=e.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof a.getSnapshotBeforeUpdate=="function"||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(n=a.state,typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount(),n!==a.state&&Rm.enqueueReplaceState(a,a.state,null),Cf(e,s,a,r),a.state=e.memoizedState),typeof a.componentDidMount=="function"&&(e.flags|=4194308)}function Ro(e,n){try{var s="",r=n;do s+=EF(r),r=r.return;while(r);var a=s}catch(i){a=`
|
|
39
|
+
Error generating stack: `+i.message+`
|
|
40
|
+
`+i.stack}return{value:e,source:n,stack:a,digest:null}}function gg(e,n,s){return{value:e,source:null,stack:s??null,digest:n??null}}function pv(e,n){try{console.error(n.value)}catch(s){setTimeout(function(){throw s})}}var e4=typeof WeakMap=="function"?WeakMap:Map;function G$(e,n,s){s=Ca(-1,s),s.tag=3,s.payload={element:null};var r=n.value;return s.callback=function(){Rf||(Rf=!0,Sv=r),pv(e,n)},s}function q$(e,n,s){s=Ca(-1,s),s.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var a=n.value;s.payload=function(){return r(a)},s.callback=function(){pv(e,n)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(s.callback=function(){pv(e,n),typeof r!="function"&&(oi===null?oi=new Set([this]):oi.add(this));var l=n.stack;this.componentDidCatch(n.value,{componentStack:l!==null?l:""})}),s}function TN(e,n,s){var r=e.pingCache;if(r===null){r=e.pingCache=new e4;var a=new Set;r.set(n,a)}else a=r.get(n),a===void 0&&(a=new Set,r.set(n,a));a.has(s)||(a.add(s),e=m4.bind(null,e,n,s),n.then(e,e))}function RN(e){do{var n;if((n=e.tag===13)&&(n=e.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return e;e=e.return}while(e!==null);return null}function IN(e,n,s,r,a){return e.mode&1?(e.flags|=65536,e.lanes=a,e):(e===n?e.flags|=65536:(e.flags|=128,s.flags|=131072,s.flags&=-52805,s.tag===1&&(s.alternate===null?s.tag=17:(n=Ca(-1,1),n.tag=2,li(s,n,1))),s.lanes|=1),e)}var t4=_a.ReactCurrentOwner,bs=!1;function os(e,n,s,r){n.child=e===null?k$(n,null,s,r):$o(n,e.child,s,r)}function PN(e,n,s,r,a){s=s.render;var i=n.ref;return xo(n,a),r=xw(e,n,s,r,i,a),s=vw(),e!==null&&!bs?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~a,Ma(e,n,a)):(sn&&s&&aw(n),n.flags|=1,os(e,n,r,a),n.child)}function MN(e,n,s,r,a){if(e===null){var i=s.type;return typeof i=="function"&&!Aw(i)&&i.defaultProps===void 0&&s.compare===null&&s.defaultProps===void 0?(n.tag=15,n.type=i,Y$(e,n,i,r,a)):(e=Hh(s.type,null,r,n,n.mode,a),e.ref=n.ref,e.return=n,n.child=e)}if(i=e.child,!(e.lanes&a)){var l=i.memoizedProps;if(s=s.compare,s=s!==null?s:xu,s(l,r)&&e.ref===n.ref)return Ma(e,n,a)}return n.flags|=1,e=ui(i,r),e.ref=n.ref,e.return=n,n.child=e}function Y$(e,n,s,r,a){if(e!==null){var i=e.memoizedProps;if(xu(i,r)&&e.ref===n.ref)if(bs=!1,n.pendingProps=r=i,(e.lanes&a)!==0)e.flags&131072&&(bs=!0);else return n.lanes=e.lanes,Ma(e,n,a)}return gv(e,n,s,r,a)}function Q$(e,n,s){var r=n.pendingProps,a=r.children,i=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(n.mode&1))n.memoizedState={baseLanes:0,cachePool:null,transitions:null},Qt(io,Ms),Ms|=s;else{if(!(s&1073741824))return e=i!==null?i.baseLanes|s:s,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,Qt(io,Ms),Ms|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:s,Qt(io,Ms),Ms|=r}else i!==null?(r=i.baseLanes|s,n.memoizedState=null):r=s,Qt(io,Ms),Ms|=r;return os(e,n,a,s),n.child}function J$(e,n){var s=n.ref;(e===null&&s!==null||e!==null&&e.ref!==s)&&(n.flags|=512,n.flags|=2097152)}function gv(e,n,s,r,a){var i=Ss(s)?ol:ns.current;return i=Eo(n,i),xo(n,a),s=xw(e,n,s,r,i,a),r=vw(),e!==null&&!bs?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~a,Ma(e,n,a)):(sn&&r&&aw(n),n.flags|=1,os(e,n,s,a),n.child)}function ON(e,n,s,r,a){if(Ss(s)){var i=!0;wf(n)}else i=!1;if(xo(n,a),n.stateNode===null)Uh(e,n),V$(n,s,r),mv(n,s,r,a),r=!0;else if(e===null){var l=n.stateNode,o=n.memoizedProps;l.props=o;var c=l.context,u=s.contextType;typeof u=="object"&&u!==null?u=fr(u):(u=Ss(s)?ol:ns.current,u=Eo(n,u));var h=s.getDerivedStateFromProps,f=typeof h=="function"||typeof l.getSnapshotBeforeUpdate=="function";f||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==r||c!==u)&&$N(n,l,r,u),Ya=!1;var m=n.memoizedState;l.state=m,Cf(n,r,l,a),c=n.memoizedState,o!==r||m!==c||Ns.current||Ya?(typeof h=="function"&&(fv(n,s,h,r),c=n.memoizedState),(o=Ya||AN(n,s,o,r,m,c,u))?(f||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(n.flags|=4194308)):(typeof l.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=c),l.props=r,l.state=c,l.context=u,r=o):(typeof l.componentDidMount=="function"&&(n.flags|=4194308),r=!1)}else{l=n.stateNode,S$(e,n),o=n.memoizedProps,u=n.type===n.elementType?o:kr(n.type,o),l.props=u,f=n.pendingProps,m=l.context,c=s.contextType,typeof c=="object"&&c!==null?c=fr(c):(c=Ss(s)?ol:ns.current,c=Eo(n,c));var p=s.getDerivedStateFromProps;(h=typeof p=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==f||m!==c)&&$N(n,l,r,c),Ya=!1,m=n.memoizedState,l.state=m,Cf(n,r,l,a);var x=n.memoizedState;o!==f||m!==x||Ns.current||Ya?(typeof p=="function"&&(fv(n,s,p,r),x=n.memoizedState),(u=Ya||AN(n,s,u,r,m,x,c)||!1)?(h||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(r,x,c),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(r,x,c)),typeof l.componentDidUpdate=="function"&&(n.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(n.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=x),l.props=r,l.state=x,l.context=c,r=u):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(n.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&m===e.memoizedState||(n.flags|=1024),r=!1)}return xv(e,n,s,r,i,a)}function xv(e,n,s,r,a,i){J$(e,n);var l=(n.flags&128)!==0;if(!r&&!l)return a&&yN(n,s,!1),Ma(e,n,i);r=n.stateNode,t4.current=n;var o=l&&typeof s.getDerivedStateFromError!="function"?null:r.render();return n.flags|=1,e!==null&&l?(n.child=$o(n,e.child,null,i),n.child=$o(n,null,o,i)):os(e,n,o,i),n.memoizedState=r.state,a&&yN(n,s,!0),n.child}function X$(e){var n=e.stateNode;n.pendingContext?jN(e,n.pendingContext,n.pendingContext!==n.context):n.context&&jN(e,n.context,!1),fw(e,n.containerInfo)}function DN(e,n,s,r,a){return Ao(),lw(a),n.flags|=256,os(e,n,s,r),n.child}var vv={dehydrated:null,treeContext:null,retryLane:0};function jv(e){return{baseLanes:e,cachePool:null,transitions:null}}function Z$(e,n,s){var r=n.pendingProps,a=ln.current,i=!1,l=(n.flags&128)!==0,o;if((o=l)||(o=e!==null&&e.memoizedState===null?!1:(a&2)!==0),o?(i=!0,n.flags&=-129):(e===null||e.memoizedState!==null)&&(a|=1),Qt(ln,a&1),e===null)return dv(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(n.mode&1?e.data==="$!"?n.lanes=8:n.lanes=1073741824:n.lanes=1,null):(l=r.children,e=r.fallback,i?(r=n.mode,i=n.child,l={mode:"hidden",children:l},!(r&1)&&i!==null?(i.childLanes=0,i.pendingProps=l):i=Mm(l,r,0,null),e=rl(e,r,s,null),i.return=n,e.return=n,i.sibling=e,n.child=i,n.child.memoizedState=jv(s),n.memoizedState=vv,e):ww(n,l));if(a=e.memoizedState,a!==null&&(o=a.dehydrated,o!==null))return n4(e,n,l,r,o,a,s);if(i){i=r.fallback,l=n.mode,a=e.child,o=a.sibling;var c={mode:"hidden",children:r.children};return!(l&1)&&n.child!==a?(r=n.child,r.childLanes=0,r.pendingProps=c,n.deletions=null):(r=ui(a,c),r.subtreeFlags=a.subtreeFlags&14680064),o!==null?i=ui(o,i):(i=rl(i,l,s,null),i.flags|=2),i.return=n,r.return=n,r.sibling=i,n.child=r,r=i,i=n.child,l=e.child.memoizedState,l=l===null?jv(s):{baseLanes:l.baseLanes|s,cachePool:null,transitions:l.transitions},i.memoizedState=l,i.childLanes=e.childLanes&~s,n.memoizedState=vv,r}return i=e.child,e=i.sibling,r=ui(i,{mode:"visible",children:r.children}),!(n.mode&1)&&(r.lanes=s),r.return=n,r.sibling=null,e!==null&&(s=n.deletions,s===null?(n.deletions=[e],n.flags|=16):s.push(e)),n.child=r,n.memoizedState=null,r}function ww(e,n){return n=Mm({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function Zd(e,n,s,r){return r!==null&&lw(r),$o(n,e.child,null,s),e=ww(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function n4(e,n,s,r,a,i,l){if(s)return n.flags&256?(n.flags&=-257,r=gg(Error($e(422))),Zd(e,n,l,r)):n.memoizedState!==null?(n.child=e.child,n.flags|=128,null):(i=r.fallback,a=n.mode,r=Mm({mode:"visible",children:r.children},a,0,null),i=rl(i,a,l,null),i.flags|=2,r.return=n,i.return=n,r.sibling=i,n.child=r,n.mode&1&&$o(n,e.child,null,l),n.child.memoizedState=jv(l),n.memoizedState=vv,i);if(!(n.mode&1))return Zd(e,n,l,null);if(a.data==="$!"){if(r=a.nextSibling&&a.nextSibling.dataset,r)var o=r.dgst;return r=o,i=Error($e(419)),r=gg(i,r,void 0),Zd(e,n,l,r)}if(o=(l&e.childLanes)!==0,bs||o){if(r=zn,r!==null){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}a=a&(r.suspendedLanes|l)?0:a,a!==0&&a!==i.retryLane&&(i.retryLane=a,Pa(e,a),Tr(r,e,a,-1))}return Ew(),r=gg(Error($e(421))),Zd(e,n,l,r)}return a.data==="$?"?(n.flags|=128,n.child=e.child,n=p4.bind(null,e),a._reactRetry=n,null):(e=i.treeContext,Ls=ii(a.nextSibling),_s=n,sn=!0,Sr=null,e!==null&&(ir[lr++]=Na,ir[lr++]=Sa,ir[lr++]=cl,Na=e.id,Sa=e.overflow,cl=n),n=ww(n,r.children),n.flags|=4096,n)}function LN(e,n,s){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n),hv(e.return,n,s)}function xg(e,n,s,r,a){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:s,tailMode:a}:(i.isBackwards=n,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=s,i.tailMode=a)}function eT(e,n,s){var r=n.pendingProps,a=r.revealOrder,i=r.tail;if(os(e,n,r.children,s),r=ln.current,r&2)r=r&1|2,n.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&LN(e,s,n);else if(e.tag===19)LN(e,s,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Qt(ln,r),!(n.mode&1))n.memoizedState=null;else switch(a){case"forwards":for(s=n.child,a=null;s!==null;)e=s.alternate,e!==null&&Ef(e)===null&&(a=s),s=s.sibling;s=a,s===null?(a=n.child,n.child=null):(a=s.sibling,s.sibling=null),xg(n,!1,a,s,i);break;case"backwards":for(s=null,a=n.child,n.child=null;a!==null;){if(e=a.alternate,e!==null&&Ef(e)===null){n.child=a;break}e=a.sibling,a.sibling=s,s=a,a=e}xg(n,!0,s,null,i);break;case"together":xg(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function Uh(e,n){!(n.mode&1)&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function Ma(e,n,s){if(e!==null&&(n.dependencies=e.dependencies),dl|=n.lanes,!(s&n.childLanes))return null;if(e!==null&&n.child!==e.child)throw Error($e(153));if(n.child!==null){for(e=n.child,s=ui(e,e.pendingProps),n.child=s,s.return=n;e.sibling!==null;)e=e.sibling,s=s.sibling=ui(e,e.pendingProps),s.return=n;s.sibling=null}return n.child}function s4(e,n,s){switch(n.tag){case 3:X$(n),Ao();break;case 5:C$(n);break;case 1:Ss(n.type)&&wf(n);break;case 4:fw(n,n.stateNode.containerInfo);break;case 10:var r=n.type._context,a=n.memoizedProps.value;Qt(Nf,r._currentValue),r._currentValue=a;break;case 13:if(r=n.memoizedState,r!==null)return r.dehydrated!==null?(Qt(ln,ln.current&1),n.flags|=128,null):s&n.child.childLanes?Z$(e,n,s):(Qt(ln,ln.current&1),e=Ma(e,n,s),e!==null?e.sibling:null);Qt(ln,ln.current&1);break;case 19:if(r=(s&n.childLanes)!==0,e.flags&128){if(r)return eT(e,n,s);n.flags|=128}if(a=n.memoizedState,a!==null&&(a.rendering=null,a.tail=null,a.lastEffect=null),Qt(ln,ln.current),r)break;return null;case 22:case 23:return n.lanes=0,Q$(e,n,s)}return Ma(e,n,s)}var tT,yv,nT,sT;tT=function(e,n){for(var s=n.child;s!==null;){if(s.tag===5||s.tag===6)e.appendChild(s.stateNode);else if(s.tag!==4&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===n)break;for(;s.sibling===null;){if(s.return===null||s.return===n)return;s=s.return}s.sibling.return=s.return,s=s.sibling}};yv=function(){};nT=function(e,n,s,r){var a=e.memoizedProps;if(a!==r){e=n.stateNode,Ji(ra.current);var i=null;switch(s){case"input":a=Bx(e,a),r=Bx(e,r),i=[];break;case"select":a=hn({},a,{value:void 0}),r=hn({},r,{value:void 0}),i=[];break;case"textarea":a=Kx(e,a),r=Kx(e,r),i=[];break;default:typeof a.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=jf)}Gx(s,r);var l;s=null;for(u in a)if(!r.hasOwnProperty(u)&&a.hasOwnProperty(u)&&a[u]!=null)if(u==="style"){var o=a[u];for(l in o)o.hasOwnProperty(l)&&(s||(s={}),s[l]="")}else u!=="dangerouslySetInnerHTML"&&u!=="children"&&u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&u!=="autoFocus"&&(uu.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(o=a!=null?a[u]:void 0,r.hasOwnProperty(u)&&c!==o&&(c!=null||o!=null))if(u==="style")if(o){for(l in o)!o.hasOwnProperty(l)||c&&c.hasOwnProperty(l)||(s||(s={}),s[l]="");for(l in c)c.hasOwnProperty(l)&&o[l]!==c[l]&&(s||(s={}),s[l]=c[l])}else s||(i||(i=[]),i.push(u,s)),s=c;else u==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,o=o?o.__html:void 0,c!=null&&o!==c&&(i=i||[]).push(u,c)):u==="children"?typeof c!="string"&&typeof c!="number"||(i=i||[]).push(u,""+c):u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&(uu.hasOwnProperty(u)?(c!=null&&u==="onScroll"&&Xt("scroll",e),i||o===c||(i=[])):(i=i||[]).push(u,c))}s&&(i=i||[]).push("style",s);var u=i;(n.updateQueue=u)&&(n.flags|=4)}};sT=function(e,n,s,r){s!==r&&(n.flags|=4)};function Sc(e,n){if(!sn)switch(e.tailMode){case"hidden":n=e.tail;for(var s=null;n!==null;)n.alternate!==null&&(s=n),n=n.sibling;s===null?e.tail=null:s.sibling=null;break;case"collapsed":s=e.tail;for(var r=null;s!==null;)s.alternate!==null&&(r=s),s=s.sibling;r===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Xn(e){var n=e.alternate!==null&&e.alternate.child===e.child,s=0,r=0;if(n)for(var a=e.child;a!==null;)s|=a.lanes|a.childLanes,r|=a.subtreeFlags&14680064,r|=a.flags&14680064,a.return=e,a=a.sibling;else for(a=e.child;a!==null;)s|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=s,n}function r4(e,n,s){var r=n.pendingProps;switch(iw(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Xn(n),null;case 1:return Ss(n.type)&&yf(),Xn(n),null;case 3:return r=n.stateNode,To(),Zt(Ns),Zt(ns),pw(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(Jd(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&!(n.flags&256)||(n.flags|=1024,Sr!==null&&(Av(Sr),Sr=null))),yv(e,n),Xn(n),null;case 5:mw(n);var a=Ji(bu.current);if(s=n.type,e!==null&&n.stateNode!=null)nT(e,n,s,r,a),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!r){if(n.stateNode===null)throw Error($e(166));return Xn(n),null}if(e=Ji(ra.current),Jd(n)){r=n.stateNode,s=n.type;var i=n.memoizedProps;switch(r[Jr]=n,r[yu]=i,e=(n.mode&1)!==0,s){case"dialog":Xt("cancel",r),Xt("close",r);break;case"iframe":case"object":case"embed":Xt("load",r);break;case"video":case"audio":for(a=0;a<_c.length;a++)Xt(_c[a],r);break;case"source":Xt("error",r);break;case"img":case"image":case"link":Xt("error",r),Xt("load",r);break;case"details":Xt("toggle",r);break;case"input":V0(r,i),Xt("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Xt("invalid",r);break;case"textarea":q0(r,i),Xt("invalid",r)}Gx(s,i),a=null;for(var l in i)if(i.hasOwnProperty(l)){var o=i[l];l==="children"?typeof o=="string"?r.textContent!==o&&(i.suppressHydrationWarning!==!0&&Qd(r.textContent,o,e),a=["children",o]):typeof o=="number"&&r.textContent!==""+o&&(i.suppressHydrationWarning!==!0&&Qd(r.textContent,o,e),a=["children",""+o]):uu.hasOwnProperty(l)&&o!=null&&l==="onScroll"&&Xt("scroll",r)}switch(s){case"input":Bd(r),G0(r,i,!0);break;case"textarea":Bd(r),Y0(r);break;case"select":case"option":break;default:typeof i.onClick=="function"&&(r.onclick=jf)}r=a,n.updateQueue=r,r!==null&&(n.flags|=4)}else{l=a.nodeType===9?a:a.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=RA(s)),e==="http://www.w3.org/1999/xhtml"?s==="script"?(e=l.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(s,{is:r.is}):(e=l.createElement(s),s==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,s),e[Jr]=n,e[yu]=r,tT(e,n,!1,!1),n.stateNode=e;e:{switch(l=qx(s,r),s){case"dialog":Xt("cancel",e),Xt("close",e),a=r;break;case"iframe":case"object":case"embed":Xt("load",e),a=r;break;case"video":case"audio":for(a=0;a<_c.length;a++)Xt(_c[a],e);a=r;break;case"source":Xt("error",e),a=r;break;case"img":case"image":case"link":Xt("error",e),Xt("load",e),a=r;break;case"details":Xt("toggle",e),a=r;break;case"input":V0(e,r),a=Bx(e,r),Xt("invalid",e);break;case"option":a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=hn({},r,{value:void 0}),Xt("invalid",e);break;case"textarea":q0(e,r),a=Kx(e,r),Xt("invalid",e);break;default:a=r}Gx(s,a),o=a;for(i in o)if(o.hasOwnProperty(i)){var c=o[i];i==="style"?MA(e,c):i==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,c!=null&&IA(e,c)):i==="children"?typeof c=="string"?(s!=="textarea"||c!=="")&&du(e,c):typeof c=="number"&&du(e,""+c):i!=="suppressContentEditableWarning"&&i!=="suppressHydrationWarning"&&i!=="autoFocus"&&(uu.hasOwnProperty(i)?c!=null&&i==="onScroll"&&Xt("scroll",e):c!=null&&Ky(e,i,c,l))}switch(s){case"input":Bd(e),G0(e,r,!1);break;case"textarea":Bd(e),Y0(e);break;case"option":r.value!=null&&e.setAttribute("value",""+mi(r.value));break;case"select":e.multiple=!!r.multiple,i=r.value,i!=null?fo(e,!!r.multiple,i,!1):r.defaultValue!=null&&fo(e,!!r.multiple,r.defaultValue,!0);break;default:typeof a.onClick=="function"&&(e.onclick=jf)}switch(s){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(n.flags|=4)}n.ref!==null&&(n.flags|=512,n.flags|=2097152)}return Xn(n),null;case 6:if(e&&n.stateNode!=null)sT(e,n,e.memoizedProps,r);else{if(typeof r!="string"&&n.stateNode===null)throw Error($e(166));if(s=Ji(bu.current),Ji(ra.current),Jd(n)){if(r=n.stateNode,s=n.memoizedProps,r[Jr]=n,(i=r.nodeValue!==s)&&(e=_s,e!==null))switch(e.tag){case 3:Qd(r.nodeValue,s,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&Qd(r.nodeValue,s,(e.mode&1)!==0)}i&&(n.flags|=4)}else r=(s.nodeType===9?s:s.ownerDocument).createTextNode(r),r[Jr]=n,n.stateNode=r}return Xn(n),null;case 13:if(Zt(ln),r=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(sn&&Ls!==null&&n.mode&1&&!(n.flags&128))w$(),Ao(),n.flags|=98560,i=!1;else if(i=Jd(n),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error($e(318));if(i=n.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error($e(317));i[Jr]=n}else Ao(),!(n.flags&128)&&(n.memoizedState=null),n.flags|=4;Xn(n),i=!1}else Sr!==null&&(Av(Sr),Sr=null),i=!0;if(!i)return n.flags&65536?n:null}return n.flags&128?(n.lanes=s,n):(r=r!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(n.child.flags|=8192,n.mode&1&&(e===null||ln.current&1?In===0&&(In=3):Ew())),n.updateQueue!==null&&(n.flags|=4),Xn(n),null);case 4:return To(),yv(e,n),e===null&&vu(n.stateNode.containerInfo),Xn(n),null;case 10:return uw(n.type._context),Xn(n),null;case 17:return Ss(n.type)&&yf(),Xn(n),null;case 19:if(Zt(ln),i=n.memoizedState,i===null)return Xn(n),null;if(r=(n.flags&128)!==0,l=i.rendering,l===null)if(r)Sc(i,!1);else{if(In!==0||e!==null&&e.flags&128)for(e=n.child;e!==null;){if(l=Ef(e),l!==null){for(n.flags|=128,Sc(i,!1),r=l.updateQueue,r!==null&&(n.updateQueue=r,n.flags|=4),n.subtreeFlags=0,r=s,s=n.child;s!==null;)i=s,e=r,i.flags&=14680066,l=i.alternate,l===null?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=l.childLanes,i.lanes=l.lanes,i.child=l.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=l.memoizedProps,i.memoizedState=l.memoizedState,i.updateQueue=l.updateQueue,i.type=l.type,e=l.dependencies,i.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),s=s.sibling;return Qt(ln,ln.current&1|2),n.child}e=e.sibling}i.tail!==null&&jn()>Io&&(n.flags|=128,r=!0,Sc(i,!1),n.lanes=4194304)}else{if(!r)if(e=Ef(l),e!==null){if(n.flags|=128,r=!0,s=e.updateQueue,s!==null&&(n.updateQueue=s,n.flags|=4),Sc(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!sn)return Xn(n),null}else 2*jn()-i.renderingStartTime>Io&&s!==1073741824&&(n.flags|=128,r=!0,Sc(i,!1),n.lanes=4194304);i.isBackwards?(l.sibling=n.child,n.child=l):(s=i.last,s!==null?s.sibling=l:n.child=l,i.last=l)}return i.tail!==null?(n=i.tail,i.rendering=n,i.tail=n.sibling,i.renderingStartTime=jn(),n.sibling=null,s=ln.current,Qt(ln,r?s&1|2:s&1),n):(Xn(n),null);case 22:case 23:return Cw(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?Ms&1073741824&&(Xn(n),n.subtreeFlags&6&&(n.flags|=8192)):Xn(n),null;case 24:return null;case 25:return null}throw Error($e(156,n.tag))}function a4(e,n){switch(iw(n),n.tag){case 1:return Ss(n.type)&&yf(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return To(),Zt(Ns),Zt(ns),pw(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return mw(n),null;case 13:if(Zt(ln),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error($e(340));Ao()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Zt(ln),null;case 4:return To(),null;case 10:return uw(n.type._context),null;case 22:case 23:return Cw(),null;case 24:return null;default:return null}}var eh=!1,es=!1,i4=typeof WeakSet=="function"?WeakSet:Set,ze=null;function ao(e,n){var s=e.ref;if(s!==null)if(typeof s=="function")try{s(null)}catch(r){pn(e,n,r)}else s.current=null}function wv(e,n,s){try{s()}catch(r){pn(e,n,r)}}var FN=!1;function l4(e,n){if(rv=gf,e=o$(),rw(e)){if("selectionStart"in e)var s={start:e.selectionStart,end:e.selectionEnd};else e:{s=(s=e.ownerDocument)&&s.defaultView||window;var r=s.getSelection&&s.getSelection();if(r&&r.rangeCount!==0){s=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{s.nodeType,i.nodeType}catch{s=null;break e}var l=0,o=-1,c=-1,u=0,h=0,f=e,m=null;t:for(;;){for(var p;f!==s||a!==0&&f.nodeType!==3||(o=l+a),f!==i||r!==0&&f.nodeType!==3||(c=l+r),f.nodeType===3&&(l+=f.nodeValue.length),(p=f.firstChild)!==null;)m=f,f=p;for(;;){if(f===e)break t;if(m===s&&++u===a&&(o=l),m===i&&++h===r&&(c=l),(p=f.nextSibling)!==null)break;f=m,m=f.parentNode}f=p}s=o===-1||c===-1?null:{start:o,end:c}}else s=null}s=s||{start:0,end:0}}else s=null;for(av={focusedElem:e,selectionRange:s},gf=!1,ze=n;ze!==null;)if(n=ze,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,ze=e;else for(;ze!==null;){n=ze;try{var x=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(x!==null){var g=x.memoizedProps,b=x.memoizedState,j=n.stateNode,v=j.getSnapshotBeforeUpdate(n.elementType===n.type?g:kr(n.type,g),b);j.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var y=n.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error($e(163))}}catch(k){pn(n,n.return,k)}if(e=n.sibling,e!==null){e.return=n.return,ze=e;break}ze=n.return}return x=FN,FN=!1,x}function Jc(e,n,s){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var a=r=r.next;do{if((a.tag&e)===e){var i=a.destroy;a.destroy=void 0,i!==void 0&&wv(n,s,i)}a=a.next}while(a!==r)}}function Im(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var s=n=n.next;do{if((s.tag&e)===e){var r=s.create;s.destroy=r()}s=s.next}while(s!==n)}}function bv(e){var n=e.ref;if(n!==null){var s=e.stateNode;switch(e.tag){case 5:e=s;break;default:e=s}typeof n=="function"?n(e):n.current=e}}function rT(e){var n=e.alternate;n!==null&&(e.alternate=null,rT(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Jr],delete n[yu],delete n[ov],delete n[W_],delete n[H_])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function aT(e){return e.tag===5||e.tag===3||e.tag===4}function _N(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||aT(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function kv(e,n,s){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?s.nodeType===8?s.parentNode.insertBefore(e,n):s.insertBefore(e,n):(s.nodeType===8?(n=s.parentNode,n.insertBefore(e,s)):(n=s,n.appendChild(e)),s=s._reactRootContainer,s!=null||n.onclick!==null||(n.onclick=jf));else if(r!==4&&(e=e.child,e!==null))for(kv(e,n,s),e=e.sibling;e!==null;)kv(e,n,s),e=e.sibling}function Nv(e,n,s){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?s.insertBefore(e,n):s.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Nv(e,n,s),e=e.sibling;e!==null;)Nv(e,n,s),e=e.sibling}var Kn=null,Nr=!1;function Ka(e,n,s){for(s=s.child;s!==null;)iT(e,n,s),s=s.sibling}function iT(e,n,s){if(sa&&typeof sa.onCommitFiberUnmount=="function")try{sa.onCommitFiberUnmount(Nm,s)}catch{}switch(s.tag){case 5:es||ao(s,n);case 6:var r=Kn,a=Nr;Kn=null,Ka(e,n,s),Kn=r,Nr=a,Kn!==null&&(Nr?(e=Kn,s=s.stateNode,e.nodeType===8?e.parentNode.removeChild(s):e.removeChild(s)):Kn.removeChild(s.stateNode));break;case 18:Kn!==null&&(Nr?(e=Kn,s=s.stateNode,e.nodeType===8?ug(e.parentNode,s):e.nodeType===1&&ug(e,s),pu(e)):ug(Kn,s.stateNode));break;case 4:r=Kn,a=Nr,Kn=s.stateNode.containerInfo,Nr=!0,Ka(e,n,s),Kn=r,Nr=a;break;case 0:case 11:case 14:case 15:if(!es&&(r=s.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){a=r=r.next;do{var i=a,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&wv(s,n,l),a=a.next}while(a!==r)}Ka(e,n,s);break;case 1:if(!es&&(ao(s,n),r=s.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=s.memoizedProps,r.state=s.memoizedState,r.componentWillUnmount()}catch(o){pn(s,n,o)}Ka(e,n,s);break;case 21:Ka(e,n,s);break;case 22:s.mode&1?(es=(r=es)||s.memoizedState!==null,Ka(e,n,s),es=r):Ka(e,n,s);break;default:Ka(e,n,s)}}function zN(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var s=e.stateNode;s===null&&(s=e.stateNode=new i4),n.forEach(function(r){var a=g4.bind(null,e,r);s.has(r)||(s.add(r),r.then(a,a))})}}function wr(e,n){var s=n.deletions;if(s!==null)for(var r=0;r<s.length;r++){var a=s[r];try{var i=e,l=n,o=l;e:for(;o!==null;){switch(o.tag){case 5:Kn=o.stateNode,Nr=!1;break e;case 3:Kn=o.stateNode.containerInfo,Nr=!0;break e;case 4:Kn=o.stateNode.containerInfo,Nr=!0;break e}o=o.return}if(Kn===null)throw Error($e(160));iT(i,l,a),Kn=null,Nr=!1;var c=a.alternate;c!==null&&(c.return=null),a.return=null}catch(u){pn(a,n,u)}}if(n.subtreeFlags&12854)for(n=n.child;n!==null;)lT(n,e),n=n.sibling}function lT(e,n){var s=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(wr(n,e),Vr(e),r&4){try{Jc(3,e,e.return),Im(3,e)}catch(g){pn(e,e.return,g)}try{Jc(5,e,e.return)}catch(g){pn(e,e.return,g)}}break;case 1:wr(n,e),Vr(e),r&512&&s!==null&&ao(s,s.return);break;case 5:if(wr(n,e),Vr(e),r&512&&s!==null&&ao(s,s.return),e.flags&32){var a=e.stateNode;try{du(a,"")}catch(g){pn(e,e.return,g)}}if(r&4&&(a=e.stateNode,a!=null)){var i=e.memoizedProps,l=s!==null?s.memoizedProps:i,o=e.type,c=e.updateQueue;if(e.updateQueue=null,c!==null)try{o==="input"&&i.type==="radio"&&i.name!=null&&$A(a,i),qx(o,l);var u=qx(o,i);for(l=0;l<c.length;l+=2){var h=c[l],f=c[l+1];h==="style"?MA(a,f):h==="dangerouslySetInnerHTML"?IA(a,f):h==="children"?du(a,f):Ky(a,h,f,u)}switch(o){case"input":Wx(a,i);break;case"textarea":TA(a,i);break;case"select":var m=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var p=i.value;p!=null?fo(a,!!i.multiple,p,!1):m!==!!i.multiple&&(i.defaultValue!=null?fo(a,!!i.multiple,i.defaultValue,!0):fo(a,!!i.multiple,i.multiple?[]:"",!1))}a[yu]=i}catch(g){pn(e,e.return,g)}}break;case 6:if(wr(n,e),Vr(e),r&4){if(e.stateNode===null)throw Error($e(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(g){pn(e,e.return,g)}}break;case 3:if(wr(n,e),Vr(e),r&4&&s!==null&&s.memoizedState.isDehydrated)try{pu(n.containerInfo)}catch(g){pn(e,e.return,g)}break;case 4:wr(n,e),Vr(e);break;case 13:wr(n,e),Vr(e),a=e.child,a.flags&8192&&(i=a.memoizedState!==null,a.stateNode.isHidden=i,!i||a.alternate!==null&&a.alternate.memoizedState!==null||(Nw=jn())),r&4&&zN(e);break;case 22:if(h=s!==null&&s.memoizedState!==null,e.mode&1?(es=(u=es)||h,wr(n,e),es=u):wr(n,e),Vr(e),r&8192){if(u=e.memoizedState!==null,(e.stateNode.isHidden=u)&&!h&&e.mode&1)for(ze=e,h=e.child;h!==null;){for(f=ze=h;ze!==null;){switch(m=ze,p=m.child,m.tag){case 0:case 11:case 14:case 15:Jc(4,m,m.return);break;case 1:ao(m,m.return);var x=m.stateNode;if(typeof x.componentWillUnmount=="function"){r=m,s=m.return;try{n=r,x.props=n.memoizedProps,x.state=n.memoizedState,x.componentWillUnmount()}catch(g){pn(r,s,g)}}break;case 5:ao(m,m.return);break;case 22:if(m.memoizedState!==null){BN(f);continue}}p!==null?(p.return=m,ze=p):BN(f)}h=h.sibling}e:for(h=null,f=e;;){if(f.tag===5){if(h===null){h=f;try{a=f.stateNode,u?(i=a.style,typeof i.setProperty=="function"?i.setProperty("display","none","important"):i.display="none"):(o=f.stateNode,c=f.memoizedProps.style,l=c!=null&&c.hasOwnProperty("display")?c.display:null,o.style.display=PA("display",l))}catch(g){pn(e,e.return,g)}}}else if(f.tag===6){if(h===null)try{f.stateNode.nodeValue=u?"":f.memoizedProps}catch(g){pn(e,e.return,g)}}else if((f.tag!==22&&f.tag!==23||f.memoizedState===null||f===e)&&f.child!==null){f.child.return=f,f=f.child;continue}if(f===e)break e;for(;f.sibling===null;){if(f.return===null||f.return===e)break e;h===f&&(h=null),f=f.return}h===f&&(h=null),f.sibling.return=f.return,f=f.sibling}}break;case 19:wr(n,e),Vr(e),r&4&&zN(e);break;case 21:break;default:wr(n,e),Vr(e)}}function Vr(e){var n=e.flags;if(n&2){try{e:{for(var s=e.return;s!==null;){if(aT(s)){var r=s;break e}s=s.return}throw Error($e(160))}switch(r.tag){case 5:var a=r.stateNode;r.flags&32&&(du(a,""),r.flags&=-33);var i=_N(e);Nv(e,i,a);break;case 3:case 4:var l=r.stateNode.containerInfo,o=_N(e);kv(e,o,l);break;default:throw Error($e(161))}}catch(c){pn(e,e.return,c)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function o4(e,n,s){ze=e,oT(e)}function oT(e,n,s){for(var r=(e.mode&1)!==0;ze!==null;){var a=ze,i=a.child;if(a.tag===22&&r){var l=a.memoizedState!==null||eh;if(!l){var o=a.alternate,c=o!==null&&o.memoizedState!==null||es;o=eh;var u=es;if(eh=l,(es=c)&&!u)for(ze=a;ze!==null;)l=ze,c=l.child,l.tag===22&&l.memoizedState!==null?WN(a):c!==null?(c.return=l,ze=c):WN(a);for(;i!==null;)ze=i,oT(i),i=i.sibling;ze=a,eh=o,es=u}UN(e)}else a.subtreeFlags&8772&&i!==null?(i.return=a,ze=i):UN(e)}}function UN(e){for(;ze!==null;){var n=ze;if(n.flags&8772){var s=n.alternate;try{if(n.flags&8772)switch(n.tag){case 0:case 11:case 15:es||Im(5,n);break;case 1:var r=n.stateNode;if(n.flags&4&&!es)if(s===null)r.componentDidMount();else{var a=n.elementType===n.type?s.memoizedProps:kr(n.type,s.memoizedProps);r.componentDidUpdate(a,s.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=n.updateQueue;i!==null&&SN(n,i,r);break;case 3:var l=n.updateQueue;if(l!==null){if(s=null,n.child!==null)switch(n.child.tag){case 5:s=n.child.stateNode;break;case 1:s=n.child.stateNode}SN(n,l,s)}break;case 5:var o=n.stateNode;if(s===null&&n.flags&4){s=o;var c=n.memoizedProps;switch(n.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&s.focus();break;case"img":c.src&&(s.src=c.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(n.memoizedState===null){var u=n.alternate;if(u!==null){var h=u.memoizedState;if(h!==null){var f=h.dehydrated;f!==null&&pu(f)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error($e(163))}es||n.flags&512&&bv(n)}catch(m){pn(n,n.return,m)}}if(n===e){ze=null;break}if(s=n.sibling,s!==null){s.return=n.return,ze=s;break}ze=n.return}}function BN(e){for(;ze!==null;){var n=ze;if(n===e){ze=null;break}var s=n.sibling;if(s!==null){s.return=n.return,ze=s;break}ze=n.return}}function WN(e){for(;ze!==null;){var n=ze;try{switch(n.tag){case 0:case 11:case 15:var s=n.return;try{Im(4,n)}catch(c){pn(n,s,c)}break;case 1:var r=n.stateNode;if(typeof r.componentDidMount=="function"){var a=n.return;try{r.componentDidMount()}catch(c){pn(n,a,c)}}var i=n.return;try{bv(n)}catch(c){pn(n,i,c)}break;case 5:var l=n.return;try{bv(n)}catch(c){pn(n,l,c)}}}catch(c){pn(n,n.return,c)}if(n===e){ze=null;break}var o=n.sibling;if(o!==null){o.return=n.return,ze=o;break}ze=n.return}}var c4=Math.ceil,Tf=_a.ReactCurrentDispatcher,bw=_a.ReactCurrentOwner,dr=_a.ReactCurrentBatchConfig,Tt=0,zn=null,Sn=null,Vn=0,Ms=0,io=Si(0),In=0,Cu=null,dl=0,Pm=0,kw=0,Xc=null,ys=null,Nw=0,Io=1/0,va=null,Rf=!1,Sv=null,oi=null,th=!1,ei=null,If=0,Zc=0,Cv=null,Bh=-1,Wh=0;function ds(){return Tt&6?jn():Bh!==-1?Bh:Bh=jn()}function ci(e){return e.mode&1?Tt&2&&Vn!==0?Vn&-Vn:V_.transition!==null?(Wh===0&&(Wh=VA()),Wh):(e=Ft,e!==0||(e=window.event,e=e===void 0?16:ZA(e.type)),e):1}function Tr(e,n,s,r){if(50<Zc)throw Zc=0,Cv=null,Error($e(185));ld(e,s,r),(!(Tt&2)||e!==zn)&&(e===zn&&(!(Tt&2)&&(Pm|=s),In===4&&Ja(e,Vn)),Cs(e,r),s===1&&Tt===0&&!(n.mode&1)&&(Io=jn()+500,$m&&Ci()))}function Cs(e,n){var s=e.callbackNode;VF(e,n);var r=pf(e,e===zn?Vn:0);if(r===0)s!==null&&X0(s),e.callbackNode=null,e.callbackPriority=0;else if(n=r&-r,e.callbackPriority!==n){if(s!=null&&X0(s),n===1)e.tag===0?K_(HN.bind(null,e)):v$(HN.bind(null,e)),U_(function(){!(Tt&6)&&Ci()}),s=null;else{switch(GA(r)){case 1:s=Qy;break;case 4:s=HA;break;case 16:s=mf;break;case 536870912:s=KA;break;default:s=mf}s=gT(s,cT.bind(null,e))}e.callbackPriority=n,e.callbackNode=s}}function cT(e,n){if(Bh=-1,Wh=0,Tt&6)throw Error($e(327));var s=e.callbackNode;if(vo()&&e.callbackNode!==s)return null;var r=pf(e,e===zn?Vn:0);if(r===0)return null;if(r&30||r&e.expiredLanes||n)n=Pf(e,r);else{n=r;var a=Tt;Tt|=2;var i=dT();(zn!==e||Vn!==n)&&(va=null,Io=jn()+500,sl(e,n));do try{h4();break}catch(o){uT(e,o)}while(!0);cw(),Tf.current=i,Tt=a,Sn!==null?n=0:(zn=null,Vn=0,n=In)}if(n!==0){if(n===2&&(a=Zx(e),a!==0&&(r=a,n=Ev(e,a))),n===1)throw s=Cu,sl(e,0),Ja(e,r),Cs(e,jn()),s;if(n===6)Ja(e,r);else{if(a=e.current.alternate,!(r&30)&&!u4(a)&&(n=Pf(e,r),n===2&&(i=Zx(e),i!==0&&(r=i,n=Ev(e,i))),n===1))throw s=Cu,sl(e,0),Ja(e,r),Cs(e,jn()),s;switch(e.finishedWork=a,e.finishedLanes=r,n){case 0:case 1:throw Error($e(345));case 2:Vi(e,ys,va);break;case 3:if(Ja(e,r),(r&130023424)===r&&(n=Nw+500-jn(),10<n)){if(pf(e,0)!==0)break;if(a=e.suspendedLanes,(a&r)!==r){ds(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=lv(Vi.bind(null,e,ys,va),n);break}Vi(e,ys,va);break;case 4:if(Ja(e,r),(r&4194240)===r)break;for(n=e.eventTimes,a=-1;0<r;){var l=31-$r(r);i=1<<l,l=n[l],l>a&&(a=l),r&=~i}if(r=a,r=jn()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*c4(r/1960))-r,10<r){e.timeoutHandle=lv(Vi.bind(null,e,ys,va),r);break}Vi(e,ys,va);break;case 5:Vi(e,ys,va);break;default:throw Error($e(329))}}}return Cs(e,jn()),e.callbackNode===s?cT.bind(null,e):null}function Ev(e,n){var s=Xc;return e.current.memoizedState.isDehydrated&&(sl(e,n).flags|=256),e=Pf(e,n),e!==2&&(n=ys,ys=s,n!==null&&Av(n)),e}function Av(e){ys===null?ys=e:ys.push.apply(ys,e)}function u4(e){for(var n=e;;){if(n.flags&16384){var s=n.updateQueue;if(s!==null&&(s=s.stores,s!==null))for(var r=0;r<s.length;r++){var a=s[r],i=a.getSnapshot;a=a.value;try{if(!Pr(i(),a))return!1}catch{return!1}}}if(s=n.child,n.subtreeFlags&16384&&s!==null)s.return=n,n=s;else{if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function Ja(e,n){for(n&=~kw,n&=~Pm,e.suspendedLanes|=n,e.pingedLanes&=~n,e=e.expirationTimes;0<n;){var s=31-$r(n),r=1<<s;e[s]=-1,n&=~r}}function HN(e){if(Tt&6)throw Error($e(327));vo();var n=pf(e,0);if(!(n&1))return Cs(e,jn()),null;var s=Pf(e,n);if(e.tag!==0&&s===2){var r=Zx(e);r!==0&&(n=r,s=Ev(e,r))}if(s===1)throw s=Cu,sl(e,0),Ja(e,n),Cs(e,jn()),s;if(s===6)throw Error($e(345));return e.finishedWork=e.current.alternate,e.finishedLanes=n,Vi(e,ys,va),Cs(e,jn()),null}function Sw(e,n){var s=Tt;Tt|=1;try{return e(n)}finally{Tt=s,Tt===0&&(Io=jn()+500,$m&&Ci())}}function hl(e){ei!==null&&ei.tag===0&&!(Tt&6)&&vo();var n=Tt;Tt|=1;var s=dr.transition,r=Ft;try{if(dr.transition=null,Ft=1,e)return e()}finally{Ft=r,dr.transition=s,Tt=n,!(Tt&6)&&Ci()}}function Cw(){Ms=io.current,Zt(io)}function sl(e,n){e.finishedWork=null,e.finishedLanes=0;var s=e.timeoutHandle;if(s!==-1&&(e.timeoutHandle=-1,z_(s)),Sn!==null)for(s=Sn.return;s!==null;){var r=s;switch(iw(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&yf();break;case 3:To(),Zt(Ns),Zt(ns),pw();break;case 5:mw(r);break;case 4:To();break;case 13:Zt(ln);break;case 19:Zt(ln);break;case 10:uw(r.type._context);break;case 22:case 23:Cw()}s=s.return}if(zn=e,Sn=e=ui(e.current,null),Vn=Ms=n,In=0,Cu=null,kw=Pm=dl=0,ys=Xc=null,Qi!==null){for(n=0;n<Qi.length;n++)if(s=Qi[n],r=s.interleaved,r!==null){s.interleaved=null;var a=r.next,i=s.pending;if(i!==null){var l=i.next;i.next=a,r.next=l}s.pending=r}Qi=null}return e}function uT(e,n){do{var s=Sn;try{if(cw(),_h.current=$f,Af){for(var r=on.memoizedState;r!==null;){var a=r.queue;a!==null&&(a.pending=null),r=r.next}Af=!1}if(ul=0,Ln=Tn=on=null,Qc=!1,ku=0,bw.current=null,s===null||s.return===null){In=1,Cu=n,Sn=null;break}e:{var i=e,l=s.return,o=s,c=n;if(n=Vn,o.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){var u=c,h=o,f=h.tag;if(!(h.mode&1)&&(f===0||f===11||f===15)){var m=h.alternate;m?(h.updateQueue=m.updateQueue,h.memoizedState=m.memoizedState,h.lanes=m.lanes):(h.updateQueue=null,h.memoizedState=null)}var p=RN(l);if(p!==null){p.flags&=-257,IN(p,l,o,i,n),p.mode&1&&TN(i,u,n),n=p,c=u;var x=n.updateQueue;if(x===null){var g=new Set;g.add(c),n.updateQueue=g}else x.add(c);break e}else{if(!(n&1)){TN(i,u,n),Ew();break e}c=Error($e(426))}}else if(sn&&o.mode&1){var b=RN(l);if(b!==null){!(b.flags&65536)&&(b.flags|=256),IN(b,l,o,i,n),lw(Ro(c,o));break e}}i=c=Ro(c,o),In!==4&&(In=2),Xc===null?Xc=[i]:Xc.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,n&=-n,i.lanes|=n;var j=G$(i,c,n);NN(i,j);break e;case 1:o=c;var v=i.type,y=i.stateNode;if(!(i.flags&128)&&(typeof v.getDerivedStateFromError=="function"||y!==null&&typeof y.componentDidCatch=="function"&&(oi===null||!oi.has(y)))){i.flags|=65536,n&=-n,i.lanes|=n;var k=q$(i,o,n);NN(i,k);break e}}i=i.return}while(i!==null)}fT(s)}catch(N){n=N,Sn===s&&s!==null&&(Sn=s=s.return);continue}break}while(!0)}function dT(){var e=Tf.current;return Tf.current=$f,e===null?$f:e}function Ew(){(In===0||In===3||In===2)&&(In=4),zn===null||!(dl&268435455)&&!(Pm&268435455)||Ja(zn,Vn)}function Pf(e,n){var s=Tt;Tt|=2;var r=dT();(zn!==e||Vn!==n)&&(va=null,sl(e,n));do try{d4();break}catch(a){uT(e,a)}while(!0);if(cw(),Tt=s,Tf.current=r,Sn!==null)throw Error($e(261));return zn=null,Vn=0,In}function d4(){for(;Sn!==null;)hT(Sn)}function h4(){for(;Sn!==null&&!LF();)hT(Sn)}function hT(e){var n=pT(e.alternate,e,Ms);e.memoizedProps=e.pendingProps,n===null?fT(e):Sn=n,bw.current=null}function fT(e){var n=e;do{var s=n.alternate;if(e=n.return,n.flags&32768){if(s=a4(s,n),s!==null){s.flags&=32767,Sn=s;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{In=6,Sn=null;return}}else if(s=r4(s,n,Ms),s!==null){Sn=s;return}if(n=n.sibling,n!==null){Sn=n;return}Sn=n=e}while(n!==null);In===0&&(In=5)}function Vi(e,n,s){var r=Ft,a=dr.transition;try{dr.transition=null,Ft=1,f4(e,n,s,r)}finally{dr.transition=a,Ft=r}return null}function f4(e,n,s,r){do vo();while(ei!==null);if(Tt&6)throw Error($e(327));s=e.finishedWork;var a=e.finishedLanes;if(s===null)return null;if(e.finishedWork=null,e.finishedLanes=0,s===e.current)throw Error($e(177));e.callbackNode=null,e.callbackPriority=0;var i=s.lanes|s.childLanes;if(GF(e,i),e===zn&&(Sn=zn=null,Vn=0),!(s.subtreeFlags&2064)&&!(s.flags&2064)||th||(th=!0,gT(mf,function(){return vo(),null})),i=(s.flags&15990)!==0,s.subtreeFlags&15990||i){i=dr.transition,dr.transition=null;var l=Ft;Ft=1;var o=Tt;Tt|=4,bw.current=null,l4(e,s),lT(s,e),P_(av),gf=!!rv,av=rv=null,e.current=s,o4(s),FF(),Tt=o,Ft=l,dr.transition=i}else e.current=s;if(th&&(th=!1,ei=e,If=a),i=e.pendingLanes,i===0&&(oi=null),UF(s.stateNode),Cs(e,jn()),n!==null)for(r=e.onRecoverableError,s=0;s<n.length;s++)a=n[s],r(a.value,{componentStack:a.stack,digest:a.digest});if(Rf)throw Rf=!1,e=Sv,Sv=null,e;return If&1&&e.tag!==0&&vo(),i=e.pendingLanes,i&1?e===Cv?Zc++:(Zc=0,Cv=e):Zc=0,Ci(),null}function vo(){if(ei!==null){var e=GA(If),n=dr.transition,s=Ft;try{if(dr.transition=null,Ft=16>e?16:e,ei===null)var r=!1;else{if(e=ei,ei=null,If=0,Tt&6)throw Error($e(331));var a=Tt;for(Tt|=4,ze=e.current;ze!==null;){var i=ze,l=i.child;if(ze.flags&16){var o=i.deletions;if(o!==null){for(var c=0;c<o.length;c++){var u=o[c];for(ze=u;ze!==null;){var h=ze;switch(h.tag){case 0:case 11:case 15:Jc(8,h,i)}var f=h.child;if(f!==null)f.return=h,ze=f;else for(;ze!==null;){h=ze;var m=h.sibling,p=h.return;if(rT(h),h===u){ze=null;break}if(m!==null){m.return=p,ze=m;break}ze=p}}}var x=i.alternate;if(x!==null){var g=x.child;if(g!==null){x.child=null;do{var b=g.sibling;g.sibling=null,g=b}while(g!==null)}}ze=i}}if(i.subtreeFlags&2064&&l!==null)l.return=i,ze=l;else e:for(;ze!==null;){if(i=ze,i.flags&2048)switch(i.tag){case 0:case 11:case 15:Jc(9,i,i.return)}var j=i.sibling;if(j!==null){j.return=i.return,ze=j;break e}ze=i.return}}var v=e.current;for(ze=v;ze!==null;){l=ze;var y=l.child;if(l.subtreeFlags&2064&&y!==null)y.return=l,ze=y;else e:for(l=v;ze!==null;){if(o=ze,o.flags&2048)try{switch(o.tag){case 0:case 11:case 15:Im(9,o)}}catch(N){pn(o,o.return,N)}if(o===l){ze=null;break e}var k=o.sibling;if(k!==null){k.return=o.return,ze=k;break e}ze=o.return}}if(Tt=a,Ci(),sa&&typeof sa.onPostCommitFiberRoot=="function")try{sa.onPostCommitFiberRoot(Nm,e)}catch{}r=!0}return r}finally{Ft=s,dr.transition=n}}return!1}function KN(e,n,s){n=Ro(s,n),n=G$(e,n,1),e=li(e,n,1),n=ds(),e!==null&&(ld(e,1,n),Cs(e,n))}function pn(e,n,s){if(e.tag===3)KN(e,e,s);else for(;n!==null;){if(n.tag===3){KN(n,e,s);break}else if(n.tag===1){var r=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(oi===null||!oi.has(r))){e=Ro(s,e),e=q$(n,e,1),n=li(n,e,1),e=ds(),n!==null&&(ld(n,1,e),Cs(n,e));break}}n=n.return}}function m4(e,n,s){var r=e.pingCache;r!==null&&r.delete(n),n=ds(),e.pingedLanes|=e.suspendedLanes&s,zn===e&&(Vn&s)===s&&(In===4||In===3&&(Vn&130023424)===Vn&&500>jn()-Nw?sl(e,0):kw|=s),Cs(e,n)}function mT(e,n){n===0&&(e.mode&1?(n=Kd,Kd<<=1,!(Kd&130023424)&&(Kd=4194304)):n=1);var s=ds();e=Pa(e,n),e!==null&&(ld(e,n,s),Cs(e,s))}function p4(e){var n=e.memoizedState,s=0;n!==null&&(s=n.retryLane),mT(e,s)}function g4(e,n){var s=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(s=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error($e(314))}r!==null&&r.delete(n),mT(e,s)}var pT;pT=function(e,n,s){if(e!==null)if(e.memoizedProps!==n.pendingProps||Ns.current)bs=!0;else{if(!(e.lanes&s)&&!(n.flags&128))return bs=!1,s4(e,n,s);bs=!!(e.flags&131072)}else bs=!1,sn&&n.flags&1048576&&j$(n,kf,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;Uh(e,n),e=n.pendingProps;var a=Eo(n,ns.current);xo(n,s),a=xw(null,n,r,e,a,s);var i=vw();return n.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,Ss(r)?(i=!0,wf(n)):i=!1,n.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,hw(n),a.updater=Rm,n.stateNode=a,a._reactInternals=n,mv(n,r,e,s),n=xv(null,n,r,!0,i,s)):(n.tag=0,sn&&i&&aw(n),os(null,n,a,s),n=n.child),n;case 16:r=n.elementType;e:{switch(Uh(e,n),e=n.pendingProps,a=r._init,r=a(r._payload),n.type=r,a=n.tag=v4(r),e=kr(r,e),a){case 0:n=gv(null,n,r,e,s);break e;case 1:n=ON(null,n,r,e,s);break e;case 11:n=PN(null,n,r,e,s);break e;case 14:n=MN(null,n,r,kr(r.type,e),s);break e}throw Error($e(306,r,""))}return n;case 0:return r=n.type,a=n.pendingProps,a=n.elementType===r?a:kr(r,a),gv(e,n,r,a,s);case 1:return r=n.type,a=n.pendingProps,a=n.elementType===r?a:kr(r,a),ON(e,n,r,a,s);case 3:e:{if(X$(n),e===null)throw Error($e(387));r=n.pendingProps,i=n.memoizedState,a=i.element,S$(e,n),Cf(n,r,null,s);var l=n.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},n.updateQueue.baseState=i,n.memoizedState=i,n.flags&256){a=Ro(Error($e(423)),n),n=DN(e,n,r,s,a);break e}else if(r!==a){a=Ro(Error($e(424)),n),n=DN(e,n,r,s,a);break e}else for(Ls=ii(n.stateNode.containerInfo.firstChild),_s=n,sn=!0,Sr=null,s=k$(n,null,r,s),n.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Ao(),r===a){n=Ma(e,n,s);break e}os(e,n,r,s)}n=n.child}return n;case 5:return C$(n),e===null&&dv(n),r=n.type,a=n.pendingProps,i=e!==null?e.memoizedProps:null,l=a.children,iv(r,a)?l=null:i!==null&&iv(r,i)&&(n.flags|=32),J$(e,n),os(e,n,l,s),n.child;case 6:return e===null&&dv(n),null;case 13:return Z$(e,n,s);case 4:return fw(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=$o(n,null,r,s):os(e,n,r,s),n.child;case 11:return r=n.type,a=n.pendingProps,a=n.elementType===r?a:kr(r,a),PN(e,n,r,a,s);case 7:return os(e,n,n.pendingProps,s),n.child;case 8:return os(e,n,n.pendingProps.children,s),n.child;case 12:return os(e,n,n.pendingProps.children,s),n.child;case 10:e:{if(r=n.type._context,a=n.pendingProps,i=n.memoizedProps,l=a.value,Qt(Nf,r._currentValue),r._currentValue=l,i!==null)if(Pr(i.value,l)){if(i.children===a.children&&!Ns.current){n=Ma(e,n,s);break e}}else for(i=n.child,i!==null&&(i.return=n);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var c=o.firstContext;c!==null;){if(c.context===r){if(i.tag===1){c=Ca(-1,s&-s),c.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var h=u.pending;h===null?c.next=c:(c.next=h.next,h.next=c),u.pending=c}}i.lanes|=s,c=i.alternate,c!==null&&(c.lanes|=s),hv(i.return,s,n),o.lanes|=s;break}c=c.next}}else if(i.tag===10)l=i.type===n.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error($e(341));l.lanes|=s,o=l.alternate,o!==null&&(o.lanes|=s),hv(l,s,n),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===n){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}os(e,n,a.children,s),n=n.child}return n;case 9:return a=n.type,r=n.pendingProps.children,xo(n,s),a=fr(a),r=r(a),n.flags|=1,os(e,n,r,s),n.child;case 14:return r=n.type,a=kr(r,n.pendingProps),a=kr(r.type,a),MN(e,n,r,a,s);case 15:return Y$(e,n,n.type,n.pendingProps,s);case 17:return r=n.type,a=n.pendingProps,a=n.elementType===r?a:kr(r,a),Uh(e,n),n.tag=1,Ss(r)?(e=!0,wf(n)):e=!1,xo(n,s),V$(n,r,a),mv(n,r,a,s),xv(null,n,r,!0,e,s);case 19:return eT(e,n,s);case 22:return Q$(e,n,s)}throw Error($e(156,n.tag))};function gT(e,n){return WA(e,n)}function x4(e,n,s,r){this.tag=e,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ur(e,n,s,r){return new x4(e,n,s,r)}function Aw(e){return e=e.prototype,!(!e||!e.isReactComponent)}function v4(e){if(typeof e=="function")return Aw(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Gy)return 11;if(e===qy)return 14}return 2}function ui(e,n){var s=e.alternate;return s===null?(s=ur(e.tag,n,e.key,e.mode),s.elementType=e.elementType,s.type=e.type,s.stateNode=e.stateNode,s.alternate=e,e.alternate=s):(s.pendingProps=n,s.type=e.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=e.flags&14680064,s.childLanes=e.childLanes,s.lanes=e.lanes,s.child=e.child,s.memoizedProps=e.memoizedProps,s.memoizedState=e.memoizedState,s.updateQueue=e.updateQueue,n=e.dependencies,s.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},s.sibling=e.sibling,s.index=e.index,s.ref=e.ref,s}function Hh(e,n,s,r,a,i){var l=2;if(r=e,typeof e=="function")Aw(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case Ql:return rl(s.children,a,i,n);case Vy:l=8,a|=8;break;case Fx:return e=ur(12,s,n,a|2),e.elementType=Fx,e.lanes=i,e;case _x:return e=ur(13,s,n,a),e.elementType=_x,e.lanes=i,e;case zx:return e=ur(19,s,n,a),e.elementType=zx,e.lanes=i,e;case CA:return Mm(s,a,i,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case NA:l=10;break e;case SA:l=9;break e;case Gy:l=11;break e;case qy:l=14;break e;case qa:l=16,r=null;break e}throw Error($e(130,e==null?e:typeof e,""))}return n=ur(l,s,n,a),n.elementType=e,n.type=r,n.lanes=i,n}function rl(e,n,s,r){return e=ur(7,e,r,n),e.lanes=s,e}function Mm(e,n,s,r){return e=ur(22,e,r,n),e.elementType=CA,e.lanes=s,e.stateNode={isHidden:!1},e}function vg(e,n,s){return e=ur(6,e,null,n),e.lanes=s,e}function jg(e,n,s){return n=ur(4,e.children!==null?e.children:[],e.key,n),n.lanes=s,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function j4(e,n,s,r,a){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Zp(0),this.expirationTimes=Zp(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Zp(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function $w(e,n,s,r,a,i,l,o,c){return e=new j4(e,n,s,o,c),n===1?(n=1,i===!0&&(n|=8)):n=0,i=ur(3,null,null,n),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},hw(i),e}function y4(e,n,s){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Yl,key:r==null?null:""+r,children:e,containerInfo:n,implementation:s}}function xT(e){if(!e)return pi;e=e._reactInternals;e:{if(kl(e)!==e||e.tag!==1)throw Error($e(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(Ss(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(n!==null);throw Error($e(171))}if(e.tag===1){var s=e.type;if(Ss(s))return x$(e,s,n)}return n}function vT(e,n,s,r,a,i,l,o,c){return e=$w(s,r,!0,e,a,i,l,o,c),e.context=xT(null),s=e.current,r=ds(),a=ci(s),i=Ca(r,a),i.callback=n??null,li(s,i,a),e.current.lanes=a,ld(e,a,r),Cs(e,r),e}function Om(e,n,s,r){var a=n.current,i=ds(),l=ci(a);return s=xT(s),n.context===null?n.context=s:n.pendingContext=s,n=Ca(i,l),n.payload={element:e},r=r===void 0?null:r,r!==null&&(n.callback=r),e=li(a,n,l),e!==null&&(Tr(e,a,l,i),Fh(e,a,l)),l}function Mf(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function VN(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var s=e.retryLane;e.retryLane=s!==0&&s<n?s:n}}function Tw(e,n){VN(e,n),(e=e.alternate)&&VN(e,n)}function w4(){return null}var jT=typeof reportError=="function"?reportError:function(e){console.error(e)};function Rw(e){this._internalRoot=e}Dm.prototype.render=Rw.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error($e(409));Om(e,n,null,null)};Dm.prototype.unmount=Rw.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;hl(function(){Om(null,e,null,null)}),n[Ia]=null}};function Dm(e){this._internalRoot=e}Dm.prototype.unstable_scheduleHydration=function(e){if(e){var n=QA();e={blockedOn:null,target:e,priority:n};for(var s=0;s<Qa.length&&n!==0&&n<Qa[s].priority;s++);Qa.splice(s,0,e),s===0&&XA(e)}};function Iw(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Lm(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function GN(){}function b4(e,n,s,r,a){if(a){if(typeof r=="function"){var i=r;r=function(){var u=Mf(l);i.call(u)}}var l=vT(n,r,e,0,null,!1,!1,"",GN);return e._reactRootContainer=l,e[Ia]=l.current,vu(e.nodeType===8?e.parentNode:e),hl(),l}for(;a=e.lastChild;)e.removeChild(a);if(typeof r=="function"){var o=r;r=function(){var u=Mf(c);o.call(u)}}var c=$w(e,0,!1,null,null,!1,!1,"",GN);return e._reactRootContainer=c,e[Ia]=c.current,vu(e.nodeType===8?e.parentNode:e),hl(function(){Om(n,c,s,r)}),c}function Fm(e,n,s,r,a){var i=s._reactRootContainer;if(i){var l=i;if(typeof a=="function"){var o=a;a=function(){var c=Mf(l);o.call(c)}}Om(n,l,e,a)}else l=b4(s,n,e,a,r);return Mf(l)}qA=function(e){switch(e.tag){case 3:var n=e.stateNode;if(n.current.memoizedState.isDehydrated){var s=Fc(n.pendingLanes);s!==0&&(Jy(n,s|1),Cs(n,jn()),!(Tt&6)&&(Io=jn()+500,Ci()))}break;case 13:hl(function(){var r=Pa(e,1);if(r!==null){var a=ds();Tr(r,e,1,a)}}),Tw(e,1)}};Xy=function(e){if(e.tag===13){var n=Pa(e,134217728);if(n!==null){var s=ds();Tr(n,e,134217728,s)}Tw(e,134217728)}};YA=function(e){if(e.tag===13){var n=ci(e),s=Pa(e,n);if(s!==null){var r=ds();Tr(s,e,n,r)}Tw(e,n)}};QA=function(){return Ft};JA=function(e,n){var s=Ft;try{return Ft=e,n()}finally{Ft=s}};Qx=function(e,n,s){switch(n){case"input":if(Wx(e,s),n=s.name,s.type==="radio"&&n!=null){for(s=e;s.parentNode;)s=s.parentNode;for(s=s.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),n=0;n<s.length;n++){var r=s[n];if(r!==e&&r.form===e.form){var a=Am(r);if(!a)throw Error($e(90));AA(r),Wx(r,a)}}}break;case"textarea":TA(e,s);break;case"select":n=s.value,n!=null&&fo(e,!!s.multiple,n,!1)}};LA=Sw;FA=hl;var k4={usingClientEntryPoint:!1,Events:[cd,eo,Am,OA,DA,Sw]},Cc={findFiberByHostInstance:Yi,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},N4={bundleType:Cc.bundleType,version:Cc.version,rendererPackageName:Cc.rendererPackageName,rendererConfig:Cc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:_a.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=UA(e),e===null?null:e.stateNode},findFiberByHostInstance:Cc.findFiberByHostInstance||w4,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var nh=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!nh.isDisabled&&nh.supportsFiber)try{Nm=nh.inject(N4),sa=nh}catch{}}Gs.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=k4;Gs.createPortal=function(e,n){var s=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Iw(n))throw Error($e(200));return y4(e,n,null,s)};Gs.createRoot=function(e,n){if(!Iw(e))throw Error($e(299));var s=!1,r="",a=jT;return n!=null&&(n.unstable_strictMode===!0&&(s=!0),n.identifierPrefix!==void 0&&(r=n.identifierPrefix),n.onRecoverableError!==void 0&&(a=n.onRecoverableError)),n=$w(e,1,!1,null,null,s,!1,r,a),e[Ia]=n.current,vu(e.nodeType===8?e.parentNode:e),new Rw(n)};Gs.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var n=e._reactInternals;if(n===void 0)throw typeof e.render=="function"?Error($e(188)):(e=Object.keys(e).join(","),Error($e(268,e)));return e=UA(n),e=e===null?null:e.stateNode,e};Gs.flushSync=function(e){return hl(e)};Gs.hydrate=function(e,n,s){if(!Lm(n))throw Error($e(200));return Fm(null,e,n,!0,s)};Gs.hydrateRoot=function(e,n,s){if(!Iw(e))throw Error($e(405));var r=s!=null&&s.hydratedSources||null,a=!1,i="",l=jT;if(s!=null&&(s.unstable_strictMode===!0&&(a=!0),s.identifierPrefix!==void 0&&(i=s.identifierPrefix),s.onRecoverableError!==void 0&&(l=s.onRecoverableError)),n=vT(n,null,e,1,s??null,a,!1,i,l),e[Ia]=n.current,vu(e),r)for(e=0;e<r.length;e++)s=r[e],a=s._getVersion,a=a(s._source),n.mutableSourceEagerHydrationData==null?n.mutableSourceEagerHydrationData=[s,a]:n.mutableSourceEagerHydrationData.push(s,a);return new Dm(n)};Gs.render=function(e,n,s){if(!Lm(n))throw Error($e(200));return Fm(null,e,n,!1,s)};Gs.unmountComponentAtNode=function(e){if(!Lm(e))throw Error($e(40));return e._reactRootContainer?(hl(function(){Fm(null,null,e,!1,function(){e._reactRootContainer=null,e[Ia]=null})}),!0):!1};Gs.unstable_batchedUpdates=Sw;Gs.unstable_renderSubtreeIntoContainer=function(e,n,s,r){if(!Lm(s))throw Error($e(200));if(e==null||e._reactInternals===void 0)throw Error($e(38));return Fm(e,n,s,!1,r)};Gs.version="18.3.1-next-f1338f8080-20240426";function yT(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(yT)}catch(e){console.error(e)}}yT(),yA.exports=Gs;var Jo=yA.exports,wT,qN=Jo;wT=qN.createRoot,qN.hydrateRoot;const S4=["use","new","stop","quiet"];function YN(e){return S4.includes(e)}function C4(e,n){return[{group:"This chat",name:"use",args:"<agent>",desc:"Talk to another agent from here on",source:"chat"},{group:"This chat",name:"new",args:"[what it is for]",desc:"Make a new agent with Agent Father",source:"chat"},{group:"This chat",name:"stop",desc:n?`Stop what ${e} is doing`:"Nothing is running",key:"Esc",off:!n,source:"chat"},{group:"This chat",name:"quiet",args:"[1d|1w|off]",desc:"No messages from agents for a while",source:"chat"}]}const E4=e=>e.replace(/^plugin-/,"").replace(/[-_]+/g," ").replace(/^./,n=>n.toUpperCase());function A4(e){return e.map(n=>({group:`From ${E4(n.plugin)}`,name:n.name,...n.args?{args:n.args}:{},desc:n.description,source:"plugin"}))}const $4=e=>!!(e.args&&e.args.startsWith("<"));let Of=[];const $v=new Set;function T4(e){const n=e??[];JSON.stringify(n)!==JSON.stringify(Of)&&(Of=n,$v.forEach(s=>s()))}function R4(){return d.useSyncExternalStore(e=>($v.add(e),()=>$v.delete(e)),()=>Of,()=>Of)}var I4=Object.defineProperty,Xo=(e,n)=>I4(e,"name",{value:n,configurable:!0}),bT=!!(typeof window<"u"&&window.document&&window.document.createElement);function qe(e,n,{checkForDefaultPrevented:s=!0}={}){return Xo(function(a){if(e==null||e(a),s===!1||!a||!a.defaultPrevented)return n==null?void 0:n(a)},"handleEvent")}Xo(qe,"composeEventHandlers");function P4(e){var n;if(!bT)throw new Error("Cannot access window outside of the DOM");return((n=e==null?void 0:e.ownerDocument)==null?void 0:n.defaultView)??window}Xo(P4,"getOwnerWindow");function Tv(e){if(!bT)throw new Error("Cannot access document outside of the DOM");return(e==null?void 0:e.ownerDocument)??document}Xo(Tv,"getOwnerDocument");function kT(e,n=!1){const{activeElement:s}=Tv(e);if(!(s!=null&&s.nodeName))return null;if(NT(s)&&s.contentDocument)return kT(s.contentDocument.body,n);if(n){const r=s.getAttribute("aria-activedescendant");if(r){const a=Tv(s).getElementById(r);if(a)return a}}return s}Xo(kT,"getActiveElement");function NT(e){return e.tagName==="IFRAME"}Xo(NT,"isFrame");var M4=Object.defineProperty,Pw=(e,n)=>M4(e,"name",{value:n,configurable:!0});function Rv(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}Pw(Rv,"setRef");function ST(...e){return n=>{let s=!1;const r=e.map(a=>{const i=Rv(a,n);return!s&&typeof i=="function"&&(s=!0),i});if(s)return()=>{for(let a=0;a<r.length;a++){const i=r[a];typeof i=="function"?i():Rv(e[a],null)}}}}Pw(ST,"composeRefs");function Wt(...e){return d.useCallback(ST(...e),e)}Pw(Wt,"useComposedRefs");var O4=Object.defineProperty,cr=(e,n)=>O4(e,"name",{value:n,configurable:!0});function D4(e,n){const s=d.createContext(n);s.displayName=e+"Context";const r=cr(i=>{const{children:l,...o}=i,c=d.useMemo(()=>o,Object.values(o));return t.jsx(s.Provider,{value:c,children:l})},"Provider");r.displayName=e+"Provider";function a(i,l={}){const{optional:o=!1}=l,c=d.useContext(s);if(c)return c;if(n!==void 0)return n;if(!o)throw new Error(`\`${i}\` must be used within \`${e}\``)}return cr(a,"useContext"),[r,a]}cr(D4,"createContext");function Ur(e,n=[]){let s=[];function r(i,l){const o=d.createContext(l);o.displayName=i+"Context";const c=s.length;s=[...s,l];const u=cr(f=>{var j;const{scope:m,children:p,...x}=f,g=((j=m==null?void 0:m[e])==null?void 0:j[c])||o,b=d.useMemo(()=>x,Object.values(x));return t.jsx(g.Provider,{value:b,children:p})},"Provider");u.displayName=i+"Provider";function h(f,m,p={}){var j;const{optional:x=!1}=p,g=((j=m==null?void 0:m[e])==null?void 0:j[c])||o,b=d.useContext(g);if(b)return b;if(l!==void 0)return l;if(!x)throw new Error(`\`${f}\` must be used within \`${i}\``)}return cr(h,"useContext"),[u,h]}cr(r,"createContext");const a=cr(()=>{const i=s.map(l=>d.createContext(l));return cr(function(o){const c=(o==null?void 0:o[e])||i;return d.useMemo(()=>({[`__scope${e}`]:{...o,[e]:c}}),[o,c])},"useScope")},"createScope");return a.scopeName=e,[r,CT(a,...n)]}cr(Ur,"createContextScope");function CT(...e){const n=e[0];if(e.length===1)return n;const s=cr(()=>{const r=e.map(a=>({useScope:a(),scopeName:a.scopeName}));return cr(function(i){const l=r.reduce((o,{useScope:c,scopeName:u})=>{const f=c(i)[`__scope${u}`];return{...o,...f}},{});return d.useMemo(()=>({[`__scope${n.scopeName}`]:l}),[l])},"useComposedScopes")},"createScope");return s.scopeName=n.scopeName,s}cr(CT,"composeContextScopes");var L4=Object.defineProperty,Br=(e,n)=>L4(e,"name",{value:n,configurable:!0});function gi(e){const n=d.forwardRef((s,r)=>{let{children:a,...i}=s,l=null,o=!1;const c=[];Iv(a)&&typeof sh=="function"&&(a=sh(a._payload)),d.Children.forEach(a,m=>{var p;if(RT(m)){o=!0;const x=m;let g="child"in x.props?x.props.child:x.props.children;Iv(g)&&typeof sh=="function"&&(g=sh(g._payload)),l=F4(x,g),c.push((p=l==null?void 0:l.props)==null?void 0:p.children)}else c.push(m)}),l?l=d.cloneElement(l,void 0,c):!o&&d.Children.count(a)===1&&d.isValidElement(a)&&(l=a);const u=l?TT(l):void 0,h=Wt(r,u);if(!l){if(a||a===0)throw new Error(o?U4(e):z4(e));return a}const f=$T(i,l.props??{});return l.type!==d.Fragment&&(f.ref=r?h:u),d.cloneElement(l,f)});return n.displayName=`${e}.Slot`,n}Br(gi,"createSlot");var ET=Symbol.for("radix.slottable");function AT(e){const n=Br(s=>"child"in s?s.children(s.child):s.children,"Slottable");return n.displayName=`${e}.Slottable`,n.__radixId=ET,n}Br(AT,"createSlottable");var F4=Br((e,n)=>{if("child"in e.props){const s=e.props.child;return d.isValidElement(s)?d.cloneElement(s,void 0,e.props.children(s.props.children)):null}return d.isValidElement(n)?n:null},"getSlottableElementFromSlottable");function $T(e,n){const s={...n};for(const r in n){const a=e[r],i=n[r];/^on[A-Z]/.test(r)?a&&i?s[r]=(...o)=>{const c=i(...o);return a(...o),c}:a&&(s[r]=a):r==="style"?s[r]={...a,...i}:r==="className"&&(s[r]=[a,i].filter(Boolean).join(" "))}return{...e,...s}}Br($T,"mergeProps");function TT(e){var r,a;let n=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,s=n&&"isReactWarning"in n&&n.isReactWarning;return s?e.ref:(n=(a=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:a.get,s=n&&"isReactWarning"in n&&n.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}Br(TT,"getElementRef");function RT(e){return d.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ET}Br(RT,"isSlottable");var _4=Symbol.for("react.lazy");function Iv(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===_4&&"_payload"in e&&IT(e._payload)}Br(Iv,"isLazyComponent");function IT(e){return typeof e=="object"&&e!==null&&"then"in e}Br(IT,"isPromiseLike");var z4=Br(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),U4=Br(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),sh=qo[" use ".trim().toString()],B4=Object.defineProperty,Fn=(e,n)=>B4(e,"name",{value:n,configurable:!0});function _m(e){const n=e+"CollectionProvider",[s,r]=Ur(n),[a,i]=s(n,{collectionRef:{current:null},itemMap:new Map}),l=Fn(g=>{const{scope:b,children:j}=g,v=d.useRef(null),y=d.useRef(new Map).current;return t.jsx(a,{scope:b,itemMap:y,collectionRef:v,children:j})},"CollectionProvider");l.displayName=n;const o=e+"CollectionSlot",c=gi(o),u=d.forwardRef((g,b)=>{const{scope:j,children:v}=g,y=i(o,j),k=Wt(b,y.collectionRef);return t.jsx(c,{ref:k,children:v})});u.displayName=o;const h=e+"CollectionItemSlot",f="data-radix-collection-item",m=gi(h),p=d.forwardRef((g,b)=>{const{scope:j,children:v,...y}=g,k=d.useRef(null),N=Wt(b,k),w=i(h,j);return d.useEffect(()=>(w.itemMap.set(k,{ref:k,...y}),()=>void w.itemMap.delete(k))),t.jsx(m,{[f]:"",ref:N,children:v})});p.displayName=h;function x(g){const b=i(e+"CollectionConsumer",g);return d.useCallback(()=>{const v=b.collectionRef.current;if(!v)return[];const y=Array.from(v.querySelectorAll(`[${f}]`));return Array.from(b.itemMap.values()).sort((w,S)=>y.indexOf(w.ref.current)-y.indexOf(S.ref.current))},[b.collectionRef,b.itemMap])}return Fn(x,"useCollection"),[{Provider:l,Slot:u,ItemSlot:p},x,r]}Fn(_m,"createCollection");var QN=new WeakMap,kn,Os,yg=(Os=class extends Map{constructor(s){super(s);zi(this,kn);is(this,kn,[...super.keys()]),QN.set(this,!0)}set(s,r){return QN.get(this)&&(this.has(s)?Ut(this,kn)[Ut(this,kn).indexOf(s)]=s:Ut(this,kn).push(s)),super.set(s,r),this}insert(s,r,a){const i=this.has(r),l=Ut(this,kn).length,o=Mw(s);let c=o>=0?o:l+o;const u=c<0||c>=l?-1:c;if(u===this.size||i&&u===this.size-1||u===-1)return this.set(r,a),this;const h=this.size+(i?0:1);o<0&&c++;const f=[...Ut(this,kn)];let m,p=!1;for(let x=c;x<h;x++)if(c===x){let g=f[x];f[x]===r&&(g=f[x+1]),i&&this.delete(r),m=this.get(g),this.set(r,a)}else{!p&&f[x-1]===r&&(p=!0);const g=f[p?x:x-1],b=m;m=this.get(g),this.delete(g),this.set(g,b)}return this}with(s,r,a){const i=new Os(this);return i.insert(s,r,a),i}before(s){const r=Ut(this,kn).indexOf(s)-1;if(!(r<0))return this.entryAt(r)}setBefore(s,r,a){const i=Ut(this,kn).indexOf(s);return i===-1?this:this.insert(i,r,a)}after(s){let r=Ut(this,kn).indexOf(s);if(r=r===-1||r===this.size-1?-1:r+1,r!==-1)return this.entryAt(r)}setAfter(s,r,a){const i=Ut(this,kn).indexOf(s);return i===-1?this:this.insert(i+1,r,a)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return is(this,kn,[]),super.clear()}delete(s){const r=super.delete(s);return r&&Ut(this,kn).splice(Ut(this,kn).indexOf(s),1),r}deleteAt(s){const r=this.keyAt(s);return r!==void 0?this.delete(r):!1}at(s){const r=Kh(Ut(this,kn),s);if(r!==void 0)return this.get(r)}entryAt(s){const r=Kh(Ut(this,kn),s);if(r!==void 0)return[r,this.get(r)]}indexOf(s){return Ut(this,kn).indexOf(s)}keyAt(s){return Kh(Ut(this,kn),s)}from(s,r){const a=this.indexOf(s);if(a===-1)return;let i=a+r;return i<0&&(i=0),i>=this.size&&(i=this.size-1),this.at(i)}keyFrom(s,r){const a=this.indexOf(s);if(a===-1)return;let i=a+r;return i<0&&(i=0),i>=this.size&&(i=this.size-1),this.keyAt(i)}find(s,r){let a=0;for(const i of this){if(Reflect.apply(s,r,[i,a,this]))return i;a++}}findIndex(s,r){let a=0;for(const i of this){if(Reflect.apply(s,r,[i,a,this]))return a;a++}return-1}filter(s,r){const a=[];let i=0;for(const l of this)Reflect.apply(s,r,[l,i,this])&&a.push(l),i++;return new Os(a)}map(s,r){const a=[];let i=0;for(const l of this)a.push([l[0],Reflect.apply(s,r,[l,i,this])]),i++;return new Os(a)}reduce(...s){const[r,a]=s;let i=0,l=a??this.at(0);for(const o of this)i===0&&s.length===1?l=o:l=Reflect.apply(r,this,[l,o,i,this]),i++;return l}reduceRight(...s){const[r,a]=s;let i=a??this.at(-1);for(let l=this.size-1;l>=0;l--){const o=this.at(l);l===this.size-1&&s.length===1?i=o:i=Reflect.apply(r,this,[i,o,l,this])}return i}toSorted(s){const r=[...this.entries()].sort(s);return new Os(r)}toReversed(){const s=new Os;for(let r=this.size-1;r>=0;r--){const a=this.keyAt(r),i=this.get(a);s.set(a,i)}return s}toSpliced(...s){const r=[...this.entries()];return r.splice(...s),new Os(r)}slice(s,r){const a=new Os;let i=this.size-1;if(s===void 0)return a;s<0&&(s=s+this.size),r!==void 0&&r>0&&(i=r-1);for(let l=s;l<=i;l++){const o=this.keyAt(l),c=this.get(o);a.set(o,c)}return a}every(s,r){let a=0;for(const i of this){if(!Reflect.apply(s,r,[i,a,this]))return!1;a++}return!0}some(s,r){let a=0;for(const i of this){if(Reflect.apply(s,r,[i,a,this]))return!0;a++}return!1}},kn=new WeakMap,Fn(Os,"OrderedDict"),Os);function Kh(e,n){if("at"in Array.prototype)return Array.prototype.at.call(e,n);const s=PT(e,n);return s===-1?void 0:e[s]}Fn(Kh,"at");function PT(e,n){const s=e.length,r=Mw(n),a=r>=0?r:s+r;return a<0||a>=s?-1:a}Fn(PT,"toSafeIndex");function Mw(e){return e!==e||e===0?0:Math.trunc(e)}Fn(Mw,"toSafeInteger");function W4(e){const n=e+"CollectionProvider",[s,r]=Ur(n),[a,i]=s(n,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new yg,setItemMap:Fn(()=>{},"setItemMap")}),l=Fn(({state:y,...k})=>y?t.jsx(c,{...k,state:y}):t.jsx(o,{...k}),"CollectionProvider");l.displayName=n;const o=Fn(y=>{const k=b();return t.jsx(c,{...y,state:k})},"CollectionInit");o.displayName=n+"Init";const c=Fn(y=>{const{scope:k,children:N,state:w}=y,S=d.useRef(null),[C,E]=d.useState(null),$=Wt(S,E),[R,P]=w;return d.useEffect(()=>{if(!C)return;const O=DT(()=>{});return O.observe(C,{childList:!0,subtree:!0}),()=>{O.disconnect()}},[C]),t.jsx(a,{scope:k,itemMap:R,setItemMap:P,collectionRef:$,collectionRefObject:S,collectionElement:C,children:N})},"CollectionProviderImpl");c.displayName=n+"Impl";const u=e+"CollectionSlot",h=gi(u),f=d.forwardRef((y,k)=>{const{scope:N,children:w}=y,S=i(u,N),C=Wt(k,S.collectionRef);return t.jsx(h,{ref:C,children:w})});f.displayName=u;const m=e+"CollectionItemSlot",p="data-radix-collection-item",x=gi(m),g=d.forwardRef((y,k)=>{const{scope:N,children:w,...S}=y,C=d.useRef(null),[E,$]=d.useState(null),R=Wt(k,C,$),P=i(m,N),{setItemMap:O}=P,I=d.useRef(S);MT(I.current,S)||(I.current=S);const F=I.current;return d.useEffect(()=>{const U=F;return O(L=>E?L.has(E)?L.set(E,{...U,element:E}).toSorted(Pv):(L.set(E,{...U,element:E}),L.toSorted(Pv)):L),()=>{O(L=>!E||!L.has(E)?L:(L.delete(E),new yg(L)))}},[E,F,O]),t.jsx(x,{[p]:"",ref:R,children:w})});g.displayName=m;function b(){return d.useState(new yg)}Fn(b,"useInitCollection");function j(y){const{itemMap:k}=i(e+"CollectionConsumer",y);return k}return Fn(j,"useCollection"),[{Provider:l,Slot:f,ItemSlot:g},{createCollectionScope:r,useCollection:j,useInitCollection:b}]}Fn(W4,"createCollection");function MT(e,n){if(e===n)return!0;if(typeof e!="object"||typeof n!="object"||e==null||n==null)return!1;const s=Object.keys(e),r=Object.keys(n);if(s.length!==r.length)return!1;for(const a of s)if(!Object.prototype.hasOwnProperty.call(n,a)||e[a]!==n[a])return!1;return!0}Fn(MT,"shallowEqual");function OT(e,n){return!!(n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}Fn(OT,"isElementPreceding");function Pv(e,n){return!e[1].element||!n[1].element?0:OT(e[1].element,n[1].element)?-1:1}Fn(Pv,"sortByDocumentPosition");function DT(e){return new MutationObserver(s=>{for(const r of s)if(r.type==="childList"){e();return}})}Fn(DT,"getChildListObserver");var H4=Object.defineProperty,K4=(e,n)=>H4(e,"name",{value:n,configurable:!0}),V4=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],_t=V4.reduce((e,n)=>{const s=gi(`Primitive.${n}`),r=d.forwardRef((a,i)=>{const{asChild:l,...o}=a,c=l?s:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),t.jsx(c,{...o,ref:i})});return r.displayName=`Primitive.${n}`,{...e,[n]:r}},{});function zm(e,n){e&&Jo.flushSync(()=>e.dispatchEvent(n))}K4(zm,"dispatchDiscreteCustomEvent");var G4=Object.defineProperty,q4=(e,n)=>G4(e,"name",{value:n,configurable:!0});function hs(e){const n=d.useRef(e);return d.useEffect(()=>{n.current=e}),d.useMemo(()=>(...s)=>{var r;return(r=n.current)==null?void 0:r.call(n,...s)},[])}q4(hs,"useCallbackRef");var Y4=Object.defineProperty,Rn=(e,n)=>Y4(e,"name",{value:n,configurable:!0}),Mv="dismissableLayer.update",Q4="dismissableLayer.pointerDownOutside",J4="dismissableLayer.focusOutside",JN,Ow=d.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),Um=d.forwardRef(Rn(function(n,s){const{disableOutsidePointerEvents:r=!1,deferPointerDownOutside:a=!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:o,onInteractOutside:c,onDismiss:u,...h}=n,f=d.useContext(Ow),[m,p]=d.useState(null),x=(m==null?void 0:m.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,g]=d.useState({}),b=Wt(s,p),j=Array.from(f.layers),[v]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),y=v?j.indexOf(v):-1,k=m?j.indexOf(m):-1,N=f.layersWithOutsidePointerEventsDisabled.size>0,w=k>=y,S=d.useRef(!1),C=FT(P=>{l==null||l(P),c==null||c(P),P.defaultPrevented||u==null||u()},{ownerDocument:x,deferPointerDownOutside:a,isDeferredPointerDownOutsideRef:S,dismissableSurfaces:f.dismissableSurfaces,shouldHandlePointerDownOutside:d.useCallback(P=>{if(!(P instanceof Node))return!1;const O=[...f.branches].some(I=>I.contains(P));return w&&!O},[f.branches,w])}),E=_T(P=>{if(a&&S.current)return;const O=P.target;[...f.branches].some(F=>F.contains(O))||(o==null||o(P),c==null||c(P),P.defaultPrevented||u==null||u())},x),$=m?k===j.length-1:!1,R=hs(P=>{P.key==="Escape"&&(i==null||i(P),!P.defaultPrevented&&u&&(P.preventDefault(),u()))});return d.useEffect(()=>{if($)return x.addEventListener("keydown",R,{capture:!0}),()=>x.removeEventListener("keydown",R,{capture:!0})},[x,$,R]),d.useEffect(()=>{if(m)return r&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(JN=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(m)),f.layers.add(m),Ov(),()=>{r&&(f.layersWithOutsidePointerEventsDisabled.delete(m),f.layersWithOutsidePointerEventsDisabled.size===0&&(x.body.style.pointerEvents=JN))}},[m,x,r,f]),d.useEffect(()=>()=>{m&&(f.layers.delete(m),f.layersWithOutsidePointerEventsDisabled.delete(m),Ov())},[m,f]),d.useEffect(()=>{const P=Rn(()=>g({}),"handleUpdate");return document.addEventListener(Mv,P),()=>document.removeEventListener(Mv,P)},[]),t.jsx(_t.div,{...h,ref:b,style:{pointerEvents:N?w?"auto":"none":void 0,...n.style},onFocusCapture:qe(n.onFocusCapture,E.onFocusCapture),onBlurCapture:qe(n.onBlurCapture,E.onBlurCapture),onPointerDownCapture:qe(n.onPointerDownCapture,C.onPointerDownCapture)})},"DismissableLayer")),X4=d.forwardRef(Rn(function(n,s){const r=d.useContext(Ow),a=d.useRef(null),i=Wt(s,a);return d.useEffect(()=>{const l=a.current;if(l)return r.branches.add(l),()=>{r.branches.delete(l)}},[r.branches]),t.jsx(_t.div,{...n,ref:i})},"DismissableLayerBranch"));function LT(){const e=d.useContext(Ow),[n,s]=d.useState(null);return d.useEffect(()=>{if(n)return e.dismissableSurfaces.add(n),()=>{e.dismissableSurfaces.delete(n)}},[n,e.dismissableSurfaces]),s}Rn(LT,"useDismissableLayerSurface");var Z4=Rn(()=>!0,"IS_TRUE");function FT(e,n){const{ownerDocument:s=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:a,dismissableSurfaces:i,shouldHandlePointerDownOutside:l=Z4}=n,o=hs(e),c=d.useRef(!1),u=d.useRef(!1),h=d.useRef(new Map),f=d.useRef(()=>{});return d.useEffect(()=>{function m(){u.current=!1,a.current=!1,h.current.clear()}Rn(m,"resetOutsideInteraction");function p(){return Array.from(h.current.values()).some(Boolean)}Rn(p,"isOutsideInteractionIntercepted");function x(y){if(!u.current)return;const k=y.target;k instanceof Node&&[...i].some(w=>w.contains(k))||h.current.set(y.type,!0),y.type==="click"&&window.setTimeout(()=>{u.current&&f.current()},0)}Rn(x,"handleInteractionCapture");function g(y){u.current&&h.current.set(y.type,!1)}Rn(g,"handleInteractionBubble");const b=Rn(y=>{if(y.target&&!c.current){let k=function(){s.removeEventListener("click",f.current);const w=p();m(),w||Dw(Q4,o,N,{discrete:!0})};if(Rn(k,"handleAndDispatchPointerDownOutsideEvent"),!l(y.target)){s.removeEventListener("click",f.current),m(),c.current=!1;return}const N={originalEvent:y};u.current=!0,a.current=r&&y.button===0,h.current.clear(),!r||y.button!==0?k():(s.removeEventListener("click",f.current),f.current=k,s.addEventListener("click",f.current,{once:!0}))}else s.removeEventListener("click",f.current),m();c.current=!1},"handlePointerDown"),j=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const y of j)s.addEventListener(y,x,!0),s.addEventListener(y,g);const v=window.setTimeout(()=>{s.addEventListener("pointerdown",b)},0);return()=>{window.clearTimeout(v),s.removeEventListener("pointerdown",b),s.removeEventListener("click",f.current);for(const y of j)s.removeEventListener(y,x,!0),s.removeEventListener(y,g)}},[s,o,r,a,i,l]),{onPointerDownCapture:Rn(()=>c.current=!0,"onPointerDownCapture")}}Rn(FT,"usePointerDownOutside");function _T(e,n=globalThis==null?void 0:globalThis.document){const s=hs(e),r=d.useRef(!1);return d.useEffect(()=>{const a=Rn(i=>{i.target&&!r.current&&Dw(J4,s,{originalEvent:i},{discrete:!1})},"handleFocus");return n.addEventListener("focusin",a),()=>n.removeEventListener("focusin",a)},[n,s]),{onFocusCapture:Rn(()=>r.current=!0,"onFocusCapture"),onBlurCapture:Rn(()=>r.current=!1,"onBlurCapture")}}Rn(_T,"useFocusOutside");function Ov(){const e=new CustomEvent(Mv);document.dispatchEvent(e)}Rn(Ov,"dispatchUpdate");function Dw(e,n,s,{discrete:r}){const a=s.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:s});n&&a.addEventListener(e,n,{once:!0}),r?zm(a,i):a.dispatchEvent(i)}Rn(Dw,"handleAndDispatchCustomEvent");var ez=Um,tz=X4,Es=globalThis!=null&&globalThis.document?d.useLayoutEffect:()=>{},nz=Object.defineProperty,sz=(e,n)=>nz(e,"name",{value:n,configurable:!0}),Bm=d.forwardRef(sz(function(n,s){var c;const{container:r,...a}=n,[i,l]=d.useState(!1);Es(()=>l(!0),[]);const o=r||i&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return o?Jo.createPortal(t.jsx(_t.div,{...a,ref:s}),o):null},"Portal")),rz=Object.defineProperty,Oa=(e,n)=>rz(e,"name",{value:n,configurable:!0});function zT(e,n){return d.useReducer((s,r)=>n[s][r]??s,e)}Oa(zT,"useStateMachine");var ha=Oa(e=>{const{present:n,children:s}=e,r=UT(n),a=typeof s=="function"?s({present:r.isPresent}):d.Children.only(s),i=BT(r.ref,WT(a));return typeof s=="function"||r.isPresent?d.cloneElement(a,{ref:i}):null},"Presence");function UT(e){const[n,s]=d.useState(),r=d.useRef(null),a=d.useRef(e),i=d.useRef("none"),l=d.useRef(void 0),o=e?"mounted":"unmounted",[c,u]=zT(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return d.useEffect(()=>{c==="mounted"?(i.current=l.current??ql(r.current),l.current=void 0):i.current="none"},[c]),Es(()=>{const h=r.current,f=a.current;if(f!==e){const p=i.current,x=ql(h);e?(l.current=x,u("MOUNT")):x==="none"||(h==null?void 0:h.display)==="none"?u("UNMOUNT"):u(f&&p!==x?"ANIMATION_OUT":"UNMOUNT"),a.current=e}},[e,u]),Es(()=>{if(n){let h;const f=n.ownerDocument.defaultView??window,m=Oa(x=>{const b=ql(r.current).includes(CSS.escape(x.animationName));if(x.target===n&&b&&(u("ANIMATION_END"),!a.current)){const j=n.style.animationFillMode;n.style.animationFillMode="forwards",h=f.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=j)})}},"handleAnimationEnd"),p=Oa(x=>{x.target===n&&(i.current=ql(r.current))},"handleAnimationStart");return n.addEventListener("animationstart",p),n.addEventListener("animationcancel",m),n.addEventListener("animationend",m),()=>{f.clearTimeout(h),n.removeEventListener("animationstart",p),n.removeEventListener("animationcancel",m),n.removeEventListener("animationend",m)}}else u("ANIMATION_END")},[n,u]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:d.useCallback(h=>{if(h){const f=getComputedStyle(h);r.current=f,l.current=ql(f)}else r.current=null;s(h)},[])}}Oa(UT,"usePresence");function Dv(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}Oa(Dv,"setRef");function BT(...e){const n=d.useRef(e);return n.current=e,d.useCallback(s=>{const r=n.current;let a=!1;const i=r.map(l=>{const o=Dv(l,s);return!a&&typeof o=="function"&&(a=!0),o});if(a)return()=>{for(let l=0;l<i.length;l++){const o=i[l];typeof o=="function"?o():Dv(r[l],null)}}},[])}Oa(BT,"useStableComposedRefs");function ql(e){return(e==null?void 0:e.animationName)||"none"}Oa(ql,"getAnimationName");function WT(e){var r,a;let n=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,s=n&&"isReactWarning"in n&&n.isReactWarning;return s?e.ref:(n=(a=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:a.get,s=n&&"isReactWarning"in n&&n.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}Oa(WT,"getElementRef");var az=Object.defineProperty,iz=(e,n)=>az(e,"name",{value:n,configurable:!0}),XN=qo[" useEffectEvent ".trim().toString()],ZN=qo[" useInsertionEffect ".trim().toString()];function HT(e){if(typeof XN=="function")return XN(e);const n=d.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof ZN=="function"?ZN(()=>{n.current=e}):Es(()=>{n.current=e}),d.useMemo(()=>(...s)=>{var r;return(r=n.current)==null?void 0:r.call(n,...s)},[])}iz(HT,"useEffectEvent");var lz=Object.defineProperty,dd=(e,n)=>lz(e,"name",{value:n,configurable:!0}),oz=qo[" useInsertionEffect ".trim().toString()]||Es;function Ei({prop:e,defaultProp:n,onChange:s=dd(()=>{},"onChange"),caller:r}){const[a,i,l]=KT({defaultProp:n,onChange:s}),o=e!==void 0,c=o?e:a,u=d.useCallback(h=>{var f;if(o){const m=VT(h)?h(e):h;m!==e&&((f=l.current)==null||f.call(l,m))}else i(h)},[o,e,i,l]);return[c,u]}dd(Ei,"useControllableState");function KT({defaultProp:e,onChange:n}){const[s,r]=d.useState(e),a=d.useRef(s),i=d.useRef(n);return oz(()=>{i.current=n},[n]),d.useEffect(()=>{var l;a.current!==s&&((l=i.current)==null||l.call(i,s),a.current=s)},[s,a]),[s,r,i]}dd(KT,"useUncontrolledState");function VT(e){return typeof e=="function"}dd(VT,"isFunction");var eS=Symbol("RADIX:SYNC_STATE");function cz(e,n,s,r){const{prop:a,defaultProp:i,onChange:l,caller:o}=n,c=a!==void 0,u=HT(l),h=[{...s,state:i}];r&&h.push(r);const[f,m]=d.useReducer((b,j)=>{if(j.type===eS)return{...b,state:j.state};const v=e(b,j);return c&&!Object.is(v.state,b.state)&&u(v.state),v},...h),p=f.state,x=d.useRef(p);d.useEffect(()=>{x.current!==p&&(x.current=p,c||u(p))},[p,x,c]);const g=d.useMemo(()=>a!==void 0?{...f,state:a}:f,[f,a]);return d.useEffect(()=>{c&&!Object.is(a,f.state)&&m({type:eS,state:a})},[a,f.state,c]),[g,m]}dd(cz,"useControllableStateReducer");var uz=Object.defineProperty,dz=(e,n)=>uz(e,"name",{value:n,configurable:!0}),hz=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),Lw=d.forwardRef(dz(function(n,s){return t.jsx(_t.span,{...n,ref:s,style:{...hz,...n.style}})},"VisuallyHidden")),fz=Lw,mz=Object.defineProperty,Bt=(e,n)=>mz(e,"name",{value:n,configurable:!0}),GT="ToastProvider",[Fw,qT,pz]=_m("Toast"),[YT,Rue]=Ur("Toast",[pz]),[gz,Wm]=YT(GT),xz=Bt(e=>{const{__scopeToast:n,label:s="Notification",duration:r=5e3,swipeDirection:a="right",swipeThreshold:i=50,announcerContainer:l,children:o}=e,[c,u]=d.useState(null),[h,f]=d.useState(0),m=d.useRef(!1);return s.trim()||console.error(`Invalid prop \`label\` supplied to \`${GT}\`. Expected non-empty \`string\`.`),t.jsx(Fw.Provider,{scope:n,children:t.jsx(gz,{scope:n,label:s,duration:r,swipeDirection:a,swipeThreshold:i,toastCount:h,viewport:c,onViewportChange:u,onToastAdd:d.useCallback(()=>f(p=>p+1),[]),onToastRemove:d.useCallback(()=>f(p=>p-1),[]),isClosePausedRef:m,announcerContainer:l,children:o})})},"ToastProvider"),vz="ToastViewport",jz=["F8"],Lv="toast.viewportPause",Fv="toast.viewportResume",yz=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,hotkey:a=jz,label:i="Notifications ({hotkey})",...l}=n,o=Wm(vz,r),c=qT(r),u=d.useRef(null),h=d.useRef(null),f=d.useRef(null),m=d.useRef(null),p=Wt(s,m,o.onViewportChange),x=a.join("+").replace(/Key/g,"").replace(/Digit/g,""),g=o.toastCount>0;d.useEffect(()=>{const j=Bt(v=>{var k;a.length!==0&&a.every(N=>v[N]||v.code===N)&&((k=m.current)==null||k.focus())},"handleKeyDown");return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[a]),d.useEffect(()=>{const j=u.current,v=m.current;if(g&&j&&v){const y=Bt(()=>{if(!o.isClosePausedRef.current){const S=new CustomEvent(Lv);v.dispatchEvent(S),o.isClosePausedRef.current=!0}},"handlePause"),k=Bt(()=>{if(o.isClosePausedRef.current){const S=new CustomEvent(Fv);v.dispatchEvent(S),o.isClosePausedRef.current=!1}},"handleResume"),N=Bt(S=>{!j.contains(S.relatedTarget)&&k()},"handleFocusOutResume"),w=Bt(()=>{j.contains(document.activeElement)||k()},"handlePointerLeaveResume");return j.addEventListener("focusin",y),j.addEventListener("focusout",N),j.addEventListener("pointermove",y),j.addEventListener("pointerleave",w),window.addEventListener("blur",y),window.addEventListener("focus",k),()=>{j.removeEventListener("focusin",y),j.removeEventListener("focusout",N),j.removeEventListener("pointermove",y),j.removeEventListener("pointerleave",w),window.removeEventListener("blur",y),window.removeEventListener("focus",k)}}},[g,o.isClosePausedRef]);const b=d.useCallback(({tabbingDirection:j})=>{const y=c().map(k=>{const N=k.ref.current,w=[N,...ZT(N)];return j==="forwards"?w:w.reverse()});return(j==="forwards"?y.reverse():y).flat()},[c]);return d.useEffect(()=>{const j=m.current;if(j){const v=Bt(y=>{var w,S,C;const k=y.altKey||y.ctrlKey||y.metaKey;if(y.key==="Tab"&&!k){const E=document.activeElement,$=y.shiftKey;if(y.target===j&&$){(w=h.current)==null||w.focus();return}const O=b({tabbingDirection:$?"backwards":"forwards"}),I=O.findIndex(F=>F===E);Vh(O.slice(I+1))?y.preventDefault():$?(S=h.current)==null||S.focus():(C=f.current)==null||C.focus()}},"handleKeyDown");return j.addEventListener("keydown",v),()=>j.removeEventListener("keydown",v)}},[c,b]),t.jsxs(tz,{ref:u,role:"region","aria-label":i.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:g?void 0:"none"},children:[g&&t.jsx(tS,{ref:h,onFocusFromOutsideViewport:()=>{const j=b({tabbingDirection:"forwards"});Vh(j)}}),t.jsx(Fw.Slot,{scope:r,children:t.jsx(_t.ol,{tabIndex:-1,...l,ref:p})}),g&&t.jsx(tS,{ref:f,onFocusFromOutsideViewport:()=>{const j=b({tabbingDirection:"backwards"});Vh(j)}})]})},"ToastViewport")),wz="ToastFocusProxy",tS=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,onFocusFromOutsideViewport:a,...i}=n,l=Wm(wz,r);return t.jsx(Lw,{tabIndex:0,...i,ref:s,style:{position:"fixed"},onFocus:o=>{var h;const c=o.relatedTarget;!((h=l.viewport)!=null&&h.contains(c))&&a()}})},"ToastFocusProxy")),Hm="Toast",bz="toast.swipeStart",kz="toast.swipeMove",Nz="toast.swipeCancel",Sz="toast.swipeEnd",Cz=d.forwardRef(Bt(function(n,s){const{forceMount:r,open:a,defaultOpen:i,onOpenChange:l,...o}=n,[c,u]=Ei({prop:a,defaultProp:i??!0,onChange:l,caller:Hm});return t.jsx(ha,{present:r||c,children:t.jsx($z,{open:c,...o,ref:s,onClose:()=>u(!1),onPause:hs(n.onPause),onResume:hs(n.onResume),onSwipeStart:qe(n.onSwipeStart,h=>{h.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:qe(n.onSwipeMove,h=>{const{x:f,y:m}=h.detail.delta;h.currentTarget.setAttribute("data-swipe","move"),h.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${f}px`),h.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:qe(n.onSwipeCancel,h=>{h.currentTarget.setAttribute("data-swipe","cancel"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),h.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),h.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:qe(n.onSwipeEnd,h=>{const{x:f,y:m}=h.detail.delta;h.currentTarget.setAttribute("data-swipe","end"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),h.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${f}px`),h.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),u(!1)})})})},"Toast")),[Ez,Az]=YT(Hm,{onClose(){}}),$z=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,type:a="foreground",duration:i,open:l,onClose:o,onEscapeKeyDown:c,onPause:u,onResume:h,onSwipeStart:f,onSwipeMove:m,onSwipeCancel:p,onSwipeEnd:x,...g}=n,b=Wm(Hm,r),j=qT(r),[v,y]=d.useState(null),k=Wt(s,y),N=d.useRef(null),w=d.useRef(null),S=i||b.duration,C=d.useRef(0),E=d.useRef(S),$=d.useRef(0),{onToastAdd:R,onToastRemove:P}=b,O=hs(()=>{var L;(v==null?void 0:v.contains(document.activeElement))&&((L=b.viewport)==null||L.focus()),o()}),I=d.useCallback(U=>{!U||U===1/0||(window.clearTimeout($.current),C.current=new Date().getTime(),$.current=window.setTimeout(O,U))},[O]);d.useEffect(()=>{const U=b.viewport;if(U){const L=Bt(()=>{I(E.current),h==null||h()},"handleResume"),M=Bt(()=>{const z=new Date().getTime()-C.current;E.current=E.current-z,window.clearTimeout($.current),u==null||u()},"handlePause");return U.addEventListener(Lv,M),U.addEventListener(Fv,L),()=>{U.removeEventListener(Lv,M),U.removeEventListener(Fv,L)}}},[b.viewport,S,u,h,I]),d.useEffect(()=>{l&&!b.isClosePausedRef.current&&I(S)},[l,S,b.isClosePausedRef,I]),d.useEffect(()=>()=>{window.clearTimeout($.current)},[]),d.useEffect(()=>(R(),()=>P()),[R,P]);const F=d.useMemo(()=>v?_w(v):null,[v]);return b.viewport?t.jsxs(t.Fragment,{children:[F&&t.jsx(Tz,{__scopeToast:r,role:"status","aria-live":a==="foreground"?"assertive":"polite",children:F}),t.jsx(Ez,{scope:r,onClose:O,children:Jo.createPortal(t.jsx(Fw.ItemSlot,{scope:r,children:t.jsx(ez,{asChild:!0,onEscapeKeyDown:qe(c,U=>{j().some(M=>{var z;return(z=M.ref.current)==null?void 0:z.contains(U.target)})||O()}),children:t.jsx(_t.li,{tabIndex:0,"data-state":l?"open":"closed","data-swipe-direction":b.swipeDirection,...g,ref:k,style:{userSelect:"none",touchAction:"none",...n.style},onKeyDown:qe(n.onKeyDown,U=>{U.key==="Escape"&&(c==null||c(U.nativeEvent),U.nativeEvent.defaultPrevented||O())}),onPointerDown:qe(n.onPointerDown,U=>{U.button===0&&(N.current={x:U.clientX,y:U.clientY})}),onPointerMove:qe(n.onPointerMove,U=>{if(!N.current)return;const L=U.clientX-N.current.x,M=U.clientY-N.current.y,z=!!w.current,D=["left","right"].includes(b.swipeDirection),H=["left","up"].includes(b.swipeDirection)?Math.min:Math.max,K=D?H(0,L):0,X=D?0:H(0,M),W=U.pointerType==="touch"?10:2,me={x:K,y:X},fe={originalEvent:U,delta:me};z?(w.current=me,zc(kz,m,fe,{discrete:!1})):nS(me,b.swipeDirection,W)?(w.current=me,zc(bz,f,fe,{discrete:!1}),U.target.setPointerCapture(U.pointerId)):(Math.abs(L)>W||Math.abs(M)>W)&&(N.current=null)}),onPointerUp:qe(n.onPointerUp,U=>{const L=w.current,M=U.target;if(M.hasPointerCapture(U.pointerId)&&M.releasePointerCapture(U.pointerId),w.current=null,N.current=null,L){const z=U.currentTarget,D={originalEvent:U,delta:L};nS(L,b.swipeDirection,b.swipeThreshold)?zc(Sz,x,D,{discrete:!0}):zc(Nz,p,D,{discrete:!0}),z.addEventListener("click",H=>H.preventDefault(),{once:!0})}})})})}),b.viewport)})]}):null},"ToastImpl")),Tz=Bt(e=>{const{__scopeToast:n,children:s,...r}=e,a=Wm(Hm,n),[i,l]=d.useState(!1),[o,c]=d.useState(!1);return JT(()=>l(!0)),d.useEffect(()=>{const u=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(u)},[]),o?null:t.jsx(Bm,{asChild:!0,container:a.announcerContainer||void 0,children:t.jsx(Lw,{...r,children:i&&t.jsxs(t.Fragment,{children:[a.label," ",s]})})})},"ToastAnnounce"),Rz=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,...a}=n;return t.jsx(_t.div,{...a,ref:s})},"ToastTitle")),Iz=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,...a}=n;return t.jsx(_t.div,{...a,ref:s})},"ToastDescription")),Pz="ToastAction",Mz=d.forwardRef(Bt(function(n,s){const{altText:r,...a}=n;return r.trim()?t.jsx(QT,{altText:r,asChild:!0,children:t.jsx(Dz,{...a,ref:s})}):(console.error(`Invalid prop \`altText\` supplied to \`${Pz}\`. Expected non-empty \`string\`.`),null)},"ToastAction")),Oz="ToastClose",Dz=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,...a}=n,i=Az(Oz,r);return t.jsx(QT,{asChild:!0,children:t.jsx(_t.button,{type:"button",...a,ref:s,onClick:qe(n.onClick,i.onClose)})})},"ToastClose")),QT=d.forwardRef(Bt(function(n,s){const{__scopeToast:r,altText:a,...i}=n;return t.jsx(_t.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":a||void 0,...i,ref:s})},"ToastAnnounceExclude"));function _w(e){const n=[];return Array.from(e.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&n.push(r.textContent),XT(r)){const a=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!a)if(i){const l=r.dataset.radixToastAnnounceAlt;l&&n.push(l)}else n.push(..._w(r))}}),n}Bt(_w,"getAnnounceTextContent");function zc(e,n,s,{discrete:r}){const a=s.originalEvent.currentTarget,i=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:s});n&&a.addEventListener(e,n,{once:!0}),r?zm(a,i):a.dispatchEvent(i)}Bt(zc,"handleAndDispatchCustomEvent");var nS=Bt((e,n,s=0)=>{const r=Math.abs(e.x),a=Math.abs(e.y),i=r>a;return n==="left"||n==="right"?i&&r>s:!i&&a>s},"isDeltaInDirection");function JT(e=()=>{}){const n=hs(e);Es(()=>{let s=0,r=0;return s=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(n)),()=>{window.cancelAnimationFrame(s),window.cancelAnimationFrame(r)}},[n])}Bt(JT,"useNextFrame");function XT(e){return e.nodeType===e.ELEMENT_NODE}Bt(XT,"isHTMLElement");function ZT(e){const n=[],s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:Bt(r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;s.nextNode();)n.push(s.currentNode);return n}Bt(ZT,"getTabbableCandidates");function Vh(e){const n=document.activeElement;return e.some(s=>s===n?!0:(s.focus(),document.activeElement!==n))}Bt(Vh,"focusFirst");var sS=xz,rS=yz,Lz=Cz,Fz=Rz,_z=Iz,zz=Mz,Uz=Object.defineProperty,Bz=(e,n)=>Uz(e,"name",{value:n,configurable:!0}),Wz=qo[" useId ".trim().toString()]||(()=>{}),Hz=0;function Rr(e){const[n,s]=d.useState(Wz());return Es(()=>{e||s(r=>r??String(Hz++))},[e]),e||(n?`radix-${n}`:"")}Bz(Rr,"useId");const Kz=["top","right","bottom","left"],xi=Math.min,Ea=Math.max,Df=Math.round,rh=Math.floor,Aa=e=>({x:e,y:e}),Vz={left:"right",right:"left",bottom:"top",top:"bottom"};function eR(e,n,s){return Ea(e,xi(n,s))}function Da(e,n){return typeof e=="function"?e(n):e}function vi(e){return e.split("-")[0]}function Zo(e){return e.split("-")[1]}function zw(e){return e==="x"?"y":"x"}function Uw(e){return e==="y"?"height":"width"}function Zr(e){const n=e[0];return n==="t"||n==="b"?"y":"x"}function Bw(e){return zw(Zr(e))}function Gz(e,n,s){s===void 0&&(s=!1);const r=Zo(e),a=Bw(e),i=Uw(a);let l=a==="x"?r===(s?"end":"start")?"right":"left":r==="start"?"bottom":"top";return n.reference[i]>n.floating[i]&&(l=Lf(l)),[l,Lf(l)]}function qz(e){const n=Lf(e);return[_v(e),n,_v(n)]}function _v(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const aS=["left","right"],iS=["right","left"],Yz=["top","bottom"],Qz=["bottom","top"];function Jz(e,n,s){switch(e){case"top":case"bottom":return s?n?iS:aS:n?aS:iS;case"left":case"right":return n?Yz:Qz;default:return[]}}function Xz(e,n,s,r){const a=Zo(e);let i=Jz(vi(e),s==="start",r);return a&&(i=i.map(l=>l+"-"+a),n&&(i=i.concat(i.map(_v)))),i}function Lf(e){const n=vi(e);return Vz[n]+e.slice(n.length)}function Zz(e){var n,s,r,a;return{top:(n=e.top)!=null?n:0,right:(s=e.right)!=null?s:0,bottom:(r=e.bottom)!=null?r:0,left:(a=e.left)!=null?a:0}}function tR(e){return typeof e!="number"?Zz(e):{top:e,right:e,bottom:e,left:e}}function Ff(e){const{x:n,y:s,width:r,height:a}=e;return{width:r,height:a,top:s,left:n,right:n+r,bottom:s+a,x:n,y:s}}function lS(e,n,s){let{reference:r,floating:a}=e;const i=Zr(n),l=Bw(n),o=Uw(l),c=vi(n),u=i==="y",h=r.x+r.width/2-a.width/2,f=r.y+r.height/2-a.height/2,m=r[o]/2-a[o]/2;let p;switch(c){case"top":p={x:h,y:r.y-a.height};break;case"bottom":p={x:h,y:r.y+r.height};break;case"right":p={x:r.x+r.width,y:f};break;case"left":p={x:r.x-a.width,y:f};break;default:p={x:r.x,y:r.y}}const x=Zo(n);return x&&(p[l]+=m*(x==="end"?1:-1)*(s&&u?-1:1)),p}async function e3(e,n){var s;n===void 0&&(n={});const{x:r,y:a,platform:i,rects:l,elements:o,strategy:c}=e,{boundary:u="clippingAncestors",rootBoundary:h="viewport",elementContext:f="floating",altBoundary:m=!1,padding:p=0}=Da(n,e),x=tR(p),b=o[m?f==="floating"?"reference":"floating":f],j=Ff(await i.getClippingRect({element:(s=await(i.isElement==null?void 0:i.isElement(b)))==null||s?b:b.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:u,rootBoundary:h,strategy:c})),v=f==="floating"?{x:r,y:a,width:l.floating.width,height:l.floating.height}:l.reference,y=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),k=await(i.isElement==null?void 0:i.isElement(y))&&await(i.getScale==null?void 0:i.getScale(y))||{x:1,y:1},N=Ff(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:v,offsetParent:y,strategy:c}):v);return{top:(j.top-N.top+x.top)/k.y,bottom:(N.bottom-j.bottom+x.bottom)/k.y,left:(j.left-N.left+x.left)/k.x,right:(N.right-j.right+x.right)/k.x}}const t3=50,n3=async(e,n,s)=>{const{placement:r="bottom",strategy:a="absolute",middleware:i=[],platform:l}=s,o=l.detectOverflow?l:{...l,detectOverflow:e3},c=await(l.isRTL==null?void 0:l.isRTL(n));let u=await l.getElementRects({reference:e,floating:n,strategy:a}),{x:h,y:f}=lS(u,r,c),m=r,p=0;const x={};for(let g=0;g<i.length;g++){const b=i[g];if(!b)continue;const{name:j,fn:v}=b,{x:y,y:k,data:N,reset:w}=await v({x:h,y:f,initialPlacement:r,placement:m,strategy:a,middlewareData:x,rects:u,platform:o,elements:{reference:e,floating:n}});h=y??h,f=k??f,x[j]={...x[j],...N},w&&p<t3&&(p++,typeof w=="object"&&(w.placement&&(m=w.placement),w.rects&&(u=w.rects===!0?await l.getElementRects({reference:e,floating:n,strategy:a}):w.rects),{x:h,y:f}=lS(u,m,c)),g=-1)}return{x:h,y:f,placement:m,strategy:a,middlewareData:x}},s3=e=>({name:"arrow",options:e,async fn(n){const{x:s,y:r,placement:a,rects:i,platform:l,elements:o,middlewareData:c}=n,{element:u,padding:h=0}=Da(e,n)||{};if(u==null)return{};const f=tR(h),m={x:s,y:r},p=Bw(a),x=Uw(p),g=await l.getDimensions(u),b=p==="y",j=b?"top":"left",v=b?"bottom":"right",y=b?"clientHeight":"clientWidth",k=i.reference[x]+i.reference[p]-m[p]-i.floating[x],N=m[p]-i.reference[p],w=await(l.getOffsetParent==null?void 0:l.getOffsetParent(u));let S=w?w[y]:0;(!S||!await(l.isElement==null?void 0:l.isElement(w)))&&(S=o.floating[y]||i.floating[x]);const C=k/2-N/2,E=S/2-g[x]/2-1,$=xi(f[j],E),R=xi(f[v],E),P=S-g[x]-R,O=S/2-g[x]/2+C,I=eR($,O,P),F=!c.arrow&&Zo(a)!=null&&O!==I&&i.reference[x]/2-(O<$?$:R)-g[x]/2<0,U=F?O<$?O-$:O-P:0;return{[p]:m[p]+U,data:{[p]:I,centerOffset:O-I-U,...F&&{alignmentOffset:U}},reset:F}}}),r3=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var s,r;const{placement:a,middlewareData:i,rects:l,initialPlacement:o,platform:c,elements:u}=n,{mainAxis:h=!0,crossAxis:f=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:g=!0,...b}=Da(e,n);if((s=i.arrow)!=null&&s.alignmentOffset)return{};const j=vi(a),v=Zr(o),y=vi(o)===o,k=await(c.isRTL==null?void 0:c.isRTL(u.floating)),N=m||(y||!g?[Lf(o)]:qz(o)),w=x!=="none";!m&&w&&N.push(...Xz(o,g,x,k));const S=[o,...N],C=await c.detectOverflow(n,b),E=[];let $=((r=i.flip)==null?void 0:r.overflows)||[];if(h&&E.push(C[j]),f){const I=Gz(a,l,k);E.push(C[I[0]],C[I[1]])}if($=[...$,{placement:a,overflows:E}],!E.every(I=>I<=0)){var R,P;const I=(((R=i.flip)==null?void 0:R.index)||0)+1,F=S[I];if(F&&(!(f==="alignment"?v!==Zr(F):!1)||$.every(M=>Zr(M.placement)===v?M.overflows[0]>0:!0)))return{data:{index:I,overflows:$},reset:{placement:F}};let U=(P=$.filter(L=>L.overflows[0]<=0).sort((L,M)=>L.overflows[1]-M.overflows[1])[0])==null?void 0:P.placement;if(!U)switch(p){case"bestFit":{var O;const L=(O=$.filter(M=>{if(w){const z=Zr(M.placement);return z===v||z==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(z=>z>0).reduce((z,D)=>z+D,0)]).sort((M,z)=>M[1]-z[1])[0])==null?void 0:O[0];L&&(U=L);break}case"initialPlacement":U=o;break}if(a!==U)return{reset:{placement:U}}}return{}}}};function oS(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function cS(e){return Kz.some(n=>e[n]>=0)}const a3=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:s,platform:r}=n,{strategy:a="referenceHidden",...i}=Da(e,n);switch(a){case"referenceHidden":{const l=await r.detectOverflow(n,{...i,elementContext:"reference"}),o=oS(l,s.reference);return{data:{referenceHiddenOffsets:o,referenceHidden:cS(o)}}}case"escaped":{const l=await r.detectOverflow(n,{...i,altBoundary:!0}),o=oS(l,s.floating);return{data:{escapedOffsets:o,escaped:cS(o)}}}default:return{}}}}},nR=new Set(["left","top"]);async function i3(e,n){const{placement:s,platform:r,elements:a}=e,i=await(r.isRTL==null?void 0:r.isRTL(a.floating)),l=vi(s),o=Zo(s),c=Zr(s)==="y",u=nR.has(l)?-1:1,h=i&&c?-1:1,f=Da(n,e);let{mainAxis:m,crossAxis:p,alignmentAxis:x}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return o&&typeof x=="number"&&(p=o==="end"?x*-1:x),c?{x:p*h,y:m*u}:{x:m*u,y:p*h}}const l3=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var s,r;const{x:a,y:i,placement:l,middlewareData:o}=n,c=await i3(n,e);return l===((s=o.offset)==null?void 0:s.placement)&&(r=o.arrow)!=null&&r.alignmentOffset?{}:{x:a+c.x,y:i+c.y,data:{...c,placement:l}}}}},o3=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:s,y:r,placement:a,platform:i}=n,{mainAxis:l=!0,crossAxis:o=!1,limiter:c={fn:v=>{let{x:y,y:k}=v;return{x:y,y:k}}},...u}=Da(e,n),h={x:s,y:r},f=await i.detectOverflow(n,u),m=Zr(a),p=zw(m);let x=h[p],g=h[m];const b=(v,y)=>eR(y+f[v==="y"?"top":"left"],y,y-f[v==="y"?"bottom":"right"]);l&&(x=b(p,x)),o&&(g=b(m,g));const j=c.fn({...n,[p]:x,[m]:g});return{...j,data:{x:j.x-s,y:j.y-r,enabled:{[p]:l,[m]:o}}}}}},c3=function(e){return e===void 0&&(e={}),{options:e,fn(n){var s,r;const{x:a,y:i,placement:l,rects:o,middlewareData:c}=n,{offset:u=0,mainAxis:h=!0,crossAxis:f=!0}=Da(e,n),m={x:a,y:i},p=Zr(l),x=zw(p);let g=m[x],b=m[p];const j=Da(u,n),v=typeof j=="number"?{mainAxis:j,crossAxis:0}:{mainAxis:(s=j.mainAxis)!=null?s:0,crossAxis:(r=j.crossAxis)!=null?r:0};if(h){const N=x==="y"?"height":"width",w=o.reference[x]-o.floating[N]+v.mainAxis,S=o.reference[x]+o.reference[N]-v.mainAxis;g<w?g=w:g>S&&(g=S)}if(f){var y,k;const N=x==="y"?"width":"height",w=nR.has(vi(l)),S=o.reference[p]-o.floating[N]+(w&&((y=c.offset)==null?void 0:y[p])||0)+(w?0:v.crossAxis),C=o.reference[p]+o.reference[N]+(w?0:((k=c.offset)==null?void 0:k[p])||0)-(w?v.crossAxis:0);b<S?b=S:b>C&&(b=C)}return{[x]:g,[p]:b}}}},u3=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){const{placement:s,rects:r,platform:a,elements:i}=n,{apply:l=()=>{},...o}=Da(e,n),c=await a.detectOverflow(n,o),u=vi(s),h=Zo(s),f=Zr(s)==="y",{width:m,height:p}=r.floating;let x,g;u==="top"||u==="bottom"?(x=u,g=h===(await(a.isRTL==null?void 0:a.isRTL(i.floating))?"start":"end")?"left":"right"):(g=u,x=h==="end"?"top":"bottom");const b=p-c.top-c.bottom,j=m-c.left-c.right,v=xi(p-c[x],b),y=xi(m-c[g],j),k=n.middlewareData.shift,N=!k;let w=v,S=y;k!=null&&k.enabled.x&&(S=j),k!=null&&k.enabled.y&&(w=b),N&&!h&&(f?S=m-2*Ea(c.left,c.right):w=p-2*Ea(c.top,c.bottom)),await l({...n,availableWidth:S,availableHeight:w});const C=await a.getDimensions(i.floating);return m!==C.width||p!==C.height?{reset:{rects:!0}}:{}}}};function Km(){return typeof window<"u"}function ec(e){return sR(e)?(e.nodeName||"").toLowerCase():"#document"}function As(e){var n;return(e==null||(n=e.ownerDocument)==null?void 0:n.defaultView)||window}function za(e){var n;return(n=(sR(e)?e.ownerDocument:e.document)||window.document)==null?void 0:n.documentElement}function sR(e){return Km()?e instanceof Node||e instanceof As(e).Node:!1}function la(e){return Km()?e instanceof Element||e instanceof As(e).Element:!1}function Ai(e){return Km()?e instanceof HTMLElement||e instanceof As(e).HTMLElement:!1}function uS(e){return!Km()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof As(e).ShadowRoot}function Vm(e){const{overflow:n,overflowX:s,overflowY:r,display:a}=oa(e);return/auto|scroll|overlay|hidden|clip/.test(n+r+s)&&a!=="inline"&&a!=="contents"}function d3(e){return/^(table|td|th)$/.test(ec(e))}function Gm(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const h3=/transform|translate|scale|rotate|perspective|filter/,f3=/paint|layout|strict|content/,Ui=e=>!!e&&e!=="none";let wg;function Ww(e){const n=la(e)?oa(e):e;return Ui(n.transform)||Ui(n.translate)||Ui(n.scale)||Ui(n.rotate)||Ui(n.perspective)||!Hw()&&(Ui(n.backdropFilter)||Ui(n.filter))||h3.test(n.willChange||"")||f3.test(n.contain||"")}function m3(e){let n=fl(e);for(;Ai(n)&&!Eu(n);){if(Ww(n))return n;if(Gm(n))return null;n=fl(n)}return null}function Hw(){return wg==null&&(wg=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),wg}function Eu(e){return/^(html|body|#document)$/.test(ec(e))}function oa(e){return As(e).getComputedStyle(e)}function qm(e){return la(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function fl(e){if(ec(e)==="html")return e;const n=e.assignedSlot||e.parentNode||uS(e)&&e.host||za(e);return uS(n)?n.host:n}function rR(e){const n=fl(e);return Eu(n)?(e.ownerDocument||e).body:Ai(n)&&Vm(n)?n:rR(n)}function Au(e,n,s){var r;n===void 0&&(n=[]),s===void 0&&(s=!0);const a=rR(e),i=a===((r=e.ownerDocument)==null?void 0:r.body),l=As(a);if(i){const o=zv(l);return n.concat(l,l.visualViewport||[],Vm(a)?a:[],o&&s?Au(o):[])}else return n.concat(a,Au(a,[],s))}function zv(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function aR(e){const n=oa(e);let s=parseFloat(n.width)||0,r=parseFloat(n.height)||0;const a=Ai(e),i=a?e.offsetWidth:s,l=a?e.offsetHeight:r,o=Df(s)!==i||Df(r)!==l;return o&&(s=i,r=l),{width:s,height:r,$:o}}function Kw(e){return la(e)?e:e.contextElement}function jo(e){const n=Kw(e);if(!Ai(n))return Aa(1);const s=n.getBoundingClientRect(),{width:r,height:a,$:i}=aR(n);let l=(i?Df(s.width):s.width)/r,o=(i?Df(s.height):s.height)/a;return(!l||!Number.isFinite(l))&&(l=1),(!o||!Number.isFinite(o))&&(o=1),{x:l,y:o}}const p3=Aa(0);function iR(e){const n=As(e);return!Hw()||!n.visualViewport?p3:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function g3(e,n,s){return n===void 0&&(n=!1),!!s&&n&&s===As(e)}function ml(e,n,s,r){n===void 0&&(n=!1),s===void 0&&(s=!1);const a=e.getBoundingClientRect(),i=Kw(e);let l=Aa(1);n&&(r?la(r)&&(l=jo(r)):l=jo(e));const o=g3(i,s,r)?iR(i):Aa(0);let c=(a.left+o.x)/l.x,u=(a.top+o.y)/l.y,h=a.width/l.x,f=a.height/l.y;if(i&&r){const m=As(i),p=la(r)?As(r):r;let x=m,g=zv(x);for(;g&&p!==x;){const b=jo(g),j=g.getBoundingClientRect(),v=oa(g),y=j.left+(g.clientLeft+parseFloat(v.paddingLeft))*b.x,k=j.top+(g.clientTop+parseFloat(v.paddingTop))*b.y;c*=b.x,u*=b.y,h*=b.x,f*=b.y,c+=y,u+=k,x=As(g),g=zv(x)}}return Ff({width:h,height:f,x:c,y:u})}function Ym(e,n){const s=qm(e).scrollLeft;return n?n.left+s:ml(za(e)).left+s}function lR(e,n){const s=e.getBoundingClientRect(),r=s.left+n.scrollLeft-Ym(e,s),a=s.top+n.scrollTop;return{x:r,y:a}}function x3(e){let{elements:n,rect:s,offsetParent:r,strategy:a}=e;const i=a==="fixed",l=za(r),o=n?Gm(n.floating):!1;if(r===l||o&&i)return s;let c={scrollLeft:0,scrollTop:0},u=Aa(1);const h=Aa(0),f=Ai(r);if((f||!i)&&((ec(r)!=="body"||Vm(l))&&(c=qm(r)),f)){const p=ml(r);u=jo(r),h.x=p.x+r.clientLeft,h.y=p.y+r.clientTop}const m=l&&!f&&!i?lR(l,c):Aa(0);return{width:s.width*u.x,height:s.height*u.y,x:s.x*u.x-c.scrollLeft*u.x+h.x+m.x,y:s.y*u.y-c.scrollTop*u.y+h.y+m.y}}function v3(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function j3(e){const n=qm(e),s=e.ownerDocument.body,r=Ea(e.scrollWidth,e.clientWidth,s.scrollWidth,s.clientWidth),a=Ea(e.scrollHeight,e.clientHeight,s.scrollHeight,s.clientHeight);let i=-n.scrollLeft+Ym(e);const l=-n.scrollTop;return oa(s).direction==="rtl"&&(i+=Ea(e.clientWidth,s.clientWidth)-r),{width:r,height:a,x:i,y:l}}const y3=25;function w3(e,n,s){s===void 0&&(s="viewport");const r=s==="layoutViewport",a=As(e),i=za(e),l=a.visualViewport;let o=i.clientWidth,c=i.clientHeight,u=0,h=0;if(l){const m=!Hw()||n==="fixed";r?m||(u=-l.offsetLeft,h=-l.offsetTop):(o=l.width,c=l.height,m&&(u=l.offsetLeft,h=l.offsetTop))}if(Ym(i)<=0){const m=i.ownerDocument,p=m.body,x=getComputedStyle(p),g=m.compatMode==="CSS1Compat"&&parseFloat(x.marginLeft)+parseFloat(x.marginRight)||0,b=Math.abs(i.clientWidth-p.clientWidth-g),j=getComputedStyle(i).scrollbarGutter==="stable both-edges"?b/2:b;j<=y3&&(o-=j)}return{width:o,height:c,x:u,y:h}}function b3(e,n){const s=ml(e,!0,n==="fixed"),r=s.top+e.clientTop,a=s.left+e.clientLeft,i=jo(e),l=e.clientWidth*i.x,o=e.clientHeight*i.y,c=a*i.x,u=r*i.y;return{width:l,height:o,x:c,y:u}}function dS(e,n,s){let r;if(n==="viewport"||n==="layoutViewport")r=w3(e,s,n);else if(n==="document")r=j3(za(e));else if(la(n))r=b3(n,s);else{const a=iR(e);r={x:n.x-a.x,y:n.y-a.y,width:n.width,height:n.height}}return Ff(r)}function k3(e,n){const s=n.get(e);if(s)return s;let r=Au(e,[],!1).filter(o=>la(o)&&ec(o)!=="body"),a=null;const i=oa(e).position==="fixed";let l=i?fl(e):e;for(;la(l)&&!Eu(l);){const o=oa(l),c=Ww(l),u=a?a.position:i?"fixed":"";!c&&(u==="fixed"||u==="absolute"&&o.position==="static")?r=r.filter(f=>f!==l):a=o,l=fl(l)}return n.set(e,r),r}function N3(e){let{element:n,boundary:s,rootBoundary:r,strategy:a}=e;const l=[...s==="clippingAncestors"?Gm(n)?[]:k3(n,this._c):[].concat(s),r],o=dS(n,l[0],a);let c=o.top,u=o.right,h=o.bottom,f=o.left;for(let m=1;m<l.length;m++){const p=dS(n,l[m],a);c=Ea(p.top,c),u=xi(p.right,u),h=xi(p.bottom,h),f=Ea(p.left,f)}return{width:u-f,height:h-c,x:f,y:c}}function S3(e){const{width:n,height:s}=aR(e);return{width:n,height:s}}function C3(e,n,s){const r=Ai(n),a=za(n),i=s==="fixed",l=ml(e,!0,i,n);let o={scrollLeft:0,scrollTop:0};const c=Aa(0);if((r||!i)&&((ec(n)!=="body"||Vm(a))&&(o=qm(n)),r)){const m=ml(n,!0,i,n);c.x=m.x+n.clientLeft,c.y=m.y+n.clientTop}!r&&a&&(c.x=Ym(a));const u=a&&!r&&!i?lR(a,o):Aa(0),h=l.left+o.scrollLeft-c.x-u.x,f=l.top+o.scrollTop-c.y-u.y;return{x:h,y:f,width:l.width,height:l.height}}function bg(e){return oa(e).position==="static"}function hS(e,n){if(!Ai(e)||oa(e).position==="fixed")return null;if(n)return n(e);let s=e.offsetParent;return za(e)===s&&(s=s.ownerDocument.body),s}function oR(e,n){const s=As(e);if(Gm(e))return s;if(!Ai(e)){let a=fl(e);for(;a&&!Eu(a);){if(la(a)&&!bg(a))return a;a=fl(a)}return s}let r=hS(e,n);for(;r&&d3(r)&&bg(r);)r=hS(r,n);return r&&Eu(r)&&bg(r)&&!Ww(r)?s:r||m3(e)||s}const E3=async function(e){const n=this.getOffsetParent||oR,s=this.getDimensions,r=await s(e.floating);return{reference:C3(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function A3(e){return oa(e).direction==="rtl"}const $3={convertOffsetParentRelativeRectToViewportRelativeRect:x3,getDocumentElement:za,getClippingRect:N3,getOffsetParent:oR,getElementRects:E3,getClientRects:v3,getDimensions:S3,getScale:jo,isElement:la,isRTL:A3};function cR(e,n){return e.x===n.x&&e.y===n.y&&e.width===n.width&&e.height===n.height}function T3(e,n,s){let r=null,a;const i=za(e);function l(){var h;clearTimeout(a),(h=r)==null||h.disconnect(),r=null}function o(h,f){h===void 0&&(h=!1),f===void 0&&(f=1),l();const m=e.getBoundingClientRect(),{left:p,top:x,width:g,height:b}=m;if(h||n(),!g||!b)return;const j=rh(x),v=rh(i.clientWidth-(p+g)),y=rh(i.clientHeight-(x+b)),k=rh(p),w={rootMargin:-j+"px "+-v+"px "+-y+"px "+-k+"px",threshold:Ea(0,xi(1,f))||1};let S=!0;function C(E){const $=E[0].intersectionRatio;if(!cR(m,e.getBoundingClientRect()))return o();if($!==f){if(!S)return o();$?o(!1,$):a=setTimeout(()=>{o(!1,1e-7)},1e3)}S=!1}try{r=new IntersectionObserver(C,{...w,root:i.ownerDocument})}catch{r=new IntersectionObserver(C,w)}r.observe(e)}const c=As(e),u=()=>o(s);return c.addEventListener("resize",u),o(!0),()=>{c.removeEventListener("resize",u),l()}}function R3(e,n,s,r){r===void 0&&(r={});const{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:o=typeof IntersectionObserver=="function",animationFrame:c=!1}=r,u=Kw(e),h=a||i?[...u?Au(u):[],...n?Au(n):[]]:[];h.forEach(j=>{a&&j.addEventListener("scroll",s),i&&j.addEventListener("resize",s)});const f=u&&o?T3(u,s,i):null;let m=-1,p=null;l&&(p=new ResizeObserver(j=>{let[v]=j;v&&v.target===u&&p&&n&&(p.unobserve(n),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var y;(y=p)==null||y.observe(n)})),s()}),u&&!c&&p.observe(u),n&&p.observe(n));let x,g=c?ml(e):null;c&&b();function b(){const j=ml(e);g&&!cR(g,j)&&s(),g=j,x=requestAnimationFrame(b)}return s(),()=>{var j;h.forEach(v=>{a&&v.removeEventListener("scroll",s),i&&v.removeEventListener("resize",s)}),f==null||f(),(j=p)==null||j.disconnect(),p=null,c&&cancelAnimationFrame(x)}}const I3=l3,P3=o3,M3=r3,O3=u3,D3=a3,fS=s3,L3=c3,F3=(e,n,s)=>{const r=new Map,a=s??{},i={...$3,...a.platform,_c:r};return n3(e,n,{...a,platform:i})};var _3=typeof document<"u",z3=function(){},Gh=_3?d.useLayoutEffect:z3;function _f(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let s,r,a;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(s=e.length,s!==n.length)return!1;for(r=s;r--!==0;)if(!_f(e[r],n[r]))return!1;return!0}if(a=Object.keys(e),s=a.length,s!==Object.keys(n).length)return!1;for(r=s;r--!==0;)if(!{}.hasOwnProperty.call(n,a[r]))return!1;for(r=s;r--!==0;){const i=a[r];if(!(i==="_owner"&&e.$$typeof)&&!_f(e[i],n[i]))return!1}return!0}return e!==e&&n!==n}function uR(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function mS(e,n){const s=uR(e);return Math.round(n*s)/s}function kg(e){const n=d.useRef(e);return Gh(()=>{n.current=e}),n}function U3(e){e===void 0&&(e={});const{placement:n="bottom",strategy:s="absolute",middleware:r=[],platform:a,elements:{reference:i,floating:l}={},transform:o=!0,whileElementsMounted:c,open:u}=e,[h,f]=d.useState({x:0,y:0,strategy:s,placement:n,middlewareData:{},isPositioned:!1}),[m,p]=d.useState(r);_f(m,r)||p(r);const[x,g]=d.useState(null),[b,j]=d.useState(null),v=d.useCallback(M=>{M!==w.current&&(w.current=M,g(M))},[]),y=d.useCallback(M=>{M!==S.current&&(S.current=M,j(M))},[]),k=i||x,N=l||b,w=d.useRef(null),S=d.useRef(null),C=d.useRef(h),E=c!=null,$=kg(c),R=kg(a),P=kg(u),O=d.useCallback(()=>{if(!w.current||!S.current)return;const M={placement:n,strategy:s,middleware:m};R.current&&(M.platform=R.current),F3(w.current,S.current,M).then(z=>{const D={...z,isPositioned:P.current!==!1};I.current&&!_f(C.current,D)&&(C.current=D,Jo.flushSync(()=>{f(D)}))})},[m,n,s,R,P]);Gh(()=>{u===!1&&C.current.isPositioned&&(C.current.isPositioned=!1,f(M=>({...M,isPositioned:!1})))},[u]);const I=d.useRef(!1);Gh(()=>(I.current=!0,()=>{I.current=!1}),[]),Gh(()=>{if(k&&(w.current=k),N&&(S.current=N),k&&N){if($.current)return $.current(k,N,O);O()}},[k,N,O,$,E]);const F=d.useMemo(()=>({reference:w,floating:S,setReference:v,setFloating:y}),[v,y]),U=d.useMemo(()=>({reference:k,floating:N}),[k,N]),L=d.useMemo(()=>{const M={position:s,left:0,top:0};if(!U.floating)return M;const z=mS(U.floating,h.x),D=mS(U.floating,h.y);return o?{...M,transform:"translate("+z+"px, "+D+"px)",...uR(U.floating)>=1.5&&{willChange:"transform"}}:{position:s,left:z,top:D}},[s,o,U.floating,h.x,h.y]);return d.useMemo(()=>({...h,update:O,refs:F,elements:U,floatingStyles:L}),[h,O,F,U,L])}const B3=e=>{function n(s){return{}.hasOwnProperty.call(s,"current")}return{name:"arrow",options:e,fn(s){const{element:r,padding:a}=typeof e=="function"?e(s):e;return r&&n(r)?r.current!=null?fS({element:r.current,padding:a}).fn(s):{}:r?fS({element:r,padding:a}).fn(s):{}}}},W3=(e,n)=>{const s=I3(e);return{name:s.name,fn:s.fn,options:[e,n]}},H3=(e,n)=>{const s=P3(e);return{name:s.name,fn:s.fn,options:[e,n]}},K3=(e,n)=>({fn:L3(e).fn,options:[e,n]}),V3=(e,n)=>{const s=M3(e);return{name:s.name,fn:s.fn,options:[e,n]}},G3=(e,n)=>{const s=O3(e);return{name:s.name,fn:s.fn,options:[e,n]}},q3=(e,n)=>{const s=D3(e);return{name:s.name,fn:s.fn,options:[e,n]}},Y3=(e,n)=>{const s=B3(e);return{name:s.name,fn:s.fn,options:[e,n]}};var Q3=Object.defineProperty,J3=(e,n)=>Q3(e,"name",{value:n,configurable:!0});function dR(e){const[n,s]=d.useState(void 0);return Es(()=>{if(e){s({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(a=>{if(!Array.isArray(a)||!a.length)return;const i=a[0];let l,o;if("borderBoxSize"in i){const c=i.borderBoxSize,u=Array.isArray(c)?c[0]:c;l=u.inlineSize,o=u.blockSize}else l=e.offsetWidth,o=e.offsetHeight;s({width:l,height:o})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else s(void 0)},[e]),n}J3(dR,"useSize");var X3=Object.defineProperty,di=(e,n)=>X3(e,"name",{value:n,configurable:!0}),hR="Popper",[fR,Qm]=Ur(hR),[Z3,mR]=fR(hR),eU=di(e=>{const{__scopePopper:n,children:s}=e,[r,a]=d.useState(null),[i,l]=d.useState(void 0);return t.jsx(Z3,{scope:n,anchor:r,onAnchorChange:a,placementState:i,setPlacementState:l,children:s})},"Popper"),tU="PopperAnchor",nU=d.forwardRef(di(function(n,s){const{__scopePopper:r,virtualRef:a,...i}=n,l=mR(tU,r),o=d.useRef(null),c=l.onAnchorChange,u=d.useCallback(g=>{o.current=g,g&&c(g)},[c]),h=Wt(s,u),f=d.useRef(null);d.useEffect(()=>{if(!a)return;const g=f.current;f.current=a.current,g!==f.current&&c(f.current)});const m=l.placementState&&Jm(l.placementState),p=m==null?void 0:m[0],x=m==null?void 0:m[1];return a?null:t.jsx(_t.div,{"data-radix-popper-side":p,"data-radix-popper-align":x,...i,ref:h})},"PopperAnchor")),pR="PopperContent",[sU,Iue]=fR(pR),rU=d.forwardRef(di(function(n,s){var ue,Ne,Ke,G,ae,J,xe;const{__scopePopper:r,side:a="bottom",sideOffset:i=0,align:l="center",alignOffset:o=0,arrowPadding:c=0,avoidCollisions:u=!0,collisionBoundary:h=[],collisionPadding:f=0,sticky:m="partial",hideWhenDetached:p=!1,updatePositionStrategy:x="optimized",onPlaced:g,...b}=n,j=mR(pR,r),[v,y]=d.useState(null),k=Wt(s,y),[N,w]=d.useState(null),S=dR(N),C=(S==null?void 0:S.width)??0,E=(S==null?void 0:S.height)??0,$=a+(l!=="center"?"-"+l:""),R=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},P=Array.isArray(h)?h:[h],O=P.length>0,I={padding:R,boundary:P.filter(gR),altBoundary:O},{refs:F,floatingStyles:U,placement:L,isPositioned:M,middlewareData:z}=U3({strategy:"fixed",placement:$,whileElementsMounted:di((...Ie)=>R3(...Ie,{animationFrame:x==="always"}),"whileElementsMounted"),elements:{reference:j.anchor},middleware:[W3({mainAxis:i+E,alignmentAxis:o}),u&&H3({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?K3():void 0,...I}),u&&V3({...I}),G3({...I,apply:di(({elements:Ie,rects:Y,availableWidth:te,availableHeight:ie})=>{const{width:ge,height:je}=Y.reference,Se=Ie.floating.style;Se.setProperty("--radix-popper-available-width",`${te}px`),Se.setProperty("--radix-popper-available-height",`${ie}px`),Se.setProperty("--radix-popper-anchor-width",`${ge}px`),Se.setProperty("--radix-popper-anchor-height",`${je}px`)},"apply")}),N&&Y3({element:N,padding:c}),aU({arrowWidth:C,arrowHeight:E}),p&&q3({strategy:"referenceHidden",...I,boundary:O?I.boundary:void 0})]}),D=j.setPlacementState;Es(()=>(D(L),()=>{D(void 0)}),[L,D]);const[H,K]=Jm(L),X=hs(g);Es(()=>{M&&(X==null||X())},[M,X]);const W=(ue=z.arrow)==null?void 0:ue.x,me=(Ne=z.arrow)==null?void 0:Ne.y,fe=((Ke=z.arrow)==null?void 0:Ke.centerOffset)!==0,[oe,B]=d.useState();return Es(()=>{v&&B(window.getComputedStyle(v).zIndex)},[v]),t.jsx("div",{ref:F.setFloating,"data-radix-popper-content-wrapper":"",style:{...U,transform:M?U.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:oe,"--radix-popper-transform-origin":[(G=z.transformOrigin)==null?void 0:G.x,(ae=z.transformOrigin)==null?void 0:ae.y].join(" "),...((J=z.hide)==null?void 0:J.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:n.dir,children:t.jsx(sU,{scope:r,placedSide:H,placedAlign:K,onArrowChange:w,arrowX:W,arrowY:me,shouldHideArrow:fe,children:t.jsx(_t.div,{"data-side":H,"data-align":K,...b,ref:k,style:{...b.style,animation:M?(xe=b.style)==null?void 0:xe.animation:"none"}})})})},"PopperContent"));function gR(e){return e!==null}di(gR,"isNotNull");var aU=di(e=>({name:"transformOrigin",options:e,fn(n){var b,j,v;const{placement:s,rects:r,middlewareData:a}=n,l=((b=a.arrow)==null?void 0:b.centerOffset)!==0,o=l?0:e.arrowWidth,c=l?0:e.arrowHeight,[u,h]=Jm(s),f={start:"0%",center:"50%",end:"100%"}[h],m=(((j=a.arrow)==null?void 0:j.x)??0)+o/2,p=(((v=a.arrow)==null?void 0:v.y)??0)+c/2;let x="",g="";return u==="bottom"?(x=l?f:`${m}px`,g=`${-c}px`):u==="top"?(x=l?f:`${m}px`,g=`${r.floating.height+c}px`):u==="right"?(x=`${-c}px`,g=l?f:`${p}px`):u==="left"&&(x=`${r.floating.width+c}px`,g=l?f:`${p}px`),{data:{x,y:g}}}}),"transformOrigin");function Jm(e){const[n,s="center"]=e.split("-");return[n,s]}di(Jm,"getSideAndAlignFromPlacement");var Vw=eU,xR=nU,vR=rU,iU=Object.defineProperty,_n=(e,n)=>iU(e,"name",{value:n,configurable:!0}),[Gw,Pue]=Ur("Tooltip",[Qm]),qw=Qm(),lU="TooltipProvider",oU=700,Uv="tooltip.open",[cU,Yw]=Gw(lU),uU=_n(e=>{const{__scopeTooltip:n,delayDuration:s=oU,skipDelayDuration:r=300,disableHoverableContent:a=!1,children:i}=e,l=d.useRef(!0),o=d.useRef(!1),c=d.useRef(0);return d.useEffect(()=>{const u=c.current;return()=>window.clearTimeout(u)},[]),t.jsx(cU,{scope:n,isOpenDelayedRef:l,delayDuration:s,onOpen:d.useCallback(()=>{r<=0||(window.clearTimeout(c.current),l.current=!1)},[r]),onClose:d.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>l.current=!0,r))},[r]),isPointerInTransitRef:o,onPointerInTransitChange:d.useCallback(u=>{o.current=u},[]),disableHoverableContent:a,children:i})},"TooltipProvider"),Bv="Tooltip",[dU,hd]=Gw(Bv),hU=_n(e=>{const{__scopeTooltip:n,children:s,open:r,defaultOpen:a,onOpenChange:i,disableHoverableContent:l,delayDuration:o}=e,c=Yw(Bv,e.__scopeTooltip),u=qw(n),[h,f]=d.useState(null),[m,p]=d.useState(void 0),x=Rr(),g=d.useRef(0),b=l??c.disableHoverableContent,j=o??c.delayDuration,v=d.useRef(!1),[y,k]=Ei({prop:r,defaultProp:a??!1,onChange:_n($=>{$?(c.onOpen(),document.dispatchEvent(new CustomEvent(Uv))):c.onClose(),i==null||i($)},"onChange"),caller:Bv}),N=d.useMemo(()=>y?v.current?"delayed-open":"instant-open":"closed",[y]),w=d.useCallback(()=>{window.clearTimeout(g.current),g.current=0,v.current=!1,k(!0)},[k]),S=d.useCallback(()=>{window.clearTimeout(g.current),g.current=0,k(!1)},[k]),C=d.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>{v.current=!0,k(!0),g.current=0},j)},[j,k]);d.useEffect(()=>()=>{g.current&&(window.clearTimeout(g.current),g.current=0)},[]);const E=m??x;return t.jsx(Vw,{...u,children:t.jsx(dU,{scope:n,contentId:E,setContentId:p,open:y,stateAttribute:N,trigger:h,onTriggerChange:f,onTriggerEnter:d.useCallback(()=>{c.isOpenDelayedRef.current?C():w()},[c.isOpenDelayedRef,C,w]),onTriggerLeave:d.useCallback(()=>{b?S():(window.clearTimeout(g.current),g.current=0)},[S,b]),onOpen:w,onClose:S,disableHoverableContent:b,children:s})})},"Tooltip"),pS="TooltipTrigger",fU=d.forwardRef(_n(function(n,s){const{__scopeTooltip:r,...a}=n,i=hd(pS,r),l=Yw(pS,r),o=qw(r),c=d.useRef(null),u=Wt(s,c,i.onTriggerChange),h=d.useRef(!1),f=d.useRef(!1),m=d.useCallback(()=>h.current=!1,[]);return d.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),t.jsx(xR,{asChild:!0,...o,children:t.jsx(_t.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...a,ref:u,onPointerMove:qe(n.onPointerMove,p=>{p.pointerType!=="touch"&&!f.current&&!l.isPointerInTransitRef.current&&(i.onTriggerEnter(),f.current=!0)}),onPointerLeave:qe(n.onPointerLeave,()=>{i.onTriggerLeave(),f.current=!1}),onPointerDown:qe(n.onPointerDown,()=>{i.open&&i.onClose(),h.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:qe(n.onFocus,()=>{h.current||i.onOpen()}),onBlur:qe(n.onBlur,i.onClose),onClick:qe(n.onClick,i.onClose)})})},"TooltipTrigger")),jR="TooltipPortal",[mU,pU]=Gw(jR,{forceMount:void 0}),gU=_n(e=>{const{__scopeTooltip:n,forceMount:s,children:r,container:a}=e,i=hd(jR,n);return t.jsx(mU,{scope:n,forceMount:s,children:t.jsx(ha,{present:s||i.open,children:t.jsx(Bm,{asChild:!0,container:a,children:r})})})},"TooltipPortal"),$u="TooltipContent",xU=d.forwardRef(_n(function(n,s){const r=pU($u,n.__scopeTooltip),{forceMount:a=r.forceMount,side:i="top",...l}=n,o=hd($u,n.__scopeTooltip);return t.jsx(ha,{present:a||o.open,children:o.disableHoverableContent?t.jsx(yR,{side:i,...l,ref:s}):t.jsx(vU,{side:i,...l,ref:s})})},"TooltipContent")),vU=d.forwardRef(_n(function(n,s){const r=hd($u,n.__scopeTooltip),a=Yw($u,n.__scopeTooltip),i=d.useRef(null),l=Wt(s,i),[o,c]=d.useState(null),{trigger:u,onClose:h}=r,f=i.current,{onPointerInTransitChange:m}=a,p=d.useCallback(()=>{c(null),m(!1)},[m]),x=d.useCallback((g,b)=>{const j=g.currentTarget,v={x:g.clientX,y:g.clientY},y=wR(v,j.getBoundingClientRect()),k=bR(v,y),N=kR(b.getBoundingClientRect()),w=SR([...k,...N]);c(w),m(!0)},[m]);return d.useEffect(()=>()=>p(),[p]),d.useEffect(()=>{if(u&&f){const g=_n(j=>x(j,f),"handleTriggerLeave"),b=_n(j=>x(j,u),"handleContentLeave");return u.addEventListener("pointerleave",g),f.addEventListener("pointerleave",b),()=>{u.removeEventListener("pointerleave",g),f.removeEventListener("pointerleave",b)}}},[u,f,x,p]),d.useEffect(()=>{if(o){const g=_n(b=>{const j=b.target,v={x:b.clientX,y:b.clientY},y=(u==null?void 0:u.contains(j))||(f==null?void 0:f.contains(j)),k=!NR(v,o);y?p():k&&(p(),h())},"handleTrackPointerGrace");return document.addEventListener("pointermove",g),()=>document.removeEventListener("pointermove",g)}},[u,f,o,h,p]),t.jsx(yR,{...n,ref:l})},"TooltipContentHoverable")),jU=AT("TooltipContent"),yR=d.forwardRef(_n(function(n,s){const{__scopeTooltip:r,children:a,"aria-label":i,id:l,onEscapeKeyDown:o,onPointerDownOutside:c,...u}=n,h=hd($u,r),f=qw(r),{onClose:m}=h;d.useEffect(()=>(document.addEventListener(Uv,m),()=>document.removeEventListener(Uv,m)),[m]),d.useEffect(()=>{if(h.trigger){const x=_n(g=>{g.target instanceof Node&&g.target.contains(h.trigger)&&m()},"handleScroll");return window.addEventListener("scroll",x,{capture:!0}),()=>window.removeEventListener("scroll",x,{capture:!0})}},[h.trigger,m]);const{setContentId:p}=h;return Es(()=>(p(l),()=>{p(void 0)}),[l,p]),t.jsx(Um,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:x=>x.preventDefault(),onDismiss:m,children:t.jsxs(vR,{"data-state":h.stateAttribute,role:i?void 0:"tooltip",id:i?void 0:h.contentId,...f,...u,ref:s,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[t.jsx(jU,{children:a}),i?t.jsx(fz,{id:h.contentId,role:"tooltip",children:i}):null]})})},"TooltipContentImpl"));function wR(e,n){const s=Math.abs(n.top-e.y),r=Math.abs(n.bottom-e.y),a=Math.abs(n.right-e.x),i=Math.abs(n.left-e.x);switch(Math.min(s,r,a,i)){case i:return"left";case a:return"right";case s:return"top";case r:return"bottom";default:throw new Error("unreachable")}}_n(wR,"getExitSideFromRect");function bR(e,n,s=5){const r=[];switch(n){case"top":r.push({x:e.x-s,y:e.y+s},{x:e.x+s,y:e.y+s});break;case"bottom":r.push({x:e.x-s,y:e.y-s},{x:e.x+s,y:e.y-s});break;case"left":r.push({x:e.x+s,y:e.y-s},{x:e.x+s,y:e.y+s});break;case"right":r.push({x:e.x-s,y:e.y-s},{x:e.x-s,y:e.y+s});break}return r}_n(bR,"getPaddedExitPoints");function kR(e){const{top:n,right:s,bottom:r,left:a}=e;return[{x:a,y:n},{x:s,y:n},{x:s,y:r},{x:a,y:r}]}_n(kR,"getPointsFromRect");function NR(e,n){const{x:s,y:r}=e;let a=!1;for(let i=0,l=n.length-1;i<n.length;l=i++){const o=n[i],c=n[l],u=o.x,h=o.y,f=c.x,m=c.y;h>r!=m>r&&s<(f-u)*(r-h)/(m-h)+u&&(a=!a)}return a}_n(NR,"isPointInPolygon");function SR(e){const n=e.slice();return n.sort((s,r)=>s.x<r.x?-1:s.x>r.x?1:s.y<r.y?-1:s.y>r.y?1:0),CR(n)}_n(SR,"getHull");function CR(e){if(e.length<=1)return e.slice();const n=[];for(let r=0;r<e.length;r++){const a=e[r];for(;n.length>=2;){const i=n[n.length-1],l=n[n.length-2];if((i.x-l.x)*(a.y-l.y)>=(i.y-l.y)*(a.x-l.x))n.pop();else break}n.push(a)}n.pop();const s=[];for(let r=e.length-1;r>=0;r--){const a=e[r];for(;s.length>=2;){const i=s[s.length-1],l=s[s.length-2];if((i.x-l.x)*(a.y-l.y)>=(i.y-l.y)*(a.x-l.x))s.pop();else break}s.push(a)}return s.pop(),n.length===1&&s.length===1&&n[0].x===s[0].x&&n[0].y===s[0].y?n:n.concat(s)}_n(CR,"getHullPresorted");var gS=uU,Tu=hU,Ru=fU,Iu=gU,Pu=xU;let An={time:"auto",date:"auto",locale:void 0};function Qw(e){const n=e.timeFormat===void 0?An.time:e.timeFormat==="12h"||e.timeFormat==="24h"?e.timeFormat:"auto",s=e.dateFormat===void 0?An.date:e.dateFormat==="short"||e.dateFormat==="long"||e.dateFormat==="iso"?e.dateFormat:"auto";An={time:n,date:s,locale:e.locale??An.locale}}function ER(){return{time:An.time,date:An.date}}function fd(e,n){const s=An;Qw(e);try{return n()}finally{An=s}}const Wv="buddi:formats";function md(){if(An.locale)return An.locale;try{return typeof navigator<"u"&&navigator.language?navigator.language:"en-US"}catch{return"en-US"}}const xS=new Map;function tc(e,n){const s=`${e}|${JSON.stringify(n)}`;let r=xS.get(s);if(!r){try{r=new Intl.DateTimeFormat(e,n)}catch{r=new Intl.DateTimeFormat(e,{...n,timeZone:"UTC"})}xS.set(s,r)}return r}function Ng(e,n,s,r){return Object.fromEntries(tc(s,{timeZone:n,...r}).formatToParts(e).map(a=>[a.type,a.value]))}function yU(){return An.time==="12h"?{hour:"numeric",minute:"2-digit",hourCycle:"h12"}:An.time==="24h"?{hour:"2-digit",minute:"2-digit",hourCycle:"h23"}:{hour:Xm()?"numeric":"2-digit",minute:"2-digit"}}function wU(){return An.time==="auto"?md():"en-US"}function Lt(e,n){return Number.isNaN(e.getTime())?"—":tc(wU(),{timeZone:n,...yU()}).format(e)}function bU(e){return e>=1440&&!Xm()?"24:00":Lt(new Date(Date.UTC(2026,0,1,Math.floor(e/60)%24,e%60)),"UTC")}function Xm(){var e;return An.time!=="auto"?An.time==="12h":((e=tc(md(),{hour:"numeric"}).resolvedOptions().hourCycle)==null?void 0:e.startsWith("h1"))===!0}function AR(){return`Profile (${Xm()?"12-hour":"24-hour"})`}function kU(){if(An.date!=="auto")return An.date==="short";const e=tc(md(),{month:"short",day:"numeric"}).formatToParts(new Date(Date.UTC(2026,9,1))).map(n=>n.type);return e.indexOf("month")<e.indexOf("day")}function Hs(e,n,s={}){return NU(e,n,s).replace(/\bSept\b/g,"Sep")}function NU(e,n,s){if(Number.isNaN(e.getTime()))return"—";const{weekday:r=!1,year:a=!1,compact:i=!1}=s;switch(An.date){case"iso":{const l=Ng(e,n,"en-CA",{year:"numeric",month:"2-digit",day:"2-digit",...r?{weekday:i?"short":"long"}:{}}),o=`${l.year}-${l.month}-${l.day}`;return r?`${l.weekday} ${o}`:o}case"short":{const l=Ng(e,n,"en-US",{month:"short",day:"numeric",year:"numeric",weekday:"short"});return`${r?`${l.weekday}, `:""}${l.month} ${l.day}${a?`, ${l.year}`:""}`}case"long":{const l=Ng(e,n,"en-GB",{month:i?"short":"long",day:"numeric",year:"numeric",weekday:i?"short":"long"});return`${r?`${l.weekday}, `:""}${l.day} ${l.month}${a?` ${l.year}`:""}`}default:return tc(md(),{timeZone:n,month:i?"short":"long",day:"numeric",...a?{year:"numeric"}:{},...r?{weekday:i?"short":"long"}:{}}).format(e)}}function $R(e,n){if(An.date==="iso")return`${e}-${String(n).padStart(2,"0")}`;const s=new Date(Date.UTC(e,n-1,15)),r=An.date==="auto"?md():"en-GB";return tc(r,{timeZone:"UTC",month:"long",year:"numeric"}).format(s)}function nc(e,n={}){const s=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);if(!s)return e;const r=new Date(`${s[0]}T12:00:00Z`);return Number.isNaN(r.getTime())?e:Hs(r,"UTC",n)}function Nt(e,n){if(!e)return"—";const s=new Date(e);return Number.isNaN(s.getTime())?String(e):`${Hs(s,n,{year:!0,compact:!0})}, ${Lt(s,n)}`}function Zm(e,n){return`${Hs(e,n,{weekday:!0,compact:!0})}, ${Lt(e,n)}`}function Xe(e,n=Date.now()){if(!e)return"";const s=new Date(e).getTime();if(Number.isNaN(s))return"";const r=Math.round((s-n)/1e3),a=Math.abs(r),[i,l]=a<60?[r,"second"]:a<3600?[Math.round(r/60),"minute"]:a<86400?[Math.round(r/3600),"hour"]:[Math.round(r/86400),"day"];return new Intl.RelativeTimeFormat("en",{numeric:"auto"}).format(i,l)}function Jw(e,n=Date.now()){if(!e)return"";const s=new Date(e).getTime();if(Number.isNaN(s))return"";const r=Math.abs(Math.round((n-s)/1e3));return r<60?"now":r<3600?`${Math.floor(r/60)} min`:r<86400?`${Math.floor(r/3600)} h`:`${Math.floor(r/86400)} d`}function TR(e,n=Date.now()){const s=Jw(e,n);return s===""?"":s==="now"||new Date(e).getTime()>n?"just now":s==="1 d"?"yesterday":`${s} ago`}function SU(e,n){if(e==null||!Number.isFinite(e))return"—";try{return new Intl.NumberFormat("en-US",{style:"currency",currency:n??"USD",maximumFractionDigits:0}).format(e)}catch{return e.toFixed(2)}}function Cn(e){return new Intl.NumberFormat("en-US").format(e)}function Hv(e){return[...e.cacheRead?[`cached ${Cn(e.cacheRead)}`]:[],...e.cacheWrite?[`cache write ${Cn(e.cacheWrite)}`]:[]].join(", ")}function CU(e){const n=Hv(e);return`${Cn(e.input)} in${n?` (${n})`:""} / ${Cn(e.output)} out`}function fs(e){try{return JSON.stringify(e,null,2)??"null"}catch{return String(e)}}function Mu(e,n=8){return e.length<=n?e:e.slice(0,n)}function pr(e,n){return e.length<=n?e:`${e.slice(0,n-1)}…`}function Ou(e){if(e.kind!=="agent")return e.title;const n=e.title.replace(/^@[^\s:]+:\s+/,"");return n.trim()===""?e.title:n}const vS="buddi_csrf",sc="x-buddi-csrf",Ts="buddi:agents-changed",Xi="buddi:status-changed",Ec=e=>(window.dispatchEvent(new Event(Xi)),e),Kv="buddi:locked",EU="This page's sign-in no longer matches its cookies. Reload the page and try again.";class pe extends Error{constructor(n,s,r){super(s),this.status=n,this.detail=r,this.name="ApiError"}}function Nl(){var r;const e=Number(location.port)||(location.protocol==="https:"?443:80),n=document.cookie.match(new RegExp(`(?:^|; )${vS}_${e}=([^;]*)`));if(n!=null&&n[1])return decodeURIComponent(n[1]);const s=[...document.cookie.matchAll(new RegExp(`(?:^|; )${vS}(?:_\\d+)?=([^;]*)`,"g"))];return s.length===1&&((r=s[0])!=null&&r[1])?decodeURIComponent(s[0][1]):""}const zf="buddi isn't answering.";let Vv=null;const Gv=new Set;function Ac(e){if(e!==(Vv===null)){Vv=e?null:Date.now();for(const n of Gv)n()}}function Du(){return Vv}function Xw(e){return Gv.add(e),()=>Gv.delete(e)}function Uf(e){return e instanceof pe&&(e.status===0||e.status===502||e.status===503)&&e.message===zf}async function Sl(e,n={}){var l;let s;try{s=await fetch(e,{...n,credentials:"same-origin",redirect:"error",headers:{Accept:"application/json",...n.headers??{}}})}catch(o){throw(o==null?void 0:o.name)==="AbortError"||(l=n.signal)!=null&&l.aborted?o:(Ac(!1),new pe(0,zf,o))}if(s.status===401)throw Ac(!0),new pe(401,"This session has expired. Run `buddi dashboard` for a fresh link.");if(s.status===423)throw Ac(!0),window.dispatchEvent(new Event(Kv)),new pe(423,"This dashboard is locked.");const r=await s.text(),a=r===""?null:AU(r),i=a&&typeof a=="object"&&"error"in a?String(a.error):void 0;if((s.status===502||s.status===503)&&i===void 0)throw Ac(!1),new pe(s.status,zf,a);if(Ac(!0),!s.ok){const o=(n.method??"GET").toUpperCase(),c=i??(s.status===403&&o!=="GET"&&o!=="HEAD"?EU:`request failed (${s.status})`);throw new pe(s.status,c,a)}return a}function AU(e){try{return JSON.parse(e)}catch{return null}}function Sg(){return ER().time==="auto"?{hour:Xm()?"12":"24"}:{}}function be(e,n={}){const s=new URLSearchParams;for(const[a,i]of Object.entries(n))i!==void 0&&i!==""&&s.set(a,String(i));const r=s.toString();return Sl(`/api${e}${r?`?${r}`:""}`)}function qh(e,n){return Sl(`/api${e}`,{method:"POST",headers:{[sc]:Nl()},body:n})}function js(e){return Sl(`/api${e}`,{method:"DELETE",headers:{[sc]:Nl()}})}function ee(e,n={}){return Sl(`/api${e}`,{method:"POST",headers:{"Content-Type":"application/json",[sc]:Nl()},body:JSON.stringify(n??{})})}function Zw(e,n,s,r={}){const a=n.name.replace(/[^\w.-]+/g,"_").slice(-120)||s;return Sl(`/api${e}`,{method:"POST",headers:{"Content-Type":"application/octet-stream",[sc]:Nl(),"X-Filename":a,...r},body:n})}function jS(e,n,s){return Zw(e,n,"backup.tar.gz",{...s.passphrase?{"X-Backup-Passphrase":s.passphrase}:{},...s.confirm?{"X-Backup-Confirm":s.confirm}:{}})}function $U(e,n={}){return Sl(`/api${e}`,{method:"PATCH",headers:{"Content-Type":"application/json",[sc]:Nl()},body:JSON.stringify(n??{})})}function br(e,n={}){return Sl(`/api${e}`,{method:"PUT",headers:{"Content-Type":"application/json",[sc]:Nl()},body:JSON.stringify(n??{})})}function TU(e){if(e.dismissedAt)return"You said no to this one.";switch(e.lapseReason){case"owner-moved-on":return"The conversation moved on.";case"rolled-over":return"That conversation ended.";case"agent-removed":return"That agent is no longer here.";default:return"It lapsed."}}const Yh="gpt-oss:120b",RU=["approval","question","watcher","reminder","failure","recap","plugin","agent"],qv=["mon","tue","wed","thu","fri","sat","sun"],nt={agents:()=>be("/chat/agents"),views:()=>be("/chat/views"),conversations:(e,n)=>be(`/chat/${encodeURIComponent(e)}/conversations`,{limit:n}),startConversation:e=>ee(`/chat/${encodeURIComponent(e)}/conversations`),conversation:e=>be(`/chat/conversations/${encodeURIComponent(e)}`),deleteCarryOver:e=>js(`/chat/conversations/${encodeURIComponent(e)}/carry-over`),canvasTabs:e=>be(`/chat/conversations/${encodeURIComponent(e)}/canvas-tabs`),saveCanvasTabs:(e,n)=>br(`/chat/conversations/${encodeURIComponent(e)}/canvas-tabs`,n),send:(e,n)=>ee(`/chat/${encodeURIComponent(e)}/messages`,n),answerQuestion:(e,n)=>ee(`/chat/questions/${encodeURIComponent(e)}/answer`,n),cancel:e=>ee(`/chat/conversations/${encodeURIComponent(e)}/cancel`),attach:e=>{const n=new FormData;return n.append("file",e,e.name),qh("/chat/attachments",n)},transcribe:e=>ee("/speech/transcribe",e),say:e=>ee("/speech/say",e),discardAttachment:e=>js(`/artifacts/${encodeURIComponent(e)}`),groups:()=>be("/groups"),group:e=>be(`/groups/${encodeURIComponent(e)}`),createGroup:e=>ee("/groups",e),updateGroup:(e,n)=>$U(`/groups/${encodeURIComponent(e)}`,n),deleteGroup:e=>js(`/groups/${encodeURIComponent(e)}`),restoreGroup:e=>ee(`/groups/${encodeURIComponent(e)}/restore`),clearGroup:e=>ee(`/groups/${encodeURIComponent(e)}/clear`),groupConversations:e=>be(`/groups/${encodeURIComponent(e)}/conversations`),startGroupConversation:e=>ee(`/groups/${encodeURIComponent(e)}/conversations`),sendToGroup:(e,n)=>ee(`/groups/${encodeURIComponent(e)}/messages`,n),streamUrl:e=>`/api/chat/conversations/${encodeURIComponent(e)}/stream`};function eb(e){return e.httpStatus===401||e.httpStatus===403||e.state==="authentication-error"||e.state==="access-denied"}const T={providers:()=>be("/providers"),providerAccounts:()=>be("/provider-accounts"),probeModels:e=>ee("/provider-accounts/probe-models",e),accountModels:(e,n=!1)=>ee(`/provider-accounts/${encodeURIComponent(e)}/models`,{refresh:n}),saveProviderAccount:e=>ee("/provider-accounts/save",e),testProviderAccount:e=>ee(`/provider-accounts/${encodeURIComponent(e)}/test`),removeProviderAccount:(e,n)=>ee(`/provider-accounts/${encodeURIComponent(e)}/remove`,{revision:n}),codexAccountAction:(e,n,s)=>ee(`/provider-accounts/${encodeURIComponent(e)}/${n}`,{revision:s}),ollamaConnect:(e,n)=>ee(`/provider-accounts/${encodeURIComponent(e)}/ollama/connect`,{revision:n}),ollamaPoll:(e,n)=>ee(`/provider-accounts/${encodeURIComponent(e)}/ollama/poll`,{attemptId:n}),ollamaDisconnect:(e,n)=>ee(`/provider-accounts/${encodeURIComponent(e)}/ollama/disconnect`,{revision:n}),anthropicAccountAction:(e,n,s,r)=>ee(`/provider-accounts/${encodeURIComponent(e)}/anthropic/${n}`,{revision:s,...r}),assignProviderAccount:(e,n,s)=>ee(`/agents/${encodeURIComponent(e)}/account`,{accountId:n,model:s}),configureProvider:(e,n)=>ee(`/providers/${encodeURIComponent(e)}/settings`,n),saveCredential:(e,n)=>ee(`/providers/credentials/${encodeURIComponent(e)}/save`,{value:n}),removeCredential:e=>ee(`/providers/credentials/${encodeURIComponent(e)}/remove`),testProvider:e=>ee(`/providers/${encodeURIComponent(e)}/test`),browser:e=>be(`/browser${e?`?agentId=${encodeURIComponent(e.agentId)}&conversationId=${encodeURIComponent(e.conversationId)}`:""}`),browserControl:(e,n,s)=>ee(`/browser/${e}`,{...n===void 0?{}:{sessionId:n},...s!=null&&s.forever?{forever:!0}:{}}),browserSettings:e=>ee("/browser/settings",e),browserCapture:e=>ee("/browser/capture",{sessionId:e}),browserFront:e=>ee("/browser/front",{sessionId:e}),browserPin:(e,n)=>ee("/browser/pin",{conversationId:e,route:n}),browserLogin:(e,n)=>ee("/browser/login",{id:e,decision:n}),browserCard:(e,n)=>ee("/browser/card",{conversationId:e,answer:n}),browserInstall:()=>ee("/browser/install",{}),browserCheck:()=>ee("/browser/check",{}),browserDownloads:()=>be("/browser/downloads"),clearBrowserDownloads:()=>ee("/browser/downloads/clear",{}),fileBrowserDownload:e=>ee("/browser/downloads/file",{id:e}),previewLink:(e,n)=>be(`/preview/${encodeURIComponent(e)}/${encodeURIComponent(n)}/link`),previewCheck:(e,n)=>be(`/preview/${encodeURIComponent(e)}/${encodeURIComponent(n)}/check`),extension:()=>be("/extension"),pairExtension:e=>ee("/extension/pair",{code:e}),forgetExtension:()=>js("/extension/pair"),session:()=>be("/session"),overview:()=>be("/overview"),events:e=>be("/events",e),eventKinds:()=>be("/events/kinds"),conversations:()=>be("/conversations"),conversation:e=>be(`/conversations/${encodeURIComponent(e)}`),missions:()=>be("/missions"),jobs:(e={})=>be("/jobs",e),approvals:()=>be("/approvals"),approval:e=>be(`/approvals/${encodeURIComponent(e)}`).then(n=>n.action),offers:()=>be("/offers"),dismissOffer:e=>ee(`/offers/${encodeURIComponent(e)}/dismiss`,{}),dismissOffers:e=>ee("/offers/dismiss-all",{ids:e}),agentOffers:()=>be("/agent-offers"),catalogue:(e=!1)=>be(`/catalogue${e?"?refresh=1":""}`),cataloguePlan:(e,n={})=>ee(`/catalogue/${encodeURIComponent(e)}/plan`,n),catalogueInstall:(e,n)=>ee(`/catalogue/${encodeURIComponent(e)}/install`,n),catalogueJob:e=>be(`/catalogue/jobs/${encodeURIComponent(e)}`),catalogueConfirm:(e,n)=>ee(`/catalogue/jobs/${encodeURIComponent(e)}/confirm`,{approve:n}),catalogueUpdatePlan:(e,n)=>ee(`/catalogue/${encodeURIComponent(e)}/update/plan`,{agentId:n}),catalogueUpdate:(e,n,s,r=!1)=>ee(`/catalogue/${encodeURIComponent(e)}/update`,{agentId:n,plan:s,...r?{replace:!0}:{}}),agentRemovePreview:e=>be(`/agents/${encodeURIComponent(e)}/remove`),removeAgent:e=>ee(`/agents/${encodeURIComponent(e)}/remove`),dismissAgentOffer:(e,n)=>ee(`/agent-offers/${encodeURIComponent(e)}/${encodeURIComponent(n)}/dismiss`,{}),proposals:()=>be("/proposals"),setDigestSchedule:(e,n)=>ee("/proposals/digest-schedule",{day:e,hour:n}),keepProposal:(e,n)=>ee(`/proposals/${encodeURIComponent(e)}/keep`,n===void 0?{}:{text:n}),keepAllProposals:e=>ee("/proposals/keep-all",{ids:e}),discardProposal:(e,n)=>ee(`/proposals/${encodeURIComponent(e)}/discard`,n?{reason:n}:{}),reminders:()=>be("/reminders"),sentinels:()=>be("/sentinels"),setSentinelEnabled:(e,n)=>ee(`/sentinels/${encodeURIComponent(e)}/enabled`,{enabled:n}),widgets:(e="home")=>be("/widgets",{...e==="lock"?{surface:e}:{},...Sg()}),saveWidgets:(e,n)=>br(`/widgets/${e}`,{placements:n.map(({key:s,widget:r,size:a,settings:i})=>({...s?{key:s}:{},widget:r,size:a,settings:i}))}),widgetSettings:e=>be(`/widgets/settings/${encodeURIComponent(e)}`),previewWidget:e=>ee("/widgets/preview",{...e,...Sg()}),refreshWidget:(e,n="home")=>ee(`/widgets/${encodeURIComponent(e)}/refresh${n==="lock"?"?surface=lock":""}`),homeDismiss:(e,n)=>ee("/home/dismiss",{slot:e,token:n}),setGlanceHidden:(e,n)=>ee(`/home/glances/${encodeURIComponent(e)}/hidden`,{hidden:n}),rail:()=>be("/rail"),setRailHidden:(e,n,s)=>ee(`/rail/pages/${encodeURIComponent(e)}/${encodeURIComponent(n)}/hidden`,{hidden:s}),snoozeAlerts:(e,n,s)=>ee("/alerts/snooze",{keys:e,snoozed:n,...s!==void 0?{days:s}:{}}),muteAlert:(e,n)=>ee("/alerts/mute",{key:e,scope:n}),unmuteAlert:e=>ee(`/alerts/mutes/${encodeURIComponent(e)}/remove`,{}),actOnAlerts:e=>ee("/alerts/act",{entries:e}),askAboutAlerts:e=>ee("/alerts/ask",{keys:e}),agents:()=>be("/agents"),library:e=>be("/artifacts",e),libraryEntry:(e,n=0)=>be(`/artifacts/${encodeURIComponent(e)}`,n?{contexts:n}:{}),onboarding:()=>be("/onboarding"),onboardingStep:(e,n={})=>ee("/onboarding/step",{step:e,...n}),takeOn:e=>ee("/onboarding/take-on",{tiles:e}),takeOnProgress:()=>be("/onboarding/take-on"),completeOnboarding:()=>ee("/onboarding/complete"),skipOnboarding:()=>ee("/onboarding/skip"),createFirstAgent:e=>ee("/onboarding/agent",e),ollama:()=>be("/onboarding/ollama"),ollamaPull:e=>ee("/onboarding/ollama/pull",{model:e}),ollamaPullState:()=>be("/onboarding/ollama/pull"),mlxh:()=>be("/onboarding/mlxh"),firstAgentPersona:()=>be("/onboarding/agent"),updateFirstAgent:e=>ee("/onboarding/agent/update",e),bindBrain:e=>ee("/onboarding/brain",e),reportAudio:e=>be("/reports/audio",{link:e}),pages:()=>be("/pages"),pageQuery:(e,n,s={})=>be(`/pages/${encodeURIComponent(e)}/${encodeURIComponent(n)}`,s),pageFileUrl:(e,n,s={})=>{const r=new URLSearchParams(Object.entries(s).filter(([,a])=>a!=="")).toString();return`/api/pages/${encodeURIComponent(e)}/${encodeURIComponent(n)}${r?`?${r}`:""}`},pageAct:(e,n)=>ee(`/pages/${encodeURIComponent(e)}/act`,n),telegram:()=>be("/telegram"),saveTelegramToken:e=>ee("/telegram/token",{token:e}),telegramPairing:()=>ee("/telegram/pairing"),telegramBot:()=>be("/telegram/bot"),telegramDevices:()=>be("/telegram/devices"),unpairTelegramDevice:e=>js(`/telegram/devices/${encodeURIComponent(e)}`),notifications:(e=20)=>be("/notifications",{limit:e}),notificationsNeedingYou:()=>be("/notifications",{needs:1}),notificationSeen:e=>ee(`/notifications/${encodeURIComponent(e)}/seen`),notificationSettings:()=>be("/notifications/settings"),saveNotificationSettings:e=>br("/notifications/settings",e),focus:()=>be("/notifications/focus"),lockState:()=>be("/lock"),lockScreen:()=>be("/lock/screen",Sg()),lockNow:(e="owner",n)=>ee("/lock",{reason:e,...e==="idle"&&n!==void 0?{idleForMs:Math.max(0,Math.round(n))}:{}}),unlock:e=>ee("/lock/unlock",{pin:e}),lockActivity:()=>ee("/lock/activity"),setPin:(e,n)=>br("/lock/pin",n===void 0?{pin:e}:{pin:e,current:n}),removePin:e=>ee("/lock/pin/remove",{current:e}),setLockSettings:e=>br("/lock/settings",e),uploadLockBackground:e=>{const n=new FormData;return n.append("file",e),qh("/lock/background",n)},removeLockBackground:()=>js("/lock/background"),uploadLockPortrait:e=>{const n=new FormData;return n.append("file",e),qh("/lock/background/portrait",n)},removeLockPortrait:()=>js("/lock/background/portrait"),setFocus:(e,n)=>br("/notifications/focus",n?{mode:e,duration:n}:{mode:e}).then(Ec),testChannel:e=>ee("/notifications/test",{channel:e}),setAgentMuted:(e,n)=>ee("/notifications/agent-mute",{agentId:e,muted:n}),currentTip:e=>be(e?`/tips/current?preview=${encodeURIComponent(e)}`:"/tips/current"),tipQueue:(e,n)=>be(e?`/tips/queue?preview=${encodeURIComponent(e)}`:n?"/tips/queue?peek=1":"/tips/queue"),tips:()=>be("/tips"),dismissedTips:()=>be("/tips/dismissed"),restoreTip:e=>ee(`/tips/${encodeURIComponent(e)}/restore`),dismissTip:e=>ee(`/tips/${encodeURIComponent(e)}/dismiss`),laterTip:e=>ee(`/tips/${encodeURIComponent(e)}/later`),tipsSeenPage:e=>ee("/tips/seen-page",{page:e}),presence:e=>ee("/presence",{state:e}),owner:()=>be("/owner"),setOwner:e=>ee("/owner",e),findPlace:e=>ee("/owner/places/find",{address:e}),savePlace:e=>ee("/owner/places",e),removePlace:e=>ee("/owner/places/remove",{id:e}),memory:e=>be(e?`/memory?agent=${encodeURIComponent(e)}`:"/memory"),setPreference:e=>ee("/memory/preferences",e),forgetPreference:e=>ee("/memory/preferences/forget",e),updateNote:(e,n)=>ee(`/memory/notes/${encodeURIComponent(e)}`,n),forgetNote:e=>ee(`/memory/notes/${encodeURIComponent(e)}/forget`),people:()=>be("/memory/people"),savePerson:e=>ee("/memory/people",e),forgetPerson:e=>ee(`/memory/people/${encodeURIComponent(e)}/forget`),restorePerson:e=>ee(`/memory/people/${encodeURIComponent(e)}/restore`),birthday:()=>be("/owner/birthday"),agentIntro:e=>be(`/agents/${encodeURIComponent(e)}/intro`),dismissAgentIntro:e=>ee(`/agents/${encodeURIComponent(e)}/intro/dismiss`),setDelegates:(e,n)=>ee(`/agents/${encodeURIComponent(e)}/delegates`,{delegates:n}),agentProfile:e=>be(`/agents/${encodeURIComponent(e)}/profile`),agentSkills:e=>be(`/agents/${encodeURIComponent(e)}/skills`),removeSkill:(e,n)=>ee(`/agents/${encodeURIComponent(e)}/skills/${encodeURIComponent(n)}/remove`,{}),host:(e,n)=>be("/host",{agentId:e,conversationId:n}),connections:()=>be("/connections"),connection:e=>be(`/connections/${e}`),addConnection:(e,n)=>ee("/connections",{url:e,...n?{name:n}:{}}),addProgram:e=>ee("/connections",{transport:"stdio",...e}),updateProgram:(e,n)=>ee(`/connections/${e}/program`,n),connectionConsent:(e,n)=>ee(`/connections/${e}/consent`,n?{clientId:n}:{}),connectionToken:(e,n)=>ee(`/connections/${e}/token`,n),connectionDevice:e=>ee(`/connections/${e}/device`,{}),connectionCallback:e=>ee("/connections/callback",e),connectionReview:e=>be(`/connections/${e}/review`),saveConnectionReview:(e,n)=>ee(`/connections/${e}/review`,n),grantConnection:(e,n,s=!1)=>ee(`/connections/${e}/grant`,s?{agents:n,exact:!0}:{agents:n}),setConnectionHolder:(e,n,s)=>ee(`/connections/${e}/holders/${encodeURIComponent(n)}`,{held:s}),disconnect:e=>js(`/connections/${e}`),connectionSignals:()=>be("/connections/signals"),connectionTools:e=>be(`/connections/${e}/tools`),rememberedApprovals:e=>be(`/connections/remembered/${encodeURIComponent(e)}`),setRememberedApproval:(e,n,s)=>ee("/connections/remembered",{agent:e,tool:n,remember:s}),secrets:()=>be("/secrets"),secretUses:(e,n)=>be("/secrets/uses",{name:e,limit:n}),secretsAct:(e,n)=>ee("/secrets/act",{tool:e,args:n}),saveSecretSet:e=>ee("/secrets",e),declineSecretRequest:(e,n)=>ee("/secrets/request/decline",{questionId:e,reason:n}),stopHost:(e,n)=>ee("/host/stop",{agentId:e,conversationId:n}),revokeHost:e=>ee("/host/revoke",{id:e}),decide:(e,n,s,r)=>ee(`/approvals/${encodeURIComponent(e)}/${n}`,s||r?{...s?{permissionScope:s}:{},...r?{ownerChoices:r}:{}}:void 0),setPaused:e=>ee("/pause",{paused:e}).then(Ec),service:()=>be("/service"),runtimes:()=>be("/runtimes"),removeEngine:()=>js("/runtimes/onnx"),removeModel:e=>js(`/runtimes/models/${encodeURIComponent(e)}`),serviceAction:e=>ee(`/service/${e}`),version:()=>be("/version"),checkVersion:()=>ee("/version/check"),setVersionCheck:e=>br("/version/check",{enabled:e}),tailscale:()=>be("/access/tailscale"),setTailscale:e=>br("/access/tailscale",e),access:()=>be("/access"),cloudflareAccess:()=>be("/access/cloudflare-access"),setCloudflareAccess:e=>br("/access/cloudflare-access",e),testCloudflareAccess:e=>ee("/access/cloudflare-access/test",e),cloudflareSetup:()=>be("/access/cloudflare-access/setup"),cloudflareZones:(e={})=>ee("/access/cloudflare-access/zones",e),startCloudflareSetup:e=>ee("/access/cloudflare-access/setup",e),stopCloudflareSetup:()=>ee("/access/cloudflare-access/setup/stop"),removeCloudflareSetup:(e={})=>ee("/access/cloudflare-access/setup/remove",e),forgetCloudflareToken:()=>ee("/access/cloudflare-access/setup/forget-token"),apiTokens:()=>be("/api-tokens"),createApiToken:e=>ee("/api-tokens",{name:e}),revokeApiToken:e=>js(`/api-tokens/${encodeURIComponent(e)}`),startUpgrade:e=>ee("/upgrade",e===void 0?{}:{version:e}),upgradeJob:e=>be(`/upgrade/jobs/${encodeURIComponent(e)}`),backups:()=>be("/backups"),startBackup:e=>ee("/backups",{encrypt:e}),verifyArchive:e=>ee("/backups/verify",{name:e}),restoreArchive:e=>ee("/backups/restore",e),restoreUpload:(e,n)=>jS("/backups/restore",e,n),backupJob:e=>be(`/backups/jobs/${encodeURIComponent(e)}`),backupSchedule:()=>be("/backups/schedule"),setBackupSchedule:e=>br("/backups/schedule",e),backupPassphrase:()=>be("/backups/passphrase"),revealBackupPassphrase:e=>ee("/backups/passphrase/reveal",e===void 0?{}:{pin:e}),cliTool:()=>be("/system/cli"),installCliTool:()=>ee("/system/cli",{}),uninstallPlan:()=>be("/system/uninstall"),uninstallBackup:e=>ee("/system/uninstall/backup",{token:e}),uninstallJob:e=>be(`/system/uninstall/jobs/${encodeURIComponent(e)}`),uninstall:e=>ee("/system/uninstall",e),passphraseNotice:()=>be("/backups/passphrase/notice"),acknowledgePassphrase:()=>ee("/backups/passphrase/notice",{}),setBackupPassphrase:e=>br("/backups/passphrase",{passphrase:e}),plugins:()=>be("/plugins"),market:(e=!1)=>be(`/market${e?"?refresh=1":""}`),marketAssetUrl:e=>`/api/market/asset?url=${encodeURIComponent(e)}`,pluginFolders:e=>be("/plugins/folders",e?{path:e}:{}),stagePlugin:e=>ee("/plugins/stage",{spec:e}),uploadPlugin:e=>Zw("/plugins/upload",e,"plugin.tgz"),pluginJob:e=>be(`/plugins/jobs/${encodeURIComponent(e)}`),approveStaged:(e,n)=>ee(`/plugins/staged/${encodeURIComponent(e)}/approve`,n),rejectStaged:e=>ee(`/plugins/staged/${encodeURIComponent(e)}/reject`),openedStaged:e=>ee(`/plugins/staged/${encodeURIComponent(e)}/opened`),updatePlugin:(e,n,s)=>ee(`/plugins/${encodeURIComponent(e)}/update`,{...n?{version:n}:{},...s?{from:s}:{}}),setPluginEnabled:(e,n)=>ee(`/plugins/${encodeURIComponent(e)}/${n?"enable":"disable"}`,{}),uninstallPlugin:(e,n)=>ee(`/plugins/${encodeURIComponent(e)}/uninstall`,n),acceptPluginAgent:(e,n)=>ee(`/plugins/${encodeURIComponent(e)}/agents/${encodeURIComponent(n)}/accept`),recovery:()=>be("/recovery"),leaveRecovery:e=>ee("/recovery/leave",e),firstRunRestore:(e,n)=>jS("/onboarding/restore",e,{passphrase:n}),setMissionEnabled:(e,n)=>ee(`/missions/${encodeURIComponent(e)}/enabled`,{enabled:n}),setMissionChrome:(e,n)=>ee(`/missions/${encodeURIComponent(e)}/browser`,{chrome:n}),runMission:e=>ee(`/missions/${encodeURIComponent(e)}/run`,{}),keepMission:e=>ee(`/missions/${encodeURIComponent(e)}/keep`,{}),answerStillUseful:(e,n)=>ee(`/missions/${encodeURIComponent(e)}/still-useful`,{answer:n}),setMisfirePolicy:(e,n,s)=>ee(`/missions/${encodeURIComponent(e)}/schedule`,{misfirePolicy:n,...s===void 0?{}:{deadlineMinutes:s}}),retryJob:e=>ee(`/jobs/${encodeURIComponent(e)}/retry`),cancelJob:e=>ee(`/jobs/${encodeURIComponent(e)}/cancel`),jobFailures:()=>be("/jobs/failures"),dismissJobs:e=>ee("/jobs/dismiss",e).then(Ec),undismissJobs:e=>ee("/jobs/undismiss",{ids:e}).then(Ec),retryJobs:e=>ee("/jobs/retry",e).then(Ec),setDefaultAgent:e=>ee("/agents/default",{agentId:e}),agentTools:e=>be(`/agents/${encodeURIComponent(e)}/tools`),agentFile:e=>be(`/agents/${encodeURIComponent(e)}/file`),uploadAgentPicture:(e,n)=>{const s=new FormData;return s.append("file",n,n.name),qh(`/agents/${encodeURIComponent(e)}/avatar`,s)},removeAgentPicture:e=>js(`/agents/${encodeURIComponent(e)}/avatar`),updateAgentFile:(e,n)=>ee(`/agents/${encodeURIComponent(e)}/file`,n),setAgentEngine:(e,n)=>ee(`/agents/${encodeURIComponent(e)}/engine`,n),quiet:e=>ee("/quiet",{arg:e}),takeOffer:(e,n)=>ee(`/offers/${encodeURIComponent(e)}/take`,n?{conversationId:n}:{}),cancelReminder:e=>ee(`/reminders/${encodeURIComponent(e)}/cancel`,{reason:"cancelled from the dashboard"})},tb=e=>`buddi.chatReference.${e}`;function IU(e,n){try{sessionStorage.setItem(tb(e),JSON.stringify(n))}catch{}}function PU(e){try{const n=JSON.parse(sessionStorage.getItem(tb(e))??"null");return n&&typeof n.title=="string"&&typeof n.text=="string"&&Array.isArray(n.suggestions)&&n.suggestions.every(s=>typeof s=="string")?n:null}catch{return null}}function yS(e){try{sessionStorage.removeItem(tb(e))}catch{}}function MU(e,n){return n?`${e}
|
|
41
|
+
|
|
42
|
+
Reference: ${n.title}
|
|
43
|
+
${n.text}`:e}const Yv="buddi.chatDraft";function pd(e,n){try{window.sessionStorage.setItem(Yv,JSON.stringify({agentId:e,text:n}))}catch{}}function OU(e){try{const n=window.sessionStorage.getItem(Yv);if(!n)return null;const s=JSON.parse(n);return s.agentId!==e||typeof s.text!="string"?null:(window.sessionStorage.removeItem(Yv),s.text)}catch{return null}}const DU=4e3,LU={ts:"TypeScript",tsx:"TypeScript",js:"JavaScript",jsx:"JavaScript",py:"Python",sh:"Shell",bash:"Shell",json:"JSON",sql:"SQL",md:"Markdown",html:"HTML",css:"CSS",go:"Go",rs:"Rust",yaml:"YAML",yml:"YAML"},RR=e=>LU[e.toLowerCase()]??e;function ep(e,n){const s=e.lastIndexOf(`
|
|
44
|
+
`,n-1)+1,r=e.indexOf(`
|
|
45
|
+
`,n),a=r<0?e.length:r;return{start:s,end:a,text:e.slice(s,a)}}function eu(e,n){return(e.slice(0,ep(e,n).start).match(/^```/gm)??[]).length%2===1}function FU(e,n){const s=e.slice(0,n),r=/(^|[\s(])@([a-z0-9-]*)$/i.exec(s);return!r||eu(e,n)?null:{start:n-r[2].length-1,query:r[2]}}function _U(e,n){const s=/^\/([a-z0-9-]*)$/i.exec(e.slice(0,n));return s?{query:s[1]}:null}function zU(e,n){return/^\/use @?[a-z0-9-]*$/i.test(e.slice(0,n))}function UU(e){const n=/^\/([a-z][a-z0-9-]*)(?:[ \t]+([\s\S]*))?$/i.exec(e.trim());return n?{name:n[1].toLowerCase(),arg:(n[2]??"").trim()}:null}function BU(e,n,s,r){const a=e.slice(n),i=a.startsWith(" ")?"":" ";return{value:`${e.slice(0,s)}@${r}${i}${a}`,caret:s+r.length+2}}const WU=/^(\s*)([-*]|\d+\.)( )(.*)$/;function nb(e,n){if(eu(e,n))return null;const s=WU.exec(ep(e,n).text);return s?{indent:s[1],mark:s[2],body:s[4]}:null}function HU(e,n){const s=nb(e,n);if(!s)return null;const r=ep(e,n);if(s.body.trim()==="")return{value:e.slice(0,r.start)+e.slice(r.end),caret:r.start};const a=/\d/.test(s.mark)?`${parseInt(s.mark,10)+1}.`:s.mark,i=`
|
|
46
|
+
${s.indent}${a} `;return{value:e.slice(0,n)+i+e.slice(n),caret:n+i.length}}function KU(e,n,s){if(!nb(e,n))return null;const r=ep(e,n);if(!s)return{value:e.slice(0,r.start)+" "+e.slice(r.start),caret:n+2};const a=r.text.replace(/^ {1,2}/,""),i=r.text.length-a.length;return{value:e.slice(0,r.start)+a+e.slice(r.end),caret:Math.max(r.start,n-i)}}function VU(e){const n=e.replace(/\n$/,"").split(`
|
|
47
|
+
`);return n.length<3||/^```/m.test(e)?!1:n.filter(r=>/[;{}()=<>]\s*$|^\s{2,}\S|^\t+\S|^\s*(const|let|var|function|def|import|from|export|return|if|for|while|class|SELECT|INSERT|UPDATE|<\w)/.test(r)).length/n.length>.5}function GU(e){return/\bdef \w+\(|^\s*import \w+$|^\s*from \w+ import /m.test(e)?"py":/^\s*(SELECT|INSERT|UPDATE|WITH)\b/im.test(e)?"sql":/^\s*[{[]/.test(e)&&/"\w+"\s*:/.test(e)&&!/;\s*$/m.test(e)?"json":/:\s*\w+[\]>]?\s*[=;),]|\binterface \w+|\bas const\b|\btype \w+ =/.test(e)?"ts":"js"}function qU(e,n,s,r){const i=`${n>0&&e[n-1]!==`
|
|
48
|
+
`?`
|
|
49
|
+
`:""}\`\`\`${r}
|
|
50
|
+
${s.replace(/\n$/,"")}
|
|
51
|
+
\`\`\`
|
|
52
|
+
`;return{value:e.slice(0,n)+i+e.slice(n),caret:n+i.length}}function YU(e){const n=e.replace(/```[\s\S]*?(```|$)/g," ").replace(/`[^`\n]*`/g," "),s=[];for(const r of n.matchAll(/(^|[\s(])@([a-z][a-z0-9-]*)/gi)){const a=r[2].toLowerCase();s.includes(a)||s.push(a)}return s}function IR(e){const n=/^@([a-z][a-z0-9-]*)\s*[:,]?[ \t]*([\s\S]*)$/i.exec(e.trim());return n?{handle:n[1].toLowerCase(),rest:n[2].trim()}:null}function PR(e){return e==="anthropic"||e==="openai"}function MR(e,n){var a,i;if(!e)return null;const s=e.credentialEnv&&(n!=null&&n.accounts.some(l=>l.id===e.credentialEnv))?e.credentialEnv:(i=(a=n==null?void 0:n.bindings)==null?void 0:a.find(l=>l.agentId===e.id))==null?void 0:i.accountId,r=s?n==null?void 0:n.accounts.find(l=>l.id===s):void 0;return(r==null?void 0:r.kind)??e.provider}const QU="Thinking is up to this model. What it writes while thinking is shown apart and kept out of the answer.";var JU=Object.defineProperty,XU=(e,n)=>JU(e,"name",{value:n,configurable:!0}),ZU=d.createContext(void 0);function tp(e){const n=d.useContext(ZU);return e||n||"ltr"}XU(tp,"useDirection");var e6=Object.defineProperty,sb=(e,n)=>e6(e,"name",{value:n,configurable:!0}),ah=0,Gr=null;function t6(e){return np(),e.children}sb(t6,"FocusGuards");function np(){d.useEffect(()=>{Gr||(Gr={start:Qv(),end:Qv()});const{start:e,end:n}=Gr;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement("afterbegin",e),document.body.lastElementChild!==n&&document.body.insertAdjacentElement("beforeend",n),ah++,()=>{ah===1&&(Gr==null||Gr.start.remove(),Gr==null||Gr.end.remove(),Gr=null),ah=Math.max(0,ah-1)}},[])}sb(np,"useFocusGuards");function Qv(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}sb(Qv,"createFocusGuard");var n6=Object.defineProperty,us=(e,n)=>n6(e,"name",{value:n,configurable:!0}),Cg="focusScope.autoFocusOnMount",Eg="focusScope.autoFocusOnUnmount",wS={bubbles:!1,cancelable:!0},OR=d.forwardRef(us(function(n,s){const{loop:r=!1,trapped:a=!1,onMountAutoFocus:i,onUnmountAutoFocus:l,...o}=n,[c,u]=d.useState(null),h=hs(i),f=hs(l),m=d.useRef(null),p=Wt(s,u),x=d.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;d.useEffect(()=>{if(a){let b=function(k){if(x.paused||!c)return;const N=k.target;c.contains(N)?m.current=N:ja(m.current,{select:!0})},j=function(k){if(x.paused||!c)return;const N=k.relatedTarget;N!==null&&(c.contains(N)||ja(m.current,{select:!0}))},v=function(k){if(document.activeElement===document.body)for(const w of k)w.removedNodes.length>0&&ja(c)};us(b,"handleFocusIn"),us(j,"handleFocusOut"),us(v,"handleMutations"),document.addEventListener("focusin",b),document.addEventListener("focusout",j);const y=new MutationObserver(v);return c&&y.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",b),document.removeEventListener("focusout",j),y.disconnect()}}},[a,c,x.paused]),d.useEffect(()=>{if(c){bS.add(x);const b=document.activeElement;if(!c.contains(b)){const v=new CustomEvent(Cg,wS);c.addEventListener(Cg,h),c.dispatchEvent(v),v.defaultPrevented||(DR(UR(rb(c)),{select:!0}),document.activeElement===b&&ja(c))}return()=>{c.removeEventListener(Cg,h),setTimeout(()=>{const v=new CustomEvent(Eg,wS);c.addEventListener(Eg,f),c.dispatchEvent(v),v.defaultPrevented||ja(b??document.body,{select:!0}),c.removeEventListener(Eg,f),bS.remove(x)},0)}}},[c,h,f,x]);const g=d.useCallback(b=>{if(!r&&!a||x.paused)return;const j=b.key==="Tab"&&!b.altKey&&!b.ctrlKey&&!b.metaKey,v=document.activeElement;if(j&&v){const y=b.currentTarget,[k,N]=LR(y);k&&N?!b.shiftKey&&v===N?(b.preventDefault(),r&&ja(k,{select:!0})):b.shiftKey&&v===k&&(b.preventDefault(),r&&ja(N,{select:!0})):v===y&&b.preventDefault()}},[r,a,x.paused]);return t.jsx(_t.div,{tabIndex:-1,...o,ref:p,onKeyDown:g})},"FocusScope"));function DR(e,{select:n=!1}={}){const s=document.activeElement;for(const r of e)if(ja(r,{select:n}),document.activeElement!==s)return}us(DR,"focusFirst");function LR(e){const n=rb(e),s=Jv(n,e),r=Jv(n.reverse(),e);return[s,r]}us(LR,"getTabbableEdges");function rb(e){const n=[],s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:us(r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;s.nextNode();)n.push(s.currentNode);return n}us(rb,"getTabbableCandidates");function Jv(e,n){const s=typeof n.checkVisibility=="function"&&n.checkVisibility({checkVisibilityCSS:!0});for(const r of e)if(!(s?!r.checkVisibility({checkVisibilityCSS:!0}):FR(r,{upTo:n})))return r}us(Jv,"findVisible");function FR(e,{upTo:n}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(n!==void 0&&e===n)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}us(FR,"isHidden");function _R(e){return e instanceof HTMLInputElement&&"select"in e}us(_R,"isSelectableInput");function ja(e,{select:n=!1}={}){if(e&&e.focus){const s=document.activeElement;e.focus({preventScroll:!0}),e!==s&&_R(e)&&n&&e.select()}}us(ja,"focus");var bS=zR();function zR(){let e=[];return{add(n){const s=e[0];n!==s&&(s==null||s.pause()),e=Xv(e,n),e.unshift(n)},remove(n){var s;e=Xv(e,n),(s=e[0])==null||s.resume()}}}us(zR,"createFocusScopesStack");function Xv(e,n){const s=[...e],r=s.indexOf(n);return r!==-1&&s.splice(r,1),s}us(Xv,"arrayRemove");function UR(e){return e.filter(n=>n.tagName!=="A")}us(UR,"removeLinks");var s6=Object.defineProperty,ab=(e,n)=>s6(e,"name",{value:n,configurable:!0}),Ag=!1;function BR(){const[e,n]=d.useState(Ag);return d.useEffect(()=>{Ag||(Ag=!0,n(!0))},[]),e}ab(BR,"useIsHydrated");var WR=qo[" useSyncExternalStore ".trim().toString()];function HR(){return()=>{}}ab(HR,"subscribe");function KR(){return WR(HR,()=>!0,()=>!1)}ab(KR,"useIsHydratedModern");var r6=typeof WR=="function"?KR:BR,a6=Object.defineProperty,Cl=(e,n)=>a6(e,"name",{value:n,configurable:!0}),$g="rovingFocusGroup.onEntryFocus",i6={bubbles:!1,cancelable:!0},sp="RovingFocusGroup",[Zv,VR,l6]=_m(sp),[o6,rp]=Ur(sp,[l6]),[c6,u6]=o6(sp),d6=d.forwardRef(Cl(function(n,s){return t.jsx(Zv.Provider,{scope:n.__scopeRovingFocusGroup,children:t.jsx(Zv.Slot,{scope:n.__scopeRovingFocusGroup,children:t.jsx(h6,{...n,ref:s})})})},"RovingFocusGroup")),h6=d.forwardRef(Cl(function(n,s){const{__scopeRovingFocusGroup:r,orientation:a,loop:i=!1,dir:l,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:u,onEntryFocus:h,preventScrollOnEntryFocus:f=!1,...m}=n,p=d.useRef(null),x=Wt(s,p),g=tp(l),[b,j]=Ei({prop:o,defaultProp:c??null,onChange:u,caller:sp}),[v,y]=d.useState(!1),k=hs(h),N=VR(r),w=d.useRef(!1),[S,C]=d.useState(0);return d.useEffect(()=>{const E=p.current;if(E)return E.addEventListener($g,k),()=>E.removeEventListener($g,k)},[k]),t.jsx(c6,{scope:r,orientation:a,dir:g,loop:i,currentTabStopId:b,onItemFocus:d.useCallback(E=>j(E),[j]),onItemShiftTab:d.useCallback(()=>y(!0),[]),onFocusableItemAdd:d.useCallback(()=>C(E=>E+1),[]),onFocusableItemRemove:d.useCallback(()=>C(E=>E-1),[]),children:t.jsx(_t.div,{tabIndex:v||S===0?-1:0,"data-orientation":a,...m,ref:x,style:{outline:"none",...n.style},onMouseDown:qe(n.onMouseDown,()=>{w.current=!0}),onFocus:qe(n.onFocus,E=>{const $=!w.current;if(E.target===E.currentTarget&&$&&!v){const R=new CustomEvent($g,i6);if(E.currentTarget.dispatchEvent(R),!R.defaultPrevented){const P=N().filter(L=>L.focusable),O=P.find(L=>L.active),I=P.find(L=>L.id===b),U=[O,I,...P].filter(Boolean).map(L=>L.ref.current);ib(U,f)}}w.current=!1}),onBlur:qe(n.onBlur,()=>y(!1))})})},"RovingFocusGroupImpl")),f6="RovingFocusGroupItem",m6=d.forwardRef(Cl(function(n,s){const{__scopeRovingFocusGroup:r,focusable:a=!0,active:i=!1,tabStopId:l,children:o,...c}=n,u=Rr(),h=l||u,f=u6(f6,r),m=f.currentTabStopId===h,p=VR(r),{onFocusableItemAdd:x,onFocusableItemRemove:g,currentTabStopId:b}=f,j=r6();return Es(()=>{if(!(!j||!a))return x(),()=>g()},[j,a,x,g]),d.useEffect(()=>{if(!(j||!a))return x(),()=>g()},[j,a,x,g]),t.jsx(Zv.ItemSlot,{scope:r,id:h,focusable:a,active:i,children:t.jsx(_t.span,{tabIndex:m?0:-1,"data-orientation":f.orientation,...c,ref:s,onMouseDown:qe(n.onMouseDown,v=>{a?f.onItemFocus(h):v.preventDefault()}),onFocus:qe(n.onFocus,()=>f.onItemFocus(h)),onKeyDown:qe(n.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){f.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const y=qR(v,f.orientation,f.dir);if(y!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let N=p().filter(w=>w.focusable).map(w=>w.ref.current);if(y==="last")N.reverse();else if(y==="prev"||y==="next"){y==="prev"&&N.reverse();const w=N.indexOf(v.currentTarget);N=f.loop?YR(N,w+1):N.slice(w+1)}setTimeout(()=>ib(N))}}),children:typeof o=="function"?o({isCurrentTabStop:m,hasTabStop:b!=null}):o})})},"RovingFocusGroupItem")),p6={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function GR(e,n){return n!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}Cl(GR,"getDirectionAwareKey");function qR(e,n,s){const r=GR(e.key,s);if(!(n==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(n==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return p6[r]}Cl(qR,"getFocusIntent");function ib(e,n=!1){const s=document.activeElement;for(const r of e)if(r===s||(r.focus({preventScroll:n}),document.activeElement!==s))return}Cl(ib,"focusFirst");function YR(e,n){return e.map((s,r)=>e[(n+r)%e.length])}Cl(YR,"wrapArray");var QR=d6,JR=m6,g6=function(e){if(typeof document>"u")return null;var n=Array.isArray(e)?e[0]:e;return n.ownerDocument.body},Fl=new WeakMap,ih=new WeakMap,lh={},Tg=0,XR=function(e){return e&&(e.host||XR(e.parentNode))},x6=function(e,n){return n.map(function(s){if(e.contains(s))return s;var r=XR(s);return r&&e.contains(r)?r:(console.error("aria-hidden",s,"in not contained inside",e,". Doing nothing"),null)}).filter(function(s){return!!s})},v6=function(e,n,s,r){var a=x6(n,Array.isArray(e)?e:[e]);lh[s]||(lh[s]=new WeakMap);var i=lh[s],l=[],o=new Set,c=new Set(a),u=function(f){!f||o.has(f)||(o.add(f),u(f.parentNode))};a.forEach(u);var h=function(f){!f||c.has(f)||Array.prototype.forEach.call(f.children,function(m){if(o.has(m))h(m);else try{var p=m.getAttribute(r),x=p!==null&&p!=="false",g=(Fl.get(m)||0)+1,b=(i.get(m)||0)+1;Fl.set(m,g),i.set(m,b),l.push(m),g===1&&x&&ih.set(m,!0),b===1&&m.setAttribute(s,"true"),x||m.setAttribute(r,"true")}catch(j){console.error("aria-hidden: cannot operate on ",m,j)}})};return h(n),o.clear(),Tg++,function(){l.forEach(function(f){var m=Fl.get(f)-1,p=i.get(f)-1;Fl.set(f,m),i.set(f,p),m||(ih.has(f)||f.removeAttribute(r),ih.delete(f)),p||f.removeAttribute(s)}),Tg--,Tg||(Fl=new WeakMap,Fl=new WeakMap,ih=new WeakMap,lh={})}},ZR=function(e,n,s){s===void 0&&(s="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),a=g6(e);return a?(r.push.apply(r,Array.from(a.querySelectorAll("[aria-live], script"))),v6(r,a,s,"aria-hidden")):function(){return null}},Xr=function(){return Xr=Object.assign||function(n){for(var s,r=1,a=arguments.length;r<a;r++){s=arguments[r];for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(n[i]=s[i])}return n},Xr.apply(this,arguments)};function eI(e,n){var s={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(s[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a<r.length;a++)n.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(s[r[a]]=e[r[a]]);return s}function j6(e,n,s){if(s||arguments.length===2)for(var r=0,a=n.length,i;r<a;r++)(i||!(r in n))&&(i||(i=Array.prototype.slice.call(n,0,r)),i[r]=n[r]);return e.concat(i||Array.prototype.slice.call(n))}var Qh="right-scroll-bar-position",Jh="width-before-scroll-bar",y6="with-scroll-bars-hidden",w6="--removed-body-scroll-bar-size";function Rg(e,n){return typeof e=="function"?e(n):e&&(e.current=n),e}function b6(e,n){var s=d.useState(function(){return{value:e,callback:n,facade:{get current(){return s.value},set current(r){var a=s.value;a!==r&&(s.value=r,s.callback(r,a))}}}})[0];return s.callback=n,s.facade}var k6=typeof window<"u"?d.useLayoutEffect:d.useEffect,kS=new WeakMap;function N6(e,n){var s=b6(null,function(r){return e.forEach(function(a){return Rg(a,r)})});return k6(function(){var r=kS.get(s);if(r){var a=new Set(r),i=new Set(e),l=s.current;a.forEach(function(o){i.has(o)||Rg(o,null)}),i.forEach(function(o){a.has(o)||Rg(o,l)})}kS.set(s,e)},[e]),s}function S6(e){return e}function C6(e,n){n===void 0&&(n=S6);var s=[],r=!1,a={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return s.length?s[s.length-1]:e},useMedium:function(i){var l=n(i,r);return s.push(l),function(){s=s.filter(function(o){return o!==l})}},assignSyncMedium:function(i){for(r=!0;s.length;){var l=s;s=[],l.forEach(i)}s={push:function(o){return i(o)},filter:function(){return s}}},assignMedium:function(i){r=!0;var l=[];if(s.length){var o=s;s=[],o.forEach(i),l=s}var c=function(){var h=l;l=[],h.forEach(i)},u=function(){return Promise.resolve().then(c)};u(),s={push:function(h){l.push(h),u()},filter:function(h){return l=l.filter(h),s}}}};return a}function E6(e){e===void 0&&(e={});var n=C6(null);return n.options=Xr({async:!0,ssr:!1},e),n}var tI=function(e){var n=e.sideCar,s=eI(e,["sideCar"]);if(!n)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=n.read();if(!r)throw new Error("Sidecar medium not found");return d.createElement(r,Xr({},s))};tI.isSideCarExport=!0;function A6(e,n){return e.useMedium(n),tI}var nI=E6(),Ig=function(){},ap=d.forwardRef(function(e,n){var s=d.useRef(null),r=d.useState({onScrollCapture:Ig,onWheelCapture:Ig,onTouchMoveCapture:Ig}),a=r[0],i=r[1],l=e.forwardProps,o=e.children,c=e.className,u=e.removeScrollBar,h=e.enabled,f=e.shards,m=e.sideCar,p=e.noRelative,x=e.noIsolation,g=e.inert,b=e.allowPinchZoom,j=e.as,v=j===void 0?"div":j,y=e.gapMode,k=eI(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),N=m,w=N6([s,n]),S=Xr(Xr({},k),a);return d.createElement(d.Fragment,null,h&&d.createElement(N,{sideCar:nI,removeScrollBar:u,shards:f,noRelative:p,noIsolation:x,inert:g,setCallbacks:i,allowPinchZoom:!!b,lockRef:s,gapMode:y}),l?d.cloneElement(d.Children.only(o),Xr(Xr({},S),{ref:w})):d.createElement(v,Xr({},S,{className:c,ref:w}),o))});ap.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};ap.classNames={fullWidth:Jh,zeroRight:Qh};var $6=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function T6(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var n=$6();return n&&e.setAttribute("nonce",n),e}function R6(e,n){e.styleSheet?e.styleSheet.cssText=n:e.appendChild(document.createTextNode(n))}function I6(e){var n=document.head||document.getElementsByTagName("head")[0];n.appendChild(e)}var P6=function(){var e=0,n=null;return{add:function(s){e==0&&(n=T6())&&(R6(n,s),I6(n)),e++},remove:function(){e--,!e&&n&&(n.parentNode&&n.parentNode.removeChild(n),n=null)}}},M6=function(){var e=P6();return function(n,s){d.useEffect(function(){return e.add(n),function(){e.remove()}},[n&&s])}},sI=function(){var e=M6(),n=function(s){var r=s.styles,a=s.dynamic;return e(r,a),null};return n},O6={left:0,top:0,right:0,gap:0},Pg=function(e){return parseInt(e||"",10)||0},D6=function(e){var n=window.getComputedStyle(document.body),s=n[e==="padding"?"paddingLeft":"marginLeft"],r=n[e==="padding"?"paddingTop":"marginTop"],a=n[e==="padding"?"paddingRight":"marginRight"];return[Pg(s),Pg(r),Pg(a)]},L6=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return O6;var n=D6(e),s=document.documentElement.clientWidth,r=window.innerWidth;return{left:n[0],top:n[1],right:n[2],gap:Math.max(0,r-s+n[2]-n[0])}},F6=sI(),yo="data-scroll-locked",_6=function(e,n,s,r){var a=e.left,i=e.top,l=e.right,o=e.gap;return s===void 0&&(s="margin"),`
|
|
53
|
+
.`.concat(y6,` {
|
|
54
|
+
overflow: hidden `).concat(r,`;
|
|
55
|
+
padding-right: `).concat(o,"px ").concat(r,`;
|
|
56
|
+
}
|
|
57
|
+
body[`).concat(yo,`] {
|
|
58
|
+
overflow: hidden `).concat(r,`;
|
|
59
|
+
overscroll-behavior: contain;
|
|
60
|
+
`).concat([n&&"position: relative ".concat(r,";"),s==="margin"&&`
|
|
61
|
+
padding-left: `.concat(a,`px;
|
|
62
|
+
padding-top: `).concat(i,`px;
|
|
63
|
+
padding-right: `).concat(l,`px;
|
|
64
|
+
margin-left:0;
|
|
65
|
+
margin-top:0;
|
|
66
|
+
margin-right: `).concat(o,"px ").concat(r,`;
|
|
67
|
+
`),s==="padding"&&"padding-right: ".concat(o,"px ").concat(r,";")].filter(Boolean).join(""),`
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.`).concat(Qh,` {
|
|
71
|
+
right: `).concat(o,"px ").concat(r,`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.`).concat(Jh,` {
|
|
75
|
+
margin-right: `).concat(o,"px ").concat(r,`;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.`).concat(Qh," .").concat(Qh,` {
|
|
79
|
+
right: 0 `).concat(r,`;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.`).concat(Jh," .").concat(Jh,` {
|
|
83
|
+
margin-right: 0 `).concat(r,`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
body[`).concat(yo,`] {
|
|
87
|
+
`).concat(w6,": ").concat(o,`px;
|
|
88
|
+
}
|
|
89
|
+
`)},NS=function(){var e=parseInt(document.body.getAttribute(yo)||"0",10);return isFinite(e)?e:0},z6=function(){d.useEffect(function(){return document.body.setAttribute(yo,(NS()+1).toString()),function(){var e=NS()-1;e<=0?document.body.removeAttribute(yo):document.body.setAttribute(yo,e.toString())}},[])},U6=function(e){var n=e.noRelative,s=e.noImportant,r=e.gapMode,a=r===void 0?"margin":r;z6();var i=d.useMemo(function(){return L6(a)},[a]);return d.createElement(F6,{styles:_6(i,!n,a,s?"":"!important")})},ej=!1;if(typeof window<"u")try{var oh=Object.defineProperty({},"passive",{get:function(){return ej=!0,!0}});window.addEventListener("test",oh,oh),window.removeEventListener("test",oh,oh)}catch{ej=!1}var _l=ej?{passive:!1}:!1,B6=function(e){return e.tagName==="TEXTAREA"},rI=function(e,n){if(!(e instanceof Element))return!1;var s=window.getComputedStyle(e);return s[n]!=="hidden"&&!(s.overflowY===s.overflowX&&!B6(e)&&s[n]==="visible")},W6=function(e){return rI(e,"overflowY")},H6=function(e){return rI(e,"overflowX")},SS=function(e,n){var s=n.ownerDocument,r=n;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var a=aI(e,r);if(a){var i=iI(e,r),l=i[1],o=i[2];if(l>o)return!0}r=r.parentNode}while(r&&r!==s.body);return!1},K6=function(e){var n=e.scrollTop,s=e.scrollHeight,r=e.clientHeight;return[n,s,r]},V6=function(e){var n=e.scrollLeft,s=e.scrollWidth,r=e.clientWidth;return[n,s,r]},aI=function(e,n){return e==="v"?W6(n):H6(n)},iI=function(e,n){return e==="v"?K6(n):V6(n)},G6=function(e,n){return e==="h"&&n==="rtl"?-1:1},q6=function(e,n,s,r,a){var i=G6(e,window.getComputedStyle(n).direction),l=i*r,o=s.target,c=n.contains(o),u=!1,h=l>0,f=0,m=0;do{if(!o)break;var p=iI(e,o),x=p[0],g=p[1],b=p[2],j=g-b-i*x;(x||j)&&aI(e,o)&&(f+=j,m+=x);var v=o.parentNode;o=v&&v.nodeType===Node.DOCUMENT_FRAGMENT_NODE?v.host:v}while(!c&&o!==document.body||c&&(n.contains(o)||n===o));return(h&&Math.abs(f)<1||!h&&Math.abs(m)<1)&&(u=!0),u},ch=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},CS=function(e){return[e.deltaX,e.deltaY]},ES=function(e){return e&&"current"in e?e.current:e},Y6=function(e,n){return e[0]===n[0]&&e[1]===n[1]},Q6=function(e){return`
|
|
90
|
+
.block-interactivity-`.concat(e,` {pointer-events: none;}
|
|
91
|
+
.allow-interactivity-`).concat(e,` {pointer-events: all;}
|
|
92
|
+
`)},J6=0,zl=[];function X6(e){var n=d.useRef([]),s=d.useRef([0,0]),r=d.useRef(),a=d.useState(J6++)[0],i=d.useState(sI)[0],l=d.useRef(e);d.useEffect(function(){l.current=e},[e]),d.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var g=j6([e.lockRef.current],(e.shards||[]).map(ES),!0).filter(Boolean);return g.forEach(function(b){return b.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),g.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var o=d.useCallback(function(g,b){if("touches"in g&&g.touches.length===2||g.type==="wheel"&&g.ctrlKey)return!l.current.allowPinchZoom;var j=ch(g),v=s.current,y="deltaX"in g?g.deltaX:v[0]-j[0],k="deltaY"in g?g.deltaY:v[1]-j[1],N,w=g.target,S=Math.abs(y)>Math.abs(k)?"h":"v";if("touches"in g&&S==="h"&&w.type==="range")return!1;var C=window.getSelection(),E=C&&C.anchorNode,$=E?E===w||E.contains(w):!1;if($)return!1;var R=SS(S,w);if(!R)return!0;if(R?N=S:(N=S==="v"?"h":"v",R=SS(S,w)),!R)return!1;if(!r.current&&"changedTouches"in g&&(y||k)&&(r.current=N),!N)return!0;var P=r.current||N;return q6(P,b,g,P==="h"?y:k)},[]),c=d.useCallback(function(g){var b=g;if(!(!zl.length||zl[zl.length-1]!==i)){var j="deltaY"in b?CS(b):ch(b),v=n.current.filter(function(N){return N.name===b.type&&(N.target===b.target||b.target===N.shadowParent)&&Y6(N.delta,j)})[0];if(v&&v.should){b.cancelable&&b.preventDefault();return}if(!v){var y=(l.current.shards||[]).map(ES).filter(Boolean).filter(function(N){return N.contains(b.target)}),k=y.length>0?o(b,y[0]):!l.current.noIsolation;k&&b.cancelable&&b.preventDefault()}}},[]),u=d.useCallback(function(g,b,j,v){var y={name:g,delta:b,target:j,should:v,shadowParent:Z6(j)};n.current.push(y),setTimeout(function(){n.current=n.current.filter(function(k){return k!==y})},1)},[]),h=d.useCallback(function(g){s.current=ch(g),r.current=void 0},[]),f=d.useCallback(function(g){u(g.type,CS(g),g.target,o(g,e.lockRef.current))},[]),m=d.useCallback(function(g){u(g.type,ch(g),g.target,o(g,e.lockRef.current))},[]);d.useEffect(function(){return zl.push(i),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:m}),document.addEventListener("wheel",c,_l),document.addEventListener("touchmove",c,_l),document.addEventListener("touchstart",h,_l),function(){zl=zl.filter(function(g){return g!==i}),document.removeEventListener("wheel",c,_l),document.removeEventListener("touchmove",c,_l),document.removeEventListener("touchstart",h,_l)}},[]);var p=e.removeScrollBar,x=e.inert;return d.createElement(d.Fragment,null,x?d.createElement(i,{styles:Q6(a)}):null,p?d.createElement(U6,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Z6(e){for(var n=null;e!==null;)e instanceof ShadowRoot&&(n=e.host,e=e.host),e=e.parentNode;return n}const eB=A6(nI,X6);var lb=d.forwardRef(function(e,n){return d.createElement(ap,Xr({},e,{ref:n,sideCar:eB}))});lb.classNames=ap.classNames;var tB=Object.defineProperty,Rt=(e,n)=>tB(e,"name",{value:n,configurable:!0}),tj=["Enter"," "],nB=["ArrowDown","PageUp","Home"],lI=["ArrowUp","PageDown","End"],sB=[...nB,...lI],rB={ltr:[...tj,"ArrowRight"],rtl:[...tj,"ArrowLeft"]},aB={ltr:["ArrowLeft"],rtl:["ArrowRight"]},ip="Menu",[Lu,iB,lB]=_m(ip),[El,oI]=Ur(ip,[lB,Qm,rp]),lp=Qm(),cI=rp(),[uI,$i]=El(ip),[oB,gd]=El(ip),cB=Rt(e=>{const{__scopeMenu:n,open:s=!1,children:r,dir:a,onOpenChange:i,modal:l=!0}=e,o=lp(n),[c,u]=d.useState(null),h=d.useRef(!1),f=hs(i),m=tp(a);return d.useEffect(()=>{const p=Rt(()=>{h.current=!0,document.addEventListener("pointerdown",x,{capture:!0,once:!0}),document.addEventListener("pointermove",x,{capture:!0,once:!0})},"handleKeyDown"),x=Rt(()=>h.current=!1,"handlePointer");return document.addEventListener("keydown",p,{capture:!0}),()=>{document.removeEventListener("keydown",p,{capture:!0}),document.removeEventListener("pointerdown",x,{capture:!0}),document.removeEventListener("pointermove",x,{capture:!0})}},[]),d.useEffect(()=>{if(!s)return;const p=Rt(()=>f(!1),"handleBlur");return window.addEventListener("blur",p),()=>window.removeEventListener("blur",p)},[s,f]),t.jsx(Vw,{...o,children:t.jsx(uI,{scope:n,open:s,onOpenChange:f,content:c,onContentChange:u,children:t.jsx(oB,{scope:n,onClose:d.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:h,dir:m,modal:l,children:r})})})},"Menu"),dI=d.forwardRef(Rt(function(n,s){const{__scopeMenu:r,...a}=n,i=lp(r);return t.jsx(xR,{...i,...a,ref:s})},"MenuAnchor")),hI="MenuPortal",[uB,fI]=El(hI,{forceMount:void 0}),dB=Rt(e=>{const{__scopeMenu:n,forceMount:s,children:r,container:a}=e,i=$i(hI,n);return t.jsx(uB,{scope:n,forceMount:s,children:t.jsx(ha,{present:s||i.open,children:t.jsx(Bm,{asChild:!0,container:a,children:r})})})},"MenuPortal"),Ir="MenuContent",[hB,ob]=El(Ir),fB=d.forwardRef(Rt(function(n,s){const r=fI(Ir,n.__scopeMenu),{forceMount:a=r.forceMount,...i}=n,l=$i(Ir,n.__scopeMenu),o=gd(Ir,n.__scopeMenu);return t.jsx(Lu.Provider,{scope:n.__scopeMenu,children:t.jsx(ha,{present:a||l.open,children:t.jsx(Lu.Slot,{scope:n.__scopeMenu,children:o.modal?t.jsx(mB,{...i,ref:s}):t.jsx(pB,{...i,ref:s})})})})},"MenuContent")),mB=d.forwardRef(Rt(function(n,s){const r=$i(Ir,n.__scopeMenu),a=d.useRef(null),i=Wt(s,a);return d.useEffect(()=>{const l=a.current;if(l)return ZR(l)},[]),t.jsx(cb,{...n,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:qe(n.onFocusOutside,l=>l.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})},"MenuRootContentModal")),pB=d.forwardRef(Rt(function(n,s){const r=$i(Ir,n.__scopeMenu);return t.jsx(cb,{...n,ref:s,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})},"MenuRootContentNonModal")),gB=gi("MenuContent.ScrollLock"),cb=d.forwardRef(Rt(function(n,s){const{__scopeMenu:r,loop:a=!1,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:o,disableOutsidePointerEvents:c,onEntryFocus:u,onEscapeKeyDown:h,onPointerDownOutside:f,onFocusOutside:m,onInteractOutside:p,onDismiss:x,disableOutsideScroll:g,...b}=n,j=$i(Ir,r),v=gd(Ir,r),y=lp(r),k=cI(r),N=iB(r),[w,S]=d.useState(null),C=d.useRef(null),E=Wt(s,C,j.onContentChange),$=d.useRef(0),R=d.useRef(""),P=d.useRef(0),O=d.useRef(null),I=d.useRef("right"),F=d.useRef(0),U=g?lb:d.Fragment,L=g?{as:gB,allowPinchZoom:!0}:void 0,M=Rt(D=>{var B,ue;const H=R.current+D,K=N().filter(Ne=>!Ne.disabled),X=document.activeElement,W=(B=K.find(Ne=>Ne.ref.current===X))==null?void 0:B.textValue,me=K.map(Ne=>Ne.textValue),fe=kI(me,H,W),oe=(ue=K.find(Ne=>Ne.textValue===fe))==null?void 0:ue.ref.current;Rt(function Ne(Ke){R.current=Ke,window.clearTimeout($.current),Ke!==""&&($.current=window.setTimeout(()=>Ne(""),1e3))},"updateSearch")(H),oe&&setTimeout(()=>oe.focus())},"handleTypeaheadSearch");d.useEffect(()=>()=>window.clearTimeout($.current),[]),np();const z=d.useCallback(D=>{var K,X;return I.current===((K=O.current)==null?void 0:K.side)&&SI(D,(X=O.current)==null?void 0:X.area)},[]);return t.jsx(hB,{scope:r,searchRef:R,onItemEnter:d.useCallback(D=>{z(D)&&D.preventDefault()},[z]),onItemLeave:d.useCallback(D=>{var H;z(D)||((H=C.current)==null||H.focus(),S(null))},[z]),onTriggerLeave:d.useCallback(D=>{z(D)&&D.preventDefault()},[z]),pointerGraceTimerRef:P,onPointerGraceIntentChange:d.useCallback(D=>{O.current=D},[]),children:t.jsx(U,{...L,children:t.jsx(OR,{asChild:!0,trapped:i,onMountAutoFocus:qe(l,D=>{var H;D.preventDefault(),(H=C.current)==null||H.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:t.jsx(Um,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:h,onPointerDownOutside:f,onFocusOutside:m,onInteractOutside:p,onDismiss:x,children:t.jsx(QR,{asChild:!0,...k,dir:v.dir,orientation:"vertical",loop:a,currentTabStopId:w,onCurrentTabStopIdChange:S,onEntryFocus:qe(u,D=>{v.isUsingKeyboardRef.current||D.preventDefault()}),preventScrollOnEntryFocus:!0,children:t.jsx(vR,{role:"menu","aria-orientation":"vertical","data-state":ub(j.open),"data-radix-menu-content":"",dir:v.dir,...y,...b,ref:E,style:{outline:"none",...b.style},onKeyDown:qe(b.onKeyDown,D=>{const K=D.target.closest("[data-radix-menu-content]")===D.currentTarget,X=D.ctrlKey||D.altKey||D.metaKey,W=D.key.length===1;K&&(D.key==="Tab"&&D.preventDefault(),!X&&W&&M(D.key));const me=C.current;if(D.target!==me||!sB.includes(D.key))return;D.preventDefault();const oe=N().filter(B=>!B.disabled).map(B=>B.ref.current);lI.includes(D.key)&&oe.reverse(),wI(oe)}),onBlur:qe(n.onBlur,D=>{D.currentTarget.contains(D.target)||(window.clearTimeout($.current),R.current="")}),onPointerMove:qe(n.onPointerMove,Po(D=>{const H=D.target,K=F.current!==D.clientX;if(D.currentTarget.contains(H)&&K){const X=D.clientX>F.current?"right":"left";I.current=X,F.current=D.clientX}}))})})})})})})},"MenuContentImpl")),mI=d.forwardRef(Rt(function(n,s){const{__scopeMenu:r,...a}=n;return t.jsx(_t.div,{role:"group",...a,ref:s})},"MenuGroup")),xB=d.forwardRef(Rt(function(n,s){const{__scopeMenu:r,...a}=n;return t.jsx(_t.div,{...a,ref:s})},"MenuLabel")),nj="MenuItem",AS="menu.itemSelect",pI=d.forwardRef(Rt(function(n,s){const{disabled:r=!1,onSelect:a,...i}=n,l=d.useRef(null),o=gd(nj,n.__scopeMenu),c=ob(nj,n.__scopeMenu),u=Wt(s,l),h=d.useRef(!1),f=Rt(()=>{const m=l.current;if(!r&&m){const p=new CustomEvent(AS,{bubbles:!0,cancelable:!0});m.addEventListener(AS,x=>a==null?void 0:a(x),{once:!0}),zm(m,p),p.defaultPrevented?h.current=!1:o.onClose()}},"handleSelect");return t.jsx(gI,{...i,ref:u,disabled:r,onClick:qe(n.onClick,f),onPointerDown:m=>{var p;(p=n.onPointerDown)==null||p.call(n,m),h.current=!0},onPointerUp:qe(n.onPointerUp,m=>{var p;h.current||(p=m.currentTarget)==null||p.click()}),onKeyDown:qe(n.onKeyDown,m=>{r||m.target!==m.currentTarget||c.searchRef.current!==""&&m.key===" "||tj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})},"MenuItem")),gI=d.forwardRef(Rt(function(n,s){const{__scopeMenu:r,disabled:a=!1,textValue:i,...l}=n,o=ob(nj,r),c=cI(r),u=d.useRef(null),h=Wt(s,u),[f,m]=d.useState(!1),[p,x]=d.useState("");return d.useEffect(()=>{const g=u.current;g&&x((g.textContent??"").trim())},[l.children]),t.jsx(Lu.ItemSlot,{scope:r,disabled:a,textValue:i??p,children:t.jsx(JR,{asChild:!0,...c,focusable:!a,children:t.jsx(_t.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":a||void 0,"data-disabled":a?"":void 0,...l,ref:h,onPointerMove:qe(n.onPointerMove,Po(g=>{a?o.onItemLeave(g):(o.onItemEnter(g),g.defaultPrevented||g.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:qe(n.onPointerLeave,Po(g=>o.onItemLeave(g))),onFocus:qe(n.onFocus,()=>m(!0)),onBlur:qe(n.onBlur,()=>m(!1))})})})},"MenuItemImpl")),vB="MenuRadioGroup",[jB,yB]=El(vB,{value:void 0,onValueChange:Rt(()=>{},"onValueChange")}),wB=d.forwardRef(Rt(function(n,s){const{value:r,onValueChange:a,...i}=n,l=hs(a);return t.jsx(jB,{scope:n.__scopeMenu,value:r,onValueChange:l,children:t.jsx(mI,{...i,ref:s})})},"MenuRadioGroup")),bB="MenuRadioItem",kB=d.forwardRef(Rt(function(n,s){const{value:r,...a}=n,i=yB(bB,n.__scopeMenu),l=r===i.value;return t.jsx(SB,{scope:n.__scopeMenu,checked:l,children:t.jsx(pI,{role:"menuitemradio","aria-checked":l,...a,ref:s,"data-state":yI(l),onSelect:qe(a.onSelect,()=>{var o;return(o=i.onValueChange)==null?void 0:o.call(i,r)},{checkForDefaultPrevented:!1})})})},"MenuRadioItem")),NB="MenuItemIndicator",[SB,Mue]=El(NB,{checked:!1}),CB=d.forwardRef(Rt(function(n,s){const{__scopeMenu:r,...a}=n;return t.jsx(_t.div,{role:"separator","aria-orientation":"horizontal",...a,ref:s})},"MenuSeparator")),xI="MenuSub",[EB,vI]=El(xI),AB=Rt(e=>{const{__scopeMenu:n,children:s,open:r=!1,onOpenChange:a}=e,i=$i(xI,n),l=lp(n),[o,c]=d.useState(null),[u,h]=d.useState(null),f=hs(a);return d.useEffect(()=>(i.open===!1&&f(!1),()=>f(!1)),[i.open,f]),t.jsx(Vw,{...l,children:t.jsx(uI,{scope:n,open:r,onOpenChange:f,content:u,onContentChange:h,children:t.jsx(EB,{scope:n,contentId:Rr(),triggerId:Rr(),trigger:o,onTriggerChange:c,children:s})})})},"MenuSub"),uh="MenuSubTrigger",$B=d.forwardRef(Rt(function(n,s){const r=$i(uh,n.__scopeMenu),a=gd(uh,n.__scopeMenu),i=vI(uh,n.__scopeMenu),l=ob(uh,n.__scopeMenu),o=d.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:u}=l,h={__scopeMenu:n.__scopeMenu},f=d.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);d.useEffect(()=>f,[f]),d.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),u(null)}},[c,u]);const m=Wt(s,i.onTriggerChange);return t.jsx(dI,{asChild:!0,...h,children:t.jsx(gI,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":r.open?i.contentId:void 0,"data-state":ub(r.open),...n,ref:m,onClick:p=>{var x;(x=n.onClick)==null||x.call(n,p),!(n.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:qe(n.onPointerMove,Po(p=>{l.onItemEnter(p),!p.defaultPrevented&&!n.disabled&&!r.open&&!o.current&&(l.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{r.onOpenChange(!0),f()},100))})),onPointerLeave:qe(n.onPointerLeave,Po(p=>{var g,b;f();const x=(g=r.content)==null?void 0:g.getBoundingClientRect();if(x){const j=(b=r.content)==null?void 0:b.dataset.side,v=j==="right",y=v?-5:5,k=x[v?"left":"right"],N=x[v?"right":"left"];l.onPointerGraceIntentChange({area:[{x:p.clientX+y,y:p.clientY},{x:k,y:x.top},{x:N,y:x.top},{x:N,y:x.bottom},{x:k,y:x.bottom}],side:j}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>l.onPointerGraceIntentChange(null),300)}else{if(l.onTriggerLeave(p),p.defaultPrevented)return;l.onPointerGraceIntentChange(null)}})),onKeyDown:qe(n.onKeyDown,p=>{var g;n.disabled||p.target!==p.currentTarget||l.searchRef.current!==""&&p.key===" "||rB[a.dir].includes(p.key)&&(r.onOpenChange(!0),(g=r.content)==null||g.focus(),p.preventDefault())})})})},"MenuSubTrigger")),TB="MenuSubContent",RB=d.forwardRef(Rt(function(n,s){const r=fI(Ir,n.__scopeMenu),{forceMount:a=r.forceMount,align:i="start",...l}=n,o=$i(Ir,n.__scopeMenu),c=gd(Ir,n.__scopeMenu),u=vI(TB,n.__scopeMenu),h=d.useRef(null),f=Wt(s,h);return t.jsx(Lu.Provider,{scope:n.__scopeMenu,children:t.jsx(ha,{present:a||o.open,children:t.jsx(Lu.Slot,{scope:n.__scopeMenu,children:t.jsx(cb,{id:u.contentId,"aria-labelledby":u.triggerId,...l,ref:f,align:i,side:c.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:m=>{var p;c.isUsingKeyboardRef.current&&((p=h.current)==null||p.focus()),m.preventDefault()},onCloseAutoFocus:m=>m.preventDefault(),onFocusOutside:qe(n.onFocusOutside,m=>{m.target!==u.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:qe(n.onEscapeKeyDown,m=>{c.onClose(),m.preventDefault()}),onKeyDown:qe(n.onKeyDown,m=>{var g;const p=m.currentTarget.contains(m.target),x=aB[c.dir].includes(m.key);p&&x&&(o.onOpenChange(!1),(g=u.trigger)==null||g.focus(),m.preventDefault())})})})})})},"MenuSubContent"));function ub(e){return e?"open":"closed"}Rt(ub,"getOpenState");function jI(e){return e==="indeterminate"}Rt(jI,"isIndeterminate");function yI(e){return jI(e)?"indeterminate":e?"checked":"unchecked"}Rt(yI,"getCheckedState");function wI(e){const n=document.activeElement;for(const s of e)if(s===n||(s.focus(),document.activeElement!==n))return}Rt(wI,"focusFirst");function bI(e,n){return e.map((s,r)=>e[(n+r)%e.length])}Rt(bI,"wrapArray");function kI(e,n,s){const a=n.length>1&&Array.from(n).every(u=>u===n[0])?n[0]:n,i=s?e.indexOf(s):-1;let l=bI(e,Math.max(i,0));a.length===1&&(l=l.filter(u=>u!==s));const c=l.find(u=>u.toLowerCase().startsWith(a.toLowerCase()));return c!==s?c:void 0}Rt(kI,"getNextMatch");function NI(e,n){const{x:s,y:r}=e;let a=!1;for(let i=0,l=n.length-1;i<n.length;l=i++){const o=n[i],c=n[l],u=o.x,h=o.y,f=c.x,m=c.y;h>r!=m>r&&s<(f-u)*(r-h)/(m-h)+u&&(a=!a)}return a}Rt(NI,"isPointInPolygon");function SI(e,n){if(!n)return!1;const s={x:e.clientX,y:e.clientY};return NI(s,n)}Rt(SI,"isPointerInGraceArea");function Po(e){return n=>n.pointerType==="mouse"?e(n):void 0}Rt(Po,"whenMouse");var IB=cB,PB=dI,MB=dB,OB=fB,DB=mI,LB=xB,FB=pI,_B=wB,zB=kB,UB=CB,BB=AB,WB=$B,HB=RB,KB=Object.defineProperty,Ys=(e,n)=>KB(e,"name",{value:n,configurable:!0}),db="DropdownMenu",[VB,Oue]=Ur(db,[oI]),Qs=oI(),[GB,CI]=VB(db),qB=Ys(e=>{const{__scopeDropdownMenu:n,children:s,dir:r,open:a,defaultOpen:i,onOpenChange:l,modal:o=!0}=e,c=Qs(n),u=d.useRef(null),[h,f]=Ei({prop:a,defaultProp:i??!1,onChange:l,caller:db});return t.jsx(GB,{scope:n,triggerId:Rr(),triggerRef:u,contentId:Rr(),open:h,onOpenChange:f,onOpenToggle:d.useCallback(()=>f(m=>!m),[f]),modal:o,children:t.jsx(IB,{...c,open:h,onOpenChange:f,dir:r,modal:o,children:s})})},"DropdownMenu"),YB="DropdownMenuTrigger",QB=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,disabled:a=!1,...i}=n,l=CI(YB,r),o=Qs(r),c=Wt(s,l.triggerRef);return t.jsx(PB,{asChild:!0,...o,children:t.jsx(_t.button,{type:"button",id:l.triggerId,"aria-haspopup":"menu","aria-expanded":l.open,"aria-controls":l.open?l.contentId:void 0,"data-state":l.open?"open":"closed","data-disabled":a?"":void 0,disabled:a,...i,ref:c,onPointerDown:qe(n.onPointerDown,u=>{!a&&u.button===0&&u.ctrlKey===!1&&(l.onOpenToggle(),l.open||u.preventDefault())}),onKeyDown:qe(n.onKeyDown,u=>{a||(["Enter"," "].includes(u.key)&&l.onOpenToggle(),u.key==="ArrowDown"&&l.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(u.key)&&u.preventDefault())})})})},"DropdownMenuTrigger")),JB=Ys(e=>{const{__scopeDropdownMenu:n,...s}=e,r=Qs(n);return t.jsx(MB,{...r,...s})},"DropdownMenuPortal"),XB="DropdownMenuContent",ZB=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=CI(XB,r),l=Qs(r),o=d.useRef(!1);return t.jsx(OB,{id:i.contentId,"aria-labelledby":i.triggerId,...l,...a,ref:s,onCloseAutoFocus:qe(n.onCloseAutoFocus,c=>{var u;o.current||(u=i.triggerRef.current)==null||u.focus(),o.current=!1,c.preventDefault()}),onInteractOutside:qe(n.onInteractOutside,c=>{const u=c.detail.originalEvent,h=u.button===0&&u.ctrlKey===!0,f=u.button===2||h;(!i.modal||f)&&(o.current=!0)}),style:{...n.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})},"DropdownMenuContent")),e5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(DB,{...i,...a,ref:s})},"DropdownMenuGroup")),t5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(LB,{...i,...a,ref:s})},"DropdownMenuLabel")),n5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(FB,{...i,...a,ref:s})},"DropdownMenuItem")),s5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(_B,{...i,...a,ref:s})},"DropdownMenuRadioGroup")),r5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(zB,{...i,...a,ref:s})},"DropdownMenuRadioItem")),a5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(UB,{...i,...a,ref:s})},"DropdownMenuSeparator")),i5=Ys(e=>{const{__scopeDropdownMenu:n,children:s,open:r,onOpenChange:a,defaultOpen:i}=e,l=Qs(n),[o,c]=Ei({prop:r,defaultProp:i??!1,onChange:a,caller:"DropdownMenuSub"});return t.jsx(BB,{...l,open:o,onOpenChange:c,children:s})},"DropdownMenuSub"),l5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(WB,{...i,...a,ref:s})},"DropdownMenuSubTrigger")),o5=d.forwardRef(Ys(function(n,s){const{__scopeDropdownMenu:r,...a}=n,i=Qs(r);return t.jsx(HB,{...i,...a,ref:s,style:{...n.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})},"DropdownMenuSubContent")),xd=qB,vd=QB,rc=JB,jd=ZB,hb=e5,pl=t5,ws=n5,c5=s5,u5=r5,ea=a5,d5=i5,h5=l5,f5=o5,m5=Object.defineProperty,ac=(e,n)=>m5(e,"name",{value:n,configurable:!0}),fb="Tabs",[p5,Due]=Ur(fb,[rp]),EI=rp(),[g5,mb]=p5(fb),x5=d.forwardRef(ac(function(n,s){const{__scopeTabs:r,value:a,onValueChange:i,defaultValue:l,orientation:o="horizontal",dir:c,activationMode:u="automatic",...h}=n,f=tp(c),[m,p]=Ei({prop:a,onChange:i,defaultProp:l??"",caller:fb});return t.jsx(g5,{scope:r,baseId:Rr(),value:m,onValueChange:p,orientation:o,dir:f,activationMode:u,children:t.jsx(_t.div,{dir:f,"data-orientation":o,...h,ref:s})})},"Tabs")),v5="TabsList",j5=d.forwardRef(ac(function(n,s){const{__scopeTabs:r,loop:a=!0,...i}=n,l=mb(v5,r),o=EI(r);return t.jsx(QR,{asChild:!0,...o,orientation:l.orientation,dir:l.dir,loop:a,children:t.jsx(_t.div,{role:"tablist","aria-orientation":l.orientation,...i,ref:s})})},"TabsList")),y5="TabsTrigger",w5=d.forwardRef(ac(function(n,s){const{__scopeTabs:r,value:a,disabled:i=!1,...l}=n,o=mb(y5,r),c=EI(r),u=pb(o.baseId,a),h=gb(o.baseId,a),f=a===o.value;return t.jsx(JR,{asChild:!0,...c,focusable:!i,active:f,children:t.jsx(_t.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":h,"data-state":f?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:u,...l,ref:s,onMouseDown:qe(n.onMouseDown,m=>{!i&&m.button===0&&m.ctrlKey===!1?o.onValueChange(a):m.preventDefault()}),onKeyDown:qe(n.onKeyDown,m=>{i||m.target!==m.currentTarget||[" ","Enter"].includes(m.key)&&o.onValueChange(a)}),onFocus:qe(n.onFocus,()=>{const m=o.activationMode!=="manual";!f&&!i&&m&&o.onValueChange(a)})})})},"TabsTrigger")),b5="TabsContent",k5=d.forwardRef(ac(function(n,s){const{__scopeTabs:r,value:a,forceMount:i,children:l,...o}=n,c=mb(b5,r),u=pb(c.baseId,a),h=gb(c.baseId,a),f=a===c.value,m=d.useRef(f);return d.useEffect(()=>{const p=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(p)},[]),t.jsx(ha,{present:i||f,children:({present:p})=>t.jsx(_t.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":u,hidden:!p,id:h,tabIndex:0,...o,ref:s,style:{...n.style,animationDuration:m.current?"0s":void 0},children:p&&l})})},"TabsContent"));function pb(e,n){return`${e}-trigger-${n}`}ac(pb,"makeTriggerId");function gb(e,n){return`${e}-content-${n}`}ac(gb,"makeContentId");var N5=x5,S5=j5,C5=w5,E5=k5;const A5=/^[a-z0-9](?:[a-z0-9._-]{0,94}[a-z0-9])?$/,$5=/^[a-z][a-z0-9_-]{0,63}$/;function Al(e,n,s=64){return!$5.test(e)||typeof n!="string"||!A5.test(n)||n.includes("..")?null:`/api/plugin-assets/${e}/${n}?size=${s}`}function AI(e){return typeof e=="string"&&/^\/api\/plugin-assets\/[a-z][a-z0-9_-]{0,63}\/[a-z0-9._-]+(\?size=(64|128|768))?$/.test(e)}function T5(e){var n,s;return((s=(n=e.match(/[\p{L}\p{N}]/u))==null?void 0:n[0])==null?void 0:s.toUpperCase())??"?"}function $l({src:e,label:n,className:s}){const[r,a]=d.useState(!1),i=e!==null&&AI(e)&&!r;return t.jsx("span",{className:["pl-logo",s].filter(Boolean).join(" "),"data-letter":i?void 0:"true","aria-hidden":"true",children:i?t.jsx("img",{src:e,alt:"",loading:"lazy",decoding:"async",onError:()=>a(!0)}):T5(n)})}var R5=Object.defineProperty,xr=(e,n)=>R5(e,"name",{value:n,configurable:!0}),xb="Dialog",[$I,Lue]=Ur(xb),[I5,fa]=$I(xb),op=xr(e=>{const{__scopeDialog:n,children:s,open:r,defaultOpen:a,onOpenChange:i,modal:l=!0}=e,o=d.useRef(null),c=d.useRef(null),[u,h]=Ei({prop:r,defaultProp:a??!1,onChange:i,caller:xb}),[f,m]=d.useState(0),[p,x]=d.useState(0);return t.jsx(I5,{scope:n,triggerRef:o,contentRef:c,contentId:Rr(),titleId:Rr(),descriptionId:Rr(),titlePresent:f>0,descriptionPresent:p>0,setTitleCount:m,setDescriptionCount:x,open:u,onOpenChange:h,onOpenToggle:d.useCallback(()=>h(g=>!g),[h]),modal:l,children:s})},"Dialog"),P5="DialogTrigger",M5=d.forwardRef(xr(function(n,s){const{__scopeDialog:r,...a}=n,i=fa(P5,r),l=Wt(s,i.triggerRef);return t.jsx(_t.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":hp(i.open),...a,ref:l,onClick:qe(n.onClick,i.onOpenToggle)})},"DialogTrigger")),TI="DialogPortal",[O5,RI]=$I(TI,{forceMount:void 0}),cp=xr(e=>{const{__scopeDialog:n,forceMount:s,children:r,container:a}=e,i=fa(TI,n);return t.jsx(O5,{scope:n,forceMount:s,children:d.Children.map(r,l=>t.jsx(ha,{present:s||i.open,children:t.jsx(Bm,{asChild:!0,container:a,children:l})}))})},"DialogPortal"),sj="DialogOverlay",vb=d.forwardRef(xr(function(n,s){const r=RI(sj,n.__scopeDialog),{forceMount:a=r.forceMount,...i}=n,l=fa(sj,n.__scopeDialog);return l.modal?t.jsx(ha,{present:a||l.open,children:t.jsx(L5,{...i,ref:s})}):null},"DialogOverlay")),D5=gi("DialogOverlay.RemoveScroll"),L5=d.forwardRef(xr(function(n,s){const{__scopeDialog:r,...a}=n,i=fa(sj,r),l=LT(),o=Wt(s,l);return t.jsx(lb,{as:D5,allowPinchZoom:!0,shards:[i.contentRef],children:t.jsx(_t.div,{"data-state":hp(i.open),...a,ref:o,style:{pointerEvents:"auto",...a.style}})})},"DialogOverlayImpl")),Fu="DialogContent",up=d.forwardRef(xr(function(n,s){const r=RI(Fu,n.__scopeDialog),{forceMount:a=r.forceMount,...i}=n,l=fa(Fu,n.__scopeDialog);return t.jsx(ha,{present:a||l.open,children:l.modal?t.jsx(F5,{...i,ref:s}):t.jsx(_5,{...i,ref:s})})},"DialogContent")),F5=d.forwardRef(xr(function(n,s){const r=fa(Fu,n.__scopeDialog),a=d.useRef(null),i=Wt(s,r.contentRef,a);return d.useEffect(()=>{const l=a.current;if(l)return ZR(l)},[]),t.jsx(II,{...n,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,onCloseAutoFocus:qe(n.onCloseAutoFocus,l=>{var o;l.preventDefault(),(o=r.triggerRef.current)==null||o.focus()}),onPointerDownOutside:qe(n.onPointerDownOutside,l=>{const o=l.detail.originalEvent,c=o.button===0&&o.ctrlKey===!0;(o.button===2||c)&&l.preventDefault()}),onFocusOutside:qe(n.onFocusOutside,l=>l.preventDefault())})},"DialogContentModal")),_5=d.forwardRef(xr(function(n,s){const r=fa(Fu,n.__scopeDialog),a=d.useRef(!1),i=d.useRef(!1);return t.jsx(II,{...n,ref:s,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:l=>{var o,c;(o=n.onCloseAutoFocus)==null||o.call(n,l),l.defaultPrevented||(a.current||(c=r.triggerRef.current)==null||c.focus(),l.preventDefault()),a.current=!1,i.current=!1},onInteractOutside:l=>{var u,h;(u=n.onInteractOutside)==null||u.call(n,l),l.defaultPrevented||(a.current=!0,l.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const o=l.target;((h=r.triggerRef.current)==null?void 0:h.contains(o))&&l.preventDefault(),l.detail.originalEvent.type==="focusin"&&i.current&&l.preventDefault()}})},"DialogContentNonModal")),II=d.forwardRef(xr(function(n,s){const{__scopeDialog:r,trapFocus:a,onOpenAutoFocus:i,onCloseAutoFocus:l,...o}=n,c=fa(Fu,r);return np(),t.jsx(t.Fragment,{children:t.jsx(OR,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:i,onUnmountAutoFocus:l,children:t.jsx(Um,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionPresent?c.descriptionId:void 0,"aria-labelledby":c.titlePresent?c.titleId:void 0,"data-state":hp(c.open),...o,ref:s,deferPointerDownOutside:!0,onDismiss:()=>c.onOpenChange(!1)})})})},"DialogContentImpl")),z5="DialogTitle",dp=d.forwardRef(xr(function(n,s){const{__scopeDialog:r,...a}=n,i=fa(z5,r),{setTitleCount:l}=i;return Es(()=>(l(o=>o+1),()=>l(o=>o-1)),[l]),t.jsx(_t.h2,{id:i.titleId,...a,ref:s})},"DialogTitle")),U5="DialogClose",jb=d.forwardRef(xr(function(n,s){const{__scopeDialog:r,...a}=n,i=fa(U5,r);return t.jsx(_t.button,{type:"button",...a,ref:s,onClick:qe(n.onClick,()=>i.onOpenChange(!1))})},"DialogClose"));function hp(e){return e?"open":"closed"}xr(hp,"getState");const B5=5;function ve(e,n,s){const[r,a]=d.useState(void 0),[i,l]=d.useState(null),[o,c]=d.useState(!0),[u,h]=d.useState(0),[f,m]=d.useState(0),p=d.useRef(e);p.current=e;const x=d.useRef([]),g=()=>{for(const b of x.current.splice(0))b()};return d.useEffect(()=>g,[]),d.useEffect(()=>{let b=!1;return c(!0),p.current().then(j=>{b||(a(j),l(null),m(0))}).catch(j=>{b||(l(j instanceof pe?j.message:String(j)),m(v=>v+1))}).finally(()=>{b||(c(!1),g())}),()=>{b=!0}},[...n,u]),d.useEffect(()=>{if(!s||f>=B5)return;const b=window.setTimeout(()=>h(j=>j+1),s*2**f);return()=>window.clearTimeout(b)},[s,f,u]),{data:r,error:i,loading:o,reload:()=>new Promise(b=>{x.current.push(b),m(0),h(j=>j+1)})}}const W5="modulepreload",H5=function(e,n){return new URL(e,n).href},$S={},PI=function(n,s,r){let a=Promise.resolve();if(s&&s.length>0){const l=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),c=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));a=Promise.allSettled(s.map(u=>{if(u=H5(u,r),u in $S)return;$S[u]=!0;const h=u.endsWith(".css"),f=h?'[rel="stylesheet"]':"";if(!!r)for(let x=l.length-1;x>=0;x--){const g=l[x];if(g.href===u&&(!h||g.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${f}`))return;const p=document.createElement("link");if(p.rel=h?"stylesheet":W5,h||(p.as="script"),p.crossOrigin="",p.href=u,c&&p.setAttribute("nonce",c),document.head.appendChild(p),h)return new Promise((x,g)=>{p.addEventListener("load",x),p.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return a.then(l=>{for(const o of l||[])o.status==="rejected"&&i(o.reason);return n().catch(i)})},K5="buddi",V5=["core","coding","finance","garage","mail","maker","playground","research"],Ti=e=>`./mascot/${e}.png`,G5=["core"],rj=(e,n)=>G5.includes(e)?`./mascot/anim/${e}-${n}.json`:null,q5=["🙂","📚","🧭","🦊","🛟","🌿","🛠️","🎧"],Y5="Introduce yourself by name and say one thing you can do today.",Q5=["Hello","A brain","What I take on","Reach me","Your assistant"],dh=(e,n=!1)=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")}${n&&e.length>2?", and ":" and "}${e[e.length-1]}`,Mg=e=>e.charAt(0).toUpperCase()+e.slice(1),J5=["No","One","Two","Three","Four","Five","Six","Seven","Eight"],Bf=[{id:"days",title:"My days",plugins:"Weather · Calendar",line:"Weather and your calendars, for a brief every morning.",note:"Weather needs nothing. Calendar asks for your calendar’s private link in chapter 4."},{id:"mail",title:"My mail",plugins:"Mail Triage (built in)",line:"Mail Triage reads new mail and brings you only what needs you.",mate:"Mail Triage",note:"Mail asks for a mailbox in chapter 4."},{id:"money",title:"My money",plugins:"Finance",line:"Accounts, cards and cash flow, kept on this computer.",note:"Finance reads the statements you hand it; no bank sign-in."},{id:"voice",title:"Voice",plugins:"Speech",line:"Talk to me and hear me back, here and on your phone. Runs on this computer.",note:"Speech needs nothing."},{id:"code",title:"My code",plugins:"Developer",line:"Developer works in one folder you name, and shows you what it changed.",mate:"Developer",note:"Developer asks for its folder the first time you talk."},{id:"pictures",title:"Pictures",plugins:"Image",line:"One picture from a prompt, with an account you pick.",note:"Image asks which account to draw with."}],X5=["days","mail"],TS=[{id:"buddi",role:"core",label:"Blue"},{id:"mail",role:"mail",label:"Orange"},{id:"finance",role:"finance",label:"Green"},{id:"coding",role:"coding",label:"Violet"},{id:"research",role:"research",label:"Purple"}],_={tagline:"Setting up, on this Mac.",taglineElsewhere:"Setting up, on this computer.",chapters:Q5,mapNotes:["Two minutes. Everything can be changed later in Settings, and nothing leaves this computer until you say so.","One line decides which company sees your assistant’s conversations. You can add more brains later and give each agent its own.","Each choice installs a plugin from withbuddi.com. At the end I suggest teammates for what you picked; nothing runs until you have read its card, and you can say no to any of them.","All three are optional. The mailbox is what “My mail” needs; the phone is how I reach you when you are away.","The persona is a plain text file the assistant grows over time. Keep it, rewrite it, or let Agent Father write one after an interview."],count:e=>`Chapter ${e} of 5`,back:"Back",change:"change",later:"Set up later",startOver:{link:"Start over",said:e=>`Starting again. What you already connected stays in Settings: ${e}.`,telegram:"Telegram",browser:"the browser"},strip:(e,n)=>`${e} · ${n}`,hello:{title:"Hi. I’m buddi.",opening:["I live on this computer and I’m about to introduce you to your first assistant. Nothing you tell me leaves this machine, except what your assistant sends to the AI you pick next.","First, what should we call you, and what time is it where you are?"],foot:"Your agents use your name in every reply, and your clock for reminders and the morning brief.",submit:"That’s me",answer:e=>e},name:{label:"Your first name",placeholder:"Sam"},clock:{label:"Your clock",hint:e=>`What this browser says. ${e} right now.`,change:"Change"},brain:{title:"Which AI should your team think with?",ask:"Pick what you already have. I test it with one small call before we go on.",submit:"Use this brain",cards:{free:{title:"Free to start, no key",line:"Ollama Cloud, one tap. Good enough to meet your assistant today.",pill:"Recommended to begin"},claude:{title:"I pay for Claude",line:"Sign in with your Claude account. Uses its extra usage."},chatgpt:{title:"I pay for ChatGPT",line:"Sign in with a code on openai.com. Uses your plan."},key:{title:"I have an API key",line:"Anthropic, OpenAI, Google AI, or another service with an address."},local:{title:"On this computer",line:"Free and private. Looking on this computer…"}},keyKinds:{label:"Which key",key:"Anthropic or OpenAI",gemini:"Google AI",service:"Another service"},claude:{label:"Claude",start:"Sign in with Claude",open:"Open the Claude sign-in page",paste:"Paste what Claude gave you",finish:"Done",waiting:"Sign in on the claude.ai page that just opened, then paste the code Claude shows you."},chatgpt:{label:"ChatGPT",instruct:"Open openai.com, type this code there and approve buddi. I’ll notice.",waiting:"Waiting for your approval…",signedIn:e=>e?`Signed in as ${e}.`:"Signed in.",code:"Your code",open:"Open openai.com",again:"Try again",failed:"The sign-in did not finish. Try again."},cloud:{label:"Ollama Cloud",waiting:"Press Connect on the ollama.com page that just opened. Sign in there first if it asks. I’ll notice.",open:"Open the ollama.com page",again:"Try again"},gemini:{label:"Gemini",field:"Your Google AI key",placeholder:"Paste it here",submit:"Use this key",get:"Get a key at aistudio.google.com"},key:{field:"Your key",placeholder:"Paste it here",hint:"I can tell which AI it belongs to from the key. It stays on this computer.",submit:"Use this key",which:"Not right?",anthropic:"Anthropic",openai:"OpenAI",refused:"That key was refused. Check it and paste it again."},local:{looking:"Free and private. Looking on this computer…",found:e=>{const n=r=>r===1?"one model":`${r} models`;return`Free and private. I found ${[e.ollama!==void 0?`Ollama with ${n(e.ollama)}`:null,e.mlxh!==void 0?`mlxh with ${n(e.mlxh)}`:null].filter(Boolean).join(" and ")}; the first answer takes a minute.`},missing:"Free, private, no key. Not here yet: I show you how to install Ollama and fetch a model."},mlxh:{label:"mlxh",connect:"Use mlxh",noBrain:"mlxh has no language model installed. Pull one with `mlxh pull`, then come back."},ollama:{label:"Ollama",connect:"Use Ollama",download:"Get Ollama",copy:"Copy",copied:"Copied",missing:e=>`Ollama isn’t on ${e} yet. Install it, open it, and I’ll notice; I never run an installer for you.`,missingHow:(e,n)=>e==="linux"?`The official script from ollama.com. Paste it into a terminal on ${n}.`:e==="darwin"?"In Terminal, with Homebrew. Or download the app.":"Download it from ollama.com and open it.",stopped:e=>`Ollama is installed but not running. Open the Ollama app${e==="linux"?", or start it with the command below":""}, and I’ll notice.`,empty:(e,n,s,r)=>`Ollama is running, with no model yet. For ${e}’s ${Math.round(n)} GB I’d fetch ${s}: about ${r} GB, once.`,emptyFoot:e=>`Free and private: it runs here, and nothing you say leaves ${e}.`,fetch:e=>`Fetch ${e}`,fetching:(e,n,s)=>s?`Fetching ${e}: ${n} of ${s} GB.`:`Fetching ${e}…`,fetchingFoot:"Keep this page open or not: Ollama keeps fetching, and I pick up where it is.",failed:e=>`The download stopped: ${e} Try again; it picks up where it was.`,again:"Try again",cloud:(e,n)=>e==="memory"?`${Math.round(n)} GB is little for a model of its own: it would be slow. Ollama Cloud runs bigger models for you, free to start.`:e==="gpu"?"No graphics chip Ollama can use here: it would be slow. Ollama Cloud runs bigger models for you, free to start.":"Rather not run a model here? Ollama Cloud runs bigger models for you, free to start.",useCloud:"Use Ollama Cloud instead",honestTitle:"A small model, honestly",honest:"Private and free, but slower and less able than Claude or ChatGPT: fine for chat, notes and reminders; weaker at long plans, careful tool use and code. Home shows how to add a stronger brain whenever you like."},model:{ask:"Which one should it think with?",label:"The model",submit:"Use this one",retry:"Try again",change:"Think with another"},checking:{key:"Checking that key…",service:"Asking the service…",ollama:"Asking the first model one small question. It can take a minute.",cloud:"Asking Ollama Cloud…",claude:"Checking with Claude…",chatgpt:"Asking ChatGPT…",gemini:"Asking Gemini…"},service:{label:"Another service",address:"Address",addressPlaceholder:"The address they gave you",key:"Key",submit:"Connect it"},works:e=>`That works. Your assistant will think with ${e}.`,worksOnFlash:e=>`That works. Google's free tier has no Pro allowance, so your assistant will think with ${e}; turn on billing at Google to use Pro.`,answer:e=>e},takeOn:{title:"What should I take on for you?",ask:"Pick a few. Each one brings a plugin and, for some, a teammate who owns that job. Skip this and I stay a plain assistant; you can add any of it later.",submit:"Take these on",none:"Just an assistant for now",nothing:"Nothing picked. I’ll be a plain assistant, and Home will offer these again.",builtIn:"Mail is built in.",nothingToFetch:"Nothing to fetch.",fetching:(e,n,s)=>`Fetching ${dh(e)} from withbuddi.com and reading them. ${n} of ${s}.`,ready:e=>`${dh(e)} ${e.length>1?"are":"is"} in, read and ready.`,failed:(e,n)=>`${e} did not come: ${n}.`,installing:(e,n)=>`Installing, ${e} of ${n} ready`,installed:"Installed",answer:e=>e.length===0?"Just an assistant":Mg(e.join(", ").toLowerCase())},reach:{title:"How do we reach each other?",ask:"A few things, each a minute. Do the ones you want; the rest wait in Settings.",submit:"Continue",phone:{title:"Your phone, through Telegram",line:"Scan the code with your phone and press Start. Approvals, voice notes and the morning brief land there.",setUp:"Set up Telegram",pair:"Pair your phone",paired:"Paired",hello:"✓ That is your phone, talking to me. Approvals reach you there from now on."},mailbox:{title:"A mailbox",forTriage:"A mailbox, for Mail Triage",line:"Gmail, iCloud, Fastmail or any IMAP account. Reading only; sending always stops at a card you approve.",add:"Add a mailbox",sheet:"Add a mailbox",added:"Mailbox added",unavailable:"Mail is not ready on this computer yet. Settings → Mail can add one later."},calendar:{title:"Your calendar",line:"Its private link, or a Google sign-in. Reading only until you say otherwise.",waiting:"Calendar is still being fetched. The button wakes up when it is in.",add:"Link a calendar",linked:"Calendar linked",google:e=>`Google · ${e}`,googleWaiting:"Waiting for Google…",googleExpired:e=>`Sign in again · ${e}`},bank:{title:"Your bank",line:"No bank sign-in: Finance reads the statements you hand it.",add:"How it works",later:"After setup"},app:{title:"buddi as an app, and a browser of its own",line:"Keep buddi in your Dock; give your assistant Chrome or its own Chromium (150 MB) so it can look at websites. Your own browser pairs later, in Settings → Browser & apps.",install:"Install app",installed:"App installed",chrome:"Use Chrome",chromium:"Use its Chromium",fetch:"Fetch a browser",ready:e=>e==="chrome"?"Chrome, ready":"Chromium, ready",inApp:{title:"buddi is in your Dock, and a browser of its own",line:"You’re in buddi.app already. To open it when your Mac starts, choose Start at Login in the buddi menu at the top of your screen. Give your assistant Chrome or its own Chromium (150 MB) so it can look at websites. Your own browser pairs later, in Settings → Browser & apps.",extension:"Get the buddi extension"}},answer:e=>e.length===0?"Later, in Settings":Mg(e.join(", ")),done:{phone:"phone paired",mailbox:"mailbox added",app:"app and browser"}},browser:{chrome:"Your assistant will browse with Google Chrome.",chromium:"Your assistant will browse with its own Chromium.",needs:"Your assistant needs a browser of its own to look at websites. I am fetching one now, about 150 MB.",installing:"Fetching the browser…",launching:"Making sure it opens…",installed:"Installed.",failed:e=>`That did not work: ${e}`,retry:"Try again"},telegram:{sheet:"Your phone, through Telegram",how:"Two minutes: open Telegram, message @BotFather, send /newbot, paste the token it gives you here.",field:"The token",submit:"Save it",restart:"Saved. It will be ready the next time buddi starts.",scan:"Scan this with your phone and press Start.",making:"Making a code…",waiting:"Waiting for your Start…",pairedWith:e=>e!=null&&e.trim()?`Paired with ${e.trim()}’s phone`:"Paired with your phone",expired:"That code has run out. I can make you another one.",newCode:"Show a new code",close:"Done",notNow:"Not now"},assistant:{title:"Meet your assistant.",ask:"I’ve picked a name, a face and a way of working. Change any of it, or keep them.",team:e=>` Your team so far: ${dh(e)}, waiting to be introduced.`,name:"Name",face:"A face",colour:"A colour for the face",swatch:e=>`Colour: ${e.toLowerCase()}`,mascot:e=>e==="core"?"Buddi Blob":`Buddi Blob, ${e}`,purpose:"How it works",purposeHint:"Plain text. It becomes the assistant’s file, which is yours from then on.",purposeValue:["You're not a chatbot. You're becoming someone this person can count on.","","Some starting truths:","",`- Help for real. No "Great question", no "I'd be happy to". Do the thing, then say what you did.`,"- Have a view. Prefer things, disagree when you should, say when something is a bad idea. A search engine with manners is not a colleague.","- Look before you ask. Read the file, check what you remember, try it. Come back with an answer and one question at most.","- You are a guest here. You can see messages, files and a calendar. Treat that with care, keep what you learn to yourself, and never lecture.","- Remember what matters. Names, preferences, the things they said once and expect you to keep.","- When you change how you work, say so. This file is yours to grow, and the owner should always know what it says."].join(`
|
|
93
|
+
`),submit:"Introduce us",refusedTitle:"You already have an assistant.",toAgents:"Open Agents"},restore:{offer:"I have a backup",sheet:"Restore from a backup",lede:"Pick the backup file buddi made and type its passphrase. Your agents, memory and settings come back as they were; this chapter map is skipped.",file:"Backup file",passphrase:"Passphrase",passphraseHint:"The one you typed when you turned backups on, if it was locked with one. I can’t recover it.",submit:"Restore",cancel:"Never mind",title:"Bringing your buddi back.",started:"Right. Give me a couple of minutes.",phases:{stopping:"Putting everything down for a moment.",snapshot:"Keeping a copy of what is here now, just in case.",database:"Bringing back your conversations and everything you told it to remember.",recovery:"Almost there. Nothing will run on its own until you say so.",files:"Bringing back your files.",starting:"Starting back up.",done:"That is everything.","rolled-back":"That did not work, so I put everything back the way it was.",failed:"That did not work."},welcome:e=>`Welcome back, ${e}.`,keys:"A backup never carries keys, so the AI you think with needs its key one more time."},handover:{waiting:"One moment.",looking:e=>`${e} is looking around…`,slow:"Still waking up. A brain on this computer takes a minute the first time.",silent:"Your assistant isn't answering. The AI you picked may be down; try again, or pick another brain.",again:"Pick another brain",starters:e=>[e.days?"What’s my day like?":"What can you do?","Show me around",e.days?"Link my calendar":e.mail&&!e.mailbox?"Add my mailbox":"What do you know about me?","Remind me at 9 tomorrow"],starterLabel:"Ask first",waitingTitle:e=>`${J5[e]??String(e)} ${e===1?"thing":"things"} still waiting.`,waitingBody:e=>`${Mg(dh(e,!0))}. ${e.length>1?e.length===2?"Both are":"They are all":"It’s"} on Home whenever you like.`,home:"Open Home"},done:{open:"Open buddi"}};let hh=null;const RS=new Map;function Z5(){return hh??(hh=PI(()=>import("./lottie_light-CGUtDt_b.js").then(e=>e.l),[],import.meta.url).then(e=>e.default)),hh.catch(()=>{hh=null}),hh}function e8(e){let n=RS.get(e);return n||(n=fetch(e).then(s=>s.ok?s.text():null).catch(()=>null),RS.set(e,n)),n}const IS="(prefers-reduced-motion: reduce)";function MI(){const[e,n]=d.useState(()=>typeof window.matchMedia=="function"&&!window.matchMedia(IS).matches);return d.useEffect(()=>{var a;if(typeof window.matchMedia!="function")return;const s=window.matchMedia(IS),r=()=>n(!s.matches);return(a=s.addEventListener)==null||a.call(s,"change",r),()=>{var i;return(i=s.removeEventListener)==null?void 0:i.call(s,"change",r)}},[]),e}function yd({role:e="core",state:n,size:s,still:r,className:a,onStillError:i}){const l=d.useRef(null),o=MI(),[c,u]=d.useState(!1),h=s==="xs"?null:rj(e,n);return d.useEffect(()=>{if(u(!1),!o||!h)return;let f=!1,m=null;return Promise.all([Z5(),e8(h)]).then(([p,x])=>{if(f||!x||!l.current)return;const g=p.loadAnimation({container:l.current,renderer:"svg",loop:!0,autoplay:!document.hidden,animationData:JSON.parse(x),rendererSettings:{preserveAspectRatio:"xMidYMid meet"}}),b=()=>{document.hidden?g.pause():g.play()};document.addEventListener("visibilitychange",b),m=()=>{document.removeEventListener("visibilitychange",b),g.destroy()},u(!0)}).catch(()=>{}),()=>{f=!0,m==null||m()}},[o,h]),t.jsx("span",{ref:l,className:a?`ui-blob ${a}`:"ui-blob","data-size":s,"data-playing":c?"true":void 0,"data-testid":"blob","data-state":n,"aria-hidden":"true",children:c?null:t.jsx("img",{src:r??Ti(e),alt:"",onError:i})})}async function PS(e){const n=new Image;n.src=e,await n.decode();const s=document.createElement("canvas");s.width=8,s.height=8;const r=s.getContext("2d");return r?(r.fillStyle="#fff",r.fillRect(0,0,8,8),r.drawImage(n,0,0,8,8),Array.from(r.getImageData(0,0,8,8).data)):null}function OI(e,n="core"){const s=MI(),r=e!==null&&t8(e,n),[a,i]=d.useState(!1);return d.useEffect(()=>{if(i(!1),!e||r||!s||!rj(n,"idle"))return;let l=!1;return Promise.all([PS(e),PS(Ti(n))]).then(([o,c])=>{if(l||!o||!c||o.length!==c.length)return;const u=o.reduce((h,f,m)=>h+Math.abs(f-c[m]),0)/o.length;i(u<12)}).catch(()=>{}),()=>{l=!0}},[e,r,s,n]),s&&rj(n,"idle")!==null&&(r||a)}function t8(e,n){const s=Ti(n);if(e===s)return!0;try{const r=typeof window>"u"?"http://localhost/":window.location.href;return new URL(e,r).href===new URL(s,r).href}catch{return!1}}function Mn(e,n,s){if(e==null)return"—";switch(n){case"currency":{const r=typeof e=="number"?e:Number(e);return Number.isFinite(r)?n8(r,s):String(e)}case"percent":{const r=typeof e=="number"?e:Number(e);return Number.isFinite(r)?`${MS(r)}%`:String(e)}case"number":{const r=typeof e=="number"?e:Number(e);return Number.isFinite(r)?Number.isInteger(r)?Cn(r):MS(r):String(e)}case"date":return s8(String(e));default:return typeof e=="string"?e:typeof e=="number"?Cn(e):typeof e=="boolean"?e?"yes":"no":JSON.stringify(e)??String(e)}}function n8(e,n){if(!(Math.abs(e)<1e3&&!Number.isInteger(e)))return SU(e,n);try{return new Intl.NumberFormat("en-US",{style:"currency",currency:n??"USD",maximumFractionDigits:2}).format(e)}catch{return e.toFixed(2)}}function s8(e){const n=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);return n?nc(n[0],{year:!0,compact:!0}):e}function aj(e){const n=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);return n?nc(n[0],{compact:!0}):e}function MS(e){return String(Math.round(e*100)/100)}function Wf(e,n,s=4){if(!Number.isFinite(e)||!Number.isFinite(n))return[];if(e===n)return[e];const r=(n-e)/Math.max(1,s),a=10**Math.floor(Math.log10(r)),i=[1,2,2.5,5,10].map(o=>o*a).find(o=>o>=r)??a*10,l=[];for(let o=Math.ceil(e/i)*i;o<=n+i/1e3;o+=i)l.push(Math.round(o*1e6)/1e6);return l.filter(o=>o>=e&&o<=n)}const DI={width:480,height:160,top:10,right:10,bottom:22,left:40},LI={width:1200,height:180,top:10,right:40,bottom:22,left:40};function r8({xs:e,series:n}){const s=LI,r=s.width-s.left-s.right,a=s.height-s.top-s.bottom,i=O=>O.filter(I=>I!==null&&Number.isFinite(I)),l=n.filter(O=>O.type!=="bar"),o=n.filter(O=>O.type==="bar"),c=l.flatMap(O=>i(O.values)),u=c.length>0?Math.min(...c):0,h=c.length>0?Math.max(...c):1;let f=u,m=h;if(f===m)f-=1,m+=1;else{const O=(m-f)*.08;f-=O,m+=O}const p=O=>or(s.top+a-(O-f)/(m-f)*a),x=o.length>0&&o.every(O=>O.unit==="percent"),g=x?100:Math.max(1,...o.flatMap(O=>i(O.values))),b=O=>or(s.top+a-Math.max(0,O)/g*a),j=e.length,v=j>0?r/j:r,y=O=>or(s.left+v*(O+.5)),k=n.map(O=>{if(O.type==="bar")return"";let I="M";const F=[];return O.values.forEach((U,L)=>{if(U===null||!Number.isFinite(U)){I="M";return}F.push(`${I}${y(L)},${p(U)}`),I="L"}),F.join(" ")}),N=[],w=v*.6/Math.max(1,o.length),S=s.height-s.bottom;let C=0;n.forEach((O,I)=>{if(O.type!=="bar")return;const F=C++;O.values.forEach((U,L)=>{if(U===null||!Number.isFinite(U)||U<=0)return;const M=b(U);N.push({series:I,index:L,x:or(y(L)-v*.3+w*F),y:M,width:or(w),height:or(S-M)})})});const E=c.length>0?Wf(u,h,2).map(O=>({value:O,y:p(O)})):[],$=o.length===0?[]:(x?[0,50,100]:Wf(0,g,2)).map(O=>({value:O,y:b(O),percent:x})),R=Math.max(1,Math.ceil(j/8)),P=e.flatMap((O,I)=>I%R===0?[{index:I,x:y(I)}]:[]);return{lines:k,bars:N,targetY:null,ticks:E,xLabels:P,rightTicks:$}}function a8({xs:e,series:n,type:s="line",target:r=null}){const a=DI,i=a.width-a.left-a.right,l=a.height-a.top-a.bottom,o=n.flatMap(y=>y.values.filter(k=>k!==null&&Number.isFinite(k)));r!==null&&Number.isFinite(r)&&o.push(r),s==="bar"&&o.push(0);let c=o.length>0?Math.min(...o):0,u=o.length>0?Math.max(...o):1;if(c===u)c-=1,u+=1;else if(s==="line"){const y=(u-c)*.08;c-=y,u+=y}const h=y=>or(a.top+l-(y-c)/(u-c)*l),f=e.length,m=f>0?i/f:i,p=y=>or(s==="bar"?a.left+m*(y+.5):a.left+(f<=1?i/2:y/(f-1)*i)),x=s==="line"?n.map(y=>{let k="M";const N=[];return y.values.forEach((w,S)=>{if(w===null||!Number.isFinite(w)){k="M";return}N.push(`${k}${p(S)},${h(w)}`),k="L"}),N.join(" ")}):[],g=[];if(s==="bar"&&f>0){const y=m*.7,k=y/Math.max(1,n.length),N=h(0);n.forEach((w,S)=>{w.values.forEach((C,E)=>{if(C===null||!Number.isFinite(C))return;const $=h(C);g.push({series:S,index:E,x:or(a.left+m*E+(m-y)/2+k*S),y:Math.min($,N),width:or(k),height:or(Math.abs(N-$))})})})}const j=(o.length>0?Wf(Math.min(...o),Math.max(...o),2):[]).map(y=>({value:y,y:h(y)})),v=f===0?[]:f===1?[0]:f<5?[0,f-1]:[0,Math.floor((f-1)/2),f-1];return{lines:x,bars:g,targetY:r!==null&&Number.isFinite(r)?h(r):null,ticks:j,xLabels:v.map(y=>({index:y,x:p(y)}))}}function i8(e){const n=e.formatX??(o=>o),s=e.formatY??(o=>String(o)),r=e.xs.length;if(r===0)return`${e.label??"Chart"}: nothing recorded yet.`;const a=r===1?`on ${n(e.xs[0])}`:`from ${n(e.xs[0])} to ${n(e.xs[r-1])}`,i=e.series.map(o=>{const c=o.values.filter(h=>h!==null&&Number.isFinite(h));if(c.length===0)return`${o.label}: no values`;const u=c[c.length-1];return`${o.label}: latest ${s(u)}, lowest ${s(Math.min(...c))}, highest ${s(Math.max(...c))}`}),l=e.target!==null&&e.target!==void 0&&Number.isFinite(e.target)?` Target ${s(e.target)}.`:"";return`${e.label??"Chart"}, ${r} ${r===1?"point":"points"} ${a}. ${i.join("; ")}.${l}`}function l8({xs:e,series:n,type:s="line",target:r=null,label:a,formatX:i=o=>o,formatY:l=o=>String(o)}){const o=s==="mixed",c=o?LI:DI,u=o?r8({xs:e,series:n}):a8({xs:e,series:n,type:s,target:r}),h=i8({xs:e,series:n,target:r,...a?{label:a}:{},formatX:i,formatY:l});return t.jsxs("figure",{className:"ui-chart","data-type":s,children:[t.jsxs("svg",{viewBox:`0 0 ${c.width} ${c.height}`,"aria-hidden":"true",focusable:"false","data-testid":"chart-svg",children:[u.ticks.map(f=>t.jsxs("g",{children:[t.jsx("line",{className:"ui-chart-grid",x1:c.left,x2:c.width-c.right,y1:f.y,y2:f.y}),t.jsx("text",{x:c.left-6,y:f.y,textAnchor:"end",dominantBaseline:"middle",children:l(f.value)})]},f.value)),(u.rightTicks??[]).map(f=>t.jsx("text",{x:c.width-c.right+6,y:f.y,textAnchor:"start",dominantBaseline:"middle",children:f.percent?`${f.value}%`:l(f.value)},`r-${f.value}`)),t.jsx("line",{className:"ui-chart-axis",x1:c.left,x2:c.width-c.right,y1:c.height-c.bottom,y2:c.height-c.bottom}),u.bars.map(f=>t.jsx("rect",{className:"ui-chart-bar","data-series":f.series,x:f.x,y:f.y,width:f.width,height:f.height},`${f.series}-${f.index}`)),u.lines.map((f,m)=>f?t.jsx("path",{className:"ui-chart-line","data-series":m,d:f},m):null),u.targetY!==null?t.jsx("line",{className:"ui-chart-target","data-testid":"chart-target",x1:c.left,x2:c.width-c.right,y1:u.targetY,y2:u.targetY}):null,u.xLabels.map(f=>t.jsx("text",{x:f.x,y:c.height-6,textAnchor:o?"middle":u.xLabels.length>1&&f.index===0?"start":f.index===e.length-1&&e.length>1?"end":"middle",children:i(e[f.index])},f.index))]}),t.jsx("figcaption",{className:"sr-only",children:h}),n.length>1?t.jsx("ul",{className:"ui-chart-legend","aria-hidden":"true",children:n.map((f,m)=>t.jsx("li",{"data-series":m,"data-type":o?f.type??"line":void 0,children:f.label},f.label))}):null]})}function or(e){return Math.round(e*10)/10}const o8={home:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M3.5 9.2 10 3.6l6.5 5.6"}),t.jsx("path",{d:"M5.2 8.4v7.4a1 1 0 0 0 1 1h2.6v-4.6h2.4v4.6h2.6a1 1 0 0 0 1-1V8.4"})]})],chat:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M17 10.6a4.9 4.9 0 0 1-4.9 4.9H7.8L3.6 18l.9-3A4.9 4.9 0 0 1 3 11V8.2A4.9 4.9 0 0 1 7.9 3.3h4.2A4.9 4.9 0 0 1 17 8.2Z"}),t.jsx("path",{d:"M7 8.3h6M7 11.3h3.6"})]})],agents:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"7.5",cy:"7",r:"2.8"}),t.jsx("path",{d:"M2.8 16.2a4.7 4.7 0 0 1 9.4 0"}),t.jsx("circle",{cx:"14",cy:"7.8",r:"2.2"}),t.jsx("path",{d:"M13.2 12.5a3.9 3.9 0 0 1 4.3 3.7"})]})],activity:[20,1.6,t.jsx("path",{d:"M2.8 10.5h3.4l2-5.2 3.4 9.8 2.2-4.6h3.4"})],settings:[24,1.9,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),t.jsx("circle",{cx:"12",cy:"12",r:"3"})]}),20],files:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M7.5 2.8h5.2L16.5 6.6v8.6a1.2 1.2 0 0 1-1.2 1.2H7.5a1.2 1.2 0 0 1-1.2-1.2V4a1.2 1.2 0 0 1 1.2-1.2z"}),t.jsx("path",{d:"M12.7 2.8v3.8h3.8"}),t.jsx("path",{d:"M4.4 6.2v9.4a1.6 1.6 0 0 0 1.6 1.6h6.6"})]})],mail:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"3",y:"5",width:"14",height:"10.5",rx:"1.4"}),t.jsx("path",{d:"M3.4 6 10 11l6.6-5"})]})],money:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2.6",y:"5.2",width:"14.8",height:"9.6",rx:"1.6"}),t.jsx("circle",{cx:"10",cy:"10",r:"2.2"}),t.jsx("path",{d:"M5.4 10h.5M14.1 10h.5"})]})],calendar:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"3",y:"4.4",width:"14",height:"12.2",rx:"1.6"}),t.jsx("path",{d:"M3 8.2h14M6.8 2.9v2.6M13.2 2.9v2.6"})]})],chart:[20,1.6,t.jsx("path",{d:"M3.2 16.4V8.6M8.4 16.4V3.9M13.6 16.4v-5.8M3.2 16.4h13.6"})],bell:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M5.4 13.6V9a4.6 4.6 0 0 1 9.2 0v4.6l1.2 1.7H4.2Z"}),t.jsx("path",{d:"M8.4 17.1a1.8 1.8 0 0 0 3.2 0"})]})],plug:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M7.4 2.8v3.4M12.6 2.8v3.4"}),t.jsx("path",{d:"M5 6.2h10v3.1a5 5 0 0 1-10 0Z"}),t.jsx("path",{d:"M10 14.3v3"})]})],key:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"6.6",cy:"10",r:"3.2"}),t.jsx("path",{d:"M9.8 10h7.2M14.4 10v2.6M16.6 10v1.8"})]})],globe:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"10",cy:"10",r:"7.1"}),t.jsx("path",{d:"M2.9 10h14.2M10 2.9c3.4 3.7 3.4 10.5 0 14.2-3.4-3.7-3.4-10.5 0-14.2Z"})]})],news:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M4 3.6h9.2a.8.8 0 0 1 .8.8v11.2a.8.8 0 0 0 .8.8H5.2A1.6 1.6 0 0 1 3.6 14.8V4a.4.4 0 0 1 .4-.4Z"}),t.jsx("path",{d:"M14 7h1.6a.8.8 0 0 1 .8.8v7.2a1.4 1.4 0 0 1-1.4 1.4"}),t.jsx("path",{d:"M6.4 6.8h4.4M6.4 9.8h4.4M6.4 12.8h2.8"})]})],terminal:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2.8",y:"3.6",width:"14.4",height:"12.8",rx:"1.6"}),t.jsx("path",{d:"M6.2 8l2.6 2.4-2.6 2.4M10.6 12.8h3.4"})]})],person:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"10",cy:"7",r:"3.2"}),t.jsx("path",{d:"M4 16.6a6 6 0 0 1 12 0"})]})],briefcase:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2.8",y:"6",width:"14.4",height:"10.2",rx:"1.6"}),t.jsx("path",{d:"M7.4 6V4.6a1 1 0 0 1 1-1h3.2a1 1 0 0 1 1 1V6M2.8 10.4h14.4"})]})],pin:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M10 17.2s5.2-4.9 5.2-9a5.2 5.2 0 0 0-10.4 0c0 4.1 5.2 9 5.2 9Z"}),t.jsx("circle",{cx:"10",cy:"8.2",r:"1.9"})]})],sun:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"10",cy:"10",r:"3.2"}),t.jsx("path",{d:"M10 2.6v1.6M10 15.8v1.6M2.6 10h1.6M15.8 10h1.6M4.8 4.8l1.1 1.1M14.1 14.1l1.1 1.1M4.8 15.2l1.1-1.1M14.1 5.9l1.1-1.1"})]})],notebook:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M5.5 3.2h8.3a1 1 0 0 1 1 1v11.6a1 1 0 0 1-1 1H5.5a1 1 0 0 1-1-1V4.2a1 1 0 0 1 1-1Z"}),t.jsx("path",{d:"M7.6 3.2v13.6M10 7h2.6M10 9.8h2.6"})]})],bulb:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M7.2 13.2a5 5 0 1 1 5.6 0v1.6H7.2Z"}),t.jsx("path",{d:"M8 17.2h4"})]})],monitor:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2.8",y:"3.6",width:"14.4",height:"10",rx:"1.4"}),t.jsx("path",{d:"M7.4 16.8h5.2M10 13.6v3.2"})]})],lock:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"4",y:"8.6",width:"12",height:"8.6",rx:"2.2"}),t.jsx("path",{d:"M6.8 8.6V6.2a3.2 3.2 0 0 1 6.4 0v2.4"})]})],eye:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M2.4 10S5.2 4.8 10 4.8 17.6 10 17.6 10 14.8 15.2 10 15.2 2.4 10 2.4 10Z"}),t.jsx("circle",{cx:"10",cy:"10",r:"2.4"})]})],archive:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2.8",y:"3.6",width:"14.4",height:"3.6",rx:"1"}),t.jsx("path",{d:"M4 7.2v8a1.2 1.2 0 0 0 1.2 1.2h9.6a1.2 1.2 0 0 0 1.2-1.2v-8M8.2 10.4h3.6"})]})],chip:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"5.4",y:"5.4",width:"9.2",height:"9.2",rx:"1.4"}),t.jsx("path",{d:"M8 2.8v2.6M12 2.8v2.6M8 14.6v2.6M12 14.6v2.6M2.8 8h2.6M2.8 12h2.6M14.6 8h2.6M14.6 12h2.6"})]})],"partly-cloudy":[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"7.4",cy:"7.4",r:"2.4"}),t.jsx("path",{d:"M7.4 2.8v1M2.8 7.4h1M4.2 4.2l.7.7M10.6 4.2l-.7.7"}),t.jsx("path",{d:"M7.8 16.8h6.4a2.9 2.9 0 0 0 .3-5.8 4 4 0 0 0-7.6 1.1 2.4 2.4 0 0 0 .9 4.7Z"})]})],cloud:[20,1.6,t.jsx("path",{d:"M6 15.6h8.2a3.3 3.3 0 0 0 .4-6.6 4.6 4.6 0 0 0-8.9 1A2.8 2.8 0 0 0 6 15.6Z"})],rain:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M6 12.2h8.2a3 3 0 0 0 .4-6 4.3 4.3 0 0 0-8.3.9A2.6 2.6 0 0 0 6 12.2Z"}),t.jsx("path",{d:"M7.2 14.6l-.8 2M10.4 14.6l-.8 2M13.6 14.6l-.8 2"})]})],drizzle:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M6 12.2h8.2a3 3 0 0 0 .4-6 4.3 4.3 0 0 0-8.3.9A2.6 2.6 0 0 0 6 12.2Z"}),t.jsx("path",{d:"M7 15.2v.3M10 16.4v.3M13 15.2v.3"})]})],snow:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M6 12.2h8.2a3 3 0 0 0 .4-6 4.3 4.3 0 0 0-8.3.9A2.6 2.6 0 0 0 6 12.2Z"}),t.jsx("path",{d:"M7.4 14.4v2.4M6.2 15.6h2.4M12.6 14.4v2.4M11.4 15.6h2.4"})]})],storm:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M6 12.2h8.2a3 3 0 0 0 .4-6 4.3 4.3 0 0 0-8.3.9A2.6 2.6 0 0 0 6 12.2Z"}),t.jsx("path",{d:"M10.8 13.2 9 15.6h2.4l-1.8 2.6"})]})],fog:[20,1.6,t.jsx("path",{d:"M3.6 7.2h12.8M5.2 10.2h9.6M3.6 13.2h12.8M6.4 16.2h7.2"})],wind:[20,1.6,t.jsx("path",{d:"M3 8h9.4a2.2 2.2 0 1 0-2.2-2.2M3 12h11.6a2.2 2.2 0 1 1-2.2 2.2M3 10h5.4"})],"moon-clear":[20,1.6,t.jsx("path",{d:"M15.8 12.2A6.2 6.2 0 0 1 7.8 4.2a6.2 6.2 0 1 0 8 8Z"})],"moon-cloud":[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M9.4 6.8A3.6 3.6 0 0 1 4.6 2a3.6 3.6 0 1 0 4.8 4.8Z"}),t.jsx("path",{d:"M7.8 16.8h6.4a2.9 2.9 0 0 0 .3-5.8 4 4 0 0 0-7.6 1.1 2.4 2.4 0 0 0 .9 4.7Z"})]})],clock:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"10",cy:"10",r:"7.1"}),t.jsx("path",{d:"M10 5.8V10l2.8 1.8"})]})],dot:[20,1.6,t.jsx("circle",{cx:"10",cy:"10",r:"2.2"})],camera:[17,1.5,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M2.6 6.2a1.4 1.4 0 0 1 1.4-1.4h2l1.1-1.6h2.8l1.1 1.6h2a1.4 1.4 0 0 1 1.4 1.4v6.4a1.4 1.4 0 0 1-1.4 1.4H4a1.4 1.4 0 0 1-1.4-1.4z"}),t.jsx("circle",{cx:"8.5",cy:"9.2",r:"2.4"})]})],clip:[17,1.5,t.jsx("path",{d:"M13.2 8 8.4 12.8a3 3 0 0 1-4.2-4.2l5.1-5.1a2 2 0 1 1 2.8 2.8l-5 5"})],mic:[17,1.5,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"6.3",y:"2.4",width:"4.4",height:"7.6",rx:"2.2"}),t.jsx("path",{d:"M3.9 8.4a4.6 4.6 0 0 0 9.2 0M8.5 13v2"})]})],speaker:[17,1.5,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M2.8 6.6h2.4l3.4-2.8v9.4l-3.4-2.8H2.8z"}),t.jsx("path",{d:"M11.2 6.2a3.2 3.2 0 0 1 0 4.6M13.2 4.4a5.8 5.8 0 0 1 0 8.2"})]})],send:[16,1.8,t.jsx("path",{d:"M8 13V3.5M3.8 7.7 8 3.5l4.2 4.2"})],check:[16,1.8,t.jsx("path",{d:"M3.5 8.4 6.6 11.4 12.5 4.8"})],close:[16,1.8,t.jsx("path",{d:"M4.5 4.5l7 7M11.5 4.5l-7 7"})],search:[16,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"7",cy:"7",r:"4.5"}),t.jsx("path",{d:"M10.5 10.5L14 14"})]})],alert:[16,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"8",cy:"8",r:"6.2"}),t.jsx("path",{d:"M8 4.8v3.8M8 11.2v.01"})]})],thought:[13,1.4,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M4.2 9.6a3.6 3.6 0 1 1 4.6 0v1.2H4.2z"}),t.jsx("path",{d:"M5.2 12.2h2.6"})]})],spark:[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M7 2.6c.5 2.6 1.4 3.5 4 4-2.6.5-3.5 1.4-4 4-.5-2.6-1.4-3.5-4-4 2.6-.5 3.5-1.4 4-4Z"}),t.jsx("path",{d:"M12.2 10.4c.2 1 .6 1.4 1.6 1.6-1 .2-1.4.6-1.6 1.6-.2-1-.6-1.4-1.6-1.6 1-.2 1.4-.6 1.6-1.6Z"})]})],chevron:[11,1.5,t.jsx("path",{d:"M2.8 4.2 5.5 6.9l2.7-2.7"})],arrow:[13,1.5,t.jsx("path",{d:"M4.8 2.6 9 6.5l-4.2 3.9"})],back:[16,1.6,t.jsx("path",{d:"M13 8H3.4M7.4 4 3.4 8l4 4"})],forward:[16,1.6,t.jsx("path",{d:"M3 8h9.6M8.6 4l4 4-4 4"})],reload:[16,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M13 8a5 5 0 1 1-1.6-3.7"}),t.jsx("path",{d:"M11.8 1.9v2.8H9"})]})],expand:[16,1.6,t.jsx("path",{d:"M9.6 2.8h3.6v3.6M13.2 2.8 9 7M6.4 13.2H2.8V9.6M2.8 13.2 7 9"})],collapse:[16,1.6,t.jsx("path",{d:"M12.8 7H9V3.2M9 7l4.2-4.2M3.2 9H7v3.8M7 9l-4.2 4.2"})],copy:[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"5.6",y:"5.6",width:"7.6",height:"7.6",rx:"1.4"}),t.jsx("path",{d:"M10.4 5.6V4a1.2 1.2 0 0 0-1.2-1.2H4A1.2 1.2 0 0 0 2.8 4v5.2A1.2 1.2 0 0 0 4 10.4h1.6"})]})],play:[16,1.5,t.jsx("path",{d:"M5.2 3.4v9.2L12.6 8z"})],pause:[16,1.5,t.jsx("path",{d:"M5.6 3.6v8.8M10.4 3.6v8.8"})],stop:[16,1.5,t.jsx("rect",{x:"4.2",y:"4.2",width:"7.6",height:"7.6",rx:"1.2"})],download:[16,1.5,t.jsx("path",{d:"M8 2.8v7.2M4.9 7 8 10.1 11.1 7M3 12.8h10"})],out:[12,1.6,t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"6",cy:"6",r:"4.4"}),t.jsx("path",{d:"M3.4 8.6 8.6 3.4"})]}),11],external:[12,1.6,t.jsx("path",{d:"M4.5 3H9v4.5M9 3 3 9"}),11],"chevron-left":[14,1.6,t.jsx("path",{d:"M9 2.5 4.5 7 9 11.5"})],"chevron-right":[14,1.6,t.jsx("path",{d:"M5 2.5 9.5 7 5 11.5"})],plus:[14,1.6,t.jsx("path",{d:"M7 2.5v9M2.5 7h9"})],grip:[16,0,t.jsxs("g",{fill:"currentColor",stroke:"none",children:[t.jsx("circle",{cx:"6",cy:"4",r:"1.2"}),t.jsx("circle",{cx:"10",cy:"4",r:"1.2"}),t.jsx("circle",{cx:"6",cy:"8",r:"1.2"}),t.jsx("circle",{cx:"10",cy:"8",r:"1.2"}),t.jsx("circle",{cx:"6",cy:"12",r:"1.2"}),t.jsx("circle",{cx:"10",cy:"12",r:"1.2"})]})],more:[16,0,t.jsxs("g",{fill:"currentColor",stroke:"none",children:[t.jsx("circle",{cx:"8",cy:"3.4",r:"1.35"}),t.jsx("circle",{cx:"8",cy:"8",r:"1.35"}),t.jsx("circle",{cx:"8",cy:"12.6",r:"1.35"})]})],drop:[28,1.8,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M14 4v13M8.5 11.5 14 17l5.5-5.5"}),t.jsx("path",{d:"M5 19.5v2a2.5 2.5 0 0 0 2.5 2.5h13a2.5 2.5 0 0 0 2.5-2.5v-2"})]})],folder:[20,1.6,t.jsx("path",{d:"M2.8 5.6a1.4 1.4 0 0 1 1.4-1.4h3.4l1.7 1.9h6.5a1.4 1.4 0 0 1 1.4 1.4v7.3a1.4 1.4 0 0 1-1.4 1.4H4.2a1.4 1.4 0 0 1-1.4-1.4Z"})],"chevron-down":[14,1.4,t.jsx("path",{d:"M4 5.5 7 8.5l3-3"}),12],frame:[22,1.3,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2.6",y:"3.6",width:"16.8",height:"14.8",rx:"2"}),t.jsx("path",{d:"M2.6 14.2 7.4 9.6l3.4 3 3-2.6 3.6 3.2"}),t.jsx("circle",{cx:"7.4",cy:"7.6",r:"1.2"})]})],"shape-timeseries":[16,1.4,t.jsx("path",{d:"M2 11.5 5.4 7.2l2.6 2.2L14 3.5"})],"shape-table":[16,1.4,t.jsx("path",{d:"M2.2 3.5h11.6v9H2.2zM2.2 6.6h11.6M6.6 6.6v5.9"})],"shape-bars":[16,1.4,t.jsx("path",{d:"M3 13V8.2M7 13V3.6M11 13V6.4M2 13.6h12"})],"shape-keyvalue":[16,1.4,t.jsx("path",{d:"M2.6 4.6h4M9.4 4.6h4M2.6 8h4M9.4 8h4M2.6 11.4h4M9.4 11.4h4"})],"shape-tiles":[16,1.4,t.jsx("path",{d:"M2.4 3.4h4.8v4.2H2.4zM8.8 3.4h4.8v4.2H8.8zM2.4 9.2h4.8v4.2H2.4zM8.8 9.2h4.8v4.2H8.8z"})],"shape-document":[16,1.4,t.jsx("path",{d:"M4 2.4h5l3 3v8.2H4zM9 2.4v3h3M6 9h4M6 11.2h3"})],"shape-diff":[16,1.4,t.jsx("path",{d:"M8 2.6v5M5.5 5.1h5M5.5 11.6h5M3 14h10"})],"shape-terminal":[16,1.4,t.jsx("path",{d:"M2.2 3.4h11.6v9.2H2.2zM4.6 6.4l2 1.6-2 1.6M8 10h3"})],"shape-image":[16,1.4,t.jsx("path",{d:"M2.2 3.4h11.6v9.2H2.2zM2.2 11l3.6-3.4 2.6 2.4 2-1.8 3.4 3M10.6 6.2h.01"})],"shape-preview":[16,1.4,t.jsx("path",{d:"M2.2 3.4h11.6v9.2H2.2zM2.2 6h11.6M4.1 4.7h.01M6 4.7h.01"})],"shape-envelope":[16,1.4,t.jsx("path",{d:"M2.2 4h11.6v8H2.2zM2.2 4.4 8 8.8l5.8-4.4"})],moon:[16,1.5,t.jsx("path",{d:"M12.9 9.7A5.3 5.3 0 0 1 6.3 3.1a5.3 5.3 0 1 0 6.6 6.6z"})],code:[16,1.6,t.jsx("path",{d:"M5.8 4.6L2.4 8l3.4 3.4M10.2 4.6L13.6 8l-3.4 3.4"})],"pasted-doc":[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M4 2.5h5.2L12 5.3v8.2H4z"}),t.jsx("path",{d:"M9 2.5v3h3M6 8.5h4M6 10.8h4"})]})],"shape-structured":[16,1.4,t.jsx("path",{d:"M4 2.6h8v10.8H4zM6.2 5.6h3.6M6.2 8h3.6M6.2 10.4h2.2"})]};function se({name:e,size:n,className:s,...r}){const[a,i,l,o]=o8[e],c=n??o??a;return t.jsx("svg",{className:s,width:c,height:c,viewBox:`0 0 ${a} ${a}`,"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:i,strokeLinecap:"round",strokeLinejoin:"round","data-icon":e,...r,children:l})}const wd="front-desk",yb=[{id:wd,label:"Front desk",meaning:"Where things go when you do not say who."},{id:"overview",label:"Overview",meaning:"Answers /status and speaks for the watchers."},{id:"recap",label:"Recap",meaning:"Runs /recap."},{id:"maker",label:"Maker",meaning:"/new opens its interview."}],FI=new Set(yb.map(e=>e.id)),OS=e=>FI.has(e);function DS(e,n){const s=n.filter(r=>!FI.has(r));return[...yb.filter(r=>e.has(r.id)).map(r=>r.id),...s.filter((r,a)=>s.indexOf(r)===a)]}function c8(e,n){return e.find(s=>(s.roles??[]).includes(n))}const LS=["coding","finance","mail","research","calendar","files","memory"],u8={developer:"coding",coding:"coding",finance:"finance",credit:"finance",mail:"mail",email:"mail",research:"research",calendar:"calendar",files:"files",memory:"memory",[wd]:"buddi"},d8=[["mail",["email"]],["finance",["finance"]],["coding",["developer"]],["research",["web","browser"]],["art",["image"]]];function h8(e){const n=new Set(e.map(s=>s.split(".")[0]??s));for(const[s,r]of d8)if(r.some(a=>n.has(a)))return s;return n.size>0&&[...n].every(s=>s==="memory")?"memory":null}let ij=null;function f8(e){ij=e}function ic(e){if(e.accent&&/^#[0-9a-fA-F]{6}$/.test(e.accent))return{key:"own",hex:e.accent.toLowerCase()};for(const s of e.roles??[]){const r=u8[s];if(r)return{key:r}}const n=h8(e.tools??[]);return n?{key:n}:ij!==null&&e.id===ij?{key:"buddi"}:{key:LS[m8(e.id)%LS.length]??"coding"}}function gl(e){return e.key==="own"?{"data-agent":"own",style:{"--agent-fill":e.hex}}:{"data-agent":e.key}}function m8(e){let n=0;for(const s of e)n=(n*31+s.charCodeAt(0))%997;return n}const p8=["run.started","tool.called","tool.result","message.appended","awaiting-approval","run.finished","reaction","live","live.settle","live.snapshot","attention","plugins-changed","pages.changed","closing","ping"];function g8(e){const s=e.replace(/\r\n/g,`
|
|
94
|
+
`).split(`
|
|
95
|
+
|
|
96
|
+
`),r=s.pop()??"",a=[];for(const i of s){let l=null,o="message";const c=[];for(const u of i.split(`
|
|
97
|
+
`)){if(u===""||u.startsWith(":"))continue;const h=u.indexOf(":"),f=h===-1?u:u.slice(0,h),m=h===-1?"":u.slice(h+1).replace(/^ /,"");f==="id"?l=m:f==="event"?o=m:f==="data"&&c.push(m)}c.length===0&&o==="message"||a.push({id:l,name:p8.includes(o)?o:"ping",data:x8(c.join(`
|
|
98
|
+
`))})}return{events:a,rest:r}}function x8(e){if(e==="")return{};try{const n=JSON.parse(e);return n!==null&&typeof n=="object"?n:{value:n}}catch{return{value:e}}}function fp(e){const n=e.fetchImpl??globalThis.fetch.bind(globalThis),s=e.wait??(u=>new Promise(h=>setTimeout(h,u))),r=e.retryMs??1500;let a=e.lastEventId??null,i=!1,l=!1,o=null;return(async()=>{var u,h,f,m,p;for(;!i;){(u=e.onStatus)==null||u.call(e,"connecting"),o=new AbortController;try{const x=await n(e.url,{credentials:"same-origin",signal:o.signal,headers:{Accept:"text/event-stream",...a===null?{}:{"Last-Event-ID":a}}});if(!x.ok||!x.body)throw new Error(`stream ${x.status}`);(h=e.onStatus)==null||h.call(e,"open"),l&&((f=e.onReconnect)==null||f.call(e));const g=x.body.getReader(),b=new TextDecoder;let j="";for(;;){const{done:v,value:y}=await g.read();if(v)break;j+=b.decode(y,{stream:!0});const{events:k,rest:N}=g8(j);j=N;for(const w of k)e.onEvent(w),w.id!==null&&(a=w.id);if(i)break}}catch{}if(i)break;l=!0,(m=e.onStatus)==null||m.call(e,"closed"),await s(r)}(p=e.onStatus)==null||p.call(e,"closed")})(),{close:()=>{i=!0,o==null||o.abort()},lastEventId:()=>a}}const wb="0.1.0+923354a";function bb(e,n=wb){return typeof e=="string"&&e!==""&&typeof n=="string"&&n!==""&&e!==n}function v8(){var e;try{if((e=window.matchMedia)!=null&&e.call(window,"(display-mode: standalone)").matches)return!0}catch{}return window.navigator.standalone===!0}const j8=5*6e4,y8=6e4,w8=5e3,_u="buddi:stream-reconnected",_I="buddi.autoReloadedFor";function b8(){window.dispatchEvent(new Event(_u))}const FS=["keydown","pointerdown","pointermove","wheel","touchstart","input"];let kb=Date.now(),fh=0;const _S=()=>{kb=Date.now()};function k8(){if(fh===0){kb=Date.now();for(const e of FS)window.addEventListener(e,_S,{capture:!0,passive:!0})}return fh+=1,()=>{if(fh-=1,fh===0)for(const e of FS)window.removeEventListener(e,_S,{capture:!0})}}function N8(e=Date.now()){return e-kb}function zI(e=document){return e.querySelector('.wb-composer[data-busy="true"]')!==null||e.querySelector('.wb-listening, [data-recording="true"]')!==null||e.querySelector('[role="dialog"], [role="alertdialog"], dialog[open]')!==null}function S8(e){return e.hidden?!0:e.idleMs>=y8&&!e.busy}function C8(e){try{return window.sessionStorage.getItem(_I)===e}catch{return!1}}function E8(e){try{window.sessionStorage.setItem(_I,e)}catch{}}function A8(e){const n=d.useRef(e);n.current=e,d.useEffect(()=>{const s=()=>n.current();return window.addEventListener(_u,s),()=>window.removeEventListener(_u,s)},[])}function $8(e,n=()=>window.location.reload(),s=wb){const r=bb(e,s),a=d.useRef(n);a.current=n,d.useEffect(()=>k8(),[]),d.useEffect(()=>{if(!r||e===void 0||C8(e))return;let i=!1;const l=()=>{if(i)return;const c=document.visibilityState==="hidden";S8({hidden:c,idleMs:N8(),busy:zI()})&&(i=!0,E8(e),a.current())};l();const o=window.setInterval(l,w8);return document.addEventListener("visibilitychange",l),()=>{window.clearInterval(o),document.removeEventListener("visibilitychange",l)}},[r,e])}const T8=9e4,UI=5*6e4,R8=500,I8=2e3,P8=3e3,M8="/_buddi/ready",wo={reload:()=>window.location.reload(),now:()=>Date.now()};let ji=null,lo=null,Uc=null;const lj=new Set;function Hf(e){ji=e;for(const n of lj)n()}function zS(){return ji}function O8(e){return lj.add(e),()=>lj.delete(e)}function D8(){const e=new Uint8Array(32);return crypto.getRandomValues(e),[...e].map(n=>n.toString(16).padStart(2,"0")).join("")}async function Nb(e=P8){const n=new AbortController,s=setTimeout(()=>n.abort(),e);try{const r=await fetch(`${M8}?challenge=${D8()}`,{cache:"no-store",credentials:"omit",redirect:"error",signal:n.signal,headers:{Accept:"application/json"}});if(r.status!==200)return null;const a=await r.json().catch(()=>null);return typeof(a==null?void 0:a.boot)=="string"?a.boot:""}catch{return null}finally{clearTimeout(s)}}async function L8(){const e=await Nb();e&&(lo=e)}function F8(){let e=lo,n=!1,s=!1,r=R8,a;const i=async()=>{if(n)return;const l=await Nb();if(!n){if(l===null)s=!0;else if(e!==null?l!==e:s){n=!0,wo.reload();return}else e===null&&l!==""&&(e=l);r=Math.min(Math.round(r*1.5),I8),a=setTimeout(()=>void i(),r)}};return a=setTimeout(()=>void i(),r),()=>{n=!0,clearTimeout(a)}}function mp(e){if(ji){if(e.kind==="detected")return;Hf({...ji,...e});return}Hf({...e,startedAt:wo.now()}),Uc=F8()}function BI(e){ji&&Hf({...ji,...e})}function Mo(){Uc==null||Uc(),Uc=null,Hf(null)}async function lc(e,n){mp(e);try{return await n()}catch(s){if(Uf(s))return;throw Mo(),s}}function _8(e){mp({kind:e.for==="stop"?"stop":"detected"})}async function US(){if(ji)return;const e=await Nb();if(lo===null){e&&(lo=e);return}if(!(!e||e===lo||ji)){if(zI()){lo=e;return}mp({kind:"detected"})}}function z8(e){const[n,s]=e;if(!n)return null;const r=`${n.name} ${n.version}`;return s?e.length===2?`${r} and ${s.name} ${s.version}`:`${r} and ${e.length-1} more`:r}function Kf(e,n){return(e??[]).filter(s=>s.place===n).map((s,r)=>({page:s,index:r})).sort((s,r)=>(s.page.order??0)-(r.page.order??0)||s.index-r.index).map(s=>s.page)}const Vf="buddi:plugin-pages-changed";function Sb(){window.dispatchEvent(new Event(Vf))}const oj="buddi:plugin-data-changed",U8=500;function B8(e){window.dispatchEvent(new CustomEvent(oj,{detail:e}))}function WI(e,n,s=U8){const r=d.useRef(n);r.current=n,d.useEffect(()=>{let a;const i=l=>{l.detail===e&&(a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,r.current()},s))};return window.addEventListener(oj,i),()=>{window.removeEventListener(oj,i),a!==void 0&&clearTimeout(a)}},[e,s])}function HI(e=!1){const[n,s]=d.useState([]);return d.useEffect(()=>{if(e)return;let r=!1;const a=()=>{Promise.resolve().then(()=>T.pages()).then(l=>{r||s(Array.isArray(l==null?void 0:l.pages)?l.pages:[])}).catch(()=>{})};a();const i=()=>{document.visibilityState==="visible"&&a()};return window.addEventListener(Vf,a),document.addEventListener("visibilitychange",i),()=>{r=!0,window.removeEventListener(Vf,a),document.removeEventListener("visibilitychange",i)}},[e]),{all:n,rail:Kf(n,"rail"),settings:Kf(n,"settings"),find:(r,a)=>n.find(i=>i.plugin===r&&i.id===a)}}function cj(e,n){const s=(n??[]).filter(i=>i.plugin===e),r=Kf(s,"rail")[0]??Kf(s,"settings")[0];if(r!=null&&r.title.trim())return r.title.trim();const a=e.replace(/[-_]+/g," ").trim();return a?a.charAt(0).toUpperCase()+a.slice(1):e}const W8="/api/chat/attention/stream";function KI(e,n){const s=(i,l)=>i.name.localeCompare(l.name),r=i=>e.filter(l=>l.anchor===i).sort(s),a=e.filter(i=>i.anchor!=="top"&&i.anchor!=="bottom").sort((i,l)=>i.id===n?l.id===n?0:-1:l.id===n?1:s(i,l));return{top:r("top"),middle:a,bottom:r("bottom")}}function VI(e,n){const s=KI(e,n);return[...s.top,...s.middle,...s.bottom]}function bd(e){if(!e)return null;const n=[];return e.approvals>0&&n.push(e.approvals===1?"one approval is waiting for you":`${e.approvals} approvals are waiting for you`),e.question&&n.push("asked you a question and is holding for the answer"),n.length===0?null:n.join(", and ")}function H8(e){if(!e)return null;const n=e.approvals,s=n===1?"1 approval":`${n} approvals`;return n>0&&e.question?`${s} and a question`:n>0?`${s} waiting`:e.question?"Has a question":null}function K8(e,n){return e&&(e.approvals>0||e.question)?"needs":n?"working":null}function V8(e){return new Map(((e==null?void 0:e.agents)??[]).map(n=>[n.agentId,n]))}function G8(){const[e,n]=d.useState(null);return d.useEffect(()=>{let s=!1;const r=()=>{be("/chat/attention").then(i=>{s||n(i)}).catch(()=>{})};r();const a=fp({url:W8,onEvent:i=>{i.name==="closing"?_8(i.data):i.name==="plugins-changed"?Sb():i.name==="pages.changed"?typeof i.data.plugin=="string"&&B8(i.data.plugin):r()},onReconnect:b8});return()=>{s=!0,a.close()}},[]),V8(e)}const Mr="maker";function Cb(e){return e.filter(n=>n.available&&!n.roles.includes(Mr))}function GI(e){return Cb(e).length>=2}function q8(e){var n;return((n=e.find(s=>s.roles.includes(Mr)))==null?void 0:n.name)??"the agent maker"}const Y8="{{default}}";function Q8(e,n){return e.split(Y8).join(n??"your assistant")}function J8(e,n){return((e==null?void 0:e.starters)??[]).slice(0,3).map(s=>Q8(s,n))}function X8(e){var s,r;const n=(s=e==null?void 0:e.intro)==null?void 0:s.trim();return n&&n!==""?n:((r=e==null?void 0:e.description)==null?void 0:r.trim())??""}function Z8(e){const n=(e??"·").trim().split(/\s+/).filter(Boolean);return n.length===0?"·":n.length===1?n[0].slice(0,2).toUpperCase():(n[0][0]+n[1][0]).toUpperCase()}function qI(e){var r,a;const n=(r=e.heldBack)==null?void 0:r.message.trim();if(n!==void 0&&n!=="")return`${e.name??"This agent"} is held back. ${n}`;const s=(a=e.unavailableReason)==null?void 0:a.trim();return s&&s!==""?`${e.name??"This agent"} cannot run: ${s}`:`${e.name??"This agent"} cannot run: it has no model account yet.`}const eW="Settings → Model accounts",tW="Install it in Settings → Plugins";function uj(e){return e!=null&&e.heldBack?{section:"plugins",label:tW}:{section:"accounts",label:eW}}const Un="#/",Oo="#/needs",$a="#/chat",Mt="#/agents",cn="#/activity",Nn="#/settings",La="#/files",nW="#/welcome";function Xh(e){const n=/^#\/welcome(?:\?(.*))?$/.exec(e);if(!n)return null;try{return{step:new URLSearchParams(n[1]??"").get("step")}}catch{return{step:null}}}function oo(e,n={}){const s=new URLSearchParams;n.q&&s.set("q",n.q),n.origin&&s.set("origin",n.origin),n.family&&s.set("family",n.family);const r=s.toString();return`${La}${e?`/${encodeURIComponent(e)}`:""}${r?`?${r}`:""}`}function sW(e){const n=/^#\/files(?:\/([^/?]+))?(?:\?(.*))?$/.exec(e);if(!n)return null;try{const s=new URLSearchParams(n[2]??""),r={};return s.get("q")&&(r.q=s.get("q")),s.get("origin")&&(r.origin=s.get("origin")),s.get("family")&&(r.family=s.get("family")),{...n[1]?{artifactId:decodeURIComponent(n[1])}:{},filters:r}}catch{return null}}function ht(e,n,s){return`#/chat/${encodeURIComponent(e)}${n?`/${encodeURIComponent(n)}`:""}${s?`?tab=${s}`:""}`}function rW(e){if(YI(e))return null;const n=/^#\/chat\/([^/?]+)(?:\/([^/?]+))?(?:\?(.*))?$/.exec(e);if(!n)return null;try{const s=new URLSearchParams(n[3]??"").get("tab");return{agentId:decodeURIComponent(n[1]),...n[2]?{conversationId:decodeURIComponent(n[2])}:{},...s?{tab:s}:{}}}catch{return null}}function Gi(e,n){return`#/chat/g/${encodeURIComponent(e)}${n?`/${encodeURIComponent(n)}`:""}`}function YI(e){const n=/^#\/chat\/g\/([^/?]+)(?:\/([^/?]+))?(?:\?.*)?$/.exec(e);if(!n)return null;try{return{groupId:decodeURIComponent(n[1]),...n[2]?{conversationId:decodeURIComponent(n[2])}:{}}}catch{return null}}function Jt(e,n,s){return`${Mt}/${encodeURIComponent(e)}${n?`/${n}${s?`/${s}`:""}`:""}`}function aW(e){const n=/^#\/agents\/([^/]+)(?:\/([a-z-]+)(?:\/([a-z-]+))?)?$/.exec(e);if(!n||n[1]===QI)return null;try{return{agentId:decodeURIComponent(n[1]),...n[2]?{tab:n[2]}:{},...n[3]?{section:n[3]}:{}}}catch{return null}}const QI="catalogue",BS=`${Mt}/${QI}`;function En(e){return e?`${BS}/${encodeURIComponent(e)}`:BS}function iW(e){return`${En(e)}?add=1`}function lW(e,n){const s=/^#\/agents\/catalogue\/([a-z0-9-]+)\?(?:.*&)?add=1(?:&|$)/.exec(e);return(s==null?void 0:s[1])===n}function oW(e){const n=/^#\/agents\/catalogue(?:\/([a-z0-9-]+))?(?:\?.*)?$/.exec(e);return n?n[1]?{name:n[1]}:{}:null}function zu(e){return`${cn}/conversations/${encodeURIComponent(e)}`}const cW="#/p";function Or(e,n,s){const r=`${cW}/${encodeURIComponent(e)}/${encodeURIComponent(n)}`;return s?`${r}/${encodeURIComponent(s)}`:r}function Eb(e){const n=/^#\/p\/([^/?]+)\/([^/?]+)(?:\/([^/?]+))?(?:\?.*)?$/.exec(e);if(!n)return null;try{return{plugin:decodeURIComponent(n[1]),page:decodeURIComponent(n[2]),...n[3]?{item:decodeURIComponent(n[3])}:{}}}catch{return null}}const uW="p.";function Dr(e,n=e,s){const r=s?new URLSearchParams(s).toString():"";return`${Nn}/${encodeURIComponent(XI(e,n))}${r?`?${r}`:""}`}function dW(e,n){const s=JI(e);if(!s)return null;const r=n.filter(i=>i.plugin===s.plugin);if(r.length===0||r.some(i=>i.id===s.page))return null;const a=Ab(e);return Dr(s.plugin,r[0].id,Object.keys(a).length>0?a:void 0)}function Ab(e){const n=e.indexOf("?");if(n===-1)return{};try{const s={};for(const[r,a]of new URLSearchParams(e.slice(n+1)))a!==""&&(s[r]=a);return s}catch{return{}}}function JI(e){const n=/^#\/settings\/p\.([^/?.]+)(?:\.([^/?.]+))?(?:\?.*)?$/.exec(e);if(!n)return null;const s=decodeURIComponent(n[1]);return{plugin:s,page:n[2]?decodeURIComponent(n[2]):s}}function XI(e,n){return`${uW}${e}${n===e?"":`.${n}`}`}function We(e){return e?`${Nn}/${e}`:Nn}function ZI(e){return`${We("accounts")}?account=${encodeURIComponent(e)}`}function hW(e){const n=/^#\/settings\/accounts\?(.*)$/.exec(e);if(!n)return null;try{return new URLSearchParams(n[1]).get("account")||null}catch{return null}}function Uu(e,n,s){const r=new RegExp(`^#/settings/${n}\\?(.*)$`).exec(e);if(!r)return null;try{return new URLSearchParams(r[1]).get(s)||null}catch{return null}}function eP(e){return`${We("connections")}?connection=${encodeURIComponent(e)}`}function WS(e){const n=(Uu(e,"computer","code")??Uu(e,"browser","code")??"").replace(/[\s-]/g,"");return/^\d{6}$/.test(n)?n:null}function fW(e){const n=/^(#\/settings\/(?:computer|browser))\?(.*)$/.exec(e);if(!n)return e;let s;try{s=new URLSearchParams(n[2])}catch{return e}if(!s.has("code"))return e;s.delete("code");const r=s.toString();return r?`${n[1]}?${r}`:n[1]}function mW(e){return Uu(e,"connections","connection")}const pW=We("computer");function gW(e){return Uu(e,"secrets","secret")}const dj=`${We("secrets")}?add=1`;function xW(e){return Uu(e,"secrets","add")==="1"}function vW(e){return`${We("plugins")}?install=${encodeURIComponent(e)}`}const hj=`${We("plugins")}?tab=browse`;function fj(e="all"){return e==="all"?hj:`${hj}&kind=${e}`}function jW(e){return`${We("proposals")}${e?`?plugin=${encodeURIComponent(e)}`:""}`}function yW(e){const n=/^#\/settings\/proposals\?(.*)$/.exec(e);if(!n)return null;try{return new URLSearchParams(n[1]).get("plugin")||null}catch{return null}}function $b(e){const n=/^#\/settings\/plugins\?(.*)$/.exec(e);if(!n)return null;try{return new URLSearchParams(n[1])}catch{return null}}function wW(e){var s,r;const n=(r=(s=$b(e))==null?void 0:s.get("install"))==null?void 0:r.trim();return n||null}function HS(e){var s;const n=(s=$b(e))==null?void 0:s.get("kind");return n==="plugins"||n==="widgets"||n==="agents"?n:"all"}function KS(e){const n=$b(e);return n!=null&&n.get("install")?"installed":(n==null?void 0:n.get("tab"))==="browse"?"browse":"installed"}const bW=[{route:Un,label:"Home"},{route:$a,label:"Chat"},{route:Mt,label:"Agents"},{route:cn,label:"Activity"},{route:La,label:"Files"},{route:Nn,label:"Settings"}],kW=[{id:"you",label:"You"},{id:"access",label:"Models and access"},{id:"running",label:"Running"},{id:"plugins",label:"Plugins"}],NW=[{id:"you",label:"Profile",group:"you"},{id:"appearance",label:"Appearance",group:"you"},{id:"notifications",label:"Notifications",group:"you"},{id:"telegram",label:"Telegram",group:"you"},{id:"memory",label:"Memory",group:"you"},{id:"proposals",label:"Proposals",group:"you"},{id:"accounts",label:"Model accounts",group:"access"},{id:"computer",label:"Browser & apps",group:"access"},{id:"secrets",label:"Keys and secrets",group:"access"},{id:"connections",label:"Connections",group:"access"},{id:"lock",label:"Lock screen",group:"access"},{id:"api",label:"API tokens",group:"access"},{id:"watchers",label:"Watchers",group:"running"},{id:"backup",label:"Backup",group:"running"},{id:"system",label:"System",group:"running"},{id:"plugins",label:"All plugins",group:"plugins"}];function SW(e){var n;return((n=/^#\/settings\/([a-z0-9.-]+)/.exec(e))==null?void 0:n[1])??"you"}const mj="#/settings/notifications/recent",pj=We("backup");function CW(e){const n=/^#\/conversations\/(.+)$/.exec(e);if(n)return zu(decodeURIComponent(n[1]));const s=/^#\/email(?:\/([^/?]+))?(?:\?.*)?$/.exec(e);if(s)try{return Or("email","mail",s[1]?decodeURIComponent(s[1]):null)}catch{return Or("email","mail")}if(e==="#/settings/email")return Dr("email","settings");const r=/^#\/settings\/browser(\?.*)?$/.exec(e);return r?`${We("computer")}${r[1]??""}`:{"#/overview":Un,"#/approvals":Un,"#/events":`${cn}/events`,"#/jobs":`${cn}/jobs`,"#/conversations":cn,"#/missions":`${Mt}?tab=missions`,"#/offers":`${Mt}?tab=offers`,"#/reminders":`${Mt}?tab=reminders`,"#/providers":We("accounts"),"#/browser":We("computer"),"#/sentinels":We("watchers"),"#/settings/sentinels":We("watchers")}[e]??null}function tP(e){if(e===""||e==="#"||e===Un)return Un;if(e.startsWith($a))return $a;if(e.startsWith(Mt))return Mt;if(e.startsWith(cn))return cn;if(e.startsWith(La))return La;if(e.startsWith(Nn))return Nn;const n=Eb(e);return n?Or(n.plugin,n.page):Un}const EW="#/chat?group=new";function AW(e){const n=e.replace(/^#\/?/,"").split("?")[0].toLowerCase();if(n==="")return"home";const[s,r]=n.split("/");return!s||!/^[a-z0-9-]+$/.test(s)?null:(s==="settings"||s==="p")&&r&&/^[a-z0-9.-]+$/.test(r)?`${s}/${r}`:s}const nP="buddi.rosterHidden",sP=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent),VS=sP?"⌘\\":"Ctrl+\\",GS=sP?"Meta+\\":"Control+\\";function $W(){try{return window.localStorage.getItem(nP)==="1"}catch{return!1}}function qS(e){try{window.localStorage.setItem(nP,e?"1":"0")}catch{}}function rP({agents:e,currentId:n,attention:s,onSelect:r,orientation:a="vertical",lastActivity:i,working:l,groups:o=[],currentGroupId:c=null,onSelectGroup:u,onNewGroup:h}){const f=[...e.top,...e.middle,...e.bottom],m=a==="vertical"?"right":"bottom",[p,x]=d.useState($W),g=j=>t.jsx(TW,{agent:j,active:j.id===n,attention:s.get(j.id),side:m,onSelect:r,lastAt:(i==null?void 0:i.get(j.id))??null,working:(l==null?void 0:l.has(j.id))??!1},j.id),b=()=>x(j=>(qS(!j),!j));if(d.useEffect(()=>{if(a!=="vertical")return;const j=v=>{v.key!=="\\"||!(v.metaKey||v.ctrlKey)||v.altKey||v.shiftKey||(v.preventDefault(),x(y=>(qS(!y),!y)))};return window.addEventListener("keydown",j),()=>window.removeEventListener("keydown",j)},[a]),a==="vertical"&&p){const j=f.some(v=>bd(s.get(v.id))!==null);return t.jsxs("button",{type:"button",className:"wb-roster-tab","data-testid":"agent-rail-tab","aria-label":j?"Show the list — someone is waiting for you":"Show the list","aria-keyshortcuts":GS,title:`Show the list (${VS})`,onClick:b,children:[t.jsx(se,{name:"chevron-right"}),j?t.jsx("span",{className:"wb-roster-tab-dot","aria-hidden":"true"}):null]})}return t.jsxs("nav",{className:a==="vertical"?"wb-agent-rail":"wb-agent-strip","aria-label":"Agents","data-testid":"agent-rail",children:[e.top.map(g),e.top.length>0&&e.middle.length>0?t.jsx("span",{className:"wb-agent-sep","data-testid":"agent-rail-sep","aria-hidden":"true"}):null,a==="vertical"?t.jsxs("div",{className:"wb-roster-head",children:[t.jsx("span",{className:"wb-roster-label",children:"Your team"}),t.jsx("button",{type:"button",className:"ui-icon-btn wb-roster-toggle","data-size":"sm","aria-label":"Hide the list","aria-keyshortcuts":GS,title:`Hide the list (${VS})`,onClick:b,children:t.jsx(se,{name:"chevron-left"})})]}):null,t.jsxs("div",{className:"wb-agent-scroll",children:[e.middle.map(g),u&&GI(f)?t.jsxs("div",{className:"wb-groups","data-testid":"group-rail",children:[t.jsx("span",{className:"wb-agent-sep","aria-hidden":"true"}),t.jsxs("div",{className:"wb-groups-head",children:[t.jsx("span",{className:"wb-groups-label",children:"Groups"}),h?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":"New group",title:"A team of agents in one conversation",onClick:h,children:t.jsx(se,{name:"plus"})}):null]}),o.map(j=>t.jsxs("button",{type:"button",className:"wb-face wb-group-face","data-active":j.id===c?"true":void 0,"aria-current":j.id===c?"true":void 0,"aria-label":`${j.name}, ${j.members.length} agents`,onClick:()=>u(j.id),children:[t.jsx("span",{className:"wb-group-stack","aria-hidden":"true",children:j.members.slice(0,2).map(v=>{const y=f.find(k=>k.id===v);return t.jsx(pp,{className:"wb-group-chip",id:v,name:(y==null?void 0:y.name)??"?",face:y,initials:1},v)})}),t.jsxs("span",{className:"wb-face-text",children:[t.jsx("span",{className:"wb-face-name",children:j.name}),t.jsx("span",{className:"wb-face-status",children:j.members.map(v=>{var y;return((y=f.find(k=>k.id===v))==null?void 0:y.name)??v}).join(", ")})]})]},j.id))]}):u?t.jsxs("div",{className:"wb-groups","data-testid":"group-rail-hint",children:[t.jsx("span",{className:"wb-agent-sep","aria-hidden":"true"}),t.jsx("div",{className:"wb-groups-head",children:t.jsx("span",{className:"wb-groups-label",children:"Groups"})}),t.jsxs("p",{className:"wb-groups-hint",children:["A group needs two agents; ",t.jsx("a",{href:Mt,children:"add a teammate"}),"."]})]}):null]}),e.bottom.map(g)]})}function TW({agent:e,active:n,attention:s,side:r,onSelect:a,lastAt:i=null,working:l=!1}){const o=bd(s),c=H8(s)??(e.available?i?TR(i):e.description:e.unavailableReason??"Cannot run right now"),u=K8(s,l&&e.available),h=e.unavailableReason??"This agent cannot run on this machine right now.",f=[`${e.name} @${e.handle}`,e.available?null:"unavailable",o,u==="working"?"working now":null,n?"current":null].filter(m=>m!==null&&m!=="").join(" — ");return t.jsxs(Tu,{children:[t.jsx(Ru,{asChild:!0,children:t.jsxs("button",{className:"wb-face",...gl(ic(e)),"data-active":n?"true":void 0,"data-unavailable":e.available?void 0:"true","data-testid":`agent-face-${e.id}`,"aria-label":f,"aria-current":n?"true":void 0,disabled:!e.available,onClick:()=>e.available&&a(e.id),children:[t.jsxs("span",{className:"wb-face-frame",children:[t.jsx(pp,{className:"wb-face-mark",id:e.id,name:e.name,face:e}),u?t.jsx("span",{className:"wb-face-dot","data-state":u,"data-testid":`agent-dot-${e.id}`,"aria-hidden":"true"}):null]}),t.jsxs("span",{className:"wb-face-text","aria-hidden":"true",children:[t.jsx("span",{className:"wb-face-name",children:e.name}),t.jsx("span",{className:"wb-face-status","data-tone":o?"critical":void 0,children:c})]}),e.available?null:t.jsx("span",{className:"wb-face-out","aria-hidden":"true",children:t.jsx(se,{name:"out"})})]})}),t.jsx(Iu,{children:t.jsxs(Pu,{className:"ui-tip",side:r,sideOffset:8,children:[t.jsx("span",{className:"ui-tip-title",children:e.name}),t.jsx("span",{className:"ui-tip-hint",children:e.available?`@${e.handle} · ${e.model}`:h}),o?t.jsx("span",{className:"ui-tip-alert",children:RW(o)}):null]})})]})}function RW(e){return`${e.slice(0,1).toUpperCase()}${e.slice(1)}.`}function IW(e){let n=0;for(const s of e)n=(n*31+s.charCodeAt(0))%997;return n%6+1}function pp({className:e,id:n,name:s,face:r,tint:a,size:i,unavailable:l,initials:o=2}){const[c,u]=d.useState(null),h=r!=null&&r.picture&&r.picture!==c?r.picture:void 0,f=r==null?void 0:r.avatar,m=h?"image":f==null?void 0:f.kind,p=n?gl(ic({id:n,accent:r==null?void 0:r.accent,roles:r==null?void 0:r.roles,tools:r==null?void 0:r.tools})):void 0;return t.jsx("span",{className:e,"data-tint":p?void 0:a,"data-size":i,"data-kind":m,"data-unavailable":l?"true":void 0,...p,"aria-hidden":"true",children:h?t.jsx("img",{src:h,alt:"",onError:()=>u(h)}):(f==null?void 0:f.kind)==="image"?t.jsx("img",{src:f.url,alt:""}):(f==null?void 0:f.kind)==="emoji"?f.value:Z8(s).slice(0,o)})}function Bn({id:e,name:n,size:s,unavailable:r,face:a}){return t.jsx(pp,{className:"ui-avatar",id:e,tint:IW(e),name:n,size:s,unavailable:r,face:a})}const aP="owner",Bu="buddi";function Wu(e){return e===aP}function PW(e,n=[]){var s;return Wu(e)?Bu:((s=n.find(r=>r.id===e))==null?void 0:s.name)??e}function iP({size:e}){return t.jsx(Bn,{id:aP,name:Bu,size:e,face:{picture:Ti("core")}})}function yn({agents:e,id:n,size:s}){if(Wu(n))return t.jsx(iP,{size:s});const r=e.find(a=>a.id===n);return t.jsx(Bn,{id:n,name:(r==null?void 0:r.name)??n,size:s,unavailable:r?!r.available:!1,face:r})}const lP=d.createContext(null);function MW({picture:e,children:n}){return t.jsx(lP.Provider,{value:e??null,children:n})}function oP({size:e,anim:n}){const s=d.useContext(lP),[r,a]=d.useState(null),i=OI(n?s:null);return!s||s===r?null:t.jsx("span",{className:"ui-mascot","data-size":e,"data-testid":"mascot","aria-hidden":"true",children:n&&i?t.jsx(yd,{state:n,still:s,className:"ui-mascot-blob",onStillError:()=>a(s)}):t.jsx("img",{src:s,alt:"",onError:()=>a(s)})})}const Tb="(max-width: 900px)";function ts(e){const[n,s]=d.useState(()=>{try{return window.matchMedia(e).matches}catch{return!1}});return d.useEffect(()=>{var i;let r;try{r=window.matchMedia(e)}catch{return}const a=l=>s(l.matches);return(i=r.addEventListener)==null||i.call(r,"change",a),()=>{var l;return(l=r.removeEventListener)==null?void 0:l.call(r,"change",a)}},[e]),n}function Ri(...e){return e.filter(Boolean).join(" ")}function A({variant:e,size:n,className:s,type:r="button",...a}){return t.jsx("button",{type:r,className:Ri("ui-btn",s),"data-variant":e&&e!=="default"?e:void 0,"data-size":n,...a})}function it({variant:e,size:n,className:s,...r}){return t.jsx("a",{className:Ri("ui-btn",s),"data-variant":e&&e!=="default"?e:void 0,"data-size":n,...r})}function oc({checked:e,onChange:n,label:s,disabled:r}){return t.jsxs("label",{className:"ui-switch","data-disabled":r?"true":void 0,children:[t.jsx("input",{type:"checkbox",role:"switch",checked:e,disabled:r,"aria-label":s,onChange:a=>n(a.target.checked)}),t.jsx("i",{"aria-hidden":"true"})]})}function ne({children:e,align:n,valign:s,className:r}){return t.jsx("div",{className:Ri("ui-toolbar",r),"data-align":n,"data-valign":s,children:e})}function ft(){return t.jsx("span",{className:"ui-toolbar-spacer"})}function le({label:e,hint:n,inline:s,grow:r,wide:a,group:i,action:l,after:o,children:c}){const u=d.useId();return t.jsxs("div",{className:"ui-field","data-inline":s?"true":void 0,"data-grow":r?"true":void 0,"data-wide":a?"true":void 0,children:[l?t.jsxs("div",{className:"ui-field-row",children:[t.jsxs("label",{className:"ui-field-control",children:[t.jsx("span",{className:"ui-field-label",children:e}),c]}),l]}):i?t.jsxs("div",{className:"ui-field-control",role:"group","aria-labelledby":u,children:[t.jsx("span",{className:"ui-field-label",id:u,children:e}),c]}):t.jsxs("label",{className:"ui-field-control",children:[t.jsx("span",{className:"ui-field-label",children:e}),c]}),n?t.jsx("span",{className:"ui-field-hint",children:n}):null,o]})}function Ks({children:e,dense:n,columns:s}){return t.jsx("div",{className:"ui-formgrid","data-dense":n?"true":void 0,"data-columns":s===3?"3":void 0,children:e})}function Ae({tone:e,mono:n,dot:s,children:r,className:a,title:i}){return t.jsxs("span",{className:Ri("ui-pill",n&&"mono",a),"data-tone":e,title:i,children:[s?t.jsx("span",{className:"ui-pill-dot","aria-hidden":"true"}):null,r]})}function Do({children:e}){return t.jsx("span",{className:"ui-tag",children:e})}function kd({state:e}){const n=e==="succeeded"||e==="approved"||e==="fired"||e==="running"||e==="leased"?"good":e==="failed"||e==="rejected"||e==="unknown"||e==="error"||e==="refused"?"critical":e==="pending"||e==="suspended"||e==="expired"||e==="paused"?"warning":void 0;return t.jsx(Ae,{tone:n,children:e})}function Q({tone:e,title:n,children:s,role:r,action:a}){return a?t.jsx("div",{className:"ui-notice","data-tone":e,role:r,children:t.jsxs("div",{className:"ui-notice-row",children:[t.jsxs("div",{className:"ui-notice-body",children:[n?t.jsx("div",{className:"ui-notice-title",children:n}):null,s]}),a]})}):t.jsxs("div",{className:"ui-notice","data-tone":e,role:r,children:[n?t.jsx("div",{className:"ui-notice-title",children:n}):null,s]})}function re({message:e}){return e?t.jsx(Q,{tone:"critical",role:"alert",children:e}):null}function Ce({mascot:e,warm:n,title:s,action:r,children:a}){return n||s?t.jsxs("div",{className:"ui-empty","data-warm":n?"true":void 0,children:[s?t.jsx("div",{className:"ui-empty-title",children:s}):null,t.jsx("div",{children:a}),r]}):e?t.jsxs("div",{className:"ui-empty","data-mascot":"true",children:[t.jsx(oP,{size:"sm"}),t.jsx("p",{children:a})]}):t.jsx("p",{className:"ui-empty",children:a})}function ms({icon:e,title:n,action:s,children:r}){return t.jsxs("div",{className:"ui-empty-state",children:[e?t.jsx("span",{className:"ui-empty-state-icon",children:typeof e=="string"?t.jsx(se,{name:e}):e}):null,t.jsx("div",{className:"ui-empty-state-title",children:n}),r?t.jsx("p",{className:"ui-empty-state-line",children:r}):null,s?t.jsx("div",{className:"ui-empty-state-action",children:s}):null]})}function Rb({children:e}){return t.jsx("div",{className:"ui-page",children:e})}function al({title:e,lede:n,actions:s,before:r}){return t.jsxs("header",{className:"ui-page-head",children:[t.jsxs("div",{className:"ui-page-head-row",children:[t.jsxs("h2",{className:"ui-page-title",children:[r,t.jsx("span",{children:e})]}),s?t.jsx("div",{className:"ui-page-actions",children:s}):null]}),n?t.jsx("p",{className:"ui-page-lede",children:n}):null]})}function Rs({embedded:e,title:n,lede:s,actions:r,children:a}){return e?t.jsxs("div",{className:"ui-stack","data-gap":"lg",children:[r?t.jsx("div",{className:"ui-toolbar","data-align":"end",children:r}):null,a]}):t.jsxs(Rb,{children:[t.jsx(al,{title:n,lede:s,actions:r}),a]})}function we({title:e,aside:n,actions:s,panel:r,flush:a,foot:i,children:l}){const o=e||n||s?t.jsxs("div",{className:"ui-section-head",children:[e?t.jsx("h3",{className:"ui-section-title",children:e}):t.jsx("span",{}),n||s?t.jsxs("div",{className:"ui-section-side",children:[n?t.jsx("span",{className:"ui-section-aside",children:n}):null,s?t.jsx("div",{className:"ui-section-actions",children:s}):null]}):null]}):null;return t.jsxs("section",{className:"ui-section","data-panel":r?"true":void 0,children:[o,r?t.jsxs("div",{className:"ui-panel","data-flush":a?"true":void 0,children:[l,i?t.jsx("div",{className:"ui-panel-foot",children:i}):null]}):t.jsxs(t.Fragment,{children:[l,i?t.jsx("div",{className:"ui-toolbar","data-align":"end",children:i}):null]})]})}function lt({title:e,tool:n,actions:s,flush:r,children:a}){return t.jsxs("section",{className:"ui-panel","data-flush":r?"true":void 0,children:[e||n||s?t.jsxs("header",{className:"ui-panel-head",children:[e?t.jsx("h3",{className:"ui-panel-title",children:e}):t.jsx("span",{}),n?t.jsx("span",{className:"ui-panel-tool",children:n}):null,s?t.jsx("div",{className:"ui-panel-actions",children:s}):null]}):null,a]})}function Wr({tone:e,title:n,meta:s,actions:r,children:a,foot:i,onClick:l,label:o,as:c="div",labelledBy:u,density:h}){const f=l?{"data-interactive":"true",tabIndex:0,"aria-label":o,onClick:l,onKeyDown:m=>{m.target!==m.currentTarget||m.key!=="Enter"&&m.key!==" "||(m.preventDefault(),l())}}:{};return t.jsxs(c,{className:"ui-card","data-tone":e,"data-density":h,"aria-labelledby":u,...f,children:[n||s||r?t.jsxs("div",{className:"ui-card-head",children:[n?t.jsx("h3",{className:"ui-card-title",children:n}):null,s,r?t.jsx("div",{className:"ui-card-actions",children:r}):null]}):null,a,i?t.jsx("div",{className:"ui-card-foot",children:i}):null]})}function de({gap:e,divided:n,children:s}){return t.jsx("div",{className:"ui-stack","data-gap":e,"data-divided":n?"true":void 0,children:s})}function OW({children:e}){return t.jsx("div",{className:"ui-row",children:e})}function gp({inline:e,children:n}){return t.jsx("div",{className:"ui-stats","data-inline":e?"true":void 0,children:n})}function ta({label:e,value:n,note:s,tone:r,size:a}){return t.jsxs("div",{className:"ui-stat",children:[t.jsx("div",{className:"ui-stat-k",children:e}),t.jsx("div",{className:"ui-stat-v","data-tone":r,"data-size":a,children:n}),s?t.jsx("div",{className:"ui-stat-n",children:s}):null]})}function un({items:e}){return t.jsx("dl",{className:"ui-kv",children:e.map((n,s)=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:n.label}),t.jsx("dd",{children:n.value})]},n.key??s))})}function ma({children:e}){return t.jsx("div",{className:"ui-table-wrap",children:t.jsx("table",{className:"ui-table",children:e})})}function Ib({value:e,label:n}){const s=Math.max(0,Math.min(100,Math.round(Number.isFinite(e)?e:0)));return t.jsx("div",{className:"ui-progress",role:"progressbar","aria-label":n,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":s,"aria-valuetext":`${s}%`,children:t.jsx("div",{className:"ui-progress-fill",style:{inlineSize:`${s}%`}})})}function en({children:e,label:n}){return t.jsx("pre",{className:"ui-code","aria-label":n,children:e})}function Kt({summary:e,boxed:n,open:s,className:r,onToggle:a,children:i}){return t.jsxs("details",{className:Ri("ui-details",r),"data-boxed":n?"true":void 0,open:s,onToggle:a?l=>a(l.currentTarget.open):void 0,children:[t.jsx("summary",{children:e}),i]})}function Qe({title:e,onClose:n,size:s,foot:r,scrollBody:a,container:i,children:l}){const o=i?"true":void 0;return t.jsx(op,{open:!0,modal:!i,onOpenChange:c=>{c||n()},children:t.jsxs(cp,{...i?{container:i}:{},children:[i?t.jsx("div",{className:"ui-sheet-overlay","data-contained":o,onClick:n,"aria-hidden":"true"}):t.jsx(vb,{className:"ui-sheet-overlay"}),t.jsxs(up,{className:"ui-sheet","data-size":s,"data-contained":o,"data-scroll-body":a||void 0,"aria-describedby":void 0,...i?{onInteractOutside:c=>c.preventDefault()}:{},children:[t.jsxs("div",{className:"ui-sheet-head",children:[t.jsx(dp,{className:"ui-sheet-title",children:e}),t.jsx(jb,{asChild:!0,children:t.jsx(A,{size:"sm",children:"Close"})})]}),a?t.jsx("div",{className:"ui-sheet-body",children:l}):l,r?t.jsx("div",{className:"ui-sheet-foot",children:r}):null]})]})})}function Vt({title:e,onClose:n,foot:s,children:r}){return t.jsx(op,{open:!0,onOpenChange:a=>{a||n()},children:t.jsxs(cp,{children:[t.jsx(vb,{className:"ui-sheet-overlay","data-layer":"modal"}),t.jsxs(up,{className:"ui-modal",role:"alertdialog","aria-describedby":void 0,children:[t.jsx(dp,{className:"ui-modal-title",children:e}),r,s?t.jsx("div",{className:"ui-modal-foot",children:s}):null]})]})})}function rs({label:e,items:n,note:s,trigger:r,sheet:a,stacked:i}){const l=ts(DW);return a&&l&&!r?t.jsx(LW,{label:e,items:n,title:a.title,sub:a.sub}):t.jsx(FW,{label:e,items:n,note:s,trigger:r,stacked:i})}const DW="(max-width: 720px)";function LW({label:e,items:n,title:s,sub:r}){const[a,i]=d.useState(!1);return t.jsxs(op,{open:a,onOpenChange:i,children:[t.jsx(M5,{asChild:!0,children:t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":e,title:e,onClick:l=>l.stopPropagation(),children:t.jsx(se,{name:"more"})})}),t.jsxs(cp,{children:[t.jsx(vb,{className:"ui-sheet-overlay",onClick:l=>l.stopPropagation()}),t.jsxs(up,{className:"ui-action-sheet","aria-describedby":void 0,onClick:l=>l.stopPropagation(),children:[t.jsxs("div",{className:"ui-action-sheet-head",children:[t.jsx(dp,{className:"ui-action-sheet-title",children:s}),r?t.jsx("span",{className:"ui-action-sheet-sub",children:r}):null]}),t.jsx("div",{className:"ui-menu ui-action-sheet-list",role:"menu",children:n.map((l,o)=>l?l==="separator"?t.jsx("div",{className:"ui-menu-sep",role:"separator"},`sep-${o}`):"heading"in l?t.jsx("div",{className:"ui-menu-label",children:l.heading},`head-${o}`):t.jsxs("button",{type:"button",role:"menuitem",className:"ui-menu-item","data-tone":l.tone,onClick:()=>{i(!1),l.onSelect()},children:[t.jsx("span",{children:l.label}),l.hint?t.jsx("span",{className:"ui-menu-item-hint",children:l.hint}):null]},o):null)}),t.jsx(jb,{asChild:!0,children:t.jsx(A,{className:"ui-action-sheet-cancel",children:"Cancel"})})]})]})]})}function FW({label:e,items:n,note:s,trigger:r,stacked:a}){const i=o=>o.stopPropagation(),l=d.useRef(!1);return t.jsxs(xd,{modal:!1,onOpenChange:o=>{o&&(l.current=!1)},children:[t.jsx(vd,{asChild:!0,children:r??t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":e,title:e,onClick:i,children:t.jsx(se,{name:"more"})})}),t.jsx(rc,{children:t.jsxs(jd,{className:"ui-menu","data-stacked":a?"true":void 0,align:"end",sideOffset:4,onClick:i,onKeyDown:i,onCloseAutoFocus:o=>{l.current&&o.preventDefault()},children:[s?t.jsx(pl,{className:"ui-menu-label",children:s}):null,n.map((o,c)=>o?o==="separator"?t.jsx(ea,{className:"ui-menu-sep"},`sep-${c}`):"heading"in o?t.jsx(pl,{className:"ui-menu-label",children:o.heading},`head-${c}`):t.jsxs(ws,{className:"ui-menu-item","data-tone":o.tone,onSelect:()=>{l.current=!0,o.onSelect()},children:[t.jsx("span",{children:o.label}),o.hint?t.jsx("span",{className:"ui-menu-item-hint",children:o.hint}):null]},c):null)]})})]})}function _W({title:e,actions:n,onClose:s,onCloseAutoFocus:r,onOpenAutoFocus:a,label:i,children:l}){return t.jsx(op,{open:!0,modal:!1,onOpenChange:o=>{o||s()},children:t.jsx(cp,{children:t.jsxs(up,{className:"ui-dock","aria-describedby":void 0,...i?{"aria-label":i}:{},onInteractOutside:o=>o.preventDefault(),...r?{onCloseAutoFocus:r}:{},...a?{onOpenAutoFocus:a}:{},children:[t.jsxs("div",{className:"ui-dock-head",children:[t.jsx(dp,{className:"ui-dock-title",children:e}),t.jsxs("div",{className:"ui-dock-actions",children:[n,t.jsx(jb,{asChild:!0,children:t.jsx(A,{size:"sm",variant:"ghost",children:"Close"})})]})]}),t.jsx("div",{className:"ui-dock-body",children:l})]})})})}function cc({level:e,label:n,children:s}){return t.jsx("nav",{className:"ui-tabs","data-level":e,"aria-label":n,children:s})}function xl({href:e,active:n,count:s,onClick:r,children:a}){return t.jsxs("a",{className:"ui-tab",href:e,"aria-current":n?"page":void 0,onClick:r,children:[a,s?t.jsx("span",{className:"ui-count",children:s}):null]})}function dn({label:e,options:n,value:s,onChange:r}){return t.jsx("div",{className:"ui-segment",role:"radiogroup","aria-label":e,children:n.map(a=>t.jsx("button",{type:"button",role:"radio",className:"ui-tab","aria-checked":a.value===s,onClick:()=>r(a.value),children:a.label},a.value))})}function yt({children:e}){return t.jsx("div",{className:"ui-list",children:e})}function gt({href:e,onClick:n,lead:s,title:r,sub:a,side:i,dimmed:l,label:o}){const c=t.jsxs(t.Fragment,{children:[s,t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:r}),a?t.jsx("span",{className:"ui-list-sub",children:a}):null]}),i?t.jsx("span",{className:"ui-list-side",children:i}):null]}),u=l?"true":void 0;return e?t.jsx("a",{className:"ui-list-row","data-dimmed":u,href:e,onClick:n?h=>{h.preventDefault(),n()}:void 0,children:c}):n?t.jsx("div",{className:"ui-list-row","data-interactive":"true","data-dimmed":u,tabIndex:0,"aria-label":o,onClick:n,onKeyDown:h=>{h.target!==h.currentTarget||h.key!=="Enter"&&h.key!==" "||(h.preventDefault(),n())},children:c}):t.jsx("div",{className:"ui-list-row","data-dimmed":u,children:c})}function cP({href:e,onClick:n,current:s,lead:r,title:a,meta:i,sub:l,snippet:o,side:c,strong:u}){return t.jsxs("a",{className:"ui-pick",href:e,"data-strong":u===void 0?void 0:String(u),"aria-current":s?"true":void 0,onClick:n?h=>{h.preventDefault(),n()}:void 0,children:[r?t.jsx("span",{className:"ui-pick-lead",children:r}):null,t.jsxs("span",{className:"ui-pick-main",children:[t.jsxs("span",{className:"ui-pick-top",children:[t.jsx("span",{className:"ui-pick-title",children:a}),i?t.jsx("span",{className:"ui-pick-meta",children:i}):null]}),l||c?t.jsxs("span",{className:"ui-pick-line",children:[l?t.jsx("span",{className:"ui-pick-sub",children:l}):null,c?t.jsx("span",{className:"ui-pick-side",children:c}):null]}):null,o?t.jsx("span",{className:"ui-pick-snippet",children:o}):null]})]})}function uP({list:e,detail:n,empty:s,label:r,className:a}){return t.jsxs("div",{className:Ri("ui-split",a),"data-open":n?"true":void 0,children:[t.jsx("section",{className:"ui-split-list","aria-label":r,children:e}),t.jsx("section",{className:"ui-split-detail","data-empty":n?void 0:"true",children:n??t.jsx("p",{className:"ui-empty ui-split-empty",children:s})})]})}function Gf({children:e,onRemove:n,label:s,disabled:r}){return t.jsxs("span",{className:"ui-chip",children:[e,t.jsx("button",{type:"button",className:"ui-chip-x","aria-label":`Remove ${s}`,onClick:n,disabled:r,children:"×"})]})}const zW=8;function UW({label:e,options:n,value:s,onChange:r,max:a,disabled:i,id:l}){const[o,c]=d.useState(!1),[u,h]=d.useState(""),[f,m]=d.useState(0),p=d.useRef(null),x=d.useRef(null),g=d.useRef(null),b=d.useRef(null),j=d.useId(),v=I=>{var F;return((F=n.find(U=>U.value===I))==null?void 0:F.label)??I},y=a!==void 0&&s.length>=a,k=n.filter(I=>!s.includes(I.value)),N=n.length>zW,w=u.trim().toLowerCase(),S=w===""?k:k.filter(I=>I.label.toLowerCase().includes(w)),C=Math.min(f,Math.max(0,S.length-1)),E=I=>{var F;c(!1),h(""),m(0),I&&((F=x.current)==null||F.focus())};d.useEffect(()=>{var F;if(!o)return;(F=N?g.current:b.current)==null||F.focus();const I=U=>{p.current&&!p.current.contains(U.target)&&E(!1)};return document.addEventListener("mousedown",I),()=>document.removeEventListener("mousedown",I)},[o,N]);const $=I=>{const F=[...s,I];r(F),h(""),m(0);const U=a!==void 0&&F.length>=a;(U||F.length>=n.length)&&E(!U)},R=I=>{if(I.key==="Escape")I.preventDefault(),E(!0);else if(I.key==="ArrowDown")I.preventDefault(),m(S.length===0?0:(C+1)%S.length);else if(I.key==="ArrowUp")I.preventDefault(),m(S.length===0?0:(C-1+S.length)%S.length);else if(I.key==="Enter"){I.preventDefault();const F=S[C];F&&$(F.value)}else I.key==="Backspace"&&u===""&&s.length>0&&(I.preventDefault(),r(s.slice(0,-1)))},P=I=>`${j}-${I}`,O=o&&S.length>0?P(C):void 0;return t.jsxs("div",{className:"ui-chippicker",ref:p,id:l,children:[s.map(I=>t.jsx(Gf,{label:v(I),disabled:i,onRemove:()=>r(s.filter(F=>F!==I)),children:v(I)},I)),t.jsxs("div",{className:"ui-chippicker-add",children:[t.jsx("button",{ref:x,type:"button",className:"ui-btn","data-size":"sm","data-variant":"ghost","aria-haspopup":"listbox","aria-expanded":o,"aria-controls":o?j:void 0,disabled:i||y||k.length===0,onClick:()=>o?E(!1):c(!0),children:"Add…"}),o?t.jsxs("div",{className:"ui-menu ui-chippicker-menu",onKeyDown:R,children:[N?t.jsx("input",{ref:g,type:"search",className:"ui-chippicker-filter","aria-label":`Filter ${e}`,"aria-controls":j,"aria-activedescendant":O,value:u,onChange:I=>{h(I.target.value),m(0)}}):null,t.jsxs("div",{ref:b,id:j,role:"listbox","aria-multiselectable":"true","aria-label":e,"aria-activedescendant":N?void 0:O,tabIndex:N?-1:0,className:"ui-chippicker-list",children:[S.map((I,F)=>t.jsx("div",{id:P(F),role:"option","aria-selected":"false",className:"ui-menu-item","data-highlighted":F===C?"":void 0,onMouseEnter:()=>m(F),onMouseDown:U=>U.preventDefault(),onClick:()=>$(I.value),children:I.label},I.value)),S.length===0?t.jsx("p",{className:"ui-menu-empty",children:"Nothing matches"}):null]})]}):null]})]})}function dP({label:e,options:n,value:s,onChange:r}){return t.jsx("div",{className:"ui-filter-chips",role:"group","aria-label":e,children:n.map(a=>t.jsx("button",{type:"button",className:"ui-btn ui-filter-chip","data-size":"sm","aria-pressed":a.value===s,onClick:()=>r(a.value),children:a.label},a.value))})}function xp({label:e,value:n,onChange:s,placeholder:r,grow:a}){return t.jsx("span",{className:"ui-search","data-grow":a?"true":void 0,children:t.jsx("input",{type:"search","aria-label":e,value:n,placeholder:r,onChange:i=>s(i.target.value)})})}function ss({svg:e,icon:n="plug",letter:s,size:r}){return t.jsx("span",{className:"ui-app-icon","data-size":r,"data-tone":e||s?"accent":void 0,"aria-hidden":"true",children:e?t.jsx("span",{className:"ui-app-icon-svg",dangerouslySetInnerHTML:{__html:e}}):s?t.jsx("span",{className:"ui-app-icon-letter",children:s}):t.jsx(se,{name:n})})}function tu({items:e,label:n="Where this is",inline:s}){const r=e.map((a,i)=>{const l=a.key??String(i);if(a.current)return t.jsx("span",{className:"ui-crumb","aria-current":"page",children:a.label},l);const o=a.href?t.jsx("a",{className:"ui-crumb",href:a.href,onClick:a.onClick?c=>{var u;c.preventDefault(),(u=a.onClick)==null||u.call(a)}:void 0,children:a.label}):t.jsx("button",{type:"button",className:"ui-crumb",onClick:a.onClick,children:a.label});return t.jsxs("span",{className:"ui-crumb-step",children:[o,t.jsx(se,{name:"chevron-right",size:12})]},l)});return s?t.jsx("span",{className:"ui-crumbs","aria-label":n,children:r}):t.jsx("nav",{className:"ui-crumbs","aria-label":n,children:r})}function hP({main:e,filters:n,filtersOpen:s,onToggleFilters:r,active:a,chips:i,actions:l,onSubmit:o,label:c}){return t.jsxs("form",{className:"ui-panel ui-searchbar",role:"search","aria-label":c,onSubmit:u=>{u.preventDefault(),o()},children:[t.jsxs("div",{className:"ui-searchbar-row",children:[e?t.jsx("div",{className:"ui-searchbar-main",children:e}):null,n&&r?t.jsxs(A,{"aria-expanded":s===!0,"aria-pressed":s===!0,onClick:r,children:["Filters",a?t.jsx("span",{className:"ui-count",children:a}):null]}):null,!r&&n?t.jsx("div",{className:"ui-searchbar-inline",children:n}):null,l?t.jsx("div",{className:"ui-searchbar-actions",children:l}):null]}),n&&r&&s?t.jsx("div",{className:"ui-searchbar-filters",children:n}):null,i?t.jsx("div",{className:"ui-searchbar-chips",children:i}):null]})}function Hu({size:e}){return t.jsx("span",{className:"ui-mark","data-size":e,"aria-hidden":"true",children:"b"})}function fP({quiet:e,still:n,className:s,children:r}){return t.jsx("div",{className:Ri("ui-fieldbg",s),"data-quiet":e?"true":void 0,"data-still":n?"true":void 0,children:r})}function BW({dock:e,className:n,children:s}){return t.jsxs("div",{className:Ri("ui-float",n),children:[t.jsx("div",{className:"ui-float-body",children:s}),e?t.jsx("div",{className:"ui-float-dock",children:e}):null]})}const WW=new Set(["image/png","image/jpeg","image/gif","image/webp"]),HW=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function qf(e){const n=e!==null&&typeof e=="object"?e.artifacts:null;return Array.isArray(n)?n.flatMap(s=>{if(s===null||typeof s!="object")return[];const r=s;return typeof r.id!="string"||!HW.test(r.id)?[]:[{type:"attachment",artifactId:r.id,filename:typeof r.filename=="string"?r.filename:null,mime:typeof r.mime=="string"?r.mime:"application/octet-stream",kind:typeof r.kind=="string"?r.kind:"other",sizeBytes:null}]}):[]}function Pb(e){return WW.has(e.toLowerCase())}function Lr(e){return`/api/artifacts/${encodeURIComponent(e)}/preview`}function ca(e){return`/api/artifacts/${encodeURIComponent(e)}/download`}function qn(e){return e==null||!Number.isFinite(e)?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(e<10*1024?1:0)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Mb(e,n){const s=e.toLowerCase(),r=(n??"").toLowerCase().split(".").pop()??"";return s.startsWith("image/")?"image":s==="application/pdf"?"pdf":s.startsWith("audio/")?"audio":s.startsWith("video/")?"video":s==="text/csv"||s==="text/tab-separated-values"||s.includes("spreadsheet")||s.includes("excel")||["csv","tsv","xls","xlsx","numbers"].includes(r)?"table":s.includes("zip")||s.includes("tar")||s.includes("compressed")||["zip","gz","tgz","rar","7z"].includes(r)?"archive":s==="application/json"||s.includes("javascript")||s.includes("xml")||["ts","tsx","js","py","rb","go","rs","swift","json","yaml","yml","toml","sh","sql","html","css"].includes(r)?"code":s.startsWith("text/")||["md","txt","rtf","doc","docx"].includes(r)?"text":"file"}const il={image:"Image",pdf:"PDF",table:"Spreadsheet",text:"Document",code:"Code",audio:"Audio",video:"Video",archive:"Archive",file:"File"};function Zh(e){return`artifact:${e}`}function KW(e){const n=Mb(e.mime,e.filename);return{id:Zh(e.artifactId),tool:il[n],title:e.filename??"Untitled file",renderer:"artifact",props:{attachment:e},at:null,source:"artifact",substantial:!1}}const YS=16e3,VW=10*6e4,GW="The microphone is blocked for this page: allow it in the browser’s site settings to talk.",mP="This browser cannot record here: talking needs a microphone and a secure page (https or localhost).";function qW(){const e=window;return e.AudioContext??e.webkitAudioContext}function YW(e){const n=e&&typeof e=="object"&&"name"in e?String(e.name):"";return n==="NotAllowedError"||n==="SecurityError"||n==="PermissionDeniedError"?GW:n==="NotFoundError"||n==="DevicesNotFoundError"?"No microphone was found on this computer.":n==="NotReadableError"?"The microphone is in use by another app.":mP}async function QW(e){var c;const n=qW();if(!((c=navigator.mediaDevices)!=null&&c.getUserMedia)||!n)throw Object.assign(new Error(mP),{name:"Unsupported"});const s=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0}}),r=new n,a=r.createMediaStreamSource(s),i=r.createScriptProcessor(4096,1,1),l=[];i.onaudioprocess=u=>{const h=u.inputBuffer.getChannelData(0);l.push(new Float32Array(h));let f=0;for(let m=0;m<h.length;m++)f+=h[m]*h[m];e(Math.min(1,Math.sqrt(f/h.length)*6))},a.connect(i),i.connect(r.destination),r.state==="suspended"&&await r.resume().catch(()=>{});const o=()=>{i.onaudioprocess=null;try{a.disconnect(),i.disconnect()}catch{}s.getTracks().forEach(u=>u.stop()),r.close().catch(()=>{})};return{async stop(){const u=r.sampleRate;return o(),ZW(XW(JW(l),u,YS),YS)},cancel:o}}function JW(e){const n=new Float32Array(e.reduce((r,a)=>r+a.length,0));let s=0;for(const r of e)n.set(r,s),s+=r.length;return n}function XW(e,n,s){if(n<=s)return e;const r=n/s,a=new Float32Array(Math.floor(e.length/r));for(let i=0;i<a.length;i++){const l=Math.floor(i*r),o=Math.min(e.length,Math.floor((i+1)*r));let c=0;for(let u=l;u<o;u++)c+=e[u];a[i]=o>l?c/(o-l):0}return a}function ZW(e,n){const s=new ArrayBuffer(44+e.length*2),r=new DataView(s),a=(i,l)=>{for(let o=0;o<l.length;o++)r.setUint8(i+o,l.charCodeAt(o))};a(0,"RIFF"),r.setUint32(4,36+e.length*2,!0),a(8,"WAVEfmt "),r.setUint32(16,16,!0),r.setUint16(20,1,!0),r.setUint16(22,1,!0),r.setUint32(24,n,!0),r.setUint32(28,n*2,!0),r.setUint16(32,2,!0),r.setUint16(34,16,!0),a(36,"data"),r.setUint32(40,e.length*2,!0);for(let i=0;i<e.length;i++){const l=Math.max(-1,Math.min(1,e[i]));r.setInt16(44+i*2,Math.round(l<0?l*32768:l*32767),!0)}return new Blob([s],{type:"audio/wav"})}const gj="buddi.readAloud";function pP(){try{return window.localStorage.getItem(gj)==="on"}catch{return!1}}function gP(e){try{e?window.localStorage.setItem(gj,"on"):window.localStorage.removeItem(gj)}catch{}}let Qr=null,nu=null,Ku=0,xj=null;const vj=new Set;function Yf(e){xj!==e&&(xj=e,vj.forEach(n=>n()))}function eH(){return xj}function tH(e){return vj.add(e),()=>vj.delete(e)}function xP(e){return uc(),Yf(e),Ku}function QS(e){return e===Ku}function uc(){Ku++,Qr&&(Qr.pause(),Qr.removeAttribute("src")),nu&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(nu),nu=null,Yf(null)}async function nH(e,n,s=null){var a;const r=xP(s);try{const i=await fetch(e,{credentials:"same-origin"});if(!i.ok)throw new Error(`The spoken reply could not be fetched (${i.status}).`);const l=new Blob([await i.arrayBuffer()],{type:n});if(r!==Ku)return;Qr||(Qr=new Audio,(a=Qr.addEventListener)==null||a.call(Qr,"ended",()=>Yf(null))),nu=URL.createObjectURL(l),Qr.src=nu,await Qr.play()}catch(i){throw r===Ku&&Yf(null),i}}const sH=new Set(["audio/ogg","audio/mpeg","audio/mp4","audio/wav","audio/x-wav","audio/webm"]);function vp(e){return sH.has(e.toLowerCase().split(";")[0].trim())}function co(e){if(e===null||!Number.isFinite(e)||e<0)return"–:––";const n=Math.floor(e);return`${Math.floor(n/60)}:${String(n%60).padStart(2,"0")}`}function vP(e,n,s=!1){const r=d.useRef(null),a=d.useRef(null),[i,l]=d.useState(!1),[o,c]=d.useState(!1),[u,h]=d.useState(!1),[f,m]=d.useState(0),[p,x]=d.useState(null),g=d.useRef(null),b=d.useCallback(async()=>{const k=r.current;if(!k||a.current)return;if(g.current)return g.current;const N=(async()=>{c(!0);try{const w=await fetch(ca(e),{credentials:"same-origin"});if(!w.ok)throw new Error(String(w.status));const S=await w.arrayBuffer();if(r.current!==k)return;a.current=URL.createObjectURL(new Blob([S],{type:n})),k.src=a.current,k.load()}finally{c(!1),g.current=null}})();return g.current=N,N},[e,n]);return d.useEffect(()=>{s&&b().catch(()=>h(!0));const k=r.current;return()=>{k==null||k.pause(),a.current&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(a.current),a.current=null}},[b,s]),{playing:i,loading:o,failed:u,position:f,duration:p,toggle:async()=>{const k=r.current;if(k){if(i){k.pause();return}uc(),h(!1);try{await b(),await k.play()}catch{h(!0)}finally{c(!1)}}},seek:k=>{const N=r.current;!N||p===null||!Number.isFinite(k)||(N.currentTime=Math.max(0,Math.min(p,k)),m(N.currentTime))},bind:{ref:r,preload:"none",onPlay:()=>l(!0),onPause:()=>l(!1),onEnded:()=>{l(!1),m(0)},onTimeUpdate:k=>m(k.currentTarget.currentTime),onLoadedMetadata:k=>x(Number.isFinite(k.currentTarget.duration)?k.currentTarget.duration:null),onDurationChange:k=>x(Number.isFinite(k.currentTarget.duration)?k.currentTarget.duration:null)}}}function jp({artifactId:e,name:n,mime:s,sizeBytes:r}){const{playing:a,loading:i,failed:l,position:o,duration:c,toggle:u,bind:h}=vP(e,s),f=l?"Could not play. Download it instead.":`${co(o)} / ${co(c)}`;return t.jsxs("span",{className:"wb-audio","data-testid":"audio-card","data-playing":a?"true":void 0,children:[t.jsx("button",{type:"button",className:"ui-icon-btn wb-audio-play","data-size":"sm","aria-label":a?`Pause ${n}`:`Play ${n}`,disabled:i,onClick:()=>void u(),children:t.jsx(se,{name:a?"pause":"play",size:14})}),t.jsxs("span",{className:"wb-file-text",children:[t.jsx("span",{className:"wb-file-name",title:n,children:n}),t.jsxs("span",{className:"wb-file-meta","data-testid":"audio-time",children:[i?"Loading…":f,!l&&qn(r)?` · ${qn(r)}`:""]})]}),t.jsx("a",{className:"ui-icon-btn wb-audio-download","data-size":"sm",href:ca(e),download:n,"aria-label":`Download ${n}`,title:"Download",children:t.jsx(se,{name:"download",size:14})}),t.jsx("audio",{...h})]})}async function rH(e){var l;const n=await fetch(ca(e.fileId),{credentials:"same-origin"});if(!n.ok)throw Error("Audio download failed");const s=await n.arrayBuffer();let r;if(e.mime==="audio/mpeg")r=new Blob([s],{type:"audio/mpeg"});else{const o=new AudioContext({sampleRate:44100});try{const c=await o.decodeAudioData(s),{Mp3Encoder:u}=await PI(async()=>{const{Mp3Encoder:x}=await import("./lamejs-fr7QR4q8.js");return{Mp3Encoder:x}},[],import.meta.url),h=Math.min(2,c.numberOfChannels),f=new u(h,c.sampleRate,128),m=Array.from({length:h},(x,g)=>Int16Array.from(c.getChannelData(g),b=>Math.round(Math.max(-1,Math.min(1,b))*(b<0?32768:32767)))),p=[];for(let x=0;x<c.length;x+=1152){const g=f.encodeBuffer(m[0].subarray(x,x+1152),(l=m[1])==null?void 0:l.subarray(x,x+1152));g.length&&p.push(Uint8Array.from(g)),x%(1152*64)===0&&await new Promise(b=>setTimeout(b,0))}p.push(Uint8Array.from(f.flush())),r=new Blob(p,{type:"audio/mpeg"})}finally{await o.close()}}const a=URL.createObjectURL(r),i=document.createElement("a");i.href=a,i.download=`${(e.filename??"recording").replace(/\.[^.]+$/,"")}.mp3`,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(a),6e4)}const JS="news",aH="edition";function jP(e){if(!e)return null;const n=/^#\/p\/news\/stories\?(.*)$/.exec(e);if(!n)return null;const s=new URLSearchParams(n[1]).get("edition");return s&&/^[A-Za-z0-9_-]{1,40}$/.test(s)?s:null}const zt=e=>typeof e=="string"?e:"",iH=e=>/^https?:\/\/[^\s]+$/i.test(e),XS=/^[a-z][a-z0-9_]*\.[a-z][a-z0-9_]*$/,Vu=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null;function ZS(e){const n=Vu(e);if(!n)return null;const s={};for(const[r,a]of Object.entries(n)){const i=Vu(a);if(!i||!("const"in i))return null;s[r]=i.const}return s}function lH(e){return(Array.isArray(e)?e:[]).flatMap(n=>{const s=Vu(n);if(!s)return[];const r=zt(s.label).trim(),a=zt(s.tool),i=ZS(s.args??{});if(r===""||!XS.test(a)||!i)return[];const l=Vu(s.undo),o=l?ZS(l.args??{}):null,c=l&&XS.test(zt(l.tool))&&o?{tool:zt(l.tool),label:zt(l.label).trim()||"Undo",args:o}:null,u=zt(s.hint).trim(),h=zt(s.group).trim(),f=zt(s.confirm).trim();return[{label:r,tool:a,args:i,...u?{hint:u}:{},...h?{group:h}:{},...f?{confirm:f}:{},done:zt(s.done).trim()||"Done.",...c?{undo:c}:{}}]}).slice(0,12)}function yP(e){const n=e!==null&&typeof e=="object"?e.edition:null;if(n===null||typeof n!="object")return null;const s=n,r=(Array.isArray(s.groups)?s.groups:[]).flatMap(i=>{if(i===null||typeof i!="object")return[];const l=(Array.isArray(i.stories)?i.stories:[]).flatMap(o=>{if(o===null||typeof o!="object")return[];const c=o,u=zt(c.title).trim();if(u==="")return[];const h=c.link!==null&&typeof c.link=="object"?c.link:null,f=h?zt(h.url):"",m=c.mark==="update"||c.mark==="opinion"?c.mark:void 0,p=zt(c.topicName).trim(),x=lH(c.actions);return[{...m?{mark:m,markLabel:zt(c.markLabel)||void 0}:{},title:u,lead:zt(c.lead),outlet:zt(c.outlet),more:typeof c.more=="number"&&Number.isFinite(c.more)&&c.more>0?Math.floor(c.more):0,...iH(f)?{link:{url:f,label:zt(h.label)||f}}:{},logos:(Array.isArray(c.logos)?c.logos:[]).flatMap(g=>{if(g===null||typeof g!="object")return[];const b=zt(g.name),j=zt(g.logo);return b?[{name:b,...j?{logo:j}:{}}]:[]}),...p?{topicName:p}:{},...x.length>0?{actions:x}:{}}]});return l.length>0?[{topic:zt(i.topic),stories:l}]:[]});if(r.length===0)return null;const a=zt(s.next);return{id:zt(s.id),name:zt(s.name)||"Edition",when:zt(s.when),lede:zt(s.lede),groups:r,notes:(Array.isArray(s.notes)?s.notes:[]).filter(i=>typeof i=="string"&&i.trim()!==""),.../^\d{1,2}:\d{2}$/.test(a)?{next:a}:{},...zt(s.foot).trim()?{foot:zt(s.foot).trim()}:{},.../^#\/p\/[a-z][a-z0-9_-]{0,63}\//.test(zt(s.report))?{report:zt(s.report)}:{}}}function oH(e,n){const s=[];let r=null;return e.forEach((a,i)=>{const l=a.group??a.tool;i>0&&l!==r&&s.push("separator"),a.group&&l!==r&&s.push({heading:a.group}),r=l,s.push({label:a.label,...a.hint?{hint:a.hint}:{},onSelect:()=>n(a)})}),s}function cH({s:e,plugin:n}){const[s,r]=d.useState(null),a=e.logos[0]??{name:e.outlet||e.title},i=e.outlet||a.name,[l,o]=d.useState(null),c=e.actions??[],u=async m=>{try{const p=await T.pageAct(n,{tool:m.tool,args:m.args});r(p.approvalId?{text:"Waiting for your approval."}:{text:m.done,...m.undo?{undo:m.undo}:{}})}catch(p){r({text:p instanceof Error&&p.message?`That did not work: ${p.message}`:"That did not work."})}},h=async m=>{try{await T.pageAct(n,{tool:m.tool,args:m.args}),r(null)}catch{r({text:"Could not take it back."})}};if(s)return t.jsxs("li",{className:"ed-story ed-story-gone",role:"status",children:[t.jsx("span",{children:s.text}),s.undo?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"pl-story-gone-sep","aria-hidden":"true",children:"·"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>void h(s.undo),children:s.undo.label})]}):null]});const f=[e.topicName,i?e.more>0?`${i} and ${e.more} more`:i:""].filter(Boolean).join(" · ");return t.jsxs("li",{className:"ed-story",children:[c.length>0?t.jsx("span",{className:"ed-more-btn",children:t.jsx(rs,{label:`Ways out for ${e.title}`,items:oH(c,m=>m.confirm?o(m):void u(m)),sheet:{title:e.title,sub:f},stacked:!0})}):null,l?t.jsx(Vt,{title:l.confirm??l.label,onClose:()=>o(null),foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>o(null),children:"Cancel"}),t.jsx(A,{variant:"accent",onClick:()=>{const m=l;o(null),u(m)},children:l.label})]})}):null,t.jsx($l,{src:a.logo?Al(n,a.logo):null,label:a.name,className:"pl-logo-md"}),t.jsxs("span",{className:"ed-story-text",children:[t.jsxs("span",{className:"ed-story-title",children:[e.mark?t.jsx("span",{className:"ed-mark","data-kind":e.mark==="update"?"update":void 0,children:e.mark==="update"?"Update":"Opinion"}):null,e.title]}),e.lead?t.jsx("span",{className:"ed-story-line",children:e.lead}):null,i?t.jsxs("span",{className:"ed-story-src",children:[e.link?t.jsxs("a",{className:"wb-src-link",href:e.link.url,target:"_blank",rel:"noopener noreferrer",title:e.link.label,children:[i,t.jsx("span",{className:"wb-src-out","aria-hidden":"true",children:"↗"})]}):t.jsx("span",{children:i}),e.more>0?t.jsxs("span",{className:"ed-more",children:["and ",e.more," more"]}):null]}):null]})]})}const eC=Array.from({length:64},(e,n)=>30+Math.round(Math.abs(Math.sin(n*1.7)*Math.cos(n*.4))*70));function yp({audio:e}){const{playing:n,loading:s,failed:r,position:a,duration:i,toggle:l,seek:o,bind:c}=vP(e.fileId,e.mime,!0),[u,h]=d.useState(!1),[f,m]=d.useState(!1),p=i?Math.min(1,a/i):0;return t.jsxs("div",{children:[t.jsxs("div",{className:"ed-audio","data-testid":"edition-audio",children:[t.jsx("button",{type:"button",className:"ed-play ui-icon-btn","aria-label":n?"Pause the recording":"Play the recording","aria-pressed":n,disabled:s,onClick:()=>void l(),children:t.jsx(se,{name:n?"pause":"play",size:14})}),t.jsxs("span",{className:"ed-seek",children:[t.jsx("span",{className:"ed-wave","aria-hidden":"true",children:eC.map((x,g)=>t.jsx("i",{style:{"--h":`${x}%`},"data-on":g<Math.round(p*eC.length)?"true":void 0},g))}),t.jsx("input",{type:"range","aria-label":"Playback position","aria-valuetext":`${co(a)} of ${co(i)}`,min:0,max:i??0,step:.1,value:a,disabled:!i,onChange:x=>o(Number(x.target.value))})]}),t.jsx("span",{className:"ed-dur",role:"status",children:r?"Could not play":s?"Loading…":`${co(a)} / ${co(i)}`}),t.jsx("button",{className:"ui-icon-btn",type:"button","aria-label":"Download as MP3",title:"Download MP3",disabled:u,onClick:()=>{h(!0),m(!1),rH(e).catch(()=>m(!0)).finally(()=>h(!1))},children:t.jsx(se,{name:"download",size:16})}),t.jsx("audio",{...c})]}),u?t.jsx("p",{className:"muted",role:"status",children:"Preparing MP3…"}):null,f?t.jsxs("p",{role:"alert",children:["Could not create MP3. ",t.jsx("a",{href:ca(e.fileId),download:e.filename??"recording.ogg",children:"Download the original audio"}),"."]}):null]})}function wP({link:e}){const[n,s]=d.useState(null);return d.useEffect(()=>{let r=!0;s(null);let a=0,i;const l=async()=>{try{const o=await T.reportAudio(e);if(!r)return;s(o.audio),!o.audio&&++a<24&&(i=setTimeout(()=>void l(),5e3))}catch{}};return l(),()=>{r=!1,i&&clearTimeout(i)}},[e]),n?t.jsx(yp,{audio:n},n.fileId):null}function uH({id:e}){const[n,s]=d.useState(null);return d.useEffect(()=>{let r=!0;return s(null),T.libraryEntry(e).then(({entry:a})=>{r&&a.mime.startsWith("audio/")&&s({fileId:a.id,mime:a.mime,filename:a.filename,sizeBytes:a.sizeBytes})}).catch(()=>{}),()=>{r=!1}},[e]),n?t.jsx(yp,{audio:n},n.fileId):null}function bP(e,n){return typeof n=="string"&&n.length<=512&&n.startsWith(`#/p/${e}/`)&&/^[a-z][a-z0-9-]{0,39}(?:\?[A-Za-z0-9_.~%=&+-]{0,400})?$/.test(n.slice(`#/p/${e}/`.length))}function kP({edition:e,audio:n,plugin:s,legacyFoot:r=!1}){const a=e.foot??(r?`${e.next?`Next edition at ${e.next}. `:""}Tell me what to leave out, or mute anything from News.`:""),i=[...e.notes,...a?[a]:[]];return t.jsxs("div",{className:"ed","data-testid":"edition-card",children:[t.jsxs("div",{className:"ed-head",children:[t.jsx("span",{className:"ed-kicker",children:e.name}),e.when?t.jsx("span",{className:"ed-when",children:e.when}):null]}),n,e.lede?t.jsx("p",{className:"ed-lede",children:e.lede}):null,e.groups.map((l,o)=>t.jsxs("section",{className:"ed-group",children:[l.topic?t.jsx("h4",{className:"ed-topic",children:l.topic}):null,t.jsx("ul",{className:"ed-list",children:l.stories.map((c,u)=>t.jsx(cH,{s:c,plugin:s},u))})]},o)),i.length>0?t.jsx("p",{className:"ed-foot",children:i.join(" ")}):null]})}function dH({editionId:e,text:n,audio:s,link:r}){const[a,i]=d.useState(void 0),[l,o]=d.useState(!1);d.useEffect(()=>{let u=!0;return i(void 0),T.pageQuery(JS,aH,{id:e}).then(h=>{u&&i(yP(h.data))}).catch(()=>{u&&i(null)}),()=>{u=!1}},[e]);const c=a&&!l;return t.jsxs("div",{className:"wb-report ed-report","data-testid":"mission-report",children:[c?t.jsx("div",{className:"ed-bubble",children:t.jsx(kP,{edition:a,plugin:JS,legacyFoot:!0,audio:s?t.jsx(yp,{audio:s}):null})}):a===void 0?t.jsx("div",{className:"ed-bubble","aria-busy":"true",children:t.jsx("div",{className:"ed ed-loading"})}):t.jsxs(t.Fragment,{children:[s?t.jsx(jp,{artifactId:s.fileId,name:s.filename??"Voice note",mime:s.mime,sizeBytes:s.sizeBytes}):null,n]}),t.jsxs("div",{className:"ed-actions",children:[a?t.jsx(A,{size:"sm",variant:"ghost","aria-pressed":l,onClick:()=>o(!l),children:l?"Show as card":"Show as text"}):null,t.jsx(it,{className:"wb-report-link",size:"sm",href:r.route,children:r.label})]})]})}function hH(e,n){if(!n||typeof n!="object"||Array.isArray(n))return[];const s=n.attachments;if(!Array.isArray(s))return[];const r=[];for(const a of s.slice(0,4)){const i=Vu(a);!i||i.kind!=="audio"||Object.keys(i).length!==2||(typeof i.artifact=="string"&&/^[A-Za-z0-9_-]{1,64}$/.test(i.artifact)?r.push({artifact:i.artifact}):bP(e,i.report)&&r.push({report:i.report}))}return r}function wp({image:e,plugin:n,compact:s=!1}){const[r,a]=d.useState(null),i=e?Al(n,e.key,768):null;if(!i||r===i||!e)return null;const l=/^https?:\/\//i.test(e.url)?e.url:void 0;return t.jsxs("figure",{className:"pl-story-image","data-compact":s||void 0,children:[t.jsx("img",{src:i,alt:s?"":e.caption||`Image supplied by ${e.outlet}`,loading:"lazy",decoding:"async",onError:()=>a(i)}),s?null:t.jsxs("figcaption",{children:[e.caption?t.jsxs("span",{children:[e.caption," "]}):null,[e.credit,e.outlet].filter(Boolean).join(" · "),l?t.jsxs(t.Fragment,{children:[" · ",t.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",children:"Source ↗"})]}):null]})]})}function Nd({name:e,mime:n,sizeBytes:s,thumbnail:r,state:a,error:i,onOpen:l,onRemove:o,size:c="md",detail:u}){const h=Mb(n,e),f=u??[il[h],qn(s)].filter(Boolean).join(" · "),m=t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"wb-file-visual","data-family":h,children:r?t.jsx("img",{src:r,alt:""}):t.jsx(Ob,{family:h})}),t.jsxs("span",{className:"wb-file-text",children:[t.jsx("span",{className:"wb-file-name",title:e,children:e}),t.jsx("span",{className:"wb-file-meta",children:a==="uploading"?"Uploading…":a==="failed"?"Upload failed":f})]})]});return t.jsxs("span",{className:"wb-file","data-size":c,"data-state":a,"data-thumb":r?"true":void 0,title:a==="failed"?i:void 0,children:[l?t.jsx("button",{type:"button",className:"wb-file-open",onClick:l,"aria-label":`Open ${e}`,children:m}):t.jsx("span",{className:"wb-file-open",children:m}),o?t.jsx("button",{type:"button",className:"wb-file-x","aria-label":`Remove ${e}`,onClick:o,children:t.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",children:t.jsx("path",{d:"M2.5 2.5l5 5M7.5 2.5l-5 5"})})}):null]})}function Ob({family:e}){const n={width:20,height:20,viewBox:"0 0 20 20","aria-hidden":!0,fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"image":return t.jsxs("svg",{...n,children:[t.jsx("rect",{x:"3",y:"4",width:"14",height:"12",rx:"2"}),t.jsx("circle",{cx:"7.5",cy:"8.5",r:"1.4"}),t.jsx("path",{d:"M17 13l-3.6-3.6a1 1 0 0 0-1.4 0L6 15.5"})]});case"pdf":return t.jsxs("svg",{...n,children:[t.jsx("path",{d:"M6 2.5h5.5L16 7v9.5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-13a1 1 0 0 1 1-1z"}),t.jsx("path",{d:"M11.5 2.5V7H16"}),t.jsx("path",{d:"M7.5 13.5h5M7.5 11h5"})]});case"table":return t.jsxs("svg",{...n,children:[t.jsx("rect",{x:"3",y:"4",width:"14",height:"12",rx:"1.5"}),t.jsx("path",{d:"M3 8.5h14M3 12.5h14M8 4v12M13 4v12"})]});case"text":return t.jsxs("svg",{...n,children:[t.jsx("path",{d:"M6 2.5h5.5L16 7v9.5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-13a1 1 0 0 1 1-1z"}),t.jsx("path",{d:"M11.5 2.5V7H16"}),t.jsx("path",{d:"M7.5 10.5h5M7.5 13.5h3.5"})]});case"code":return t.jsx("svg",{...n,children:t.jsx("path",{d:"M7 6l-4 4 4 4M13 6l4 4-4 4M11.5 4l-3 12"})});case"audio":return t.jsx("svg",{...n,children:t.jsx("path",{d:"M4 8v4M7.5 5.5v9M11 3.5v13M14.5 6.5v7M18 8.5v3"})});case"video":return t.jsxs("svg",{...n,children:[t.jsx("rect",{x:"3",y:"5",width:"10",height:"10",rx:"1.5"}),t.jsx("path",{d:"M13 9l4-2.5v7L13 11"})]});case"archive":return t.jsxs("svg",{...n,children:[t.jsx("rect",{x:"4",y:"3",width:"12",height:"14",rx:"1.5"}),t.jsx("path",{d:"M10 3v3M10 8v2M10 12v2M8.5 14h3"})]});default:return t.jsxs("svg",{...n,children:[t.jsx("path",{d:"M6 2.5h5.5L16 7v9.5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-13a1 1 0 0 1 1-1z"}),t.jsx("path",{d:"M11.5 2.5V7H16"})]})}}const fH=6e5,mH=5e3,pH=32,gH=256*1024,xH=new Set(["script","style","iframe","frame","frameset","object","embed","applet","form","input","button","select","option","textarea","noscript","template","svg","math","head","title","meta","link","base","audio","video","source","track","canvas","map","area","dialog","portal","slot","xml"]),vH=new Set(["p","div","span","br","hr","b","strong","i","em","u","s","strike","del","ins","mark","small","big","sub","sup","code","pre","kbd","tt","samp","q","cite","abbr","blockquote","center","font","h1","h2","h3","h4","h5","h6","ul","ol","li","dl","dt","dd","table","thead","tbody","tfoot","tr","td","th","caption","colgroup","col","wbr","address","section","article","header","footer","main","aside","figure","figcaption","a","img"]),jH={center:"div",font:"span",big:"span",tt:"code",strike:"s",section:"div",article:"div",header:"div",footer:"div",main:"div",aside:"div",address:"div"},yH=new Set(["br","hr","wbr","col","img"]),wH=new Set(["color","background-color","font-weight","font-style","font-size","font-family","font-variant","text-decoration","text-decoration-line","text-align","text-transform","text-indent","vertical-align","line-height","letter-spacing","word-spacing","white-space","word-break","overflow-wrap","padding","padding-top","padding-right","padding-bottom","padding-left","margin","margin-top","margin-right","margin-bottom","margin-left","border","border-top","border-right","border-bottom","border-left","border-color","border-style","border-width","border-radius","border-collapse","border-spacing","width","max-width","min-width","height","max-height","min-height","display","list-style-type","table-layout","float","clear"]),bH=new Set(["block","inline","inline-block","none","table","table-row","table-cell","list-item","flex"]),kH=/url\s*\(|expression|javascript:|vbscript:|@import|\\|behavior|binding|attr\s*\(|var\s*\(/i,NH=["gmail_quote","yahoo_quoted","protonmail_quote","moz-cite-prefix","reply-head"],SH=/^data:image\/(png|gif|jpeg|jpg|webp);base64,[a-z0-9+/=\s]+$/i;function CH(e){return e.replace(/-([a-z])/g,(n,s)=>s.toUpperCase())}function tC(e){if(e===null)return null;const n=e.trim();return/^\d{1,4}$/.test(n)?`${n}px`:/^\d{1,3}%$/.test(n)?Number.parseInt(n,10)>100?"100%":n:null}function nC(e){if(e===null)return null;const n=e.trim();return/^#[0-9a-f]{3,8}$/i.test(n)||/^[a-z]{3,20}$/i.test(n)?n:null}const EH=/(^|[\s(,])-\s*(\d|\.\d)/,AH=new Set(["width","max-width","min-width","height","max-height","min-height"]);function $H(e){if(/v(w|h|min|max)\b|calc\s*\(|fixed|fit-content\s*\(/i.test(e))return null;const n=/^(\d+(?:\.\d+)?)%$/.exec(e);return n&&Number(n[1])>100?"100%":e}function TH(e){const n={},s=e.style;if(!s)return n;for(let r=0;r<s.length;r+=1){const a=s.item(r).toLowerCase();if(!wH.has(a))continue;const i=s.getPropertyValue(a).trim();if(i===""||i.length>200||kH.test(i)||a==="display"&&!bH.has(i.toLowerCase())||EH.test(i)||/calc\s*\(/i.test(i))continue;const l=AH.has(a)?$H(i):i;l!==null&&(n[CH(a)]=l)}return n}function sC(e,n){const s=r=>{if(r==null)return!1;const a=Number.parseFloat(r);return Number.isFinite(a)&&a<=2&&!/%/.test(r)};return s(e.getAttribute("width"))||s(e.getAttribute("height"))||s(n.width)||s(n.height)||(n.display??"").toLowerCase()==="none"||/visibility\s*:\s*hidden/i.test(e.getAttribute("style")??"")}function NP(e){if(e===null)return null;const n=e.trim();if(/^https?:\/\//i.test(n))try{const s=new URL(n);if(s.protocol==="http:"||s.protocol==="https:")return{href:s.toString(),outside:!0}}catch{return null}return/^mailto:[^\s<>"]+$/i.test(n)?{href:n,outside:!1}:null}function rC(e,n){if(n==="blockquote"&&(e.getAttribute("type")??"").toLowerCase()==="cite")return!0;const s=(e.getAttribute("class")??"").split(/\s+/);return NH.some(r=>s.includes(r))?!0:(e.getAttribute("id")??"")==="divRplyFwdMsg"}function aC(e){return(e.getAttribute("class")??"").split(/\s+/).includes("reply-head")||(e.getAttribute("id")??"")==="divRplyFwdMsg"}function RH(e){if(typeof e!="string"||e.trim()===""||e.length>fH)return null;let n;try{n=new DOMParser().parseFromString(e,"text/html")}catch{return null}const s={nodes:0,remoteImages:0,pixels:0,truncated:!1},r=o=>{const c=o.textContent??"";return c.trim()===""?[]:[{t:"text",v:c}]},a=(o,c,u=!1)=>{const h=[],f=Array.from(o.childNodes);for(let m=0;m<f.length;m+=1){const p=f[m];if(p.nodeType===1&&rC(p,p.tagName.toLowerCase())&&aC(p)){const g=f.slice(m).flatMap(b=>i(b,c+1,!0));g.length>0&&h.push({t:"quote",kids:g});break}h.push(...i(p,c,u))}return h},i=(o,c,u)=>{if(o.nodeType===3){const N=o.nodeValue??"";return N===""?[]:[{t:"text",v:N}]}if(o.nodeType!==1)return[];const h=o,f=h.tagName.toLowerCase();if(xH.has(f))return[];if(s.nodes>=mH)return s.truncated=!0,[];if(c>pH)return s.truncated=!0,r(h);if(s.nodes+=1,!u&&rC(h,f)&&!aC(h)){const N=a(h,c+1,!0);return N.length>0?[{t:"quote",kids:N}]:[]}if(!vH.has(f))return a(h,c+1);const m=TH(h),p=nC(h.getAttribute("bgcolor"));if(p&&!m.backgroundColor&&(m.backgroundColor=p),f==="font"){const N=nC(h.getAttribute("color"));N&&!m.color&&(m.color=N);const w=h.getAttribute("face");w&&/^[\w\s,'"-]{1,80}$/.test(w)&&!m.fontFamily&&(m.fontFamily=w)}const x=(h.getAttribute("align")??"").toLowerCase();["left","right","center","justify"].includes(x)&&!m.textAlign&&f!=="img"&&f!=="table"&&(m.textAlign=x),f==="table"&&x==="center"&&(m.marginLeft=m.marginLeft??"auto",m.marginRight=m.marginRight??"auto");const g=(h.getAttribute("valign")??"").toLowerCase();if(["top","middle","bottom","baseline"].includes(g)&&!m.verticalAlign&&(m.verticalAlign=g),["table","td","th","img","col"].includes(f)){const N=tC(h.getAttribute("width")),w=tC(h.getAttribute("height"));N&&!m.width&&(m.width=N),w&&!m.height&&f!=="table"&&(m.height=w)}const b=Object.keys(m).length>0?{style:m}:{};if(f==="img"){const N=(h.getAttribute("src")??"").trim(),w=(h.getAttribute("alt")??"").slice(0,200);return/^https?:\/\//i.test(N)?sC(h,m)?(s.pixels+=1,[]):(s.remoteImages+=1,[{t:"img",kind:"remote",src:N,alt:w,...b}]):/^cid:/i.test(N)?[{t:"img",kind:"cid",src:N.slice(4).replace(/^<|>$/g,""),alt:w,...b}]:SH.test(N)&&N.length<=gH?sC(h,m)?(s.pixels+=1,[]):[{t:"img",kind:"data",src:N,alt:w,...b}]:w?[{t:"text",v:w}]:[]}const j=yH.has(f)?[]:a(h,c+1);if(f==="a"){const N=NP(h.getAttribute("href"));return N?[{t:"link",href:N.href,outside:N.outside,...b,kids:j}]:j.length>0?[{t:"el",tag:"span",...b,kids:j}]:[]}const v={};if(f==="td"||f==="th"){const N=Number.parseInt(h.getAttribute("colspan")??"",10),w=Number.parseInt(h.getAttribute("rowspan")??"",10);N>1&&N<=100&&(v.colSpan=N),w>1&&w<=100&&(v.rowSpan=w)}if(f==="ol"){const N=Number.parseInt(h.getAttribute("start")??"",10);Number.isFinite(N)&&(v.start=N)}if(f==="table"){const N=Number.parseInt(h.getAttribute("cellpadding")??"",10),w=Number.parseInt(h.getAttribute("cellspacing")??"",10);Number.isFinite(N)&&N>=0&&N<=40&&(v.cellPadding=N),Number.isFinite(w)&&w>=0&&w<=40&&(v.cellSpacing=w)}const y=h.getAttribute("title");y&&(v.title=y.slice(0,200));const k=(h.getAttribute("dir")??"").toLowerCase();return(k==="rtl"||k==="ltr"||k==="auto")&&(v.dir=k),[{t:"el",tag:jH[f]??f,...b,...Object.keys(v).length>0?{attrs:v}:{},kids:j}]};return{nodes:a(n.body,0),remoteImages:s.remoteImages,pixels:s.pixels,truncated:s.truncated}}const IH=/(wrote|a écrit|schrieb|escribió|scrisse|schreef|написал)\s*:\s*$/i,PH=/^(-{2,}\s*(original message|forwarded message|message d'origine)\s*-{2,}|_{10,})\s*$/i,iC=2e5;function MH(e){const n=e.split(/\r?\n/),s=[];let r=[];const a=()=>{r.length>0&&s.push({t:"text",v:r.join(`
|
|
99
|
+
`)}),r=[]},i=()=>{let l=r.length-1;for(;l>=0&&r[l].trim()==="";)l-=1;if(l<0||!IH.test(r[l]))return null;const o=r[l].trim();return r=r.slice(0,l),o};for(let l=0;l<n.length;l+=1){const o=n[l];if(PH.test(o.trim())){const c=i();return a(),s.push({t:"quote",head:c,inner:n.slice(l+1).join(`
|
|
100
|
+
`)}),s}if(o.startsWith(">")){const c=[];let u=l;for(;u<n.length&&(n[u].startsWith(">")||n[u].trim()===""&&(n[u+1]??"").startsWith(">"));)c.push(n[u].replace(/^> ?/,"")),u+=1;const h=i();a(),s.push({t:"quote",head:h,inner:c.join(`
|
|
101
|
+
`)}),l=u-1;continue}r.push(o)}return a(),s}const OH=/\bhttps?:\/\/[^\s<>"'`]+/gi;function DH(e){var r,a;const n=[];let s=0;for(const i of e.matchAll(OH)){let l=i[0];for(;/[.,;:!?)\]}'"]$/.test(l)&&!(l.endsWith(")")&&(((r=l.match(/\(/g))==null?void 0:r.length)??0)>=(((a=l.match(/\)/g))==null?void 0:a.length)??0));)l=l.slice(0,-1);const o=i.index??0,c=NP(l);!c||!c.outside||(o>s&&n.push({t:"text",v:e.slice(s,o)}),n.push({t:"link",href:c.href,v:l}),s=o+l.length)}return s<e.length&&n.push({t:"text",v:e.slice(s)}),n}const SP="buddi.mail.images.v1";function CP(){try{const e=window.localStorage.getItem(SP),n=e?JSON.parse(e):[];return new Set(Array.isArray(n)?n.filter(s=>typeof s=="string"):[])}catch{return new Set}}function lC(e,n){const s=e.trim().toLowerCase();if(s!=="")try{const r=CP();n?r.add(s):r.delete(s),window.localStorage.setItem(SP,JSON.stringify([...r].slice(-500)))}catch{}}const LH=8;function EP({children:e,head:n}){const[s,r]=d.useState(!1);return t.jsxs("div",{className:"pl-mail-quote","data-open":s?"true":void 0,children:[t.jsxs("button",{type:"button",className:"pl-mail-quote-toggle","aria-expanded":s,title:s?"Hide the earlier message":"Show the earlier message",onClick:()=>r(a=>!a),children:[t.jsx("span",{"aria-hidden":"true",children:"···"}),t.jsx("span",{className:"pl-mail-quote-words",children:s?"Hide earlier message":"earlier message"})]}),s?t.jsxs("div",{className:"pl-mail-quote-body",children:[n?t.jsx("p",{className:"pl-mail-quote-head",children:n}):null,e]}):null]})}function ef(e,n,s=""){return e.map((r,a)=>FH(r,n,`${s}${a}`))}function FH(e,n,s){switch(e.t){case"text":return e.v;case"quote":return t.jsx(EP,{children:ef(e.kids,n,`${s}.`)},s);case"link":return t.jsx("a",{href:e.href,style:e.style,...e.outside?{target:"_blank",rel:"noopener noreferrer"}:{},children:ef(e.kids,n,`${s}.`)},s);case"img":{const r=e.style;if(e.kind==="remote")return n.showImages?t.jsx("img",{src:e.src,alt:e.alt,style:r,referrerPolicy:"no-referrer",loading:"lazy"},s):e.alt?t.jsx("span",{className:"pl-mail-img-held",children:e.alt},s):null;if(e.kind==="cid"){const a=n.cid(e.src);return a?t.jsx("img",{src:a,alt:e.alt,style:r,loading:"lazy"},s):t.jsx("span",{className:"pl-mail-img-held",children:e.alt||"Picture in an attachment"},s)}return t.jsx("img",{src:e.src,alt:e.alt,style:r},s)}case"el":return d.createElement(e.tag,{key:s,...e.style?{style:e.style}:{},...e.attrs??{}},...e.kids.length>0?ef(e.kids,n,`${s}.`):[])}}function AP({text:e,depth:n=0}){const s=n>=LH?[{t:"text",v:e}]:MH(e);return t.jsx(t.Fragment,{children:s.map((r,a)=>r.t==="text"?t.jsx("div",{className:"pl-mail-text",children:DH(r.v).map((i,l)=>i.t==="link"?t.jsx("a",{href:i.href,target:"_blank",rel:"noopener noreferrer",children:i.v},l):t.jsx("span",{children:i.v},l))},a):t.jsx(EP,{head:r.head,children:t.jsx(AP,{text:r.inner,depth:n+1})},a))})}function _H({html:e,text:n,sender:s,attachments:r,cidSrc:a}){const i=d.useMemo(()=>e?RH(e):null,[e]),l=s.trim().toLowerCase(),o=d.useMemo(()=>CP().has(l),[l]),[c,u]=d.useState(null),h=c!==null&&c.who===l?c.show:o,f=p=>u({who:l,show:p}),m=p=>{const x=p.trim().replace(/^<|>$/g,"").toLowerCase(),g=(r??[]).find(b=>typeof b.contentId=="string"&&b.contentId.trim().replace(/^<|>$/g,"").toLowerCase()===x);return g!=null&&g.artifactId?a(g.artifactId):null};if(i&&i.nodes.length>0)return t.jsxs("div",{className:"pl-mail-body",children:[i.remoteImages>0?t.jsx("div",{className:"pl-mail-images",role:"status",children:h?t.jsxs(t.Fragment,{children:[t.jsxs("span",{children:["Pictures from ",s," are shown."]}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>{lC(s,!1),f(!1)},children:"Hide pictures from this sender"})]}):t.jsxs(t.Fragment,{children:[t.jsxs("span",{children:[i.remoteImages===1?"One picture is":`${i.remoteImages} pictures are`," held back, so the sender cannot see you opened this."]}),t.jsx(A,{size:"sm",onClick:()=>{lC(s,!0),f(!0)},children:"Show images"})]})}):null,t.jsx("div",{className:"pl-mail-html",children:ef(i.nodes,{showImages:h,cid:m})}),i.truncated?t.jsx("p",{className:"pl-mail-note",children:"Part of this message was too long or too deeply nested to show."}):null]});if(typeof n=="string"&&n.trim()!==""){const p=n.length>iC;return t.jsxs("div",{className:"pl-mail-body",children:[t.jsx(AP,{text:p?n.slice(0,iC):n}),p?t.jsx("p",{className:"pl-mail-note",children:"The rest of this message is too long to show here; it is in your mailbox."}):null]})}return null}const zH=["mail","money","calendar","people","file","chart","bell","plug","key","globe","sun","partly-cloudy","cloud","rain","drizzle","snow","storm","fog","wind","moon-clear","check","clock","moon-cloud"];function Re(e,n){if(n===""||n==="$")return e;let s=e;for(const r of n.split(".")){const a=/^([^[\]]*)((?:\[\d+\])*)$/.exec(r);if(!a)return;const[,i="",l=""]=a;if(i!==""){if(s===null||typeof s!="object")return;s=s[i]}for(const o of l.match(/\d+/g)??[]){if(!Array.isArray(s))return;s=s[Number(o)]}if(s===void 0)return}return s}function He(e,n){if(n)return"const"in n?n.const:Re(e,n.path)}function zs(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){const n=Number(e);return Number.isFinite(n)?n:null}return null}function Dt(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):null}function Ta(e){return Array.isArray(e)?e:[]}function UH(e,n){const s=Ta(Re(e,n.points)).map(a=>{const i=zs(Re(a,n.y)),l=Dt(Re(a,n.x));return i===null||l===null?null:{x:l,y:i}}).filter(a=>a!==null),r=(n.referenceLines??[]).map(a=>{const i=zs(He(e,a.value));return i===null?null:{value:i,label:a.label,tone:a.tone??"neutral"}}).filter(a=>a!==null);return{points:s,unit:n.unit??"number",currency:Dt(He(e,n.currency)),label:Dt(He(e,n.label)),referenceLines:r,mark:n.mark??null,shadeBelow:zs(He(e,n.shadeBelow)),events:BH(e,n)}}function BH(e,n){const s=n.events;if(!s)return[];const r=[],a=(i,l)=>{const o=Dt(Re(i,s.label));if(o===null)return;const c=Dt(Re(i,s.at))??l;c!==null&&r.push({at:c,label:o,amount:s.amount?zs(Re(i,s.amount)):null})};if(s.parent){for(const i of Ta(Re(e,n.points))){const l=Dt(Re(i,n.x));for(const o of Ta(Re(i,s.parent)))a(o,l)}return r}for(const i of Ta(Re(e,s.path??n.points)))a(i,null);return r}function WH(e,n){const s=(n.columns??[]).map(o=>({key:o.key,label:o.label,type:o.type??"text"})),r=o=>(n.columns??[]).map(c=>{const u=Re(o,c.key);let h=null;if(c.bar){const f=zs(He(o,c.bar.max))??zs(He(e,c.bar.max)),m=zs(u);if(f!==null&&f>0&&m!==null){const p=Math.max(0,Math.min(1,m/f));h={fraction:p,tone:KH(p*100,c.bar.thresholds)}}}return{value:u,type:c.type??"text",currency:Dt(He(o,c.currency))??Dt(He(e,c.currency)),bar:h}}),a=Ta(Re(e,n.rows)),i=n.groupBy?HH(a,n.groupBy,r):[{label:null,rows:a.map(r)}],l=(n.summary??[]).map(o=>({label:o.label,value:He(e,o.value),unit:o.unit??"text",currency:Dt(He(e,o.currency)),tone:o.tone??"neutral"}));return{columns:s,groups:i,summary:l,empty:n.empty??"Nothing to show."}}function HH(e,n,s){const r=new Map;for(const a of e){const i=String(Re(a,n.key)??""),l=r.get(i);l?l.push(a):r.set(i,[a])}return[...r.entries()].map(([a,i])=>{var l;return{label:((l=n.labels)==null?void 0:l[a])??a,rows:i.map(s)}})}function KH(e,n){var r;return!n||n.length===0?"neutral":((r=[...n].sort((a,i)=>i.atLeast-a.atLeast).find(a=>e>=a.atLeast))==null?void 0:r.tone)??"neutral"}function VH(e,n){return{bars:Ta(Re(e,n.bars)).map(r=>{const a=zs(Re(r,n.value)),i=Dt(Re(r,n.category));return a===null||i===null?null:{category:i,value:a}}).filter(r=>r!==null),unit:n.unit??"number",currency:Dt(He(e,n.currency))}}function GH(e,n){if(n.pairs)return{pairs:n.pairs.map(r=>({label:r.label,value:He(e,r.value),unit:r.unit??"text",currency:Dt(He(e,r.currency)),tone:r.tone??"neutral"}))};const s=Re(e,n.from??"$");return s===null||typeof s!="object"||Array.isArray(s)?{pairs:[]}:{pairs:Object.entries(s).map(([r,a])=>({label:rn(r),value:a,unit:"text",currency:null,tone:"neutral"}))}}const qH=new Set(["good","warning","critical","neutral","accent"]),YH=new Set(zH);function jj(e){return typeof e=="string"&&YH.has(e)?e:null}function Db(e,n,s=""){const r=n.empty??"Nothing to show.",a=s.split(".")[0]??"";if(n.notice){const l=Dt(Re(e,n.notice.text));if(l!==null&&l.trim()!==""){const o=n.notice.link&&a!==""?{plugin:a,page:n.notice.link.page}:null;return{tiles:[{icon:jj(n.notice.icon??"bell"),value:"",label:l.trim(),lines:[],tone:"neutral",link:o}],notice:!0,empty:r}}}return{tiles:Ta(Re(e,n.items)).map(l=>{const o=Dt(Re(l,n.value))??"",c=Dt(Re(l,n.label))??"";if(o===""&&c==="")return null;const u=n.tone?Dt(Re(l,n.tone)):null;return{icon:jj(He(l,n.icon)),value:o,label:c,lines:(n.lines??[]).slice(0,2).map(h=>Dt(Re(l,h))).filter(h=>h!==null&&h.trim()!==""),tone:u!==null&&qH.has(u)?u:"neutral",link:null}}).filter(l=>l!==null),notice:!1,empty:r}}function QH(e,n){const s=Dt(He(e,n.kind)),r=s==="image"||s==="pdf"?s:"text",a=n.src?Dt(Re(e,n.src)):null;return{kind:r,text:n.text?Dt(Re(e,n.text)):null,src:a&&TP(a)?a:null,title:Dt(He(e,n.title)),metadata:(n.metadata??[]).map(i=>({label:i.label,value:He(e,i.value),unit:i.unit??"text"}))}}function JH(e,n){const s=n.diff?Re(e,n.diff):void 0;return{diff:typeof s=="string"&&s.trim()!==""?s:null,title:Dt(He(e,n.title)),metadata:(n.metadata??[]).map(r=>({label:r.label,value:He(e,r.value),unit:r.unit??"text"}))}}function XH(e,n){const s=n.output?Re(e,n.output):void 0,r=l=>{const o=l?Re(e,l):void 0;return typeof o=="number"&&Number.isInteger(o)?o:null},a=r(n.omittedBytes),i=n.elapsedMs?Re(e,n.elapsedMs):void 0;return{command:Dt(He(e,n.command)),output:typeof s=="string"?s:null,exitCode:r(n.exitCode),elapsedMs:typeof i=="number"&&Number.isFinite(i)&&i>=0?i:null,omittedBytes:a!==null&&a>0?a:null,metadata:(n.metadata??[]).map(l=>({label:l.label,value:He(e,l.value),unit:l.unit??"text"}))}}const ZH=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function $P(e){const n=e!==null&&typeof e=="object"&&!Array.isArray(e)?e.artifactId??e.id:e;return typeof n=="string"&&ZH.test(n)?n.toLowerCase():null}function eK(e,n){return{artifactId:n.src?$P(Re(e,n.src)):null,title:Dt(He(e,n.title)),caption:Dt(He(e,n.caption)),...n.captionLabel?{captionLabel:Dt(He(e,n.captionLabel))}:{}}}function oC(e){if(!TP(e))return null;let n;try{n=new URL(e,"file:///").pathname}catch{return null}const s=/^\/preview\/([A-Za-z0-9][A-Za-z0-9_.-]*)\/([A-Za-z0-9][A-Za-z0-9_.-]*)\/?$/.exec(n);return s?{plugin:s[1],name:s[2]}:null}function tK(e,n){const s=n.src?Dt(Re(e,n.src)):null,r=n.port?Re(e,n.port):null,a=n.awaiting?Dt(Re(e,n.awaiting)):null;return{target:s?oC(s):null,title:Dt(He(e,n.title)),output:n.output?Dt(Re(e,n.output)):null,port:typeof r=="number"&&Number.isInteger(r)&&r>0&&r<=65535?r:null,awaiting:a?oC(a):null,reloadsItself:n.reloadsItself?Re(e,n.reloadsItself)===!0:!1,ports:n.ports?nK(Re(e,n.ports)):[]}}function nK(e){const n=Ta(e).filter(s=>typeof s=="number"&&Number.isInteger(s)&&s>0&&s<=65535);return[...new Set(n)].sort((s,r)=>s-r)}function TP(e){return e.startsWith("/")&&!e.startsWith("//")}function rn(e){const n=e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").trim().toLowerCase();return n.charAt(0).toUpperCase()+n.slice(1)}function RP(e){return e.split(".")[0]??""}function sK(e,n,s){const r=RP(s);return n.rows!==void 0?{plugin:r,rows:Ta(Re(e,n.rows)),value:e}:{plugin:r,value:e}}function rK(e,n,s){const r={};for(const[a,i]of Object.entries(n.params??{})){const l=Re(e,i);(typeof l=="string"||typeof l=="number"||typeof l=="boolean")&&(r[a]=String(l))}return{plugin:RP(s),query:n.query,params:r,body:Array.isArray(n.body)?n.body:[],value:e}}function IP(e,n){const s=e.map??{};switch(e.renderer){case"timeseries":return{renderer:"timeseries",props:UH(n,s)};case"table":return{renderer:"table",props:WH(n,s)};case"bars":return{renderer:"bars",props:VH(n,s)};case"keyvalue":return{renderer:"keyvalue",props:GH(n,s)};case"tiles":return{renderer:"tiles",props:Db(n,s,e.tool)};case"audio":return{renderer:"audio",props:{value:n}};case"story":return{renderer:"story",props:sK(n,s,e.tool)};case"query":return{renderer:"query",props:rK(n,s,e.tool)};case"document":return{renderer:"document",props:QH(n,s)};case"diff":return{renderer:"diff",props:JH(n,s)};case"terminal":return{renderer:"terminal",props:XH(n,s)};case"image":return{renderer:"image",props:eK(n,s)};case"preview":return{renderer:"preview",props:tK(n,s)};default:return{renderer:"structured",props:{value:n}}}}const cC={mail:"mail",money:"money",calendar:"calendar",people:"agents",file:"files",chart:"chart",bell:"bell",plug:"plug",key:"key",globe:"globe",sun:"sun","partly-cloudy":"partly-cloudy",cloud:"cloud",rain:"rain",drizzle:"drizzle",snow:"snow",storm:"storm",fog:"fog",wind:"wind","moon-clear":"moon-clear","moon-cloud":"moon-cloud",check:"check",clock:"clock"};function dc(e){return(e&&Object.prototype.hasOwnProperty.call(cC,e)?cC[e]:void 0)??"dot"}let tf=null;typeof window<"u"&&window.addEventListener(Vf,()=>{tf=null});function aK(){return tf??(tf=Promise.resolve().then(()=>T.pages()).then(e=>Array.isArray(e==null?void 0:e.pages)?e.pages:[]).catch(()=>(tf=null,[]))),tf}function Lb(e,n,s){return s==="settings"?Dr(e,n):Or(e,n)}function iK(e){const[n,s]=d.useState(null),r=e==null?void 0:e.plugin,a=e==null?void 0:e.page;return d.useEffect(()=>{if(!r||!a)return;let i=!1;return aK().then(l=>{const o=l.find(c=>c.plugin===r&&c.id===a);i||s(o?{href:Lb(r,a,o.place),label:o.place==="settings"?`Settings → ${o.title}`:o.title}:null)}),()=>{i=!0}},[r,a]),n}const yi="••••",PP=new WeakMap;function hi(e){return e===null||typeof e!="object"?e:PP.get(e)??e}function lK(e){const n=[];for(const s of e.split(".")){const r=/^([^[\]]*)((?:\[\])*)$/.exec(s);if(r){r[1]&&n.push({key:r[1]});for(let a=0;a<(r[2]??"").length/2;a++)n.push({each:!0})}}return n}function uC(e,n){return PP.set(e,hi(n)),e}function yj(e,[n,...s]){if(e==null)return e;if(n===void 0)return yi;if("each"in n)return Array.isArray(e)?uC(e.map(a=>yj(a,s)),e):e;if(typeof e!="object"||Array.isArray(e)||!Object.prototype.hasOwnProperty.call(e,n.key))return e;const r=e;return uC({...r,[n.key]:yj(r[n.key],s)},r)}function oK(e,n){if(!n||n.length===0)return e;let s=e;for(const r of n)s=yj(s,lK(r));return s}function MP(){return t.jsx("span",{className:"pp-masked",role:"img","aria-label":"hidden",children:[...yi].map((e,n)=>t.jsx("span",{className:"pp-mask-dot",children:e},n))})}function Fb({shown:e,onToggle:n,show:s="Show",hide:r="Hide",size:a}){return t.jsxs(A,{className:"pp-reveal",size:a,onClick:n,children:[t.jsx(se,{name:"eye",size:a==="sm"?14:16}),t.jsx("span",{children:e?r:s})]})}function na({text:e}){if(e==null)return null;if(!e.includes(yi))return t.jsx(t.Fragment,{children:e});const n=e.split(yi),s=[];return n.forEach((r,a)=>{r&&s.push(r),a<n.length-1&&s.push(t.jsx(MP,{},a))}),t.jsx(t.Fragment,{children:s})}function bp(e){return e===yi?!0:Array.isArray(e)?e.some(bp):!1}function OP({props:e,layout:n,selected:s,onPick:r}){return e.tiles.length===0?t.jsx("p",{className:"wb-empty",children:e.empty}):t.jsx("ul",{className:"wb-tiles","data-notice":e.notice?"true":void 0,"data-layout":n&&n!=="grid"?n:void 0,style:n==="row"?{"--tiles-n":e.tiles.length}:void 0,children:e.tiles.map((a,i)=>t.jsx(cK,{tile:a,...r?{picked:i===s,onPick:()=>r(i)}:{}},`${i}-${a.label}`))})}function cK({tile:e,picked:n,onPick:s}){const r=iK(e.link),a=[e.label,e.value,...e.lines].filter(l=>l!=="").map(l=>l.split(yi).join("hidden")).join(", "),i=t.jsxs("div",{className:"wb-tile-body","aria-hidden":"true",children:[t.jsx("span",{className:"wb-tile-icon","data-icon":e.icon??"dot",children:t.jsx(se,{name:dc(e.icon),size:22})}),e.value!==""?t.jsx("span",{className:"wb-tile-value tnum",children:t.jsx(na,{text:e.value})}):null,t.jsx("span",{className:"wb-tile-label",children:e.label}),e.lines.map((l,o)=>t.jsx("span",{className:"wb-tile-line",children:t.jsx(na,{text:l})},o))]});return s?t.jsx("li",{className:"wb-tile",children:t.jsx("button",{type:"button",className:"ui-card","data-tone":n?"accent":e.tone==="neutral"?void 0:e.tone,"data-selected":n?"true":void 0,"aria-pressed":n===!0,"aria-label":a,onClick:s,children:i})}):t.jsxs("li",{className:"wb-tile",children:[t.jsx("span",{className:"sr-only",children:a}),t.jsxs(Wr,{tone:e.tone==="neutral"?void 0:e.tone,children:[i,r?t.jsx("a",{className:"wb-tile-link",href:r.href,children:r.label}):null]})]})}function Ds({tone:e="accent",icon:n,title:s,href:r,onOpen:a,from:i,time:l,dismiss:o,extraDismiss:c,lead:u,actions:h,compact:f,kind:m,children:p}){const g=`${d.useId()}-title`,b=(v,y)=>t.jsx(A,{variant:"ghost",size:f?"sm":void 0,title:v.hint,disabled:v.disabled,onClick:v.onClick,children:v.label??y}),j=!!(o||c||u||h);return t.jsx(Wr,{as:"article",labelledBy:g,...f?{density:"compact"}:{},children:t.jsxs("div",{className:"needs-card","data-tone":e,"data-compact":f?"true":void 0,"data-kind":m,children:[t.jsx("span",{className:"needs-card-mark","aria-hidden":"true",children:n?t.jsx(se,{name:n,size:f?14:16}):t.jsx("i",{className:"needs-card-dot"})}),t.jsxs("div",{className:"needs-card-main",children:[t.jsxs("div",{className:"needs-card-head",children:[t.jsx("h3",{className:"needs-card-title",id:g,children:r||a?t.jsx("a",{href:r??"#",onClick:v=>{a&&(v.preventDefault(),a())},children:s}):s}),l?t.jsx("span",{className:"needs-card-time",children:l}):null]}),i?t.jsx("div",{className:"needs-card-from",children:i}):null,p?t.jsx("div",{className:"needs-card-body",children:p}):null,j?t.jsxs("div",{className:"needs-card-actions",children:[o||c||u?t.jsxs("div",{className:"needs-card-out",children:[o?b(o,"Not now"):null,c?b(c,"Not this again"):null,u]}):null,h?t.jsx("div",{className:"needs-card-do",children:h}):null]}):null]})]})})}function Gu({face:e,children:n}){return t.jsxs(t.Fragment,{children:[e,t.jsx("span",{className:"needs-card-from-text",children:n})]})}function uK(e){const n={};for(const s of e??[])n[s.key]=s.default;return n}function _b(e){const[n,s]=d.useState({}),r=e??[],a={...uK(r),...n};return r.length===0?{values:void 0,controls:null}:{values:a,controls:t.jsx("div",{className:"ui-choices",children:r.map(i=>t.jsx(le,{label:i.label,inline:!0,children:t.jsx("select",{value:a[i.key],onChange:l=>s(o=>({...o,[i.key]:l.target.value})),children:i.options.map(l=>t.jsx("option",{value:l,children:l},l))})},i.key))})}}function zb(e){const[n,s]=d.useState(null),[r,a]=d.useState(null),[i,l]=d.useState(null);return{busy:n,note:r,failure:i,decide:async(c,u,h,f)=>{var p,x,g,b;s(c),l(null),a(null);let m;try{const j=f?await T.decide(c,u,h,f):await T.decide(c,u,h);m={decision:u,...(p=j.execution)!=null&&p.state?{state:j.execution.state}:{},...j.execution&&"result"in j.execution?{result:j.execution.result}:{}},a(u==="reject"?`Rejected ${j.action.tool}.`:((x=j.execution)==null?void 0:x.state)==="succeeded"?`Approved and done: ${j.action.tool}.`:`Approved ${j.action.tool}: ${((g=j.execution)==null?void 0:g.state)??"no execution"}${(b=j.execution)!=null&&b.message?` (${j.execution.message})`:""}`)}catch(j){l(j instanceof Error?j.message:String(j))}finally{s(null),e(m)}}}}function dK(e){var r;if((r=e.ask)!=null&&r.trim())return e.ask.trim();const s=(e.preview.split(`
|
|
102
|
+
`).map(a=>a.trim()).find(Boolean)??"").split(" — ")[0].trim();return s&&s!==e.tool&&!s.startsWith(`${e.tool} `)&&!/^[[{"]/.test(s)?s:"An action needs your approval"}function hK(e,n){const s=e.trim(),r=n.replace(/…$/,"");return!r||!s.toLowerCase().startsWith(r.toLowerCase())||n.endsWith("…")?s:s.slice(r.length).replace(/^[:.\s]*(—\s*)?/,"").trim()}function Ub({action:e,timezone:n,busy:s,onDecide:r,agentName:a,agents:i}){var x,g,b;const[l,o]=d.useState(!1),{values:c,controls:u}=_b(e.choices),h=j=>c?r(e.id,"approve",j,c):r(e.id,"approve",j),f=!!((x=e.permissionScopes)!=null&&x.length),m=dK(e),p=hK(e.preview,m);return t.jsxs(Ds,{kind:"approval",tone:"accent",icon:"lock",title:m,time:Xe(e.createdAt),from:Wu(e.agentId)?t.jsxs(Gu,{face:t.jsx(iP,{size:"sm"}),children:["Asked by ",Bu]}):t.jsxs(Gu,{face:i?t.jsx(yn,{agents:i,id:e.agentId,size:"sm"}):void 0,children:["Asked by ",a??e.agentId]}),lead:t.jsx(A,{variant:"ghost",onClick:()=>o(j=>!j),"aria-expanded":l,children:l?"Hide envelope":"Show envelope"}),actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:e.answers?"ghost":"danger",disabled:s,onClick:()=>r(e.id,"reject"),children:((g=e.answers)==null?void 0:g.reject)??"Reject"}),f?t.jsxs(t.Fragment,{children:[t.jsx(A,{disabled:s,onClick:()=>h("conversation"),children:"Auto: this conversation"}),t.jsx(A,{disabled:s,onClick:()=>h("always"),children:"Always: this agent"})]}):null,t.jsx(A,{variant:"accent",disabled:s,onClick:()=>h(),children:((b=e.answers)==null?void 0:b.approve)??(f?"Allow once":"Approve")})]}),children:[p?t.jsx(en,{children:p}):null,t.jsxs("p",{className:"ui-card-meta",children:[t.jsx("span",{className:"mono",children:e.tool})," v",e.toolVersion,". Expires ",Nt(e.expiresAt,n)," (",Xe(e.expiresAt),"). Policy v",e.policyVersion,", args ",Mu(e.argsHash,12),e.jobId?`, job ${Mu(e.jobId)}`:"","."]}),u,l?t.jsxs("div",{className:"ui-card-foot",children:[t.jsx(we,{title:"Envelope: everything that decides what the world will see",children:t.jsx(en,{children:fs(e.envelope)})}),t.jsx(we,{title:"Canonical arguments",children:t.jsx(en,{children:fs(e.canonicalArgs)})})]}):null]})}function Bb(e,n,s){const[r,a]=d.useState(!1),[i,l]=d.useState(null),[o,c]=d.useState(null);return{accept:()=>{e&&(a(!0),c(null),T.acceptPluginAgent(e,n).then(h=>{l(h.agent),s==null||s(h.agent)}).catch(h=>c(h instanceof pe?h.message:String(h))).finally(()=>a(!1)))},busy:r,created:i,failure:o}}function DP({agent:e}){return t.jsxs(Q,{tone:"good",role:"status",children:["@",e.handle," is ready. ",t.jsxs("a",{href:ht(e.id),children:["Talk to @",e.handle]})]})}function LP(e,n,s){const r=e.canonicalArgs;return e.tool==="platform.accept_plugin_agent"&&(r==null?void 0:r.plugin)===n&&typeof r.agent=="string"&&r.agent.toLowerCase()===s.toLowerCase()}function fK(e,n){var a;const s=ve(()=>T.approvals(),[e,n],15e3);return{action:((a=s.data)==null?void 0:a.pending.find(i=>LP(i,e,n)))??null,reload:s.reload}}function dC({action:e,onDecided:n}){const{busy:s,failure:r,decide:a}=zb(i=>n(i));return t.jsxs(de,{gap:"sm",children:[t.jsx(Ub,{action:e,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,busy:s===e.id,onDecide:(i,l,o,c)=>{a(i,l,o,c)}}),t.jsx(re,{message:r})]})}function Wb({plugin:e,agent:n,text:s,label:r,handle:a,onDismiss:i,card:l}){var p;const o=Bb(e,n),c=fK(e,n),[u,h]=d.useState(null),f=o.created??u,m=a??((p=/@(\S+)/.exec(r))==null?void 0:p[1])??n;if(f&&l)return t.jsx(Ds,{kind:"offer",tone:"accent",icon:"check",title:`@${f.handle} is ready`,from:l.from,actions:t.jsxs(it,{variant:"accent",href:ht(f.id),children:["Talk to @",f.handle]})});if(f)return t.jsx(DP,{agent:f});if(c.action){const x=g=>{(g==null?void 0:g.decision)==="approve"&&g.state==="succeeded"?h({id:n,handle:m,name:m}):c.reload()};return l?t.jsx(dC,{action:c.action,onDecided:x}):t.jsxs(de,{gap:"sm",children:[t.jsx("span",{children:s}),t.jsx(dC,{action:c.action,onDecided:x})]})}return l?t.jsxs(Ds,{kind:"offer",tone:"accent",icon:"agents",title:`Set up @${m}`,from:l.from,...i?{dismiss:{onClick:i,disabled:o.busy,hint:"Hide this offer"}}:{},actions:t.jsx(A,{variant:"accent",disabled:o.busy,onClick:o.accept,children:r}),children:[t.jsx("p",{children:s}),t.jsx(re,{message:o.failure})]}):t.jsxs(de,{gap:"sm",children:[t.jsxs(ne,{children:[t.jsx("span",{children:s}),t.jsx(ft,{}),i?t.jsx(A,{variant:"ghost",disabled:o.busy,onClick:i,children:"Not now"}):null,t.jsx(A,{variant:"accent",disabled:o.busy,onClick:o.accept,children:r})]}),t.jsx(re,{message:o.failure})]})}function FP(){var n;const e=ve(()=>T.agentOffers(),[],6e4);return{offers:((n=e.data)==null?void 0:n.offers)??[],reload:e.reload}}function _P({offers:e,reload:n}){return e.length===0?null:t.jsx(we,{title:"From your plugins",aside:`${e.length} to decide`,panel:!0,children:t.jsx(de,{gap:"sm",divided:!0,children:e.map(s=>t.jsx(Wb,{plugin:s.plugin,agent:s.agent,text:s.text,label:`Create @${s.handle}`,handle:s.handle,onDismiss:()=>{T.dismissAgentOffer(s.plugin,s.agent).then(n,n)}},`${s.plugin}/${s.agent}`))})})}const mK={work:"Work",money:"Money",home:"Home",health:"Health",learning:"Learning",life:"Life"},Hb=e=>mK[e]??kp(e);function kp(e){return e.charAt(0).toUpperCase()+e.slice(1)}function wn(e){return e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function Lo(e){return e.replace(/\.0$/,"")}function pK(e){return e.avatar?T.marketAssetUrl(e.avatar):void 0}const gK={mailbox:{title:"your mailbox",fix:"Add a mailbox",route:Dr("email","settings")},"image-account":{title:"a drawing account",fix:"Choose a drawing account",route:Dr("image","settings")}};function Kb(e){return gK[e.replace(/\?$/,"")]??{title:e,fix:"Set it up",route:We()}}const Np=e=>kp(e);function Vb(e){return e.kind==="plugin"?e.title:Kb(e.name).title}function Qf(e){if(e.kind==="need"){const n=Kb(e.name);return{label:n.fix,route:n.route}}return e.fix==="enable"?{label:`Turn on ${e.title}`,route:We("plugins")}:e.fix==="update"?{label:`Update ${e.title}`,route:We("plugins")}:e.byBuddi?null:{label:`Install ${e.title}`,route:We("plugins")}}function xK(e,n,s){const r=new Set((e.missing??[]).map(o=>o.name)),i=[...Object.keys(e.requires),...Object.keys(e.optional)].filter(o=>!r.has(o)&&n.has(o)).map(Np),l=e.needs.includes("mailbox")||e.needs.includes("mailbox?");return s===!0&&l&&!r.has("mailbox")&&i.push("your mailbox"),i}function Og(e){return kp(e.replace(/\.md$/i,"").replace(/[-_]+/g," ").trim())}const hC=(e,n)=>e.includes(n),vK={email:{title:"Mail",line:e=>hC(e,"email.draft")||hC(e,"email.*")?"Reads and searches your mail. Writes drafts; you send them.":"Searches and reads your mail."},calendar:{title:"Calendar",line:()=>"Reads your calendars. Never adds or moves an event."},weather:{title:"Weather",line:()=>"Reads the forecast for your places."},reminder:{title:"Reminders",line:e=>e.some(n=>n.startsWith("schedule."))?"Sets reminders and runs its own missions.":"Sets reminders."},memory:{title:"Memory",line:()=>"Remembers what you tell it. You can read every note."},owner:{title:"You",line:()=>"Messages you when something needs you."},web:{title:"Web",line:()=>"Searches and reads web pages."},artifacts:{title:"Files",line:()=>"Reads what you share in Files."},finance:{title:"Finance",line:()=>"Reads your accounts, cards, loans and statements."},image:{title:"Image",line:()=>"Makes pictures with your drawing account."},speech:{title:"Speech",line:()=>"Says words out loud."},goal:{title:"Goals",line:()=>"Keeps your goals and progress."},canvas:{title:"Canvas",line:()=>"Draws on the canvas beside your chat."}},jK={schedule:"reminder",browser:"web"};function Jf(e,n=new Map){const s=[],r=new Map;for(const a of e){const i=a.replace(/\?$/,""),l=i.split(".")[0]??i,o=jK[l]??l;r.has(o)||(r.set(o,[]),s.push(o)),r.get(o).push(i)}return s.map(a=>{const i=r.get(a),l=vK[a],o=i.some(u=>n.get(u)==="gated"||u.endsWith(".*")&&[...n].some(([h,f])=>f==="gated"&&h.startsWith(u.slice(0,-1)))),c=l?l.line(i):`${i.length===1?"One of its tools":`${i.length} of its tools`}.`;return[(l==null?void 0:l.title)??kp(a),o&&!/asks you/i.test(c)?`${c} Asks you first before it changes anything.`:c]})}function fC(e){return e.length===0?"Nothing beyond its own chat.":`Reaches ${wn(e.map(([n])=>n))}.`}function Xf(e){return new Map((e??[]).filter(n=>n.tier).map(n=>[n.name,n.tier]))}function Tl({entry:e,size:n}){const s=pK(e);return t.jsx("span",{className:"cat-face","data-size":n,children:t.jsx(Bn,{id:e.name,name:e.title,size:n==="xxl"?"xl":n,face:{tools:e.tools,...s?{picture:s}:{}}})})}const zP=800,yK=e=>{var n;return((n=/^.*?[.!?](?=\s|$)/.exec(e.trim()))==null?void 0:n[0])??e.trim()},bo=e=>e instanceof pe?e.message:String(e);function wa({entry:e,children:n}){return t.jsxs("span",{className:"plugins-sheet-title",children:[t.jsx(Tl,{entry:e,size:"lg"}),t.jsxs("span",{className:"plugins-sheet-name",children:[t.jsx("span",{children:n}),t.jsxs("span",{className:"plugins-sheet-by",children:["by ",e.author.name,e.trust==="by-buddi"?t.jsxs(t.Fragment,{children:[" · ",t.jsx(Ae,{tone:"accent",children:"by buddi"})]}):null]})]})]})}function Dg({state:e,children:n}){return t.jsxs("li",{className:"cat-step","data-state":e,children:[t.jsx("span",{className:"cat-step-mark",children:e==="done"?t.jsx(se,{name:"check",size:12}):e==="failed"?t.jsx(se,{name:"alert",size:14}):null}),t.jsx("span",{children:n})]})}function Lg(e){const n=e.kind==="plugin"?["Installing","Installed"]:["Adding","Added"];return e.state==="done"?{state:"done",words:`${n[1]} ${e.title}`}:e.state==="failed"?{state:"failed",words:e.kind==="plugin"?`${e.title} didn’t install`:`${e.title} wasn’t added`}:e.state==="waiting"?{state:"next",words:`${n[0]} ${e.title}`}:{state:"now",words:`${n[0]} ${e.title}…`}}function wK(e){const[n,s]=d.useState(null),[r,a]=d.useState(null);return d.useEffect(()=>{if(s(null),a(null),!e)return;let i=!1,l;const o=()=>{T.catalogueJob(e).then(c=>{i||(s(c),c.state==="running"&&(l=window.setTimeout(o,zP)))}).catch(c=>{i||a(bo(c))})};return o(),()=>{i=!0,l!==void 0&&window.clearTimeout(l)}},[e]),{job:n,error:r,setJob:s}}function Gb({entry:e,navigate:n,onClose:s,onAdded:r}){var Ke;const a=ts("(max-width: 720px)"),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState({}),[f,m]=d.useState(""),[p,x]=d.useState([]),[g,b]=d.useState(!1),[j,v]=d.useState(null),[y,k]=d.useState(!1),[N,w]=d.useState(null),{job:S,error:C,setJob:E}=wK(j),[$,R]=d.useState(!1),[P,O]=d.useState(null),[I,F]=d.useState(!1),U=d.useRef(!1),[L,M]=d.useState([]);d.useEffect(()=>{if(!i||i.plugins.length===0)return;let G=!1;return Promise.resolve().then(()=>T.market()).then(ae=>{G||M((ae==null?void 0:ae.plugins)??[])}).catch(()=>{}),()=>{G=!0}},[i]),d.useEffect(()=>{let G=!1;return T.cataloguePlan(e.name).then(ae=>{G||(l(ae),h(Object.fromEntries(ae.fills.map(J=>[J.id,J.value]))),m(ae.handle))}).catch(ae=>{G||c(bo(ae))}),()=>{G=!0}},[e.name]),d.useEffect(()=>{(S==null?void 0:S.state)==="done"&&S.agent&&!U.current&&(U.current=!0,r==null||r(S.agent))},[S,r]);const z=()=>{i&&(k(!0),w(null),U.current=!1,T.catalogueInstall(e.name,{version:i.version,fills:u,handle:f,missionsOn:p,tools:i.tools.map(G=>G.name)}).then(G=>v(G.jobId)).catch(G=>w(bo(G))).finally(()=>k(!1)))},D=()=>{v(null),z()},H=e.title,K=S==null?void 0:S.agent,X=G=>{K&&(G&&pd(K.id,G),s(),n(ht(K.id)))},W=G=>{S&&(R(!0),O(null),T.catalogueConfirm(S.id,G).then(ae=>{E(ae),G||s()}).catch(ae=>O(bo(ae))).finally(()=>R(!1)))};if((S==null?void 0:S.state)==="confirm"&&S.confirm){const G=Jf(S.confirm.tools.map(J=>J.name),Xf(S.confirm.tools)),ae=S.steps.filter(J=>J.kind==="plugin"&&J.state==="done").map(J=>J.title);return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:["Add ",H]}),onClose:s,foot:t.jsxs(ne,{children:[t.jsx(ft,{}),t.jsx(A,{variant:"ghost",disabled:$,onClick:()=>W(!1),children:"Don’t add it"}),t.jsxs(A,{variant:"accent",disabled:$,onClick:()=>W(!0),children:["Add ",H]})]}),children:[t.jsx("ol",{className:"cat-steps","data-testid":"cat-confirm",children:S.steps.filter(J=>J.kind==="plugin").map(J=>{const{state:xe,words:Ie}=Lg(J);return t.jsx(Dg,{state:xe,children:Ie},`${J.kind}-${J.name}`)})}),t.jsxs(Q,{tone:"warning",title:`${H} would get more than the list showed.`,children:[ae.length>0?`With ${wn(ae)} installed, `:"","its tools resolved to a different set",S.confirm.unshown.length>0?`, including ${wn(S.confirm.unshown)}`:"",". Look at what it can reach before you add it."]}),t.jsx(re,{message:P}),t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"What it can reach"}),t.jsxs("p",{className:"cat-prose",children:[fC(G)," ",t.jsx("button",{type:"button",className:"plugins-link cat-link",onClick:()=>F(!I),children:I?"Hide":"See all"})]}),I?t.jsx("dl",{className:"cat-reach",children:G.map(([J,xe])=>t.jsxs("div",{className:"cat-reach-row",children:[t.jsx("dt",{children:J}),t.jsx("dd",{children:xe})]},J))}):null]}),t.jsx("p",{className:"cat-small",children:"The plugins stay installed either way; Settings → Plugins removes them."})]})}if(j&&(!S||S.state==="running")){const G=S==null?void 0:S.steps[S.steps.length-1],ae=(S==null?void 0:S.approvalId)&&(G==null?void 0:G.state)==="adding";return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:["Add ",H]}),onClose:s,foot:t.jsx(ne,{align:"end",children:t.jsx(A,{onClick:s,children:"Close"})}),children:[t.jsx("ol",{className:"cat-steps","aria-live":"polite","data-testid":"cat-progress",children:((S==null?void 0:S.steps)??[]).map(J=>{const{state:xe,words:Ie}=Lg(J);return t.jsx(Dg,{state:xe,children:Ie},`${J.kind}-${J.name}`)})}),ae?t.jsxs(Q,{tone:"accent",action:t.jsx(A,{size:"sm",onClick:()=>{s(),n(Oo)},children:"Open it"}),children:["Adding ",H," waits for your approval in Needs you."]}):null,t.jsx(re,{message:C}),t.jsxs("p",{className:"cat-small",children:["You can close this; it carries on, and ",H," joins the team when it’s done."]})]})}if((S==null?void 0:S.state)==="done"){const G=S.steps.filter(xe=>xe.kind==="plugin").map(xe=>xe.title),ae=(i==null?void 0:i.missions.length)??e.missions.length,J=p.length;return t.jsxs(Qe,{title:t.jsx(wa,{entry:e,children:H}),onClose:s,foot:t.jsxs(ne,{children:[t.jsx(A,{variant:"ghost",onClick:()=>{s(),n(En())},children:"Back to teammates"}),t.jsx(ft,{}),t.jsx(A,{variant:"accent",onClick:()=>X(),children:"Say hello"})]}),children:[t.jsxs("div",{className:"cat-done","data-testid":"cat-done",children:[t.jsx(Tl,{entry:e,size:"xxl"}),t.jsxs("p",{className:"cat-done-title",children:[H," is on your team."]}),t.jsxs("p",{className:"cat-small",children:["@",(K==null?void 0:K.handle)??f,G.length?` · ${wn(G)} installed`:"",ae>0&&J<ae?` · ${ae-J===1?"a mission":"missions"} off until you turn ${ae-J===1?"it":"them"} on`:""]})]}),e.examples.length>0?t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"Try one"}),t.jsx("div",{className:"wb-starters",children:e.examples.map(xe=>t.jsx("button",{type:"button",className:"wb-starter",onClick:()=>X(xe),children:xe},xe))})]}):null]})}if((S==null?void 0:S.state)==="failed"){const G=S.steps.find(ae=>ae.kind==="plugin"&&ae.state==="failed");return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:[H," wasn’t added"]}),onClose:s,foot:t.jsxs(ne,{children:[t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:s,children:"Close"}),t.jsx(A,{variant:"accent",disabled:y,onClick:D,children:"Try again"})]}),children:[t.jsx("ol",{className:"cat-steps","data-testid":"cat-failed",children:S.steps.map(ae=>{const{state:J,words:xe}=Lg(ae);return t.jsx(Dg,{state:J==="now"?"next":J,children:J==="now"?xe.replace(/…$/,""):xe},`${ae.kind}-${ae.name}`)})}),t.jsx(Q,{tone:"critical",title:`${S.error??"It stopped before it finished"}.`,action:S.approvalId?t.jsx(A,{size:"sm",onClick:()=>{s(),n(Oo)},children:"Open the approval"}):void 0,children:t.jsxs("p",{children:["Nothing was added and nothing else changed.",G?t.jsxs(t.Fragment,{children:[" ",G.title," waits in"," ",t.jsx("a",{href:We("plugins"),onClick:ae=>{ae.preventDefault(),s(),n(We("plugins"))},children:"Settings → Plugins"})," ","if you’d rather look at it there."]}):null]})}),t.jsx(re,{message:N})]})}const me=(i==null?void 0:i.plugins.filter(G=>G.fix==="install"&&G.byBuddi))??[],fe=(i==null?void 0:i.blocked)??[],oe=fe[0],B=oe?Qf(oe):null,ue=Jf(i?i.tools.map(G=>G.name):e.tools,Xf([...((Ke=e.claims)==null?void 0:Ke.tools)??[],...((i==null?void 0:i.tools)??[]).filter(G=>G.tier!=="unknown")])),Ne=G=>{var ae;return((ae=e.missions.find(J=>J.id===G))==null?void 0:ae.when)??""};return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:["Add ",H]}),onClose:s,foot:t.jsxs(ne,{children:[a?null:t.jsx("span",{className:"plugins-foot-note",children:me.length?`Installs ${wn(me.map(G=>G.title))}, then adds ${H}.`:"Nothing runs until you add it."}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsxs(A,{variant:"accent",disabled:!i||fe.length>0||y||f.length<2,onClick:z,children:["Add ",H]})]}),children:[t.jsxs("p",{className:"cat-lede",children:[e.pitch," One approval adds it; you can change or remove it from its page."]}),t.jsx(re,{message:o??N}),!i&&!o?t.jsx(Ce,{children:"Reading what it needs…"}):i?t.jsxs(de,{divided:!0,gap:"lg",children:[me.length>0?t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"Installed on the way"}),t.jsx("ul",{className:"cat-plugins",children:me.map(G=>{const ae=L.find(J=>J.name===G.name);return t.jsxs("li",{children:[t.jsx(ss,{svg:ae==null?void 0:ae.iconSvg}),t.jsxs("span",{className:"cat-plugin-text",children:[t.jsxs("span",{className:"cat-plugin-name",children:[G.title," ",G.version?t.jsx("span",{className:"plugins-ver",children:G.version}):null]}),t.jsx("span",{className:"cat-small",children:ae!=null&&ae.summary?yK(ae.summary):"Made by buddi; installed only if it matches what withbuddi.com lists."})]}),t.jsx(Ae,{tone:"accent",children:"by buddi"})]},G.name)})})]}):null,oe?t.jsxs(Q,{tone:"warning",action:B?t.jsx(A,{size:"sm",onClick:()=>{s(),n(B.route)},children:B.label}):void 0,children:[H," needs ",wn(fe.map(Vb))," first. Add ",fe.length===1?"it":"them",", then come back; nothing is added until then."]}):null,i.fills.length>0?t.jsxs("div",{className:"cat-block",children:[t.jsxs("h3",{className:"cat-block-title",children:["A few picks ",t.jsx("span",{className:"cat-block-aside",children:"filled in for you"})]}),t.jsx("div",{className:"cat-fills",children:i.fills.map(G=>t.jsx(le,{label:t.jsxs(t.Fragment,{children:[G.label,G.optional?t.jsx("span",{className:"faint",children:" · optional"}):null]}),children:G.choices&&G.choices.length>0?t.jsxs("select",{value:u[G.id]??"",onChange:ae=>h({...u,[G.id]:ae.target.value}),children:[G.kind==="calendar"?t.jsx("option",{value:"",children:"All of them"}):null,G.choices.map(ae=>t.jsx("option",{value:ae,children:ae},ae))]}):G.kind==="time"?t.jsx("input",{type:"time",value:u[G.id]??"",onChange:ae=>h({...u,[G.id]:ae.target.value})}):t.jsx("input",{value:u[G.id]??"",onChange:ae=>h({...u,[G.id]:ae.target.value})})},G.id))})]}):null,t.jsx("div",{className:"cat-block",children:t.jsx(le,{label:"Handle",hint:"How you call it in chat and on Telegram.",children:t.jsxs("span",{className:"cat-handle",children:[t.jsx("span",{className:"mono faint",children:"@"}),t.jsx("input",{className:"mono","aria-label":"Handle",value:f,onChange:G=>m(G.target.value.toLowerCase().replace(/[^a-z0-9-]/g,""))})]})})}),i.missions.length>0?t.jsxs("div",{className:"cat-block",children:[t.jsxs("h3",{className:"cat-block-title",children:["Missions ",t.jsx("span",{className:"cat-block-aside",children:"off unless you turn one on"})]}),t.jsx("ul",{className:"cat-missions","data-switches":"true",children:i.missions.map(G=>t.jsxs("li",{children:[t.jsx("span",{className:"cat-mission-name",children:G.name}),t.jsx("span",{className:"cat-mission-when",children:Ne(G.id)}),t.jsx(oc,{checked:p.includes(G.id),label:`Turn on ${G.name}`,onChange:ae=>x(ae?[...p,G.id]:p.filter(J=>J!==G.id))})]},G.id))})]}):null,t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"What it can reach"}),t.jsxs("p",{className:"cat-prose",children:[fC(ue)," ",t.jsx("button",{type:"button",className:"plugins-link cat-link",onClick:()=>b(!g),children:g?"Hide":"See all"})]}),g?t.jsx("dl",{className:"cat-reach",children:ue.map(([G,ae])=>t.jsxs("div",{className:"cat-reach-row",children:[t.jsx("dt",{children:G}),t.jsx("dd",{children:ae})]},G))}):null]})]}):null]})}function bK(e){const n=[];let s=null,r=0;for(const a of e){const i=/^@@ -\d+,\d+ \+(\d+),(\d+) @@$/.exec(a);if(i){const c=Number(i[2])===0?Number(i[1])+1:Number(i[1]);n.length>0&&c-1>r&&n.push({kind:"gap",count:c-1-r}),s=c;continue}const l=a.startsWith("+ ")?"add":a.startsWith("- ")?"del":"ctx",o=l==="ctx"&&!a.startsWith(" ")?a:a.slice(2);l==="del"||s===null?n.push({kind:l,text:o,n:null}):(n.push({kind:l,text:o,n:s}),r=s,s+=1)}return n}function mC({lines:e,label:n}){return t.jsx("div",{className:"cat-diff",role:"region","aria-label":n,children:bK(e).map((s,r)=>s.kind==="gap"?t.jsxs("div",{className:"cat-diff-line","data-kind":"gap",children:[t.jsx("span",{className:"cat-diff-n","aria-hidden":"true"}),t.jsx("span",{className:"cat-diff-k","aria-hidden":"true"}),t.jsxs("span",{children:["⋯ ",s.count," ",s.count===1?"line":"lines"]})]},r):t.jsxs("div",{className:"cat-diff-line","data-kind":s.kind,children:[t.jsx("span",{className:"cat-diff-n","aria-hidden":"true",children:s.n??""}),t.jsx("span",{className:"cat-diff-k","aria-hidden":"true",children:s.kind==="add"?"+":s.kind==="del"?"-":" "}),t.jsx("span",{children:s.text||" "})]},r))})}function UP({entry:e,agentId:n,onClose:s,onUpdated:r}){const[a,i]=d.useState(null),[l,o]=d.useState(null),[c,u]=d.useState(!1),[h,f]=d.useState(!1),[m,p]=d.useState(!1);d.useEffect(()=>{let y=!1;return T.catalogueUpdatePlan(e.name,n).then(k=>{y||i(k)}).catch(k=>{y||o(bo(k))}),()=>{y=!0}},[e.name,n]);const x=Lo((a==null?void 0:a.version)??e.version),g=y=>{a&&(f(!0),o(null),T.catalogueUpdate(e.name,n,a.plan,y).then(()=>{p(!0),r==null||r()}).catch(k=>{o(bo(k)),T.catalogueUpdatePlan(e.name,n).then(i).catch(()=>{})}).finally(()=>f(!1)))};if(m)return t.jsx(Qe,{title:t.jsxs(wa,{entry:e,children:[e.title," ",x]}),onClose:s,foot:t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",onClick:s,children:"Done"})}),children:t.jsx(Q,{tone:"good",title:`${e.title} is on ${x}.`,role:"status",children:a!=null&&a.edited?"Your version is in the trash folder if you want any of it back.":"Your picks and missions are as they were."})});if(!a)return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:["Update ",e.title]}),onClose:s,children:[t.jsx(re,{message:l}),l?null:t.jsx(Ce,{children:"Reading what changed…"})]});const b=a.personaDiff.filter(y=>y.startsWith("+ ")).length,j=a.personaDiff.filter(y=>y.startsWith("- ")).length;if(a.edited)return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:[e.title," ",x," is out"]}),onClose:s,foot:t.jsxs(ne,{children:[c?null:t.jsx(A,{variant:"ghost",onClick:()=>u(!0),children:"See what changed"}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:s,children:"Keep mine"}),t.jsx(A,{variant:"danger",disabled:h,onClick:()=>g(!0),children:"Replace my changes"})]}),children:[t.jsx(Q,{tone:"accent",children:a.replacesOwn&&a.replacesOwn.length>0?`${x} brings ${a.replacesOwn.length===1?"a skill":"skills"} named like your own (${wn(a.replacesOwn)}), so nothing is updated on its own. Yours stay exactly as they are unless you replace them; replaced, they go to the trash folder.`:a.via?`${e.title} replaces your @${a.handle}. You’ve changed @${a.handle}, so nothing is replaced on its own. Your file stays exactly as it is unless you replace it; its handle, chats, memory and missions stay either way.`:`You’ve changed ${e.title} since you added it, so nothing is updated on its own. Your file stays exactly as it is unless you replace it.`}),t.jsx(re,{message:l}),t.jsxs(de,{divided:!0,gap:"lg",children:[t.jsxs("div",{className:"cat-block",children:[t.jsxs("h3",{className:"cat-block-title",children:["New in ",x]}),t.jsx("p",{className:"cat-prose",children:a.changes})]}),t.jsxs("div",{className:"cat-block",children:[t.jsxs("h3",{className:"cat-block-title",children:["Your file and ",x," ",t.jsx("button",{type:"button",className:"cat-block-aside plugins-link",onClick:()=>u(!c),children:c?"Hide":"See what changed"})]}),c?t.jsxs(t.Fragment,{children:[t.jsx(mC,{lines:a.personaDiff,label:`Your ${e.title} against ${x}`}),t.jsxs("p",{className:"cat-small",children:["Lines marked − are in your file and not in ",x,"; + is new in ",x,". Replacing keeps your picks, and drops what you wrote by hand."]})]}):t.jsxs("p",{className:"cat-small",children:[j===1?"1 line":`${j} lines`," only in your file, ",b===1?"1 line":`${b} lines`," new in ",x,"."]})]})]})]});const v=a.added.length>0?`New: ${wn(Jf(a.added.map(y=>y.name),Xf(a.added)).map(([y])=>y))}. The approval lists each tool.`:"No new tools. It reaches what it reaches today.";return t.jsxs(Qe,{title:t.jsxs(wa,{entry:e,children:["Update ",e.title," to ",x]}),onClose:s,foot:t.jsxs(ne,{children:[t.jsx("span",{className:"plugins-foot-note",children:"Your picks and handle stay."}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:s,children:"Not now"}),t.jsxs(A,{variant:"accent",disabled:h,onClick:()=>g(!1),children:["Update ",e.title]})]}),children:[t.jsx("p",{className:"cat-lede",children:a.changes}),t.jsx(re,{message:l}),t.jsxs(de,{divided:!0,gap:"lg",children:[t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"What changes in its file"}),a.personaDiff.length>0?t.jsx(mC,{lines:a.personaDiff,label:a.via?`@${a.handle} against ${e.title} ${x}`:`${e.title} ${Lo(a.fromVersion)} against ${x}`}):t.jsx("p",{className:"cat-prose",children:"Its persona stays word for word."})]}),t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"What it can reach"}),t.jsxs("p",{className:"cat-prose",children:[v,a.removed.length>0?` No longer: ${a.removed.join(", ")}.`:""]})]}),t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"Missions"}),t.jsxs("p",{className:"cat-prose",children:[a.missionsAdded.length>0?`${wn(a.missionsAdded.map(y=>y.name))} added, off until you turn ${a.missionsAdded.length===1?"it":"them"} on.`:"None added.",(a.missionsChanged??[]).length>0?" Their prompt, hour and switch stay yours.":" Yours stay as they are."]}),(a.missionsChanged??[]).map(y=>t.jsxs("p",{className:"cat-prose",children:[y.name,": new settings — ",y.words,"."]},y.id))]}),a.retires&&a.retires.length>0?t.jsxs("div",{className:"cat-block",children:[t.jsx("h3",{className:"cat-block-title",children:"Skills"}),t.jsxs("p",{className:"cat-prose",children:[x," no longer has ",wn(a.retires),"; ",a.retires.length===1?"it goes":"they go"," to the trash folder."]})]}):null]})]})}function Us(e){if(e.state==="unavailable")return"unavailable";const n=e.installed;return e.state!=="installed"||!n?"ready":n.drift==="update"?"update":n.drift==="edited-update"?"edited":"added"}function qb(){const e=ve(()=>T.plugins(),[]);return d.useMemo(()=>{var n;return new Set((((n=e.data)==null?void 0:n.installed)??[]).filter(s=>s.loaded&&s.enabled!==!1).map(s=>s.name))},[e.data])}function Yb(){return t.jsx(se,{name:"check",size:14})}function kK({entry:e,loaded:n,mailbox:s}){const r=Us(e);if(r==="unavailable")return t.jsx("span",{className:"cat-chips",children:t.jsx("span",{className:"cat-chip","data-need":"true",children:"Needs a newer buddi"})});const a=e.missing??[];if(a.length>0)return t.jsx("span",{className:"cat-chips",children:t.jsxs("span",{className:"cat-chip","data-need":"true",children:["Needs ",wn(a.map(Vb))]})});if(r!=="ready")return null;const i=xK(e,n,s);if(i.length===0)return null;const l=`Uses ${wn(i)}`;return t.jsx("span",{className:"cat-uses",title:l,children:l})}function NK({entry:e,onAdd:n,onUpdate:s}){const r=Us(e),a=i=>l=>{l.stopPropagation(),i()};return r==="added"?t.jsxs("span",{className:"cat-added",children:[t.jsx(Yb,{}),"Added"]}):r==="update"?t.jsx(A,{size:"sm",onClick:a(s),"aria-label":`Update ${e.title}`,children:"Update"}):r==="edited"?t.jsx(A,{size:"sm",onClick:a(s),children:"See what changed"}):r==="unavailable"?null:t.jsx(A,{size:"sm",variant:"accent",onClick:a(n),"aria-label":`Add ${e.title}`,children:"Add"})}function SK({entry:e}){var a,i,l,o;const n=Us(e),s=Lo(e.version),r=(a=e.installed)==null?void 0:a.handle;return(i=e.installed)!=null&&i.via&&n==="update"?t.jsxs("p",{className:"cat-note",children:["Replaces your @",r,": it keeps its handle, chats, memory and missions."]}):(l=e.installed)!=null&&l.via&&n==="edited"?t.jsxs("p",{className:"cat-note",children:["Replaces your @",r,", which you’ve changed."]}):n==="update"?t.jsxs("p",{className:"cat-note",children:[s," is out: ",e.changes.charAt(0).toLowerCase()+e.changes.slice(1)]}):n==="edited"?t.jsxs("p",{className:"cat-note",children:["You’ve changed ",e.title,"; ",s," is out."]}):n==="added"?t.jsxs("p",{className:"cat-note","data-quiet":"true",children:["On your team as @",(o=e.installed)==null?void 0:o.handle]}):n==="unavailable"?t.jsx("p",{className:"cat-note","data-quiet":"true",children:e.reason}):null}function BP({entry:e,loaded:n,mailbox:s,onOpen:r,onAdd:a,onUpdate:i}){return t.jsx("div",{className:"cat-card","data-state":Us(e),"data-testid":`cat-card-${e.name}`,children:t.jsxs(Wr,{onClick:r,label:`${e.title}: details`,children:[t.jsxs("div",{className:"cat-card-head",children:[t.jsx(Tl,{entry:e,size:"lg"}),t.jsxs("div",{className:"cat-card-name",children:[t.jsx("h3",{className:"ui-card-title",children:e.title}),t.jsx("div",{className:"cat-card-kind",children:Hb(e.category)})]})]}),t.jsx("p",{className:"cat-pitch",children:e.pitch}),t.jsx(SK,{entry:e}),t.jsxs("div",{className:"cat-card-foot",children:[t.jsx(kK,{entry:e,loaded:n,mailbox:s}),t.jsx(ft,{}),t.jsx(NK,{entry:e,onAdd:a,onUpdate:i})]})]})})}function CK({row:e,agents:n,navigate:s,pages:r}){const a=Bb(e.plugin,e.agent,()=>window.dispatchEvent(new Event(Ts))),i=a.created??(e.state==="installed"?{id:e.agent,handle:e.handle,name:e.name}:null),l=r?cj(e.plugin,r.all):Np(e.plugin);return t.jsx("div",{className:"cat-card","data-state":i?"added":"ready","data-testid":`cat-card-${e.agent}`,children:t.jsxs(Wr,{onClick:i?()=>s(Jt(i.id)):void 0,label:i?`Open @${i.handle}`:void 0,children:[t.jsxs("div",{className:"cat-card-head",children:[t.jsx("span",{className:"cat-face","data-size":"lg",children:t.jsx(Bn,{id:e.agent,name:e.name,size:"lg",face:n.find(o=>o.id===e.agent)})}),t.jsxs("div",{className:"cat-card-name",children:[t.jsx("h3",{className:"ui-card-title",children:e.name}),t.jsxs("div",{className:"cat-card-kind",children:["From ",l]})]})]}),t.jsx("p",{className:"cat-pitch",children:e.text}),i?t.jsxs("p",{className:"cat-note","data-quiet":"true",children:["On your team as @",i.handle]}):null,t.jsxs("div",{className:"cat-card-foot",children:[t.jsx(re,{message:a.failure}),t.jsx(ft,{}),i?t.jsxs("span",{className:"cat-added",children:[t.jsx(Yb,{}),"Added"]}):t.jsx(A,{size:"sm",variant:"accent",disabled:a.busy,onClick:o=>{o.stopPropagation(),a.accept()},"aria-label":`Add ${e.name}`,children:"Add"})]})]})})}function EK({n:e=6}){return t.jsx("div",{className:"cat-grid","aria-busy":"true","aria-label":"Loading the catalogue","data-testid":"cat-loading",children:Array.from({length:e},(n,s)=>t.jsxs("div",{className:"ui-card cat-skel",children:[t.jsxs("div",{className:"cat-card-head",children:[t.jsx("i",{className:"cat-skel-face"}),t.jsxs("span",{className:"cat-card-name",children:[t.jsx("i",{className:"cat-skel-line","data-w":"40"}),t.jsx("i",{className:"cat-skel-line","data-w":"20"})]})]}),t.jsx("i",{className:"cat-skel-line","data-w":"90"}),t.jsx("i",{className:"cat-skel-line","data-w":"70"})]},s))})}function AK(e,n,s){const r=e.find(a=>a.roles.includes(Mr));r&&(s.trim()&&pd(r.id,`I'd like a teammate for this: ${s.trim()}`),n(ht(r.id)))}function $K({sheet:e,view:n,navigate:s,onClose:r,onChanged:a}){const i=e?n==null?void 0:n.agents.find(l=>l.name===e.name):void 0;return!e||!i?null:e.kind==="update"&&i.installed?t.jsx(UP,{entry:i,agentId:i.installed.agentId,onClose:r,onUpdated:a}):t.jsx(Gb,{entry:i,navigate:s,onClose:r,onAdded:a})}const TK=[{value:"all",label:"All"},{value:"work",label:"Work"},{value:"money",label:"Money"},{value:"home",label:"Home"},{value:"health",label:"Health"},{value:"learning",label:"Learning"},{value:"life",label:"Life"}];function RK(e,n){return[e.title,e.pitch,e.about,e.description,Hb(e.category)].some(s=>s.toLowerCase().includes(n))}function IK({name:e,agents:n,navigate:s,pluginPages:r}){const[a,i]=d.useState(0),l=ve(()=>T.catalogue(a>0),[a]),o=qb(),[c,u]=d.useState(""),[h,f]=d.useState("all"),[m,p]=d.useState(null),x=l.data,g=()=>{l.reload(),window.dispatchEvent(new Event(Ts))},b=()=>i(E=>E+1),j=t.jsx($K,{sheet:m,view:x,navigate:s,onClose:()=>p(null),onChanged:g}),v=e?x==null?void 0:x.agents.find(E=>E.name===e):void 0,y=d.useRef(!1);if(d.useEffect(()=>{y.current||!v||!lW(window.location.hash,v.name)||(y.current=!0,Us(v)==="ready"&&p({kind:"install",name:v.name}))},[v]),e&&x&&!x.unavailable&&v)return t.jsxs(t.Fragment,{children:[t.jsx(OK,{entry:v,loaded:o,agents:n,navigate:s,onAdd:()=>p({kind:"install",name:v.name}),onUpdate:()=>p({kind:"update",name:v.name})}),j]});const k=c.trim().toLowerCase(),w=((x==null?void 0:x.agents)??[]).filter(E=>(h==="all"||E.category===h)&&(!k||RK(E,k))),S=((x==null?void 0:x.fromPlugins)??[]).filter(E=>h==="all"&&(!k||[E.name,E.text,E.description].some($=>$.toLowerCase().includes(k)))),C=E=>()=>s(E);return t.jsxs(Rb,{children:[t.jsx(al,{before:t.jsx(tu,{inline:!0,items:[{label:"Agents",href:Mt,onClick:C(Mt)}]}),title:"Add a teammate",lede:"Agents tested with the plugins they use. Adding one is one approval, and it becomes a file on this computer you can change."}),e&&x&&!x.unavailable&&!v?t.jsxs(Q,{tone:"warning",children:["The catalogue lists no teammate called “",e,"”. Here is everyone it does list."]}):null,t.jsxs("div",{className:"cat-bar",children:[t.jsxs("div",{className:"cat-search",children:[t.jsx(se,{name:"search",size:16}),t.jsx(xp,{label:"Search teammates",value:c,placeholder:"Search: meals, money, a language…",onChange:u})]}),t.jsx("div",{className:"cat-cats",children:t.jsx(dP,{label:"Category",options:TK,value:h,onChange:f})})]}),x&&!x.unavailable?x.stale?t.jsxs("p",{className:"plugins-quiet","data-testid":"cat-stale",children:[t.jsx(se,{name:"globe",size:14}),"From the list kept ",x.fetchedAt?PK(x.fetchedAt):"earlier",": withbuddi.com didn’t answer just now."," ",t.jsx("button",{type:"button",className:"plugins-link",onClick:b,children:"Try again"})]}):t.jsxs("p",{className:"plugins-quiet",children:[t.jsx(se,{name:"globe",size:14}),"Opening this page fetched the list from withbuddi.com. Nothing else leaves."]}):null,l.error&&!x?t.jsx(Ce,{warm:!0,title:"The catalogue didn’t load",action:t.jsx(A,{variant:"accent",size:"sm",onClick:b,children:"Try again"}),children:l.error}):x?x.unavailable?t.jsx(Ce,{warm:!0,title:"The catalogue needs withbuddi.com",action:t.jsx(A,{variant:"accent",size:"sm",disabled:l.loading,onClick:b,children:"Try again"}),children:"This computer can’t reach it right now, and there’s no saved copy yet. Try again when you’re online."}):w.length+S.length>0?t.jsxs("div",{className:"cat-grid","data-testid":"cat-grid",children:[w.map(E=>t.jsx(BP,{entry:E,loaded:o,mailbox:x.mailbox,onOpen:()=>s(En(E.name)),onAdd:()=>p({kind:"install",name:E.name}),onUpdate:()=>p({kind:"update",name:E.name})},E.name)),S.map(E=>t.jsx(CK,{row:E,agents:n,navigate:s,pages:r},`${E.plugin}/${E.agent}`))]}):t.jsx(Ce,{warm:!0,title:"No teammate for that yet",action:t.jsxs("span",{className:"cat-empty-acts",children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>{u(""),f("all")},children:"Show all"}),t.jsx(A,{size:"sm",variant:"accent",onClick:()=>AK(n,s,c),children:"Ask Agent Father"})]}),children:k?t.jsxs(t.Fragment,{children:["Nothing in the catalogue does “",c.trim(),"”. Agent Father can make one for you; your words go with you."]}):"Nothing in this category yet."}):t.jsx(EK,{}),x&&!x.unavailable&&x.delisted.length>0?t.jsx(lt,{title:"No longer in the catalogue",children:t.jsx("ul",{className:"cat-plugins","data-testid":"cat-delisted",children:x.delisted.map(E=>t.jsxs("li",{children:[t.jsx(yn,{agents:n,id:E.agentId,size:"sm"}),t.jsxs("span",{className:"cat-plugin-text",children:[t.jsx("a",{className:"cat-plugin-name",href:Jt(E.agentId),onClick:$=>{$.preventDefault(),s(Jt(E.agentId))},children:E.name??`@${E.handle}`}),t.jsxs("span",{className:"cat-small",children:["@",E.handle," keeps working as it is; no updates will come."]})]})]},E.agentId))})}):null,j]})}function PK(e){const n=Math.round((Date.now()-Date.parse(e))/36e5);if(!Number.isFinite(n)||n<1)return"an hour ago";if(n<24)return`${n} h ago`;const s=Math.round(n/24);return s===1?"yesterday":`${s} days ago`}function Bi({title:e,children:n}){return t.jsxs("section",{className:"cat-row",children:[t.jsx("h2",{className:"cat-row-title",children:e}),t.jsx("div",{className:"cat-row-body",children:n})]})}function MK({entry:e,loaded:n,navigate:s}){const r=new Map((e.missing??[]).map(i=>[i.name,i])),a=[...Object.keys(e.requires).map(i=>({name:i,needed:!0,need:!1})),...Object.keys(e.optional).map(i=>({name:i,needed:!1,need:!1})),...e.needs.map(i=>({name:i.replace(/\?$/,""),needed:!i.endsWith("?"),need:!0}))];return a.length===0?t.jsx("p",{className:"cat-small",children:"None. It works with what buddi has."}):t.jsx("ul",{className:"cat-plugins",children:a.map(({name:i,needed:l,need:o})=>{const c=r.get(i),u=c?Qf(c):null,h=o?Kb(i).title:(c==null?void 0:c.kind)==="plugin"?c.title:Np(i),f=o?l&&!c:n.has(i);return t.jsxs("li",{children:[t.jsx("span",{className:"ui-app-icon","aria-hidden":"true",children:t.jsx(se,{name:o?i==="mailbox"?"mail":"key":"plug",size:14})}),t.jsxs("span",{className:"cat-plugin-text",children:[t.jsx("span",{className:"cat-plugin-name",children:h.charAt(0).toUpperCase()+h.slice(1)}),t.jsx("span",{className:"cat-small",children:l?"Needed":"Better with it"})]}),u?t.jsx(A,{size:"sm",onClick:()=>s(u.route),children:u.label}):c?t.jsx("span",{className:"cat-small",children:"Installed when you add it"}):f?t.jsxs("span",{className:"cat-added",children:[t.jsx(Yb,{}),o?"You have one":"Installed"]}):t.jsx("span",{className:"cat-small",children:o?"Optional":"Not installed"})]},`${o?"need":"plugin"}-${i}`)})})}function OK({entry:e,loaded:n,agents:s,navigate:r,onAdd:a,onUpdate:i}){var x,g,b,j;const l=Us(e),c=(x=e.installed)==null?void 0:x.agentId,u=Lo(e.version),h=(g=e.installed)!=null&&g.via?e.installed:void 0,f=v=>{c&&(v&&pd(c,v),r(ht(c)))},m=Jf(e.tools,Xf((b=e.claims)==null?void 0:b.tools)),p=e.replaces.map(v=>Og(v.split("/")[1]??v));return t.jsxs(Rb,{children:[t.jsxs("a",{className:"cat-back",href:En(),onClick:v=>{v.preventDefault(),r(En())},children:[t.jsx(se,{name:"chevron-left",size:12}),"Teammates"]}),t.jsxs("header",{className:"cat-hero",children:[t.jsx(Tl,{entry:e,size:"xxl"}),t.jsxs("div",{className:"cat-hero-text",children:[t.jsx("h1",{className:"cat-hero-title",children:e.title}),t.jsx("p",{className:"cat-hero-pitch",children:e.pitch}),t.jsxs("p",{className:"cat-hero-meta",children:[e.trust==="by-buddi"?t.jsx(Ae,{tone:"accent",children:"by buddi"}):null,t.jsx("span",{children:Hb(e.category)}),t.jsx("span",{"aria-hidden":"true",children:"·"}),t.jsx("span",{className:"mono",children:h?e.version:((j=e.installed)==null?void 0:j.version)??e.version}),e.installed?t.jsxs(t.Fragment,{children:[t.jsx("span",{"aria-hidden":"true",children:"·"}),t.jsxs("span",{children:["on your team as ",t.jsxs("span",{className:"mono",children:["@",e.installed.handle]})]})]}):null]})]}),t.jsx("div",{className:"cat-hero-act",children:l==="ready"?t.jsxs(A,{variant:"accent",onClick:a,children:["Add ",e.title]}):l==="update"?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>f(),children:"Open chat"}),t.jsx(A,{variant:"accent",onClick:i,children:h?`Update @${h.handle} to ${e.title}`:`Update to ${u}`})]}):l==="edited"?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>f(),children:"Open chat"}),t.jsx(A,{onClick:i,children:"See what changed"})]}):l==="unavailable"?null:t.jsx(A,{variant:"accent",onClick:()=>f(),children:"Open chat"})})]}),l==="edited"&&h?t.jsxs(Q,{tone:"accent",children:[e.title," replaces your @",h.handle,". You’ve changed it, so it isn’t replaced on its own: your file stays as it is unless you replace it."]}):l==="edited"?t.jsxs(Q,{tone:"accent",children:["You’ve changed ",e.title," since you added it, so ",u," isn’t applied on its own. Your file stays as it is unless you replace it."]}):l==="unavailable"?t.jsx(Q,{tone:"warning",children:e.reason}):null,t.jsx(lt,{flush:!0,children:t.jsxs("div",{className:"cat-rows",children:[t.jsxs(Bi,{title:"What it does",children:[t.jsx("p",{className:"cat-prose",children:e.about}),p.length>0?t.jsxs("p",{className:"cat-small",children:["Does what ",wn(p)," did. If you have ",wn(p)," and haven’t changed it, it’s offered as an update."]}):null]}),e.examples.length>0?t.jsxs(Bi,{title:"Ask it",children:[t.jsx("div",{className:"wb-starters",children:e.examples.map(v=>t.jsx("button",{type:"button",className:"wb-starter",disabled:!c,onClick:()=>f(v),children:v},v))}),c?null:t.jsx("p",{className:"cat-small",children:"Once it’s on your team, a tap opens a chat with it."})]}):null,t.jsx(Bi,{title:"Skills",children:e.skills.length===0?t.jsx("p",{className:"cat-small",children:"None. It works from its persona."}):t.jsxs(t.Fragment,{children:[t.jsx("ul",{className:"cat-plugins","data-testid":"cat-skills",children:e.skills.map(v=>t.jsxs("li",{children:[t.jsx("span",{className:"ui-app-icon","aria-hidden":"true",children:t.jsx(se,{name:"files",size:14})}),t.jsxs("span",{className:"cat-plugin-text",children:[t.jsx("span",{className:"cat-plugin-name",children:Og(v.name)}),v.description?t.jsx("span",{className:"cat-small",children:v.description}):null,t.jsx(Kt,{summary:"Read it",children:t.jsx(en,{label:`${Og(v.name)}: the skill's text`,children:v.text})})]})]},v.name))}),t.jsxs("p",{className:"cat-small",children:["Plain text, no code."," ",c?t.jsxs(t.Fragment,{children:["Read and change them on ",t.jsx("a",{href:Jt(c,"skills"),onClick:v=>{v.preventDefault(),r(Jt(c,"skills"))},children:"its Skills tab"}),"."]}):"Once it’s on your team they’re files you can read and change."]})]})}),t.jsxs(Bi,{title:"What it can reach",children:[t.jsx("dl",{className:"cat-reach",children:m.map(([v,y])=>t.jsxs("div",{className:"cat-reach-row",children:[t.jsx("dt",{children:v}),t.jsx("dd",{children:y})]},v))}),t.jsx("p",{className:"cat-small",children:"Anything that sends or pays still asks you first, every time. You can change any of this on its page."})]}),t.jsx(Bi,{title:"Missions",children:e.missions.length>0?t.jsx("ul",{className:"cat-missions",children:e.missions.map(v=>t.jsxs("li",{children:[t.jsx("span",{className:"cat-mission-name",children:v.name}),t.jsx("span",{className:"cat-mission-when",children:v.when}),t.jsx("span",{className:"cat-off",children:"off until you turn it on"})]},v.id))}):t.jsx("p",{className:"cat-small",children:"None. It works when you ask."})}),t.jsx(Bi,{title:"Plugins",children:t.jsx(MK,{entry:e,loaded:n,navigate:r})}),t.jsxs(Bi,{title:"Version",children:[t.jsxs("p",{className:"cat-prose",children:[t.jsx("span",{className:"mono",children:e.version})," · ",e.changes]}),t.jsx("p",{className:"cat-small",children:"Reviewed in withbuddi/buddi-market. An update always asks you, and never touches a file you changed."})]})]})})]})}function WP({days:e,mailbox:n,mail:s,money:r,pictures:a}){const i=[];(n||s||e)&&i.push("chief-of-staff"),r&&i.push("cfo"),a&&i.push("illustrator");for(const l of["researcher","tutor"])i.length<3&&i.push(l);return i.slice(0,4)}function DK(e,n,s=4){const r=i=>!!i&&Us(i)==="ready"&&i.addable,a=WP(n).map(i=>e.find(l=>l.name===i)).filter(r);for(const i of["researcher","tutor"]){if(a.length>=3)break;const l=e.find(o=>o.name===i);r(l)&&!a.includes(l)&&a.push(l)}return a.slice(0,s)}const pC=["researcher","tutor"];function gC(e,n){return e==="chief-of-staff"?n.days?"because you set up My days":n.mailbox?"because you added a mailbox":"because you set up My mail":e==="cfo"?"because you set up My money":e==="illustrator"?"because you set up Pictures":"popular"}function LK(e,n,s=4){const r=[];for(const a of WP(n).filter(i=>!pC.includes(i))){const i=e.find(h=>h.name===a);if(!i||Us(i)!=="ready")continue;if(i.addable){r.push({entry:i,reason:gC(a,n)});continue}const l=i.missing??[],o=l.find(h=>Qf(h)!==null)??l[0];if(!o)continue;const c=Qf(o),u=c?c.label.charAt(0).toLowerCase()+c.label.slice(1):`${Vb(o)} is here`;r.push({entry:i,reason:gC(a,n),blocked:{step:u,fix:c}})}for(const a of pC){if(r.length>=3)break;const i=e.find(l=>l.name===a);i&&Us(i)==="ready"&&i.addable&&r.push({entry:i,reason:"popular"})}return r.slice(0,s)}const FK={image:"makes pictures",finance:"keeps your books",calendar:"looks after your days",email:"reads your mail"};function HP(e,n){const s=FK[e];return s?`Nobody ${s} yet`:`Nobody uses ${n??e.charAt(0).toUpperCase()+e.slice(1)} yet`}function KP(e,n){const s=e.filter(r=>Object.keys(r.requires??{}).includes(n));if(!s.some(r=>Us(r)!=="ready"&&Us(r)!=="unavailable"))return s.find(r=>Us(r)==="ready")}function xC(e,n){const s=[];for(const r of n){const a=KP(e,r);a&&!s.some(i=>i.entry.name===a.name)&&s.push({plugin:r,entry:a})}return s}const su=e=>`teammate:${e}`;function VP({plugin:e,title:n,navigate:s,dismissible:r=!1}){const[a,i]=d.useState(null),[l,o]=d.useState(!1),[c,u]=d.useState(!1),[h,f]=d.useState(!1);if(d.useEffect(()=>{let p=!1;return Promise.resolve().then(()=>T.catalogue()).then(async x=>{const g=x.unavailable?void 0:KP(x.agents,e);return!g||!r?g??null:(await Promise.resolve().then(()=>T.overview()).then(j=>j.dismissed??{},()=>({})))[su(e)]!==g.name?g:null}).then(x=>{p||i(x)}).catch(()=>{p||i(null)}),()=>{p=!0}},[e,r]),!a||c||h)return null;const m=()=>{f(!0),T.homeDismiss(su(e),a.name).catch(()=>f(!1))};return t.jsxs(t.Fragment,{children:[t.jsx(Q,{action:t.jsxs(ne,{children:[r?t.jsx(A,{size:"sm",variant:"ghost",onClick:m,children:"Not now"}):null,t.jsxs(A,{size:"sm",onClick:()=>o(!0),children:["Add ",a.title]})]}),children:t.jsx("span",{"data-testid":"plugin-teammate",children:HP(e,n)})}),l?t.jsx(Gb,{entry:a,navigate:s,onClose:()=>o(!1),onAdded:()=>{u(!0),window.dispatchEvent(new Event(Ts))}}):null]})}function _K(e,n){const s=e.filter(r=>r.id!==n&&!r.roles.includes(wd)&&!r.roles.includes(Mr));return e.length>0&&s.length<=1}async function zK(e,n=zP){try{const{jobId:s}=await T.catalogueInstall(e.name,{version:e.version,tools:e.tools});for(;;){const r=await T.catalogueJob(s);if(r.state!=="running")return r;await new Promise(a=>setTimeout(a,n))}}catch(s){return{error:s instanceof pe?s.message:String(s)}}}function UK({entry:e,checked:n,onChange:s,reason:r}){return t.jsxs("label",{className:"cat-pick","data-checked":n?"true":void 0,"data-testid":`cat-pick-${e.name}`,children:[t.jsx("input",{type:"checkbox",checked:n,onChange:a=>s(a.target.checked)}),t.jsx(Tl,{entry:e,size:"lg"}),t.jsxs("span",{className:"cat-pick-text",children:[t.jsxs("span",{className:"cat-pick-name",children:[e.title,r?t.jsx("span",{className:"cat-pick-why",children:r}):null]}),t.jsx("span",{className:"cat-pick-pitch",children:e.pitch})]})]})}function BK({suggestion:e,onFix:n}){const{entry:s,reason:r,blocked:a}=e;return t.jsxs("div",{className:"cat-pick","data-blocked":"true","data-testid":`cat-pick-${s.name}`,children:[t.jsx("input",{type:"checkbox",checked:!1,disabled:!0,"aria-label":`${s.title}: not ready yet`,onChange:()=>{}}),t.jsx(Tl,{entry:s,size:"lg"}),t.jsxs("span",{className:"cat-pick-text",children:[t.jsxs("span",{className:"cat-pick-name",children:[s.title," · ready once you ",a==null?void 0:a.step,t.jsx("span",{className:"cat-pick-why",children:r})]}),t.jsx("span",{className:"cat-pick-pitch",children:s.pitch})]}),a!=null&&a.fix?t.jsx(A,{size:"sm",onClick:()=>n(a.fix.route),children:a.fix.label}):null]})}function WK({entry:e,added:n,onOpen:s,onAdd:r,why:a,onDismiss:i}){return t.jsxs("div",{className:"cat-suggest",role:"button",tabIndex:0,"aria-label":`${e.title}: details`,"data-testid":`cat-suggest-${e.name}`,onClick:s,onKeyDown:l=>{l.target===l.currentTarget&&l.key==="Enter"&&s()},children:[t.jsx(Tl,{entry:e,size:"lg"}),t.jsxs("span",{className:"cat-pick-text",children:[t.jsxs("span",{className:"cat-pick-name",children:[e.title,a?t.jsx("span",{className:"cat-pick-why",children:a}):null]}),t.jsx("span",{className:"cat-pick-pitch",children:e.pitch})]}),n?t.jsxs("span",{className:"cat-added",children:[t.jsx(se,{name:"check",size:14}),"Added"]}):t.jsx(A,{size:"sm",variant:"accent","aria-label":`Add ${e.title}`,onClick:l=>{l.stopPropagation(),r()},children:"Add"}),i?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Not now: ${e.title}`,title:"Not now",onClick:l=>{l.stopPropagation(),i()},children:t.jsx(se,{name:"close"})}):null]})}function HK({navigate:e,newTeam:n=!0,closed:s}){const[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState([]),u=qb();d.useEffect(()=>{let m=!1;return T.catalogue().then(p=>{m||a(p.unavailable?[]:p.agents)}).catch(()=>{m||a([])}),()=>{m=!0}},[]);const h=d.useMemo(()=>r===null?[]:xC(r,u).filter(m=>!(s!=null&&s.is(su(m.plugin),m.entry.name))),[r,u,s]),f=d.useMemo(()=>{if(r===null)return null;const m=h.map(g=>g.entry);if(!n)return m;const p=new Set(xC(r,u).filter(g=>s==null?void 0:s.is(su(g.plugin),g.entry.name)).map(g=>g.entry.name)),x=DK(r,{days:!0,mailbox:!0,money:u.has("finance"),pictures:u.has("image")},3+p.size).filter(g=>!m.some(b=>b.name===g.name)&&!p.has(g.name));return[...m,...x].slice(0,Math.max(3,m.length))},[r,u,h,n,s]);return!f||f.length===0?null:t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"cat-suggest-lede",children:"Teammates who could take a job off your hands, from what you set up:"}),t.jsx("div",{className:"cat-suggests","data-testid":"home-suggestions",children:f.map(m=>{const p=h.find(x=>x.entry.name===m.name);return t.jsx(WK,{entry:m,added:o.includes(m.name),onOpen:()=>e(En(m.name)),onAdd:()=>l(m),...p&&s&&!o.includes(m.name)?{onDismiss:()=>s.close(su(p.plugin),m.name),why:HP(p.plugin)}:{}},m.name)})}),i?t.jsx(Gb,{entry:i,navigate:e,onClose:()=>l(null),onAdded:()=>{c(m=>[...m,i.name]),window.dispatchEvent(new Event(Ts))}}):null]})}function KK(){const[e,n]=d.useState(null);return d.useEffect(()=>{let s=!1;const r=()=>{Promise.resolve().then(()=>nt.agents()).then(a=>{s||n(((a==null?void 0:a.agents)??[]).filter(i=>!i.roles.includes(Mr)).map(i=>i.name))}).catch(()=>{s||n(a=>a??[])})};return r(),window.addEventListener(Ts,r),()=>{s=!0,window.removeEventListener(Ts,r)}},[]),e}function VK({setUp:e,navigate:n}){var w;const s=KK(),[r,a]=d.useState(null),[i,l]=d.useState([]),[o,c]=d.useState("picking"),[u,h]=d.useState([]),[f,m]=d.useState([]),p=JSON.stringify(e);d.useEffect(()=>{let S=!1;return T.catalogue().then(C=>{if(S)return;const E=C.unavailable?[]:LK(C.agents,e);a(E),l(E.filter($=>!$.blocked).map($=>$.entry.name))}).catch(()=>{S||a([])}),()=>{S=!0}},[p]);const x=s??[];if(!r||r.length===0&&x.length===0)return null;const g=x.length===0?null:t.jsxs("p",{className:"cat-small","data-testid":"handover-team-now",children:["On your team: ",wn(x),"."]}),b=r.filter(S=>!S.blocked).map(S=>S.entry),j=r.some(S=>!S.blocked&&S.reason!=="popular"),v=()=>n(En()),y=async()=>{c("adding");const S=[],C=[];for(const E of b.filter($=>i.includes($.name))){const $=await zK(E);"error"in $&&!("state"in $)?C.push({entry:E,error:$.error}):$.state==="done"?S.push(E):$.state==="confirm"?C.push({entry:E,error:"it gets more than its card showed, so it waits for your approval in Needs you"}):C.push({entry:E,error:$.error??"it stopped before it finished"})}h(S),m(C),c("added"),S.length>0&&window.dispatchEvent(new Event(Ts))},k=i.length,N=o==="adding"?`Adding ${k===1?((w=b.find(S=>S.name===i[0]))==null?void 0:w.title)??"1":k}…`:k>0&&k===b.length?"Add these":k>0?`Add these ${k}`:"Tick one to add";return t.jsx("section",{className:"handover-team","aria-label":"Who do you want on your team?","data-testid":"handover-team",children:o==="added"?t.jsxs(t.Fragment,{children:[u.length>0?t.jsxs(Q,{tone:"good",role:"status",title:`${wn(u.map(S=>S.title))} ${u.length===1?"is":"are"} on your team.`,action:t.jsx(A,{variant:"ghost",size:"sm",onClick:v,children:"See all teammates"}),children:["Say hello in Chat. ",u.length===1?"Its missions are":"Their missions are"," off until you turn them on."]}):null,f.length>0?t.jsxs(Q,{tone:"critical",role:"alert",title:`${wn(f.map(S=>S.entry.title))} ${f.length===1?"wasn’t":"weren’t"} added.`,action:u.length===0?t.jsx(A,{variant:"ghost",size:"sm",onClick:v,children:"See all teammates"}):void 0,children:[f.map(S=>`${S.entry.title}: ${S.error.replace(/[.\s]+$/,"")}.`).join(" ")," Nothing else changed; try again from the catalogue."]}):null]}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"handover-team-head",children:[t.jsx("h2",{className:"handover-team-title",children:r.length===0?"Your team":"Who do you want on your team?"}),g,r.length===0?null:t.jsx("p",{className:"cat-small",children:j?"Picked from what you just set up. Their plugins are already in, so one click adds them all.":"A few teammates people often start with. One click adds the ones you tick."})]}),r.length===0?null:t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"cat-picks",children:r.map(S=>S.blocked?t.jsx(BK,{suggestion:S,onFix:n},S.entry.name):t.jsx(UK,{entry:S.entry,reason:S.reason,checked:i.includes(S.entry.name),onChange:C=>l(C?[...i,S.entry.name]:i.filter(E=>E!==S.entry.name))},S.entry.name))}),t.jsx("div",{className:"handover-team-foot",children:t.jsxs(ne,{children:[t.jsx(A,{variant:"ghost",onClick:v,children:"See all teammates"}),t.jsx(ft,{}),t.jsx(A,{variant:"accent",disabled:k===0||o==="adding"||b.length===0,onClick:()=>void y(),children:N})]})})]})]})})}const GK=512*1024,qK=/^[A-Za-z0-9+/]*={0,2}$/;function GP(e){const n=e==null?void 0:e.play;if(typeof n!="object"||n===null)return null;const{mime:s,data:r}=n;return typeof s!="string"||!/^audio\/[a-z0-9.+-]+$/i.test(s.split(";")[0].trim())||typeof r!="string"||r===""||!qK.test(r)||Math.floor(r.length*3/4)>GK+2?null:{mime:s,data:r}}function qP(e){const n=e==null?void 0:e.message;return typeof n=="string"&&n.trim()!==""?n:null}let ba=null,ru=null,qu=null;const wj=new Set;function YP(){for(const e of wj)e()}function Bc(){ba&&(ba.onended=null,ba.onerror=null,ba.pause()),ru&&URL.revokeObjectURL(ru),ru=null,qu!==null&&(qu=null,YP())}async function QP(e,n){Bc();const s=atob(e.data),r=new Uint8Array(s.length);for(let a=0;a<s.length;a+=1)r[a]=s.charCodeAt(a);ba??(ba=new Audio),ru=URL.createObjectURL(new Blob([r],{type:e.mime})),qu=n,ba.onended=Bc,ba.onerror=Bc,ba.src=ru,YP();try{await ba.play()}catch{throw Bc(),new Error("The browser would not play the sound.")}}function vC(e){e!==void 0&&qu!==e||Bc()}function YK(){return d.useSyncExternalStore(e=>(wj.add(e),()=>wj.delete(e)),()=>qu,()=>null)}const QK=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],qr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],jC=/^\d{4}-\d{2}-\d{2}$/;function ll(e){return e.split("-").map(Number)}function Ii(e,n){const[s,r,a]=ll(e);return new Date(Date.UTC(s,r-1,a+n)).toISOString().slice(0,10)}function JP(e){const[n,s,r]=ll(e);return new Date(Date.UTC(n,s-1,r)).getUTCDay()}function XP(e){return QK[JP(e)]}function ZP(e){return ll(e)[2]}function yC(e){return Ii(e,-((JP(e)+6)%7))}function cs(e){return nc(e,{weekday:!0,compact:!0})}function JK(e,n){return e===n?`Today · ${cs(e)}`:e===Ii(n,1)?`Tomorrow · ${cs(e)}`:cs(e)}function Ar(e){return bU(e)}const wC=new Map;function bj(e,n){let s=wC.get(n);s||(s=new Intl.DateTimeFormat("en-GB",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}),wC.set(n,s));const r=Object.fromEntries(s.formatToParts(e).map(a=>[a.type,a.value]));return{date:`${r.year}-${r.month}-${r.day}`,minutes:Number(r.hour)*60+Number(r.minute)}}function XK(e,n=new Date){return bj(n,e).date}function ZK(e,n){return e==="week"?{from:yC(n),days:7}:e==="month"?{from:yC(`${n.slice(0,8)}01`),days:42}:{from:n,days:7}}function e9(e,n,s){if(e!=="month")return Ii(n,s*7);const[r,a]=ll(n);return new Date(Date.UTC(r,a-1+s,1)).toISOString().slice(0,10)}function t9(e,n,s,r){const[a,i]=ll(n);if(e==="month")return $R(a,i);const l=Ii(s,r-1),[o,c,u]=ll(s),[h,f,m]=ll(l);return ER().date==="iso"?`${s} – ${l}`:kU()?c===f&&o===h?`${qr[c-1]} ${u} – ${m}, ${h}`:o===h?`${qr[c-1]} ${u} – ${qr[f-1]} ${m}, ${h}`:`${qr[c-1]} ${u}, ${o} – ${qr[f-1]} ${m}, ${h}`:c===f&&o===h?`${u} – ${m} ${qr[f-1]} ${h}`:o===h?`${u} ${qr[c-1]} – ${m} ${qr[f-1]} ${h}`:`${u} ${qr[c-1]} ${o} – ${m} ${qr[f-1]} ${h}`}function Ul(e){return e==null?"":String(e)}function n9(e,n,s,r){const a=[],i=new Set;return e.forEach((l,o)=>{const c=Ul(Re(l,n.id)),u=Ul(Re(l,n.title)),h=Ul(Re(l,n.start)),f=Ul(Re(l,n.end));if(c===""||i.has(c)||h===""){console.warn(`buddi: ${r}: event ${o} has no id, a repeated one, or no start — not drawn`);return}i.add(c);const m=n.allDay===void 0?void 0:Re(l,n.allDay),p=m===void 0?jC.test(h):m===!0||m==="true",x=n.tone===void 0?0:Number(Re(l,n.tone)),g=Number.isFinite(x)?(Math.trunc(x)%4+4)%4:0,b={id:c,title:u,calendar:n.calendar===void 0?"":Ul(Re(l,n.calendar)),tone:g,location:n.location===void 0?"":Ul(Re(l,n.location)),row:l};if(p){const N=h.slice(0,10),w=jC.test(f.slice(0,10))&&f.slice(0,10)>N?f.slice(0,10):Ii(N,1);a.push({...b,allDay:!0,startDate:N,startMin:0,endDate:w,endMin:0});return}const j=new Date(h);if(Number.isNaN(j.getTime())){console.warn(`buddi: ${r}: event ${o} starts at "${h}", which is not a time — not drawn`);return}const v=new Date(f),y=bj(j,s),k=Number.isNaN(v.getTime())||v<j?y:bj(v,s);a.push({...b,allDay:!1,startDate:y.date,startMin:y.minutes,endDate:k.date,endMin:k.minutes})}),a}function s9(e,n){if(e.allDay)return n>=e.startDate&&n<e.endDate?{from:0,to:1440,allDay:!0}:null;if(n<e.startDate||n>e.endDate)return null;const s=n===e.startDate?e.startMin:0,r=n===e.endDate?e.endMin:1440,a=e.startDate===e.endDate&&e.startMin===e.endMin;return r<=s&&!(a&&n===e.startDate)?null:{from:s,to:r,allDay:s===0&&r===1440}}function Qb(e,n){return e.map(s=>({event:s,part:s9(s,n)})).filter(s=>s.part!==null).sort((s,r)=>Number(r.part.allDay)-Number(s.part.allDay)||s.part.from-r.part.from||r.part.to-s.part.to)}function Jb(e,n){if(n.allDay)return"All day";const s=e.startDate!==e.endDate;return s&&n.from===0?`until ${Ar(n.to)}`:s&&n.to===1440?`from ${Ar(n.from)}`:n.from===n.to?Ar(n.from):`${Ar(n.from)}–${Ar(n.to)}`}function kj(e,n,s){return[Jb(e,n),e.title,e.location,e.calendar,cs(s)].filter(Boolean).join(", ")}const eM=30;function r9(e){const n=[];let s=[],r=-1;const a=[],i=()=>{const l=Math.max(1,...s.map(o=>o.lane+1));for(const o of s)n.push({...o,lanes:l});s=[],a.length=0};for(const l of e){const o=Math.max(l.part.to,l.part.from+eM);s.length>0&&l.part.from>=r&&i();let c=a.findIndex(u=>u<=l.part.from);c===-1?(c=a.length,a.push(o)):a[c]=o,s.push({...l,lane:c,lanes:1}),r=Math.max(r,o)}return s.length>0&&i(),n}function a9(e){if(e<60)return`${e} min`;const n=Math.floor(e/60),s=e%60;return s===0?`${n} h`:`${n} h ${String(s).padStart(2,"0")}`}function i9(e){if(e.allDay){const a=Ii(e.endDate,-1);return a>e.startDate?`${cs(e.startDate)} – ${cs(a)} · all day`:`${cs(e.startDate)} · all day`}const n=Math.round((Date.parse(`${e.endDate}T00:00:00Z`)-Date.parse(`${e.startDate}T00:00:00Z`))/864e5),s=n*1440+e.endMin-e.startMin,r=n===0?`${cs(e.startDate)} · ${Ar(e.startMin)}–${Ar(e.endMin)}`:`${cs(e.startDate)} ${Ar(e.startMin)} – ${cs(e.endDate)} ${Ar(e.endMin)}`;return s>0?`${r} · ${a9(s)}`:r}const Nj="buddi:ask";function l9(e){const n={text:e,handled:!1};return window.dispatchEvent(new CustomEvent(Nj,{detail:n})),n.handled}const o9={week:"Week",month:"Month",list:"List"},c9=["week","month","list"],u9="(max-width: 720px)";function d9(e){try{return window.localStorage.getItem(e)}catch{return null}}function h9(e,n){try{window.localStorage.setItem(e,n)}catch{}}function f9(e){const n=e.views&&e.views.length>0?e.views:c9,s=ts(u9),[r,a]=d.useState(()=>{const p=d9(e.storageKey);return p!==null&&n.includes(p)?p:null}),i=s&&n.includes("list")?"list":e.default&&n.includes(e.default)?e.default:n[0],l=r??i,[o,c]=d.useState(e.today),[u,h]=d.useState(null),{from:f,days:m}=ZK(l,o);return{views:n,view:l,setView:p=>{a(p),h9(e.storageKey,p),h(null)},anchor:o,today:e.today,go:p=>{c(p===0?e.today:e9(l,o,p)),h(null)},from:f,days:m,to:Ii(f,m),selected:u,select:h}}function m9({state:e,events:n,hours:s,empty:r,label:a,onEvent:i,count:l}){const{view:o,anchor:c,today:u,from:h,days:f}=e,m=d.useMemo(()=>Array.from({length:f},(j,v)=>Ii(h,v)),[h,f]),p=o==="month"?"month":"week",x=e.selected??(c.slice(0,7)===u.slice(0,7)?u:`${c.slice(0,8)}01`),g=o==="month"?x:o==="week"&&!i?e.selected:null,b=j=>{if(!j.target.closest('input, textarea, select, [contenteditable="true"]')&&!(j.altKey||j.ctrlKey||j.metaKey)){if(j.key==="ArrowLeft")e.go(-1);else if(j.key==="ArrowRight")e.go(1);else if(j.key==="t"||j.key==="T")e.go(0);else return;j.preventDefault()}};return t.jsxs("div",{className:"cal",role:"region","aria-label":a,tabIndex:0,onKeyDown:b,children:[t.jsxs("div",{className:"cal-bar",children:[t.jsx(A,{size:"sm","aria-label":`Previous ${p}`,onClick:()=>e.go(-1),children:t.jsx(se,{name:"chevron-left",size:14})}),t.jsx(A,{size:"sm",onClick:()=>e.go(0),children:"Today"}),t.jsx(A,{size:"sm","aria-label":`Next ${p}`,onClick:()=>e.go(1),children:t.jsx(se,{name:"chevron-right",size:14})}),t.jsxs("h3",{className:"cal-title","aria-live":"polite",children:[t9(o,c,h,f),l!==void 0?t.jsx("span",{className:"cal-count",children:l===0?"No events":l===1?"1 event":`${l} events`}):null]}),e.views.length>1?t.jsx(dn,{label:"View",options:e.views.map(j=>({value:j,label:o9[j]})),value:o,onChange:e.setView}):null]}),o==="week"?t.jsx(p9,{dates:m,today:u,events:n,hours:s??[7,21],onPick:e.select,onEvent:i}):null,o==="month"?t.jsx(x9,{dates:m,month:c.slice(0,7),today:u,events:n,selected:x,onPick:e.select,onEvent:i}):null,o==="list"?t.jsx("div",{className:"cal-list",children:m.map(j=>t.jsx(bC,{date:j,today:u,events:n,empty:r,onEvent:i},j))}):null,g?t.jsx(bC,{date:g,today:u,events:n,empty:r,onEvent:i}):null]})}function bC({date:e,today:n,events:s,empty:r,onEvent:a}){const i=Qb(s,e);return t.jsx(lt,{flush:!0,title:JK(e,n),children:t.jsx(yt,{children:i.length===0?t.jsx(gt,{title:t.jsx("span",{className:"muted",children:r})}):i.map(({event:l,part:o})=>t.jsx(gt,{lead:t.jsx("span",{className:"cal-dot","data-tone":l.tone,"aria-hidden":"true"}),title:l.title,sub:l.location||void 0,side:Jb(l,o),...a?{onClick:()=>a(l)}:{}},l.id))})})}function p9({dates:e,today:n,events:s,hours:r,onPick:a,onEvent:i}){const l=d.useRef(null);d.useLayoutEffect(()=>{const h=l.current;h&&(h.scrollTop=h.scrollHeight/24*r[0])},[r[0]]);const o=v9(l),c=e.map(h=>({date:h,items:Qb(s,h)})),u=h=>h===n?"true":void 0;return t.jsx(lt,{flush:!0,children:t.jsxs("div",{className:"cal-week",role:"grid","aria-label":`Week of ${cs(e[0])}`,style:{"--cal-span":r[1]-r[0],"--cal-scrollbar":`${o}px`},children:[t.jsxs("div",{className:"cal-row",role:"row",children:[t.jsx("span",{className:"cal-gutter","aria-hidden":"true"}),e.map(h=>t.jsxs("div",{className:"cal-day-head",role:"columnheader","data-today":u(h),"aria-label":cs(h),children:[t.jsx("span",{className:"cal-wd",children:XP(h)}),t.jsx("span",{className:"cal-num",children:ZP(h)})]},h))]}),t.jsxs("div",{className:"cal-row cal-allday",role:"row",children:[t.jsx("span",{className:"cal-gutter cal-gutter-label",children:"All day"}),c.map(({date:h,items:f})=>t.jsx("div",{className:"cal-allday-cell",role:"gridcell","data-today":u(h),children:f.filter(m=>m.part.allDay).map(({event:m,part:p})=>t.jsx("button",{type:"button",className:"cal-chip","data-tone":m.tone,"aria-label":kj(m,p,h),onClick:()=>i?i(m):a(h),children:m.title},m.id))},h))]}),t.jsx("div",{className:"cal-scroll",ref:l,children:t.jsxs("div",{className:"cal-row cal-times",role:"row",children:[t.jsx("div",{className:"cal-gutter cal-hours","aria-hidden":"true",children:Array.from({length:23},(h,f)=>f+1).map(h=>t.jsx("span",{className:"cal-hour-label",style:{top:`calc(var(--cal-hour) * ${h})`},children:Ar(h*60)},h))}),c.map(({date:h,items:f})=>t.jsx("div",{className:"cal-col",role:"gridcell","aria-label":cs(h),"data-today":u(h),children:r9(f.filter(m=>!m.part.allDay)).map(({event:m,part:p,lane:x,lanes:g})=>t.jsxs("button",{type:"button",className:"cal-event","data-tone":m.tone,"data-short":p.to-p.from<60?"true":void 0,"data-lane":x,"aria-label":kj(m,p,h),onClick:()=>i?i(m):a(h),style:{top:`calc(var(--cal-hour) * ${p.from/60})`,height:`calc(var(--cal-hour) * ${Math.max(p.to-p.from,eM)/60})`,left:`calc((100% - var(--space-1)) * ${x/g} + var(--space-0))`,width:`calc((100% - var(--space-1)) / ${g} - var(--space-0))`},children:[t.jsx("span",{className:"cal-event-time",children:Jb(m,p)}),t.jsx("span",{className:"cal-event-title",children:m.title})]},m.id))},h))]})})]})})}const g9=3;function x9({dates:e,month:n,today:s,events:r,selected:a,onPick:i,onEvent:l}){const o=Array.from({length:6},(f,m)=>e.slice(m*7,m*7+7)),[c,u]=n.split("-").map(Number),h=$R(c,u);return t.jsx(lt,{flush:!0,children:t.jsxs("div",{className:"cal-month",role:"grid","aria-label":h,children:[t.jsx("div",{className:"cal-row",role:"row",children:e.slice(0,7).map(f=>t.jsx("div",{className:"cal-wd-head",role:"columnheader",children:XP(f)},f))}),o.map(f=>t.jsx("div",{className:"cal-row",role:"row",children:f.map(m=>{const p=Qb(r,m),x=p.slice(0,g9),g=p.length-x.length,b=p.length===0?"nothing":p.length===1?"1 event":`${p.length} events`;return t.jsxs("div",{className:"cal-cell",role:"gridcell","aria-selected":m===a,"data-date":m,"data-today":m===s?"true":void 0,"data-outside":m.slice(0,7)!==n?"true":void 0,"data-selected":m===a?"true":void 0,onClick:()=>i(m),children:[t.jsx("button",{type:"button",className:"cal-num","aria-label":`${cs(m)}, ${b}`,"aria-pressed":m===a,children:ZP(m)}),x.map(({event:j,part:v})=>t.jsx("button",{type:"button",className:"cal-chip","data-tone":j.tone,"data-timed":v.allDay?void 0:"true","aria-label":kj(j,v,m),...l?{onClick:y=>{y.stopPropagation(),i(m),l(j)}}:{},children:v.allDay?j.title:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"cal-dot","data-tone":j.tone,"aria-hidden":"true"}),t.jsx("span",{className:"cal-chip-time",children:Ar(v.from)})," ",j.title]})},j.id)),g>0?t.jsxs("button",{type:"button",className:"cal-more","aria-label":`${g} more on ${cs(m)}`,children:["+",g]}):null]},m)})},f[0]))]})})}function v9(e){const[n,s]=d.useState(0);return d.useLayoutEffect(()=>{const r=e.current;if(!r)return;const a=()=>s(Math.max(0,r.offsetWidth-r.clientWidth));if(a(),typeof ResizeObserver>"u")return;const i=new ResizeObserver(a);return i.observe(r),()=>i.disconnect()},[e]),n}const tM={width:1200,height:200,top:28,right:12,bottom:24,left:36};function j9(e,n){if(n==="percent")return[0,50,100];let s=e.length>0?Math.min(...e):0,r=e.length>0?Math.max(...e):1;n!=="temp"&&(s=Math.min(0,s)),s===r&&(s-=1,r+=1);const a=10**Math.floor(Math.log10(Math.max(1,(r-s)/3))),i=c=>Math.ceil(r/c)-Math.floor(s/c);let l=[1,2,5,10].map(c=>c*a).find(c=>i(c)<=3)??a*10;i(l)<2&&(l>1?l/=2:r+=l);const o=[];for(let c=Math.floor(s/l)*l;c<=Math.ceil(r/l)*l+l/1e3;c+=l)o.push(Math.round(c*1e6)/1e6);return o}function mh(e,n){return n==="temp"?`${e}°`:n==="percent"?`${e}%`:String(e)}function y9(e){const n=tM,s=e.values.length,r=n.width-n.left-n.right,a=n.height-n.top-n.bottom,i=n.height-n.bottom,l=s>0?r/s:r,o=j=>qi(n.left+l*(j+.5)),c=e.values.filter(j=>j!==null&&Number.isFinite(j)),u=j9(c,e.unit),h=u[0],f=u[u.length-1],m=j=>qi(n.top+a-(j-h)/(f-h)*a),p=e.values.map((j,v)=>{const y=j!==null&&Number.isFinite(j);return{index:v,x:o(v),y:y?m(j):null,value:y?j:null}}),x=[],g=[];if(e.kind==="area"){let j=[];const v=()=>{if(j.length===0)return;const y=j.map((k,N)=>`${N===0?"M":"L"}${k.x},${k.y}`).join(" ");x.push(y),g.push(`${y} L${j[j.length-1].x},${i} L${j[0].x},${i} Z`),j=[]};for(const y of p)y.y===null?v():j.push(y);v()}const b=e.kind==="bars"?p.flatMap(j=>j.y===null?[]:[{index:j.index,x:qi(j.x-l*.28),y:j.y,width:qi(l*.56),height:qi(i-j.y)}]):[];return{ticks:u.map(j=>({value:j,y:m(j)})),lines:x,areas:g,bars:b,points:p,slot:l,floor:i}}function w9({title:e,note:n,xs:s,series:r,tiles:a,labelEvery:i=3}){var N;const[l,o]=d.useState(((N=r[0])==null?void 0:N.id)??""),[c,u]=d.useState(null),[h,f]=d.useState(null),m=d.useRef(null),p=s.length,x=c??h,g=r.find(w=>w.id===l)??r[0],b=y9(g),j=tM,v=w=>w%i===0||w===x,y=g.values.filter(w=>w!==null&&Number.isFinite(w));d.useEffect(()=>{const w=m.current,S=x===null?null:w==null?void 0:w.children[x];!w||!S||typeof w.scrollTo!="function"||(S.offsetLeft<w.scrollLeft?w.scrollTo({left:S.offsetLeft,behavior:"smooth"}):S.offsetLeft+S.offsetWidth>w.scrollLeft+w.clientWidth&&w.scrollTo({left:S.offsetLeft+S.offsetWidth-w.clientWidth,behavior:"smooth"}))},[x]);const k=w=>{var E,$,R;const S=w.key==="ArrowRight"?1:w.key==="ArrowLeft"?-1:0,C=w.key==="Home"?0:w.key==="End"?p-1:S===0?null:Math.max(0,Math.min(p-1,(h??-S)+S));C!==null&&(w.preventDefault(),f(C),(R=($=(E=m.current)==null?void 0:E.children[C])==null?void 0:$.querySelector("button"))==null||R.focus())};return t.jsxs(lt,{...e?{title:e}:{},children:[n?t.jsx("p",{className:"ui-panel-sub",children:n}):null,t.jsxs("div",{className:"pg-series",onMouseLeave:()=>u(null),children:[r.length>1?t.jsx("div",{className:"pg-series-tabs",role:"tablist","aria-label":"Series",children:r.map(w=>t.jsx("button",{type:"button",role:"tab",className:"ui-tab","aria-selected":w.id===g.id,onClick:()=>o(w.id),children:w.label},w.id))}):null,t.jsxs("figure",{className:"pg-series-chart","data-kind":g.kind,children:[t.jsxs("svg",{viewBox:`0 0 ${j.width} ${j.height}`,"aria-hidden":"true",focusable:"false","data-testid":"series-svg",children:[b.ticks.map(w=>t.jsxs("g",{children:[t.jsx("line",{className:"pg-series-grid",x1:j.left,x2:j.width-j.right,y1:w.y,y2:w.y}),t.jsx("text",{className:"pg-series-tick",x:j.left-8,y:w.y,textAnchor:"end",dominantBaseline:"middle",children:mh(w.value,g.unit)})]},w.value)),b.areas.map((w,S)=>t.jsx("path",{className:"pg-series-area",d:w},`a${S}`)),b.lines.map((w,S)=>t.jsx("path",{className:"pg-series-line",d:w},`l${S}`)),b.bars.map(w=>t.jsx("rect",{className:"pg-series-bar","data-index":w.index,"data-hover":w.index===x?"true":void 0,x:w.x,y:w.y,width:w.width,height:w.height},w.index)),x!==null&&b.points[x]?t.jsx("line",{className:"pg-series-guide","data-index":x,x1:b.points[x].x,x2:b.points[x].x,y1:j.top-4,y2:b.floor}):null,g.kind==="area"?b.points.map(w=>w.y!==null&&v(w.index)?t.jsx("circle",{className:"pg-series-dot","data-index":w.index,"data-hover":w.index===x?"true":void 0,cx:w.x,cy:w.y,r:w.index===x?5:3},w.index):null):null,b.points.map(w=>w.y!==null&&w.value!==null&&v(w.index)?t.jsx("text",{className:"pg-series-value","data-index":w.index,"data-hover":w.index===x?"true":void 0,x:w.x,y:w.y-(g.kind==="area"?10:6),textAnchor:"middle",children:mh(w.value,g.unit)},w.index):null),b.points.map(w=>w.index%i===0?t.jsx("text",{className:"pg-series-x",x:w.x,y:j.height-6,textAnchor:"middle",children:s[w.index]},w.index):null),b.points.map(w=>t.jsx("rect",{className:"pg-series-hit","data-index":w.index,x:qi(j.left+b.slot*w.index),y:0,width:qi(b.slot),height:j.height,onMouseEnter:()=>u(w.index),onClick:()=>f(w.index)},w.index))]}),t.jsx("figcaption",{className:"sr-only",children:y.length===0?`${g.label}: no values.`:`${g.label}, ${p} ${p===1?"point":"points"} from ${s[0]} to ${s[p-1]}: lowest ${mh(Math.min(...y),g.unit)}, highest ${mh(Math.max(...y),g.unit)}.`})]}),t.jsx("ul",{className:"wb-tiles","data-layout":"strip",ref:m,onKeyDown:k,children:a.map((w,S)=>t.jsx("li",{className:"wb-tile",children:t.jsx("button",{type:"button",className:"ui-card","data-index":S,"data-hover":S===x?"true":void 0,"aria-pressed":S===h,"aria-label":[w.label,w.value,...w.lines].filter(C=>C!=="").join(", "),onMouseEnter:()=>u(S),onClick:()=>f(S),children:t.jsxs("div",{className:"wb-tile-body","aria-hidden":"true",children:[t.jsx("span",{className:"wb-tile-icon","data-icon":w.icon??"dot",children:t.jsx(se,{name:dc(w.icon),size:22})}),w.value!==""?t.jsx("span",{className:"wb-tile-value tnum",children:w.value}):null,t.jsx("span",{className:"wb-tile-label",children:w.label}),w.lines.map((C,E)=>t.jsx("span",{className:"wb-tile-line",children:C},E))]})})},S))})]})]})}function qi(e){return Math.round(e*10)/10}function nM(e){const n=()=>{document.visibilityState==="hidden"&&e()};return document.addEventListener("visibilitychange",n),window.addEventListener("blur",e),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("blur",e)}}function b9(e,n){d.useEffect(()=>{if(e)return nM(()=>n())},[e])}function Xb(){const[e,n]=d.useState(!1);return b9(e,()=>n(!1)),[e,()=>n(s=>!s)]}const kC=5*6e4;let sM=0,ph,$c;const Sj=new Set;function k9(){for(const e of Sj)e()}function Cj(e,n=Date.now()){ph!==void 0&&clearTimeout(ph),ph=void 0,sM=e?n+kC:0,e&&(ph=setTimeout(()=>Cj(!1),kC)),e&&!$c&&typeof window<"u"&&($c=nM(()=>Cj(!1))),!e&&$c&&($c(),$c=void 0),k9()}function Fg(){return sM>0}function N9(e){return Sj.add(e),()=>Sj.delete(e)}function Zb(){return[d.useSyncExternalStore(N9,Fg,Fg),()=>Cj(!Fg())]}const Sp=d.createContext(null),Zf=d.createContext(!1);function jt(){const e=d.useContext(Sp);if(!e)throw new Error("a plugin page component outside a plugin page");return e}function em(e,n=new Set){if(Array.isArray(e))for(const s of e)em(s,n);else if(e&&typeof e=="object"){const s=e.query;typeof s=="string"&&n.add(s);for(const r of Object.values(e))em(r,n)}return n}function rM(e,n){if(n.size===0)return!1;for(const s of em(e))if(n.has(s))return!0;return!1}function S9(e,n){var s;for(const r of em(e))if((((s=n[r])==null?void 0:s.length)??0)>0)return!0;return!1}function C9(){const[e,n]=Zb();return t.jsx(Fb,{shown:e,onToggle:n,show:"Show amounts",hide:"Hide amounts"})}function aM({revealed:e,onToggle:n}){return t.jsx(Fb,{size:"sm",shown:e,onToggle:n})}function iM(){return t.jsx("p",{className:"muted",children:"Hidden until you show it."})}function lM({children:e}){const[n,s]=Xb();return t.jsxs(de,{gap:"sm",children:[t.jsx(ne,{align:"end",children:t.jsx(aM,{revealed:n,onToggle:s})}),n?t.jsx(Zf.Provider,{value:!0,children:e}):t.jsx(iM,{})]})}function ek(e){return e===void 0||e==="neutral"?void 0:e}function Ej(e){return ek(e)}function E9(e){const n=ek(e);return n==="accent"?void 0:n}function Ht(e,n){if(!n)return!0;const s=Re(e,n.path),r=n.in!==void 0?n.in.includes(s):s===n.equals;return n.not===!0?!r:r}function tm(e){if(typeof e!="string"||e.length>2048)return null;try{const n=new URL(e);return n.protocol==="https:"&&n.hostname!==""&&n.username===""&&n.password===""?n.href:null}catch{return null}}function A9({plugin:e,images:n,row:s}){const a=(Array.isArray(n)?n.map(l=>({asset:He(s,l.asset),label:String(He(s,l.label)??"").trim()})):(()=>{const l=Re(s,n.from);return(Array.isArray(l)?l:[]).map(o=>({asset:Re(o,n.asset),label:String(Re(o,n.label)??"").trim()}))})()).filter(l=>l.label!=="");if(a.length===0)return null;const i=a.length===1?a[0].label:`${a[0].label} and ${a.length-1} more`;return t.jsxs("span",{className:"pl-stack","data-testid":"row-images",children:[t.jsx("span",{className:"pl-stack-logos",children:a.slice(0,3).map((l,o)=>t.jsx($l,{src:Al(e,l.asset),label:l.label},o))}),t.jsx("span",{className:"pl-stack-words",children:i})]})}function Fo({href:e,children:n,className:s}){return t.jsxs("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:s,onClick:r=>r.stopPropagation(),children:[n,t.jsx("span",{className:"wb-src-out","aria-hidden":"true",children:"↗"}),t.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})}function Ua(e,n,s){if("href"in n)return tm(He(s,n.href))??"";if("chat"in n){const o=He(s,n.chat);return o==null?"":ht(String(o))}if("proposals"in n)return jW(e.plugin);const r=e.pages.find(o=>o.id===n.page);if((r==null?void 0:r.place)==="settings")return Dr(e.plugin,n.page);const a=n.item===void 0?null:He(s,n.item),i=Or(e.plugin,n.page,a==null?null:String(a)),l=new URLSearchParams;for(const[o,c]of Object.entries(n.params??{})){const u=He(s,c);u!=null&&l.set(o,String(u))}return l.size?`${i}?${l}`:i}function ks(e,n){return e.replace(/\{count\}/g,String(n.count??0)).replace(/\{([^{}|]+)\|([^{}|]+)\}/g,(s,r,a)=>(n.count??0)===1?r:a).replace(/\{([A-Za-z_][A-Za-z0-9_.]*)\}/g,(s,r)=>{const a=Re(n.row,r);return a==null?"":String(a)})}function nm(e,n){if(e===void 0)return;if(typeof e=="string")return e;const s=He(n,e);return s==="good"||s==="warning"||s==="critical"||s==="neutral"?s:void 0}function oM(e,n,s){const r={};for(const[a,i]of Object.entries(e??{})){let l;"param"in i?l=s.params[i.param]:"route"in i?l=i.route==="plugin"?s.plugin:i.route==="page"?s.page:s.item:l=He(hi(n),i),!(l==null||l==="")&&(r[a]=String(l))}return r}function Js(e,n){var r,a,i;const s={};for(const[l,o]of Object.entries(e??{}))if("row"in o)s[l]=Re(hi(n.row),o.row);else if("choice"in o)s[l]=n.choice;else if("field"in o){if((r=n.omit)!=null&&r.has(o.field))continue;const c=(a=n.fields)==null?void 0:a[o.field],u=(i=n.shape)==null?void 0:i.find(h=>h.name===o.field);if(c===""&&(u==null?void 0:u.required)!==!0&&(u===void 0||u.type==="number"))continue;s[l]=c}else"selected"in o?s[l]=n.selected??[]:"param"in o?s[l]=n.scope.params[o.param]:s[l]=He(hi(n.data),o);return s}function bn(e,n,s,r){const a=jt(),i=e?oM(e.params,n,a):{},l=e?{...i,...r}:{},o=JSON.stringify([(e==null?void 0:e.query)??null,i]),c=JSON.stringify([(e==null?void 0:e.query)??null,l,a.version]),u=ve(()=>e?T.pageQuery(a.plugin,e.query,l).then(x=>({asked:o,data:x.data})):Promise.resolve({asked:o,data:void 0}),[c],s),h=u.data!==void 0&&u.data.asked===o,f=e&&!a.amountsShown?a.sensitivePaths[e.query]:void 0,m=h?u.data.data:void 0;return{data:d.useMemo(()=>oK(m,f),[m,f]),error:h||!u.loading?u.error:null,loading:u.loading}}function pa(){const e=jt(),n=d.useId(),[s,r]=d.useState(null),[a,i]=d.useState(null),[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(null),[m,p]=d.useState(0),x=(y,k)=>{if(y.done===void 0)return null;if(typeof y.done=="string")return y.done;const N=He(k,y.done);return N==null?null:String(N)},g=(y,k,N)=>{p(S=>S+1);const w=y??"refresh";if(typeof w=="object"){const S="href"in w.route?"":Ua(e,w.route,k);S===""?e.refresh():e.navigate(S);return}w==="close"&&(N==null||N()),e.refresh()},b=async(y,k,N)=>{r(y.tool),i(null),o(null);try{const w=await T.pageAct(e.plugin,{tool:y.tool,args:k});if(w.approvalId)return u(w.approvalId),f({then:y.then,ref:y,...N?{onDone:N}:{}}),!1;u(null),f(null);const S=GP(w.result);return o(x(y,w.result)??(S?qP(w.result):null)),S&&await QP(S,n),g(y.then,w.result,N),!0}catch(w){return i(w instanceof Error?w.message:String(w)),e.refresh(),!1}finally{r(null)}},j=y=>{if(!y){e.refresh();return}const k=h;if(u(null),f(null),k&&y.decision==="approve"&&y.state==="succeeded"){o(x(k.ref,y.result)),g(k.then,void 0,k.onDone);return}e.refresh()},v=()=>{i(null),o(null)};return{running:s,busy:s!==null,error:a,done:l,approvalId:c,waiting:(h==null?void 0:h.ref.pending)??null,settle:j,run:b,reset:v,happened:m}}function Pi({action:e,args:n,disabled:s,running:r,count:a,row:i,onRun:l}){const[o,c]=d.useState(!1),u=s===!0||$j(n),h=m=>ks(m,{...a===void 0?{}:{count:a},row:i}),f=h(e.label);return o&&e.confirm?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"ui-toolbar-note",children:h(e.confirm)}),t.jsx(A,{variant:"ghost",onClick:()=>c(!1),children:"Cancel"}),t.jsxs(A,{variant:e.tone==="danger"?"danger":"accent",disabled:u,onClick:()=>{c(!1),l(e,n)},children:["Yes, ",f.toLowerCase()]})]}):t.jsx(A,{variant:e.tone==="danger"?"danger":e.tone==="accent"?"accent":void 0,disabled:u,onClick:()=>e.confirm?c(!0):l(e,n),children:r&&e.busy?e.busy:f})}function sm({id:e,onDecided:n}){const s=jt(),r=ve(()=>T.approval(e),[e,s.version]),{busy:a,note:i,failure:l,decide:o}=zb(c=>{n?n(c):s.refresh()});return r.error?t.jsx(re,{message:r.error}):r.data?t.jsxs(de,{children:[t.jsx(Ub,{action:r.data,timezone:s.timezone,busy:a===e,onDecide:(c,u,h,f)=>{o(c,u,h,f)}}),i?t.jsx(Q,{tone:"good",role:"status",children:i}):null,t.jsx(re,{message:l})]}):t.jsx(Ce,{children:"Loading the approval…"})}function Fr({act:e}){return e.error?t.jsx(re,{message:e.error}):e.approvalId?e.waiting?t.jsxs(de,{children:[t.jsx(Q,{role:"status",children:e.waiting}),t.jsx(sm,{id:e.approvalId,onDecided:e.settle})]}):t.jsx(sm,{id:e.approvalId,onDecided:e.settle}):e.done?t.jsx(Q,{tone:"good",role:"status",children:e.done}):null}function Aj(e,n){const s={};for(const r of e){const a=r.from===void 0?void 0:Re(n,r.from);s[r.name]=r.multiple?Array.isArray(a)?a.map(String):[]:a!==void 0?a:r.type==="checkbox"?!1:""}return s}function $j(e){return e===yi?!0:Array.isArray(e)?e.some($j):e!==null&&typeof e=="object"?Object.values(e).some($j):!1}function tk(e,n){const s=Aj(e,n),r=JSON.stringify(s),[a,i]=d.useState(()=>({values:s,base:s,key:r}));let l=a;if(a.key!==r){const c={...a.values};for(const u of e)JSON.stringify(a.values[u.name])!==JSON.stringify(a.base[u.name])||(c[u.name]=s[u.name]);l={values:c,base:s,key:r},i(l)}const o=(c,u)=>i(h=>({...h,values:{...h.values,[c]:u}}));return[l.values,o]}function cM(e,n,s){const r=jt(),a=e.optionsFrom,i=a?{...oM(a.query.params,s,r),...Object.fromEntries((a.dependsOn??[]).map(c=>[c,String(n[c]??"")]).filter(([,c])=>c!==""))}:{},l=JSON.stringify([(a==null?void 0:a.query.query)??null,i,r.version]),o=ve(()=>a?T.pageQuery(r.plugin,a.query.query,i).then(c=>c.data):Promise.resolve(void 0),[l]);return a?{options:_r(o.data,a.rows).map(c=>({value:String(Re(c,a.value)??""),label:String(Re(c,a.label)??"")})),loading:o.loading}:{options:e.options??[],loading:!1}}function $9({field:e,fields:n,value:s,values:r,data:a,disabled:i,compact:l,onChange:o}){const c=cM(e,r,a),u={id:`f-${e.name}`,required:e.required,name:e.name,disabled:i,...l&&e.hint?{title:e.hint}:{}},h=l?void 0:e.hint;if(e.type==="select"&&e.multiple){const m=Array.isArray(s)?s.map(String):[],x=e.max!==void 0&&m.length>=e.max?`Up to ${e.max}; remove one to add another.`:void 0;return t.jsx(le,{label:e.label,hint:l?void 0:[h,x].filter(Boolean).join(" ")||void 0,group:!0,children:t.jsx(UW,{id:u.id,label:e.label,options:c.options,value:m,max:e.max,disabled:i,onChange:o})})}if(e.type==="select"){const m=t.jsxs("select",{...u,value:String(s??""),onChange:p=>o(p.target.value),children:[t.jsx("option",{value:"",children:c.loading?"Loading…":"—"}),c.options.map(p=>t.jsx("option",{value:p.value,children:p.label},p.value))]});return e.action&&!l?t.jsx(T9,{field:e,action:e.action,fields:n??[e],values:r,data:a,disabled:i,hint:h,children:m}):t.jsx(le,{label:e.label,hint:h,children:m})}if(e.type==="textarea")return t.jsx(le,{label:e.label,hint:h,wide:!0,children:t.jsx("textarea",{...u,value:String(s??""),onChange:m=>o(m.target.value),rows:6})});if(e.type==="checkbox")return t.jsx(le,{label:e.label,hint:h,inline:!0,wide:!l,children:t.jsx("input",{...u,type:"checkbox",checked:s===!0,onChange:m=>o(m.target.checked)})});const f=e.type==="secret"?"password":e.type==="number"?"number":e.type;return t.jsx(le,{label:e.label,hint:h,children:t.jsx("input",{...u,type:f,value:s==null?"":String(s),min:e.min,max:e.max,step:e.step,...l&&e.hint?{placeholder:e.hint}:{},onChange:m=>o(e.type==="number"?R9(m.target.value):m.target.value)})})}function T9({field:e,action:n,fields:s,values:r,data:a,disabled:i,hint:l,children:o}){const c=jt(),u=d.useId(),h=YK()===u,[f,m]=d.useState(!1),[p,x]=d.useState(null),[g,b]=d.useState(null),[j,v]=d.useState(null);d.useEffect(()=>()=>vC(u),[u]);const y=nk(s,r,a),k=n.args!==void 0?Js(n.args,{data:a,fields:r,shape:s,omit:y,scope:c}):Object.fromEntries(Object.entries(r).filter(([S,C])=>!y.has(S)&&C!=="")),N=async()=>{if(h){vC(u);return}m(!0),x(null),b(null),v(null);try{const S=await T.pageAct(c.plugin,{tool:n.tool,args:k});if(S.approvalId){v(S.approvalId);return}x(qP(S.result));const C=GP(S.result);C&&await QP(C,u)}catch(S){b(S instanceof Error?S.message:String(S))}finally{m(!1)}},w=h?"Stop":n.label;return t.jsx(le,{label:e.label,hint:l,action:t.jsx(A,{"data-shape":"icon","aria-label":f?`${n.label}: working`:w,title:w,"aria-busy":f||void 0,"aria-pressed":n.icon==="play"?h:void 0,disabled:i===!0||f,onClick:()=>void N(),children:f?t.jsx("span",{className:"ui-spinner","aria-hidden":"true"}):t.jsx(se,{name:h?"stop":n.icon??"arrow"})}),after:g?t.jsx(re,{message:g}):j?t.jsx(sm,{id:j,onDecided:()=>v(null)}):p?t.jsx("span",{className:"ui-field-hint",role:"status",children:p}):null,children:o})}function R9(e){if(e.trim()==="")return"";const n=Number(e);return Number.isFinite(n)?n:e}function uM(e,n){return{...typeof n=="object"&&n!==null?n:{},...e}}function nk(e,n,s){const r=uM(n,s);return new Set(e.filter(a=>a.when!==void 0&&!Ht(r,a.when)||a.disabledWhen!==void 0&&Ht(r,a.disabledWhen)).map(a=>a.name))}function Cp({fields:e,values:n,data:s,disabled:r,compact:a,columns:i,onChange:l}){const o=uM(n,s);return t.jsx(Ks,{dense:a,columns:i,children:e.filter(c=>c.when===void 0||Ht(o,c.when)).map(c=>t.jsx($9,{field:c,fields:e,compact:a,value:n[c.name],values:n,data:s,disabled:r===!0||c.disabledWhen!==void 0&&Ht(o,c.disabledWhen),onChange:u=>l(c.name,u)},c.name))})}const vl=d.createContext(!1),dM=d.createContext(!1),hM=d.createContext(!1);function Xs({title:e,note:n,actions:s,children:r,plain:a}){const l=d.useContext(vl)&&!a;return t.jsx(we,{title:e,aside:n,actions:s,panel:l,children:t.jsx(vl.Provider,{value:!1,children:t.jsx(dM.Provider,{value:l,children:r})})})}function I9({component:e,data:n}){return jt().params[e.param]?t.jsx(P9,{component:e,data:n}):null}function P9({component:e,data:n}){const s=jt(),r=bn(e.query,n),a=e.query?r.data:n,i=e.heading?He(a,e.heading):void 0,l=typeof i=="string"&&i!==""?i:e.title;return t.jsx(Qe,{scrollBody:!0,title:l,onClose:()=>{s.setParams({[e.param]:null});const o=new URLSearchParams(s.params);o.delete(e.param),o.delete("item"),s.navigate(`${Or(s.plugin,s.page,s.item)}${o.size?`?${o}`:""}`)},children:e.query&&r.loading&&r.data===void 0?t.jsx(Q,{children:"Loading…"}):r.error?t.jsx(re,{message:r.error}):t.jsx(de,{children:e.body.map((o,c)=>t.jsx(Bs,{component:o,data:a},c))})})}function M9({component:e,data:n}){const s=jt(),r=yP({edition:Re(n,e.path)});if(!r)return e.emptyTitle||e.empty?t.jsx(Ce,{title:e.emptyTitle,children:e.empty}):null;const a=r.report&&bP(s.plugin,r.report)?r.report:null;return t.jsx(kP,{edition:r,plugin:s.plugin,audio:a?t.jsx(wP,{link:a}):null})}function O9({plugin:e,query:n,params:s,body:r,timezone:a,navigate:i}){const[l,o]=d.useState({}),[c,u]=d.useState(0),[h]=Zb();WI(e,()=>u(p=>p+1));const f={plugin:e,page:"",pages:[],item:null,params:l,setParams:p=>o(x=>{const g={...x};for(const[b,j]of Object.entries(p))j===null?delete g[b]:g[b]=j;return g}),navigate:i??(p=>{window.location.hash=p}),timezone:a,version:c,refresh:()=>u(p=>p+1),sensitive:new Set,sensitivePaths:bM,amountsShown:h},m={query:n,params:Object.fromEntries(Object.entries(s).map(([p,x])=>[p,{const:x}]))};return t.jsx(Sp.Provider,{value:f,children:t.jsx(D9,{queryRef:m,body:r})})}function D9({queryRef:e,body:n}){const s=bn(e,null);return s.error?t.jsx(re,{message:s.error}):s.data===void 0?t.jsx(Q,{children:"Loading…"}):t.jsx(de,{children:n.map((r,a)=>t.jsx(Bs,{component:r,data:s.data},a))})}function Bs({component:e,data:n,choose:s,chosen:r}){const a=jt(),i=d.useContext(Zf);if(!Ht(n,e.when)||e.where!==void 0&&e.where!==(F9()?"local":"remote"))return null;if(e.kind!=="section"&&!i&&rM(e,a.sensitive))return t.jsx(lM,{children:t.jsx(Bs,{component:e,data:n,...s?{choose:s}:{},...r===void 0?{}:{chosen:r}})});switch(e.kind){case"section":return t.jsx(L9,{component:e,data:n});case"notice":return t.jsx(_9,{component:e,data:n});case"link":return t.jsx(z9,{component:e,data:n});case"progress":return t.jsx(B9,{component:e,data:n});case"chart":return t.jsx(W9,{component:e,data:n});case"stats":return t.jsx(H9,{component:e,data:n});case"list":return t.jsx(G9,{component:e,data:n,...s?{onChoose:s}:{},...r===void 0?{}:{chosen:r}});case"table":return t.jsx(X9,{component:e,data:n});case"detail":return t.jsx(nV,{component:e,data:n});case"form":return t.jsx(sV,{component:e,data:n});case"search":return t.jsx(iV,{component:e,data:n});case"list-detail":return t.jsx(lV,{component:e,data:n});case"repeat":return t.jsx(oV,{component:e,data:n});case"calendar":return t.jsx(cV,{component:e,data:n});case"tiles":return t.jsx(dV,{component:e,data:n});case"series-panel":return t.jsx(hV,{component:e,data:n});case"hero":return t.jsx(fV,{component:e,data:n});case"tabs":return t.jsx(mV,{component:e,data:n});case"expand":return t.jsx(pV,{component:e,data:n});case"button":return t.jsx(jM,{component:e,data:n});case"menu":return t.jsx(fM,{component:e,data:n});case"sheet":return t.jsx(I9,{component:e,data:n});case"digest":return t.jsx(M9,{component:e,data:n});case"approval":return t.jsx(CV,{component:e,data:n});case"artifact":return t.jsx(EV,{component:e,data:n});case"message":return t.jsx(TV,{component:e,data:n});case"editor":return t.jsx(IV,{component:e,data:n});case"agent-offer":return t.jsx(gV,{component:e});case"stories":return t.jsx(jV,{component:e,data:n});default:return t.jsx(Q,{children:"This page uses a part this dashboard does not know yet. Reload buddi to see it."})}}function L9({component:e,data:n}){const s=jt(),r=d.useContext(Zf),[a,i]=Xb(),l=!r&&rM([e.query,e.body],s.sensitive),o=l&&!a,c=bn(o?void 0:e.query,n),u=e.query?c.data:n,h=e.heading&&!o?He(u,e.heading):void 0,f=h==null||h===""?e.title:String(h),m=d.useContext(vl);let p=e.body.length;const x=N=>{var w;return N.kind==="button"||N.kind==="link"||N.kind==="menu"||N.kind==="form"&&((w=N.drawer)==null?void 0:w.button)!==void 0&&!N.title};for(;m&&e.look!=="setup"&&p>0&&x(e.body[p-1]);)p-=1;const g=e.body.slice(0,p),b=e.look==="setup"?g.filter(N=>N.kind==="button").sort((N,w)=>+(N.kind==="button"&&N.action.tone==="accent")-+(w.kind==="button"&&w.action.tone==="accent")):[],j=e.look==="setup"?g.filter(N=>N.kind!=="button"):g,v=[...e.actions??[],...e.body.slice(p)],[y,k]=d.useState(null);return t.jsx(Tj.Provider,{value:k,children:t.jsx("div",{className:e.look==="setup"?"pp-setup":void 0,style:e.look==="setup"?void 0:{display:"contents"},children:t.jsx(Xs,{plain:e.look==="setup",title:f,note:e.note,actions:v.length>0||l?t.jsxs(t.Fragment,{children:[v.map((N,w)=>t.jsx(Bs,{component:N,data:u},w)),l?t.jsx(aM,{revealed:a,onToggle:i}):null]}):void 0,children:t.jsxs(de,{gap:"lg",divided:m,children:[y,e.query&&!o?t.jsx(re,{message:c.error}):null,o?t.jsx(iM,{}):e.query&&c.data===void 0&&!c.error?t.jsx(Ce,{children:"Loading…"}):t.jsx(Zf.Provider,{value:r||l,children:t.jsxs(Tj.Provider,{value:null,children:[j.map((N,w)=>t.jsx(Bs,{component:N,data:u},w)),b.length>0?t.jsx("div",{className:"pp-setup-actions",children:b.map((N,w)=>t.jsx(Bs,{component:N,data:u},w))}):null]})})]})})})})}const Tj=d.createContext(null);function F9(){const e=typeof location>"u"?"":location.hostname;return e==="127.0.0.1"||e==="localhost"||e==="::1"||e==="[::1]"}function fM({component:e,data:n}){var c;const s=jt(),r=pa(),a=d.useContext(Tj),i=e.items.filter(u=>Ht(n,u.when)).map(u=>({label:u.label,...u.hint?{hint:u.hint}:{},onSelect:()=>{u.open!==void 0?s.setParams({open:u.open}):u.action&&r.run(u.action,Js(u.action.args,{data:n,row:n,scope:s}))}})),l=(c=e.items.find(u=>{var h;return((h=u.action)==null?void 0:h.tool)===r.running}))==null?void 0:c.action,o=r.error||r.done||r.approvalId?t.jsx(Fr,{act:r}):null;return d.useEffect(()=>{a&&a(o)},[r.error,r.done,r.approvalId,r.waiting]),d.useEffect(()=>()=>a==null?void 0:a(null),[a]),t.jsxs(t.Fragment,{children:[t.jsx(rs,{label:e.label,items:i,stacked:e.items.some(u=>u.hint!==void 0),trigger:t.jsxs("button",{type:"button",className:"ui-btn pl-menu-btn","data-variant":e.tone==="accent"?"accent":void 0,disabled:r.busy,children:[(l==null?void 0:l.busy)??e.label,t.jsx(se,{name:"chevron-down",size:12})]})}),a?null:o]})}function _9({component:e,data:n}){const s=jt(),r=pa(),a=typeof e.text=="string"?e.text:String(He(n,e.text)??""),i=e.link&&Ht(n,e.link.when)?e.link:void 0,l=i?Ua(s,i.to,n):"",o=i?typeof i.label=="string"?i.label:String(He(n,i.label)??""):"",c=i&&l!==""&&o!==""?"href"in i.to?t.jsx(Fo,{href:l,children:o}):t.jsx("a",{href:l,onClick:h=>{h.preventDefault(),s.navigate(l)},children:o}):null;if(e.look==="quiet")return a===""&&!c?null:t.jsxs("p",{className:"pl-quiet","data-tone":e.tone,children:[e.icon?t.jsx(se,{name:e.icon,size:14}):null,t.jsxs("span",{children:[a,c?t.jsxs(t.Fragment,{children:[a?" · ":null,c]}):null]})]});const u=e.action;return t.jsxs(t.Fragment,{children:[t.jsxs(Q,{tone:ek(e.tone),title:e.title,action:u?t.jsx(Pi,{action:u,args:Js(u.args,{data:n,scope:s}),disabled:r.busy,running:r.running===u.tool,row:n,onRun:(h,f)=>void r.run(h,f)}):void 0,children:[a,c?t.jsxs(t.Fragment,{children:[" ",c]}):null]}),t.jsx(yM,{act:r})]})}function z9({component:e,data:n}){const s=jt(),r=Ua(s,e.to,n);return r===""?null:"href"in e.to?t.jsx(ne,{children:t.jsxs(it,{href:r,target:"_blank",rel:"noopener noreferrer",variant:e.tone==="accent"?"accent":void 0,children:[e.label,t.jsx("span",{className:"wb-src-out","aria-hidden":"true",children:"↗"}),t.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})}):t.jsx(ne,{children:t.jsx(it,{href:r,variant:e.tone==="accent"?"accent":void 0,onClick:a=>{a.preventDefault(),s.navigate(r)},children:e.label})})}function NC(e){return Math.round(e/1e6)}function U9(e,n){const s=zs(He(n,e.value))??0,r=e.total?zs(He(n,e.total)):null,a=e.total?r&&r>0?s/r:0:s,i=Math.max(0,Math.min(1,a)),l=Math.floor(i*100),o=a>=1,c=e.total&&r&&r>0?`${NC(s)} of ${Math.max(1,NC(r))} MB · ${l}%`:`${l}%`;return{percent:l,full:o,line:c}}function B9({component:e,data:n}){const s=c=>c===void 0?"":typeof c=="string"?c:String(He(n,c)??""),r=s(e.label),a=s(e.done),{percent:i,full:l,line:o}=U9(e,n);return t.jsxs(de,{gap:"sm",children:[r?t.jsx("span",{children:r}):null,l&&a?t.jsx("span",{role:"status",children:a}):t.jsxs(t.Fragment,{children:[t.jsx(Ib,{value:i,label:r||"Progress"}),t.jsx("span",{role:"status",children:o})]})]})}function W9({component:e,data:n}){const s=bn(e.query,n),r=e.rows===void 0?Array.isArray(s.data)?s.data:[]:_r(s.data,e.rows),a=r.map(h=>String(Re(h,e.x)??"")),i=h=>r.map(f=>zs(Re(f,h))??null),l=e.series!==void 0,o=e.y===void 0?[]:Array.isArray(e.y)?e.y:[e.y],c=l?e.series.map(h=>({label:h.label,values:i(h.y),type:h.type,...h.unit?{unit:h.unit}:{}})):o.map(h=>({label:o.length===1?e.label??h:h,values:i(h)})),u=e.target?zs(He(s.data,e.target))??null:null;return t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:s.error}),r.length===0?s.loading||s.data===void 0?t.jsx(Ce,{children:"Loading…"}):t.jsx(Rl,{text:e.empty??"Nothing recorded yet."}):t.jsx(l8,{xs:a,series:c,type:l?"mixed":e.type??"line",target:u,...e.label?{label:e.label}:{},formatX:h=>/^\d{4}-\d{2}-\d{2}/.test(h)?aj(h):h,formatY:h=>Mn(h,"number",null)})]})}function H9({component:e,data:n}){const s=bn(e.query,n);return t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:s.error}),s.data===void 0?t.jsx(Ce,{children:e.empty??"Loading…"}):t.jsx(gp,{children:e.items.map((r,a)=>t.jsx(ta,{label:r.label,value:t.jsx(na,{text:Mn(He(s.data,r.value),r.unit??"text",null)}),tone:E9(r.tone)},a))})]})}function mM(e,n,s,r){const a=(n.meta??[]).map(w=>String(He(s,w)??"")).filter(w=>w!==""),i=String(He(s,n.title)??""),l=n.to&&!r?Ua(e,n.to,s):null,o=l===""?null:l,c=o!==null&&n.to!==void 0&&"href"in n.to,u=n.images?t.jsx(A9,{plugin:e.plugin,images:n.images,row:s}):null,f=[...n.pill?[n.pill]:[],...n.pills??[]].map((w,S)=>{const C=He(s,w.value);if(C==null||C==="")return null;const E=K9(w,C,s);return t.jsx(Ae,{tone:Ej(E.tone),children:E.text},S)}),m=o&&c?t.jsx(Fo,{href:o,children:i}):o?t.jsx("a",{href:o,onClick:w=>{w.preventDefault(),e.navigate(o)},children:i}):i,p=n.tag?He(s,n.tag):void 0,x=p==null||p===""?null:t.jsx("span",{className:"pl-row-tag",children:String(p)}),g=n.status?He(s,n.status.text):void 0,b=n.status?nm(n.status.tone,s):void 0,j=g==null||g===""?null:t.jsx("span",{className:"pl-row-status","data-tone":b,children:String(g)}),v=n.sub?String(He(s,n.sub)??""):"",y=n.swatch?Re(s,n.swatch):void 0,k=n.logo?t.jsx($l,{className:"pl-logo-lg",src:Al(e.plugin,He(s,n.logo.asset)),label:String(He(s,n.logo.label)??"")}):n.swatch?typeof y=="string"&&rk.test(y)?t.jsx("span",{className:"pl-swatch","aria-hidden":"true",style:{"--swatch":y}}):t.jsx("span",{className:"pl-swatch","data-none":"true","aria-hidden":"true"}):null,N=n.preview?String(He(s,n.preview)??""):"";return{text:i,href:o,outside:c,lead:k,preview:N,strong:n.strong?Ht(s,n.strong):void 0,pills:t.jsx(t.Fragment,{children:f}),meta:a.length>0?t.jsx(na,{text:a.join(" · ")}):"",title:u?t.jsxs(t.Fragment,{children:[u,t.jsx("span",{className:"pl-row-title",children:m}),x]}):x?t.jsxs(t.Fragment,{children:[m,x]}):m,sub:j?t.jsxs(t.Fragment,{children:[v?t.jsx("span",{className:"pl-row-line",children:t.jsx(na,{text:v})}):null,j]}):n.sub?v&&t.jsx(na,{text:v}):null,side:t.jsxs(t.Fragment,{children:[f,a.length>0?t.jsxs("span",{className:"muted",children:[" ",t.jsx(na,{text:a.join(" · ")})]}):null]})}}function K9(e,n,s){const r=String(n),a=e.labels??{},i=e.tones??{};return{text:Object.prototype.hasOwnProperty.call(a,r)?a[r]:r,tone:Object.prototype.hasOwnProperty.call(i,r)?i[r]:nm(e.tone,s)}}function _r(e,n){const s=Re(e,n);return Array.isArray(s)?s:[]}function pM(e,n,s){const r=[],a=new Set;return e.forEach((i,l)=>{const o=n===void 0?void 0:Re(i,n),c=o==null||o===""?null:String(o);if(c===null){console.warn(`buddi: plugin ${s.plugin}, page ${s.page}, ${s.component}: row ${l} has no value at "${n??"(no key)"}" — not drawn`);return}if(a.has(c)){console.warn(`buddi: plugin ${s.plugin}, page ${s.page}, ${s.component}: two rows share the key "${c}" — the second is not drawn`);return}a.add(c),r.push({key:c,row:i})}),r}function V9(e){var i;if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key)||e.altKey||e.ctrlKey||e.metaKey)return;const n=Array.from(e.currentTarget.querySelectorAll("a.ui-pick"));if(n.length===0)return;const s=n.findIndex(l=>l===document.activeElement),r=s>=0?s:n.findIndex(l=>l.getAttribute("aria-current")==="true"),a=e.key==="Home"?0:e.key==="End"?n.length-1:e.key==="ArrowDown"?Math.min(n.length-1,r+1):Math.max(0,r<0?0:r-1);e.preventDefault(),(i=n[a])==null||i.focus()}function G9({component:e,data:n,onChoose:s,chosen:r}){var w;const a=jt(),i=d.useContext(hM),l=bn(e.query,n),o=pa(),[c,u]=d.useState([]),h=i&&!e.select&&(e.actions??[]).length===0&&(e.bulk??[]).length===0,f=_r(l.data,e.rows),m=e.collapsed?_r(l.data,e.collapsed.rows):[],p=gM(e.actions,f,o),x={plugin:a.plugin,page:a.page,component:`list "${e.title??e.rows}"`},g=pM([...f,...m],e.key??((w=e.select)==null?void 0:w.key),x),b=new Map(g.map(S=>[S.row,S.key])),j=new Set(g.map(S=>S.row)),v=new Set(g.filter(({row:S})=>{var C;return((C=e.select)==null?void 0:C.disabledWhen)===void 0||!Ht(S,e.select.disabledWhen)}).map(({key:S})=>S)),y=c.filter(S=>v.has(S)),k=d.useMemo(()=>{const S=f.filter($=>j.has($));if(!e.groupBy)return[{label:null,aside:null,asideTone:void 0,rows:S}];const C=new Map;for(const $ of S){const R=String(Re($,e.groupBy.key)??"");C.set(R,[...C.get(R)??[],$])}const E=($,R)=>{var I,F,U;const P=(F=(I=e.groupBy)==null?void 0:I.labels)==null?void 0:F[$];if(P!==void 0)return P;const O=(U=e.groupBy)!=null&&U.label?Re(R,e.groupBy.label):void 0;return O==null||O===""?$:String(O)};return[...C].map(([$,R])=>{var I,F;const P=(I=e.groupBy)!=null&&I.aside?Re(R[0],e.groupBy.aside):void 0,O=(F=e.groupBy)!=null&&F.asideTone?Re(R[0],e.groupBy.asideTone):void 0;return{label:E($,R[0]),aside:P==null||P===""?null:String(P),asideTone:O==="warning"||O==="critical"?O:void 0,rows:R}})},[f,e.groupBy,g.length]),N=S=>S.map(C=>{var F;const E=mM(a,e.item,C,s),$=b.get(C);if(h&&(s||E.href&&!E.outside))return t.jsx(cP,{href:E.href??"#",current:r===$,onClick:()=>s?s($):a.navigate(E.href),title:E.text,meta:E.meta,sub:E.sub,side:E.pills,snippet:E.preview||void 0,strong:E.strong},$);const R=((F=e.select)==null?void 0:F.disabledWhen)!==void 0&&Ht(C,e.select.disabledWhen),P=(e.actions??[]).filter(U=>Ht(C,U.when)),O=P.filter(U=>U.menu!==!0),I=P.filter(U=>U.menu===!0);return t.jsx(gt,{lead:E.lead?E.lead:e.select?t.jsx("input",{type:"checkbox","aria-label":`Select ${E.text}`,disabled:R,checked:c.includes($),onClick:U=>U.stopPropagation(),onChange:U=>u(L=>U.target.checked?[...L,$]:L.filter(M=>M!==$))}):void 0,title:s?t.jsx("a",{href:"#","aria-current":r===$?"true":void 0,onClick:U=>{U.preventDefault(),s($)},children:E.text}):E.title,sub:E.preview?t.jsxs(t.Fragment,{children:[E.sub?t.jsx("span",{className:"pl-row-line",children:E.sub}):null,t.jsx("span",{className:"pl-row-preview",children:E.preview})]}):E.sub,side:t.jsxs(t.Fragment,{children:[E.side,e.item.choice?t.jsx(Y9,{choice:e.item.choice,row:C,data:l.data,act:o}):null,O.map((U,L)=>t.jsx(sk,{action:U,row:C,data:l.data,act:o,onForm:p.show},L)),I.length>0?t.jsx(xM,{actions:I,row:C,title:E.text,data:l.data,act:o,onForm:p.show}):null]})},$)});return t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:l.error}),p.open?null:t.jsx(Fr,{act:o}),p.open?t.jsx(vM,{open:p.open,data:l.data,rows:f,act:o,onClose:p.close,onDone:p.finish}):null,k.every(S=>S.rows.length===0)?l.loading?t.jsx(Ce,{children:"Loading…"}):t.jsx(Rl,{text:e.empty??"Nothing here yet."}):t.jsxs(yt,{children:[e.select?t.jsx(gt,{lead:t.jsx("input",{type:"checkbox","aria-label":"Select every row",checked:v.size>0&&y.length===v.size,disabled:v.size===0,onChange:S=>u(S.target.checked?[...v]:[])}),title:t.jsxs("span",{className:"muted",children:[v.size," to choose from"]})}):null,k.map((S,C)=>{var E,$;return(E=e.groupBy)!=null&&E.actions||($=e.groupBy)!=null&&$.asideTone?t.jsxs("section",{className:"pl-group","aria-label":S.label??void 0,children:[t.jsxs("header",{className:"pl-group-head",children:[t.jsx("span",{className:"pl-group-title",children:S.label}),S.aside?t.jsx("span",{className:"pl-group-aside","data-tone":S.asideTone,children:S.aside}):null,t.jsx(q9,{actions:e.groupBy.actions??[],row:S.rows[0],title:S.label??"",data:l.data,act:o,onForm:p.show})]}),N(S.rows)]},C):t.jsxs("div",{children:[S.label?t.jsxs("div",{className:"ui-list-group","data-aside":S.aside?"true":void 0,children:[S.label,S.aside?t.jsx("span",{className:"pl-group-aside",children:S.aside}):null]}):null,N(S.rows)]},C)})]}),e.collapsed&&m.some(S=>j.has(S))?t.jsx(Kt,{summary:`${e.collapsed.label} (${m.filter(S=>j.has(S)).length})`,children:t.jsx(yt,{children:N(m.filter(S=>j.has(S)))})}):null,e.bulk&&e.bulk.length>0?t.jsxs(ne,{align:"end",children:[t.jsxs("span",{className:"ui-toolbar-note",children:[y.length," selected"]}),e.bulk.map((S,C)=>{const E=y.length>0||S.all!==!0?y:[...v];return t.jsx(Pi,{action:S,args:Js(S.args,{data:l.data,selected:E,scope:a}),count:E.length,disabled:o.busy||E.length===0,running:o.running===S.tool,onRun:($,R)=>{u([]),o.run($,R)}},C)})]}):null]})}function q9({actions:e,row:n,title:s,data:r,act:a,onForm:i}){const l=e.filter(u=>Ht(n,u.when));if(l.length===0)return null;const o=l.filter(u=>u.menu!==!0),c=l.filter(u=>u.menu===!0);return t.jsxs("span",{className:"pl-group-act",children:[o.map((u,h)=>t.jsx(sk,{action:u,row:n,data:r,act:a,onForm:i},h)),c.length>0?t.jsx(xM,{actions:c,row:n,title:s,data:r,act:a,onForm:i}):null]})}function Y9({choice:e,row:n,data:s,act:r}){const a=jt(),i=String(Re(n,e.value)??""),[l,o]=d.useState(null);d.useEffect(()=>o(null),[i]);const c=l??i,u=e.options.filter(h=>Ht(n,h.when));return t.jsx("span",{className:"ui-segment pl-choice",role:"radiogroup","aria-label":ks(e.label,{row:n}),"aria-busy":l!==null&&r.running===e.tool?"true":void 0,children:u.map(h=>{const f=h.disabledWhen!==void 0&&Ht(n,h.disabledWhen),m=f&&h.hint?ks(h.hint,{row:n}):void 0;return t.jsx("button",{type:"button",role:"radio",className:"ui-tab","aria-checked":c===h.value,disabled:f||r.busy,title:m,"aria-description":m,onClick:()=>{if(h.value===c)return;o(h.value);const p=Js(e.args,{data:s,row:n,choice:h.value,scope:a});r.run(e,p).then(x=>{x||o(null)})},children:h.label},h.value)})})}function Q9(e,n,s){return Object.entries(e).every(([r,a])=>{const i=typeof a=="string"?a:Re(s,a.row);return i!=null&&n[r]===String(i)})}function gM(e,n,s){const r=jt(),[a,i]=d.useState(null);return d.useEffect(()=>{var l;if(!(a!==null||n.length===0))for(const o of e??[]){const c=(l=o.form)==null?void 0:l.openWhen;if(!c)continue;const u=n.find(h=>Ht(h,o.when)&&Q9(c,r.params,h));if(u!==void 0){i({action:o,row:u}),r.setParams(Object.fromEntries(Object.keys(c).map(h=>[h,null])));return}}},[n.length,JSON.stringify(r.params)]),{open:a,show:(l,o)=>{s.reset(),i({action:l,row:o})},close:()=>{s.reset(),i(null)},finish:()=>i(null)}}function sk({action:e,row:n,data:s,act:r,onForm:a}){const i=jt();return e.form?t.jsx(A,{disabled:r.busy,onClick:()=>a(e,n),children:ks(e.label,{row:n})}):t.jsx(Pi,{action:e,args:Js(e.args,{data:s,row:n,scope:i}),disabled:r.busy,running:r.running===e.tool,row:n,onRun:(l,o)=>void r.run(l,o)})}function xM({actions:e,row:n,title:s,data:r,act:a,onForm:i}){const l=jt(),[o,c]=d.useState(null),u=m=>void a.run(m,Js(m.args,{data:r,row:n,scope:l})),h=[];let f;return e.forEach((m,p)=>{m.group!==f?(p>0&&h.push("separator"),m.group&&h.push({heading:m.group}),f=m.group):m.tone==="danger"&&p>0&&h.push("separator"),h.push({label:ks(m.label,{row:n}),...m.hint?{hint:ks(m.hint,{row:n})}:{},...m.tone==="danger"?{tone:"critical"}:{},onSelect:()=>m.form?i(m,n):m.confirm?c(m):u(m)})}),t.jsxs(t.Fragment,{children:[t.jsx(rs,{label:`More for ${s}`,items:h,sheet:{title:s}}),o?t.jsx(Vt,{title:ks(o.confirm??o.label,{row:n}),onClose:()=>c(null),foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>c(null),children:"Cancel"}),t.jsx(A,{variant:o.tone==="danger"?"danger":"accent",onClick:()=>{const m=o;c(null),u(m)},children:ks(o.label,{row:n})})]})}):null]})}function J9(e,n){const s=hi(e),r=n.find(i=>hi(i)===s);if(r!==void 0)return r;const a=JSON.stringify(s);return n.find(i=>JSON.stringify(hi(i))===a)??e}function vM({open:e,data:n,rows:s,act:r,onClose:a,onDone:i}){const l=jt(),{action:o}=e,c=J9(e.row,s),u=o.form,[h,f]=tk(u.fields,c),m=u.fields.some(j=>j.from!==void 0&&bp(Re(c,j.from))),p=u.fields.some(j=>j.required&&(h[j.name]===""||h[j.name]===void 0)),{confirm:x,...g}=o,b={...g,label:u.submit};return t.jsx(Qe,{title:ks(u.title,{row:c}),onClose:a,foot:t.jsxs(ne,{align:"end",children:[t.jsx(A,{variant:"ghost",onClick:a,children:"Cancel"}),t.jsx(Pi,{action:b,args:Js(o.args,{data:n,row:c,fields:h,shape:u.fields,scope:l}),disabled:r.busy||p||m,running:r.running===o.tool,row:c,onRun:(j,v)=>void r.run(j,v,i)})]}),children:t.jsxs(de,{children:[t.jsx(Cp,{fields:u.fields,values:h,data:c,onChange:f}),m?t.jsx("p",{className:"muted",children:"Show amounts to change this."}):null,t.jsx(re,{message:r.error})]})})}function X9({component:e,data:n}){const s=bn(e.query,n),r=pa(),a=_r(s.data,e.rows),i=gM(e.actions,a,r);return t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:s.error}),i.open?null:t.jsx(Fr,{act:r}),i.open?t.jsx(vM,{open:i.open,data:s.data,rows:a,act:r,onClose:i.close,onDone:i.finish}):null,a.length===0?s.loading?t.jsx(Ce,{children:"Loading…"}):t.jsx(Rl,{text:e.empty??"Nothing here yet."}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[e.columns.map(l=>t.jsx("th",{children:l.label},l.key)),e.actions&&e.actions.length>0?t.jsx("th",{"aria-label":"Actions"}):null]})}),t.jsx("tbody",{children:a.map((l,o)=>t.jsxs("tr",{children:[e.columns.map(c=>{const u=c.pill?null:Mn(Re(l,c.key),c.type??"text",null);return t.jsxs("td",{"data-fit":c.fit,title:eV(c,l,u),children:[c.pill?null:t.jsx(Z9,{column:c,row:l}),c.pill?t.jsx(tV,{column:c,row:l}):c.fit==="truncate"?t.jsx("span",{className:"ui-table-cut",children:t.jsx(na,{text:u})}):t.jsx(na,{text:u})]},c.key)}),e.actions&&e.actions.length>0?t.jsx("td",{children:t.jsx(ne,{align:"end",children:e.actions.filter(c=>Ht(l,c.when)).map((c,u)=>t.jsx(sk,{action:c,row:l,data:s.data,act:r,onForm:i.show},u))})}):null]},o))})]})]})}const rk=/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i;function Z9({column:e,row:n}){if(!e.swatch)return null;const s=Re(n,e.swatch);return typeof s!="string"||!rk.test(s)?null:t.jsx("span",{className:"ui-table-swatch","aria-hidden":"true",style:{"--swatch":s}})}function eV(e,n,s){if(e.hint){const r=Re(n,e.hint);if(r!=null&&r!=="")return String(r)}return e.fit==="truncate"&&s?s:void 0}function tV({column:e,row:n}){var l,o;const s=Re(n,e.key);if(Array.isArray(s))return t.jsx(t.Fragment,{children:s.map((c,u)=>{var g;const h=c,f=typeof h=="object"&&h!==null?h.value:c;if(f==null||f==="")return null;const m=typeof h=="object"&&h!==null?h.tone:void 0,p=(g=e.pill)==null?void 0:g.labels,x=p&&Object.prototype.hasOwnProperty.call(p,String(f))?p[String(f)]:Mn(f,e.type??"text",null);return t.jsx(Ae,{tone:Ej(nm(typeof m=="string"?m:void 0,n)),children:x},u)})});const r=(l=e.pill)==null?void 0:l.labels,a=String(s),i=r&&Object.prototype.hasOwnProperty.call(r,a)?r[a]:Mn(s,e.type??"text",null);return t.jsx(Ae,{tone:Ej(nm((o=e.pill)==null?void 0:o.tone,n)),children:i})}function nV({component:e,data:n}){const s=bn(e.query,n);return s.error?t.jsx(re,{message:s.error}):s.data===void 0?t.jsx(Ce,{children:e.empty??"Loading…"}):t.jsx(Xs,{title:e.title,note:e.note,children:t.jsxs(de,{gap:"lg",children:[e.fields.length>0?t.jsx(un,{items:e.fields.map(r=>({key:r.label,label:r.label,value:t.jsx(na,{text:Mn(He(s.data,r.value),r.unit??"text",null)})}))}):null,e.body.map((r,a)=>t.jsx(Bs,{component:r,data:s.data},a))]})})}function sV({component:e,data:n}){var f;const s=jt(),r=bn(e.initial,n),a=pa(),[i,l]=d.useState(!1),o=((f=e.drawer)==null?void 0:f.id)!==void 0&&s.params.open===e.drawer.id,c=i||o,u=m=>{l(m),!m&&o&&s.setParams({open:null})},h=t.jsx(rV,{component:e,data:n,initialData:r.data,act:a,onDone:()=>u(!1)},a.happened);return e.drawer?e.drawer.button===void 0&&!e.title?t.jsxs(t.Fragment,{children:[t.jsx(Fr,{act:a}),c?t.jsx(Qe,{title:e.drawer.title,onClose:()=>u(!1),children:h}):null]}):t.jsxs(we,{title:e.title,aside:e.note,actions:e.drawer.button!==void 0?t.jsx(A,{variant:"accent",onClick:()=>u(!0),children:e.drawer.button}):void 0,children:[t.jsx(Fr,{act:a}),c?t.jsx(Qe,{title:e.drawer.title,onClose:()=>u(!1),children:h}):null]}):t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:r.error}),h]})}function rV({component:e,data:n,initialData:s,act:r,onDone:a}){const i=d.useContext(dM),l=jt(),[o,c]=tk(e.fields,s),u=nk(e.fields,o,s),h=e.fields.some(m=>m.from!==void 0&&bp(Re(s,m.from))),f=e.fields.some(m=>m.required&&!u.has(m.name)&&(o[m.name]===""||o[m.name]===void 0||Array.isArray(o[m.name])&&o[m.name].length===0));return t.jsxs(de,{children:[t.jsx(Cp,{fields:e.fields,columns:e.columns,values:o,data:s,onChange:c}),e.drawer?null:t.jsx(Fr,{act:r}),h?t.jsx("p",{className:"muted",children:"Show amounts to change this."}):null,t.jsx(ne,{align:"end",className:i?"ui-panel-foot":void 0,children:t.jsx(Pi,{action:e.submit,args:Js(e.submit.args,{data:n,fields:o,shape:e.fields,omit:u,scope:l}),disabled:r.busy||f||h,running:r.running===e.submit.tool,onRun:(m,p)=>void r.run(m,p,a)})})]})}function aV(e,n){var r;if(e.type==="checkbox")return e.label;const s=(r=e.options)==null?void 0:r.find(a=>a.value===n);return`${e.label}: ${s?s.label:n}`}function SC(e){return e!=null&&e!==""&&e!==!1&&e!=="false"}function iV({component:e,data:n}){const s=jt(),[r,a]=d.useState(()=>Aj(e.fields,n)),[i,l]=d.useState(e.auto===!0),[o,c]=d.useState(!1),u=e.fields.every(C=>!C.required||String(r[C.name]??"")!==""),h=bn(i&&u?e.query:void 0,n),f=_r(h.data,e.rows),m=e.count===void 0?void 0:Re(h.data,e.count),p=e.note===void 0?void 0:Re(h.data,e.note),x=e.fields.find(C=>C.type==="text"||C.type==="email")??null,g=e.fields.filter(C=>C!==x),b=C=>{s.setParams(Object.fromEntries(e.fields.map(E=>[E.name,String(C[E.name]??"")||null]))),l(!0)},j=(C,E)=>{const $={...r,[C]:E};a($),e.auto&&b($)},v=()=>{const C=Aj(e.fields,null);a(C),e.auto?b(C):(s.setParams(Object.fromEntries(e.fields.map(E=>[E.name,null]))),l(!1))},y=i?g.filter(C=>SC(s.params[C.name])):[],k=x?y.map(C=>t.jsx(Gf,{label:C.label,onRemove:()=>{const E={...r,[C.name]:C.type==="checkbox"?!1:""};a(E),b(E)},children:aV(C,String(s.params[C.name]))},C.name)):[],N=g.filter(C=>SC(r[C.name])).length,w=e.auto&&!e.reset?null:t.jsxs(t.Fragment,{children:[e.reset?t.jsx(A,{variant:"ghost",onClick:v,children:"Clear"}):null,e.auto?null:t.jsx(A,{type:"submit",variant:"accent",disabled:!u,children:"Search"})]}),S=e.results.to?e.results:e.to?{...e.results,to:e.to}:e.results;return t.jsx(Xs,{title:e.title,children:t.jsxs(de,{children:[t.jsx(hP,{label:e.title??"Search",onSubmit:()=>{!e.auto&&u&&b(r)},main:x?t.jsx("input",{id:`f-${x.name}`,name:x.name,type:x.type==="email"?"email":"search","aria-label":x.label,placeholder:x.hint??x.label,title:x.hint,required:x.required,value:String(r[x.name]??""),onChange:C=>j(x.name,C.target.value)}):void 0,filters:g.length>0?t.jsx(Cp,{fields:g,values:r,data:n,compact:!0,onChange:j}):void 0,...x&&g.length>0?{filtersOpen:o,onToggleFilters:()=>c(C=>!C),active:N}:{},chips:k.length>0?k:void 0,actions:w}),t.jsx(re,{message:h.error}),i&&(m!==void 0||p!==void 0)?t.jsxs("p",{className:"ui-card-meta",children:[m===void 0?"":`${Mn(m,"number",null)} in all. `,p===void 0?"":String(p)]}):null,i?f.length===0?t.jsx(Ce,{children:h.loading?"Searching…":e.empty??"Nothing matches."}):t.jsx("div",{className:"ui-panel","data-flush":"true",children:t.jsx(yt,{children:f.map((C,E)=>{const $=mM(s,S,C);return t.jsx(gt,{title:$.title,sub:$.sub,side:$.side},E)})})}):null]})})}function lV({component:e,data:n}){const s=jt(),r=e.selection==="local",[a,i]=d.useState(null),l=r?a:s.params[e.param]??s.item,o=r&&a!==null?{...s,params:{...s.params,[e.param]:a}}:null,c=t.jsx(de,{gap:"lg",divided:!0,children:e.detail.map((u,h)=>t.jsx(Bs,{component:u,data:n},h))},l??"");return t.jsx(vl.Provider,{value:!1,children:t.jsx(uP,{list:t.jsx(hM.Provider,{value:!0,children:t.jsx("div",{className:"pl-picks",onKeyDown:V9,children:t.jsx(Bs,{component:e.list,data:n,chosen:l??null,...r?{choose:i}:{}})})}),detail:l?o?t.jsx(Sp.Provider,{value:o,children:c}):c:void 0,empty:e.empty??"Choose one to see it here."})})}function oV({component:e,data:n}){var v;const s=jt(),r=d.useContext(vl),a=e.body.length>0&&e.body.every(y=>y.kind==="section"),[i,l]=d.useState(!1),o=bn(e.query,n,i&&e.poll?e.poll.seconds*1e3:void 0),c=e.poll!==void 0&&o.data!==void 0&&Ht(o.data,e.poll.while);d.useEffect(()=>l(c),[c]);const u=_r(o.data,e.rows),h=(v=e.poll)==null?void 0:v.finish,f=pa(),[m,p]=d.useState(()=>new Set),x=h?u.find(y=>{if(!Ht(y,h.when))return!1;const k=String(Re(y,e.key)??"");return k!==""&&!m.has(k)}):void 0,g=x===void 0?null:String(Re(x,e.key)??"");d.useEffect(()=>{!h||x===void 0||g===null||g===""||m.has(g)||f.busy||(p(y=>new Set([...y,g])),f.run(h.action,Js(h.action.args,{data:x,row:x,scope:s})))},[g,f.busy]);const b=u.some(y=>e.body.some(k=>k.kind==="section"&&k.look==="setup"&&(!k.when||Ht(y,k.when)))),j=h!==void 0&&f.running===h.action.tool;return t.jsxs(Xs,{title:e.title,note:e.note,plain:b||a,children:[t.jsx(re,{message:o.error}),j?t.jsxs("p",{className:"pl-wait",role:"status",children:[t.jsx("span",{className:"pl-spin","aria-hidden":"true"}),h.action.busy??h.action.label]}):t.jsx(Fr,{act:f}),j?null:u.length===0?o.loading?t.jsx(Ce,{children:"Loading…"}):t.jsx(Rl,{text:e.empty??"Nothing here yet."}):t.jsx(de,{gap:"lg",divided:!0,children:pM(u,e.key,{plugin:s.plugin,page:s.page,component:`repeat "${e.title??e.rows}"`}).map(({key:y,row:k})=>t.jsx(we,{children:t.jsx(de,{children:t.jsx(vl.Provider,{value:a&&r,children:e.body.map((N,w)=>t.jsx(Bs,{component:N,data:k},w))})})},y))})]})}function cV({component:e,data:n}){const s=jt(),r=f9({...e.views?{views:e.views}:{},...e.default?{default:e.default}:{},today:XK(s.timezone),storageKey:`buddi.calendar-view:${s.plugin}/${s.page}`}),a=bn(e.query,n,void 0,{from:r.from,to:r.to}),i=d.useMemo(()=>n9(_r(a.data,e.events),e.map,s.timezone,`plugin ${s.plugin}, page ${s.page}, calendar`),[a.data,e.events,e.map,s.timezone,s.plugin,s.page]),[l,o]=d.useState(null),c=e.sheet&&l!==null?i.find(u=>u.id===l)??null:null;return t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:a.error}),t.jsx(m9,{state:r,events:i,hours:e.hours,empty:e.empty??"Nothing.",label:e.title??"Calendar",onEvent:e.sheet?u=>o(u.id):void 0,count:e.count&&a.data!==void 0?i.length:void 0}),c&&e.sheet?t.jsx(uV,{event:c,sheet:e.sheet,onClose:()=>o(null)}):null]})}function uV({event:e,sheet:n,onClose:s}){const r=jt(),a=e.row,i=p=>{if(p===void 0)return"";const x=Re(a,p);return x==null?"":String(x)},l=i9(e),o=i(n.color),c=i(n.notes),u=tm(i(n.mapHref)),h=n.open?tm(i(n.open.href)):null,f=n.open?i(n.open.label):"",m=p=>{const x=ks(p.replace(/\{when\}/g,l),{row:{...a,title:e.title,calendar:e.calendar,location:e.location}});s(),l9(x)||r.navigate($a)};return t.jsx(Qe,{title:e.title,onClose:s,foot:n.asks&&n.asks.length>0?t.jsx(ne,{align:"end",children:n.asks.map((p,x)=>t.jsx(A,{onClick:()=>m(p.text),children:p.label},x))}):void 0,children:t.jsxs("div",{className:"pl-event-sheet",children:[t.jsx("p",{className:"pl-event-when",children:l}),e.calendar?t.jsxs("p",{className:"pl-event-cal",children:[o&&rk.test(o)?t.jsx("span",{className:"pl-swatch","aria-hidden":"true",style:{"--swatch":o}}):t.jsx("span",{className:"cal-dot","data-tone":e.tone,"aria-hidden":"true"}),e.calendar]}):null,e.location?t.jsxs("p",{className:"pl-event-where",children:[t.jsx(se,{name:"pin",size:14}),u?t.jsx(Fo,{href:u,children:e.location}):t.jsx("span",{children:e.location})]}):null,c?t.jsx("p",{className:"pl-event-notes",children:c}):null,h&&f?t.jsx("p",{className:"pl-event-open",children:t.jsx(Fo,{href:h,className:"wb-src-link",children:f})}):null]})})}function dV({component:e,data:n}){var f;const s=jt(),r=bn(e.query,n),a={items:"$",icon:e.icon,value:e.value,label:e.label,...e.lines?{lines:e.lines}:{},...e.tone?{tone:e.tone}:{}},i=_r(r.data,e.items).flatMap(m=>{const p=Db([m],a).tiles[0];return p?[{tile:p,key:e.select?String(Re(m,e.select.key)??""):""}]:[]}),l=e.select,o=l?Math.max(0,i.findIndex(m=>m.key===s.params[l.param])):null,c=((f=i[0])==null?void 0:f.key)??"",u=l?s.params[l.param]:void 0,h=i.some(m=>m.key===u);return d.useEffect(()=>{l&&c!==""&&!h&&s.setParams({[l.param]:c})},[l==null?void 0:l.param,c,h]),t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:r.error}),r.data===void 0?t.jsx(Ce,{children:"Loading…"}):i.length===0?t.jsx(Rl,{text:e.empty??"Nothing to show."}):t.jsx(OP,{props:{tiles:i.map(m=>m.tile),notice:!1,empty:""},...e.layout?{layout:e.layout}:{},...l?{selected:o,onPick:m=>{var p;return s.setParams({[l.param]:((p=i[m])==null?void 0:p.key)||null})}}:{}})]})}function hV({component:e,data:n}){const s=bn(e.query,n),r=_r(s.data,e.points);if(s.data===void 0||r.length===0)return t.jsxs(Xs,{title:e.title,note:e.note,children:[t.jsx(re,{message:s.error}),s.data===void 0?t.jsx(Ce,{children:"Loading…"}):t.jsx(Rl,{text:e.empty??"Nothing to show."})]});const a=r.map(c=>String(Re(c,e.x)??"")),i={items:"$",icon:e.tiles.icon,value:e.tiles.value,label:e.tiles.label,...e.tiles.lines?{lines:e.tiles.lines}:{}},l=r.map((c,u)=>Db([c],i).tiles[0]??{icon:null,value:"",label:a[u]??"",lines:[],tone:"neutral",link:null}),o=e.series.map(c=>({id:c.id,label:c.label,kind:c.kind,...c.unit?{unit:c.unit}:{},values:r.map(u=>zs(Re(u,c.y))??null)}));return t.jsxs(t.Fragment,{children:[t.jsx(re,{message:s.error}),t.jsx(w9,{...e.title?{title:e.title}:{},...e.note?{note:e.note}:{},...e.labelEvery?{labelEvery:e.labelEvery}:{},xs:a,series:o,tiles:l})]})}function fV({component:e,data:n}){const s=bn(e.query,n),r=o=>{const c=Re(s.data,o);return c==null?"":String(c)};if(s.data===void 0||s.data===null)return t.jsxs(t.Fragment,{children:[t.jsx(re,{message:s.error}),t.jsx(Ce,{children:s.loading?"Loading…":e.empty??"Nothing to show."})]});const a=r(e.value),i=r(e.title),l=e.facts.map(o=>({label:o.label,value:r(o.path)})).filter(o=>o.value!=="");return t.jsxs("section",{className:"pg-hero","aria-label":[a,i,...l.map(o=>`${o.label} ${o.value}`)].filter(Boolean).join(", ").split(yi).join("hidden"),children:[t.jsxs("div",{className:"pg-hero-main","aria-hidden":"true",children:[t.jsx("span",{className:"pg-hero-icon",children:t.jsx(se,{name:dc(jj(He(s.data,e.icon))),size:44})}),t.jsx("span",{className:"pg-hero-value",children:a}),i?t.jsx("span",{className:"pg-hero-title",children:i}):null]}),l.length>0?t.jsx("dl",{className:"pg-hero-facts","aria-hidden":"true",children:l.map(o=>t.jsxs("div",{className:"pg-hero-fact",children:[t.jsx("dt",{children:o.label}),t.jsx("dd",{children:o.value})]},o.label))}):null]})}function mV({component:e,data:n}){var x;const s=jt(),[r,a]=d.useState(e.default??e.tabs[0].id),i=e.param,l=i?s.params[i]??e.default??e.tabs[0].id:r,o=g=>i?s.setParams({[i]:g}):a(g),c=e.pick,{options:u}=cM({name:(c==null?void 0:c.param)??"",label:(c==null?void 0:c.label)??"",...c!=null&&c.options?{options:c.options}:{},...c!=null&&c.optionsFrom?{optionsFrom:c.optionsFrom}:{}},{},n),h=c?u.some(g=>g.value===s.params[c.param])?s.params[c.param]:((x=u[0])==null?void 0:x.value)??"":"",f=e.tabs.find(g=>g.id===l)??e.tabs[0],m=(c==null?void 0:c.look)==="chips",p=c!=null&&c.add?Ua(s,c.add.to,n):"";return t.jsxs("div",{className:"pg-tabs",children:[t.jsxs("div",{className:"pg-tabs-bar","data-only":e.tabs.length===1?"pick":void 0,"data-chips":m?"true":void 0,children:[c&&m&&u.length>0?t.jsxs("div",{className:"pl-chips",role:"group","aria-label":c.label,children:[u.map(g=>t.jsx(A,{size:"sm","aria-pressed":g.value===h,onClick:()=>s.setParams({[c.param]:g.value}),children:g.label},g.value)),c.add&&p!==""?t.jsxs(it,{size:"sm",variant:"ghost",href:p,onClick:g=>{g.preventDefault(),s.navigate(p)},children:[t.jsx(se,{name:"plus",size:12}),c.add.label]}):null]}):c&&u.length>1?t.jsx(dn,{label:c.label,options:u,value:h,onChange:g=>s.setParams({[c.param]:g})}):null,e.tabs.length>1?t.jsx("span",{className:"pg-tabs-switch",children:t.jsx(dn,{label:e.title??"View",options:e.tabs.map(g=>({value:g.id,label:g.label})),value:f.id,onChange:o})}):null]}),f.body.map((g,b)=>t.jsx(Bs,{component:g,data:n},`${f.id}-${b}`))]})}function pV({component:e,data:n}){const[s,r]=d.useState(!1),a=bn(s?e.query:void 0,n),i=e.query?a.data:n,l=typeof e.label=="string"?e.label:String(He(n,e.label)??"");return t.jsxs(Kt,{summary:l,boxed:!0,onToggle:o=>r(o),children:[t.jsx(re,{message:a.error}),s?e.query&&a.data===void 0?t.jsx(Ce,{children:"Loading…"}):t.jsx(de,{children:e.body.map((o,c)=>t.jsx(Bs,{component:o,data:i},c))}):null]})}function jM({component:e,data:n}){const s=jt(),r=pa();return t.jsxs(t.Fragment,{children:[t.jsx(ne,{align:"end",children:t.jsx(Pi,{action:e.action,args:Js(e.action.args,{data:n,row:n,scope:s}),disabled:r.busy,running:r.running===e.action.tool,row:n,onRun:(a,i)=>void r.run(a,i)})}),t.jsx(Fr,{act:r})]})}function gV({component:e}){const n=jt();return t.jsx(Wb,{plugin:n.plugin,agent:e.agent,text:e.text,label:e.label})}function xV(e){if(!e||typeof e!="object")return null;const n=e;return typeof n.id!="string"||n.id===""||typeof n.title!="string"?null:{...n,outlets:Array.isArray(n.outlets)?n.outlets.filter(s=>s&&typeof s.name=="string"):[]}}function Rj(e){return e.length===0?"":e.length===1?e[0].name:`${e[0].name} and ${e.length-1} more`}function CC(e,n,s){const r={};for(const[a,i]of Object.entries(e))"row"in i?r[a]=Re(n,i.row):"item"in i?r[a]=Re(s,i.item):r[a]=He(n,i);return r}const vV=8e3;function EC(e,n,s){const r=[];let a=null;return e.forEach((i,l)=>{if(!Ht(n,i.when))return;const o=i.each?Array.isArray(Re(n,i.each))?Re(n,i.each).slice(0,4):[]:[void 0];if(o.length!==0){l>0&&r.length>0&&i.group!==a&&r.push("separator"),i.group&&i.group!==a&&r.push({heading:i.group}),a=i.group;for(const c of o)r.push({label:ks(i.label,{row:c===void 0?n:c}),...i.hint?{hint:ks(i.hint,{row:n})}:{},onSelect:()=>s(i,c)})}}),r}function jV({component:e,data:n}){var S,C;const s=jt(),r=bn(e.query,n),a=pa(),i=e.param??"story",[l,o]=d.useState(null);d.useEffect(()=>{if(!l)return;const E=setTimeout(()=>o(null),vV);return()=>clearTimeout(E)},[l]);const c=_r(r.data,e.rows).map(xV).filter(E=>E!==null),u=e.ways??[],h=s.params[i],f=h?c.find(E=>E.id===h)??null:null,m=async(E,$,R,P)=>{var U;const O=CC(E.args,$,R);if(!await a.run({tool:E.tool,label:E.label,...E.done!==void 0?{done:E.done}:{},...E.then?{then:E.then}:{}},O)||!E.hides)return;h===$.id&&s.setParams({[i]:null});const F=typeof E.done=="string"?ks(E.done,{row:R===void 0?$:R}):"Hidden.";o({id:$.id,group:((U=$.group)==null?void 0:U.id)??null,index:P,text:F,...E.undo?{undo:{tool:E.undo.tool,label:E.undo.label,args:CC(E.undo.args,$,R)}}:{}})},p=()=>{const E=l;o(null),E!=null&&E.undo&&a.run({tool:E.undo.tool,label:E.undo.label},E.undo.args)},x=[];for(const E of c){if(l&&E.id===l.id)continue;const $=e.groups&&E.group?E.group.id:null;let R=x.find(P=>P.id===$);R||(R={id:$,name:e.groups&&E.group?E.group.name:null,rows:[]},x.push(R)),R.rows.push(E)}l&&!x.some(E=>E.id===l.group)&&x.push({id:l.group,name:null,rows:[]});const g=(S=e.groups)==null?void 0:S.param,b=!(x.length===1&&g!==void 0&&s.params[g]===x[0].id),j=(E,$)=>t.jsx(kV,{row:E,plugin:s.plugin,menu:EC(u,E,(R,P)=>void m(R,E,P,$)),onOpen:()=>s.setParams({[i]:E.id})},E.id),v=E=>t.jsxs("div",{className:"pl-story-gone",role:"status",children:[t.jsx("span",{children:E.text}),E.undo?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"pl-story-gone-sep","aria-hidden":"true",children:"·"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:p,children:E.undo.label})]}):null]},`gone-${E.id}`),y=E=>{const $=E.rows.map(j);return l&&l.group===E.id&&$.splice(Math.min(l.index,$.length),0,v(l)),$};let k;if(r.data===void 0&&r.loading)k=t.jsx("div",{className:"pl-story-grid","aria-busy":"true","aria-label":"Fetching stories",children:Array.from({length:6},(E,$)=>t.jsxs("div",{className:"ui-card pl-story cat-skel pl-story-skel",children:[t.jsxs("span",{className:"pl-story-head",children:[t.jsx("i",{className:"cat-skel-face pl-story-skel-logo"}),t.jsx("i",{className:"cat-skel-line","data-w":"30"})]}),t.jsx("i",{className:"cat-skel-line","data-w":"90"}),t.jsx("i",{className:"cat-skel-line","data-w":"70"}),t.jsx("i",{className:"cat-skel-line","data-w":"40"})]},$))});else if(c.length===0&&!l){const E=(e.emptyStates??[]).find($=>Ht(r.data,$.when));if(E){const $=P=>P===void 0?"":typeof P=="string"?P:String(He(r.data,P)??""),R=(E.actions??[]).map((P,O,I)=>{const F=O===I.length-1&&(I.length>1||E.warm===!0);if(P.set)return t.jsx(A,{size:"sm",variant:F?"accent":"ghost",onClick:()=>s.setParams(P.set),children:P.label},O);const U=P.to?Ua(s,P.to,r.data):"";return U===""?null:t.jsx(it,{size:"sm",variant:F?"accent":"ghost",href:U,onClick:L=>{L.preventDefault(),s.navigate(U)},children:P.label},O)});k=t.jsx(Ce,{warm:E.warm===!0,title:$(E.title),action:R.length>0?t.jsx(ne,{children:R}):void 0,children:$(E.text)})}else k=t.jsx(Rl,{text:e.empty??"Nothing here yet."})}else k=x.map(E=>{var $;return t.jsxs("section",{className:"pl-story-group","aria-label":E.name??e.title??"Stories",children:[b&&E.name?t.jsxs("header",{className:"pl-story-group-head",children:[t.jsx("h2",{className:"pl-story-group-title",children:E.name}),g&&E.id?t.jsxs("a",{href:"#",className:"pl-story-group-aside",onClick:R=>{R.preventDefault(),s.setParams({[g]:E.id})},children:[(($=e.groups)==null?void 0:$.label)??"See all",t.jsx(se,{name:"arrow",size:12})]}):null]}):null,t.jsx("div",{className:"pl-story-grid",children:y(E)})]},E.id??"all")});const N=u.find(E=>E.hides&&!E.each&&Ht(f,E.when)),w=u.filter(E=>E!==N);return t.jsxs("div",{className:"pl-stories",children:[t.jsx(re,{message:r.error}),t.jsx(yM,{act:a}),k,f?t.jsx(Qe,{scrollBody:!0,title:f.kicker??((C=f.group)==null?void 0:C.name)??e.title??"Story",onClose:()=>s.setParams({[i]:null}),foot:t.jsxs(ne,{children:[N?t.jsx(A,{variant:"ghost",disabled:a.busy,onClick:()=>void m(N,f,void 0,0),children:ks(N.label,{row:f})}):null,w.length>0?t.jsx(rs,{label:`Less of this: ${f.title}`,trigger:t.jsx("button",{type:"button",className:"ui-btn","data-variant":"ghost",disabled:a.busy,children:"Less of this…"}),items:EC(w,f,(E,$)=>void m(E,f,$,0)),stacked:!0}):null,t.jsx(ft,{}),e.ask&&Ht(f,e.ask.when)?t.jsx(yV,{to:e.ask.to,row:f,label:e.ask.label,context:e.ask.context,accent:!0}):null]}),children:t.jsx(NV,{row:f,plugin:s.plugin,edition:e.edition})}):null]})}function yM({act:e}){return e.error?t.jsx(re,{message:e.error}):e.approvalId?t.jsx(Fr,{act:e}):null}function yV({to:e,row:n,label:s,accent:r,context:a}){const i=jt(),l=a&&"chat"in e?He(n,e.chat):null,o=typeof l=="string"&&l?ht(l,"new"):Ua(i,e,n);return o===""?null:"href"in e?t.jsx(it,{variant:r?"accent":"ghost",href:o,target:"_blank",rel:"noopener noreferrer",children:s}):t.jsx(it,{variant:r?"accent":"ghost",href:o,onClick:c=>{if(c.preventDefault(),a&&"chat"in e){const u=He(n,e.chat),h=He(n,a.title),f=He(n,a.text);typeof u=="string"&&typeof h=="string"&&typeof f=="string"&&IU(u,{title:h,text:f,suggestions:a.suggestions??[]})}i.navigate(o)},children:s})}function wV({row:e}){var s;const n=((s=e.mark)==null?void 0:s.kind)==="told";return!e.opinion&&!e.languages&&!e.mark?null:t.jsxs("span",{className:"pl-story-marks",children:[e.opinion?t.jsx(Do,{children:"Opinion"}):null,e.languages?t.jsx("span",{className:"pl-story-lang",children:e.languages}):null,e.mark?n?t.jsxs("span",{className:"pl-story-told",children:[t.jsx(se,{name:"check",size:12}),e.mark.text]}):t.jsx("span",{className:"pl-story-new",children:e.mark.text}):null]})}function bV({plugin:e,outlets:n}){return n.length===0?null:t.jsxs("span",{className:"pl-stack","aria-label":Rj(n),children:[t.jsx("span",{className:"pl-stack-logos",children:n.slice(0,3).map((s,r)=>t.jsx($l,{src:Al(e,s.logo),label:s.name},r))}),t.jsx("span",{className:"pl-stack-words",children:Rj(n)})]})}function kV({row:e,plugin:n,menu:s,onOpen:r}){var i;const a=Rj(e.outlets);return t.jsxs("article",{className:"ui-card pl-story","data-told":e.quiet?"true":void 0,"data-opinion":e.opinion?"true":void 0,tabIndex:0,onClick:r,onKeyDown:l=>{l.target!==l.currentTarget||l.key!=="Enter"||(l.preventDefault(),r())},"aria-label":`${e.opinion?"Opinion: ":""}${e.title}.${a?` ${a}`:""}${e.ago?`, ${e.ago}`:""}.`,children:[t.jsxs("header",{className:"pl-story-head",children:[t.jsx(bV,{plugin:n,outlets:e.outlets}),e.ago?t.jsx("span",{className:"pl-story-time",children:e.ago}):null,s.length>0?t.jsx("span",{className:"pl-story-more",onClick:l=>l.stopPropagation(),onKeyDown:l=>l.stopPropagation(),children:t.jsx(rs,{label:`Ways out for ${e.title}`,items:s.map(l=>typeof l=="string"||"heading"in l?l:{label:l.label,...l.hint?{hint:l.hint}:{},onSelect:l.onSelect}),sheet:{title:e.title,sub:[e.kicker??((i=e.group)==null?void 0:i.name),a].filter(Boolean).join(" · ")},stacked:!0})}):null]}),t.jsx(wp,{image:e.image,plugin:n,compact:!0}),t.jsx("h3",{className:"pl-story-title",children:e.title}),e.lead?t.jsx("p",{className:"pl-story-lead",children:e.lead}):null,t.jsx(wV,{row:e})]})}function NV({row:e,plugin:n,edition:s}){const r=Array.isArray(e.sources)?e.sources.filter(u=>u&&typeof u.title=="string"):[],a=Array.isArray(e.timeline)?e.timeline.filter(u=>u&&typeof u.text=="string"):[],i=s&&Ht(e,s.when)?s:void 0,l=e.summary??e.lead,o=u=>u.replace(/\s+/g," ").trim().toLocaleLowerCase(),c=e.update&&o(e.update)!==o(l??"")&&o(e.update)!==o(e.title)?e.update:void 0;return t.jsxs("div",{className:"pl-story-sheet",children:[t.jsxs("div",{className:"pl-story-sheet-lead",children:[e.opinion?t.jsx(Do,{children:"Opinion"}):null,t.jsx("h3",{className:"pl-story-sheet-title",children:e.title}),e.titleAttribution?t.jsx("p",{className:"pl-story-sheet-meta",children:e.titleAttribution}):null,t.jsx(wp,{image:e.image,plugin:n}),l?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"pl-story-sheet-summary",children:l}),e.summaryAttribution?t.jsx("p",{className:"pl-story-sheet-meta",children:e.summaryAttribution}):null]}):null,c?t.jsxs("div",{className:"pl-story-sheet-update",children:[e.mark&&e.mark.kind==="new"?t.jsx("span",{className:"pl-story-new",children:e.mark.text}):null,t.jsx("p",{children:c}),e.updateAttribution?t.jsx("p",{className:"pl-story-sheet-meta",children:e.updateAttribution}):null]}):null,e.meta||i?t.jsxs("p",{className:"pl-story-sheet-meta",children:[e.meta,i?t.jsxs(t.Fragment,{children:[e.meta?" · ":null,t.jsx(SV,{to:i.to,row:e,label:i.label})]}):null]}):null]}),r.length>0?t.jsxs("section",{className:"pl-story-sheet-block",children:[t.jsx("h4",{className:"pl-story-sheet-head",children:"Sources"}),t.jsx("ul",{className:"pl-story-sources",children:r.map((u,h)=>{const f=tm(u.url);return t.jsxs("li",{className:"pl-story-source",children:[t.jsx($l,{className:"pl-logo-md",src:Al(n,u.logo),label:u.outlet}),t.jsxs("span",{className:"pl-story-source-text",children:[f?t.jsx(Fo,{href:f,className:"wb-src-link pl-story-source-title",children:u.title}):t.jsx("span",{className:"pl-story-source-title",children:u.title}),u.meta?t.jsx("span",{className:"pl-story-source-meta",children:u.meta}):null]})]},h)})})]}):null,a.length>0?t.jsxs("section",{className:"pl-story-sheet-block",children:[t.jsx("h4",{className:"pl-story-sheet-head",children:"Coverage timeline"}),t.jsx("ol",{className:"pl-story-timeline",children:a.map((u,h)=>t.jsxs("li",{className:"pl-story-tl","data-told":u.told?"true":void 0,"data-last":h===a.length-1?"true":void 0,children:[t.jsx("span",{className:"pl-story-tl-at",children:u.at}),t.jsx("span",{className:"pl-story-tl-dot","aria-hidden":"true"}),t.jsx("span",{className:"pl-story-tl-what",children:u.text})]},h))})]}):null]})}function SV({to:e,row:n,label:s}){const r=jt(),a=Ua(r,e,n);return a===""?null:"href"in e?t.jsx(Fo,{href:a,children:s}):t.jsx("a",{href:a,onClick:i=>{i.preventDefault(),r.navigate(a)},children:s})}function CV({component:e,data:n}){const s=Re(n,e.path);return typeof s!="string"||s===""?null:t.jsx(sm,{id:s})}function EV({component:e,data:n}){const s=Re(n,e.path);return typeof s!="string"||s===""?null:t.jsx(ne,{children:t.jsx("a",{href:ca(s),children:e.label})})}function wM(e){if(typeof e=="string")return e.trim()===""?null:{address:e.trim()};if(e&&typeof e=="object"&&typeof e.address=="string"){const n=e;return{address:n.address,name:typeof n.name=="string"&&n.name.trim()!==""?n.name.trim():null}}return null}function AC(e){return Array.isArray(e)?e.map(wM).filter(n=>n!==null):[]}function $C(e){return e.name?`${e.name} <${e.address}>`:e.address}function TC(e){if(!e||typeof e!="object")return null;const n=e,s=wM(n.from);if(!s)return null;const r=i=>typeof n[i]=="string"?n[i]:null,a=Array.isArray(n.attachments)?n.attachments.filter(i=>!!i&&typeof i=="object"&&typeof i.name=="string"):[];return{...typeof n.id=="string"?{id:n.id}:{},from:s,to:AC(n.to),cc:AC(n.cc),at:r("at"),html:r("html"),text:r("text"),snippet:r("snippet"),note:r("note"),attachments:a}}function AV(e){var s;return(((s=(e.name??e.address).replace(/^["'\s]+/,"").match(/[\p{L}\p{N}]/u))==null?void 0:s[0])??"?").toUpperCase()}function $V(e){let n=0;for(const s of e.toLowerCase())n=n*31+s.charCodeAt(0)>>>0;return n%6+1}function TV({component:e,data:n}){const s=jt(),r=e.path?Re(n,e.path):n,a=e.folded!==void 0&&Ht(r,e.folded),[i,l]=d.useState(!a),[o,c]=d.useState(!1),u=bn(i?e.query:void 0,r),h=TC(r),f=e.query?TC(u.data):h,m=f??h;if(!m)return null;const p=m.from,x=m.at?Zm(new Date(m.at),s.timezone):"",g=[...m.to??[],...m.cc??[]],b=t.jsx("span",{className:"ui-avatar pl-mail-face","data-face":$V(p.address),"aria-hidden":"true",children:AV(p)});return i?t.jsxs("article",{className:"pl-mail","aria-label":`Message from ${p.name??p.address}`,children:[t.jsxs("header",{className:"pl-mail-head",children:[b,t.jsxs("span",{className:"pl-mail-who",children:[t.jsxs("span",{className:"pl-mail-from",children:[p.name?t.jsx("span",{className:"pl-mail-name",children:p.name}):null,t.jsx("span",{className:"pl-mail-address",children:p.name?`<${p.address}>`:p.address})]}),g.length>0?t.jsxs("button",{type:"button",className:"pl-mail-to-toggle","aria-expanded":o,onClick:()=>c(j=>!j),children:["to ",g.map(j=>j.name??j.address).join(", ")]}):null]}),t.jsx("span",{className:"pl-mail-when",children:a?t.jsx("button",{type:"button",className:"pl-mail-fold",onClick:()=>l(!1),title:"Fold this message",children:x}):x})]}),o?t.jsxs("dl",{className:"pl-mail-recipients",children:[(m.to??[]).length>0?t.jsxs(t.Fragment,{children:[t.jsx("dt",{children:"To"}),t.jsx("dd",{children:(m.to??[]).map($C).join(", ")})]}):null,(m.cc??[]).length>0?t.jsxs(t.Fragment,{children:[t.jsx("dt",{children:"Cc"}),t.jsx("dd",{children:(m.cc??[]).map($C).join(", ")})]}):null]}):null,t.jsx(re,{message:u.error}),e.query&&!f&&!u.error?t.jsx(Ce,{children:"Loading…"}):t.jsxs(t.Fragment,{children:[m.note?t.jsx("p",{className:"pl-mail-note",children:m.note}):null,t.jsx(_H,{html:m.html,text:m.text,sender:p.address,attachments:m.attachments,cidSrc:Lr}),(m.attachments??[]).length>0?t.jsx(RV,{attachments:m.attachments??[],fetch:e.fetch}):null]})]}):t.jsxs("button",{type:"button",className:"pl-mail-folded",onClick:()=>l(!0),"aria-label":`Open the message from ${p.name??p.address}`,children:[b,t.jsx("span",{className:"pl-mail-folded-who",children:p.name??p.address}),t.jsx("span",{className:"pl-mail-folded-snippet",children:m.snippet??""}),t.jsx("span",{className:"pl-mail-when",children:x})]})}function RV({attachments:e,fetch:n}){const s=jt(),r=pa();return t.jsxs("div",{className:"pl-mail-files",children:[t.jsx("div",{className:"wb-msg-files",role:"list","aria-label":"Attachments",children:e.map((a,i)=>t.jsxs("span",{role:"listitem",className:"pl-mail-file",children:[t.jsx(Nd,{name:a.name,mime:a.mime,sizeBytes:typeof a.size=="number"?a.size:null,...a.artifactId?{onOpen:()=>s.navigate(oo(a.artifactId))}:{}}),!a.artifactId&&n?t.jsx(Pi,{action:n,args:Js(n.args,{data:a,row:a,scope:s}),disabled:r.busy,running:r.running===n.tool,row:a,onRun:(l,o)=>void r.run(l,o)}):null]},`${i}-${a.name}`))}),t.jsx(Fr,{act:r})]})}function IV({component:e,data:n}){const s=bn(e.query,n),r=pa();return s.error?t.jsx(re,{message:s.error}):s.data===void 0?t.jsx(Ce,{children:e.empty??"Loading…"}):t.jsxs(t.Fragment,{children:[t.jsx(Fr,{act:r}),t.jsx(PV,{component:e,data:n,loaded:s.data,act:r},JSON.stringify(hi(s.data)))]})}function PV({component:e,data:n,loaded:s,act:r}){const a=jt(),[i,l]=tk(e.fields,s),o=e.fields.some(x=>x.from!==void 0&&bp(Re(s,x.from))),c={...i,version:Re(s,e.version)},u=nk(e.fields,i,s),h=e.readOnlyWhen!==void 0&&Ht(s,e.readOnlyWhen),f=(e.actions??[]).filter(x=>x.placement==="leading"),m=(e.actions??[]).filter(x=>x.placement!=="leading"),p=(x,g)=>t.jsx(Pi,{action:x,args:Js(x.args,{data:n,fields:c,shape:e.fields,omit:u,scope:a}),disabled:r.busy,running:r.running===x.tool,onRun:(b,j)=>void r.run(b,j)},`${x.tool}-${g}`);return t.jsx(Xs,{title:e.title,note:e.note,children:t.jsxs(de,{children:[t.jsx(Cp,{fields:e.fields,values:i,data:s,disabled:h,onChange:l}),o&&!h?t.jsx("p",{className:"muted",children:"Show amounts to change this."}):null,h?null:t.jsxs(ne,{align:"end",children:[f.map(p),f.length>0?t.jsx(ft,{}):null,p(e.save,-1),m.map(p)]}),e.footnote?t.jsx("p",{className:"ui-toolbar-note",children:e.footnote}):null]})})}const bM={};function kM({page:e,item:n,navigate:s,timezone:r,embedded:a,siblings:i,params:l}){const[o,c]=d.useState(()=>({...l})),u=JSON.stringify(l??{});d.useEffect(()=>{l&&Object.keys(l).length>0&&c(j=>({...j,...l}))},[u]);const[h,f]=d.useState(0);WI(e.plugin,()=>f(j=>j+1));const[m]=Zb(),p={plugin:e.plugin,page:e.id,pages:i??[e],item:n??null,params:{...o,...n?{item:n}:{},...LV(e,n)},setParams:j=>c(v=>{const y={...v};for(const[k,N]of Object.entries(j))N===null?delete y[k]:y[k]=N;return y}),navigate:s,timezone:r,version:h,refresh:()=>f(j=>j+1),sensitive:new Set(e.sensitive??[]),sensitivePaths:e.sensitivePaths??bM,amountsShown:m},x=e.body[0],g=!a&&(x==null?void 0:x.kind)==="notice"&&x.look!=="quiet"&&x.link===void 0&&x.action===void 0&&x.when===void 0&&x.title===void 0&&(x.tone===void 0||x.tone==="neutral")?x.text:void 0,b=g===void 0?e:{...e,body:e.body.slice(1)};return t.jsx(Sp.Provider,{value:p,children:t.jsx(MV,{page:b,embedded:a===!0,lede:g})})}function MV({page:e,embedded:n,lede:s}){const r=jt(),a=e.data!==void 0&&r.sensitive.has(e.data.query),i=bn(a?void 0:e.data,null),l=i.data??null,o=s===void 0||typeof s=="string"?s:He(l,s),c=o==null||o===""?void 0:String(o),u=S9([e.data,e.actions,e.body],r.sensitivePaths),h=!n&&e.actions&&e.actions.length>0,f=h||u?t.jsxs(t.Fragment,{children:[u?t.jsx(C9,{}):null,h?e.actions.map((m,p)=>t.jsx(OV,{component:m,data:l},p)):null]}):void 0;return t.jsxs(Rs,{embedded:n,title:e.title,lede:c,actions:f,children:[!n&&e.place==="rail"?t.jsx(VP,{plugin:e.plugin,navigate:r.navigate,dismissible:!0},e.plugin):null,t.jsx(DV,{page:e,boxed:n,root:a?void 0:i})]})}function OV({component:e,data:n}){const s=jt();if(!Ht(n,e.when))return null;if(e.kind==="button")return t.jsx(jM,{component:e,data:n});if(e.kind==="menu")return t.jsx(fM,{component:e,data:n});const r=Ua(s,e.to,n);if(r==="")return null;const a=e.tone==="accent"?"accent":"ghost";return"href"in e.to?t.jsxs(it,{variant:a,href:r,target:"_blank",rel:"noopener noreferrer",children:[e.label,t.jsx("span",{className:"wb-src-out","aria-hidden":"true",children:"↗"})]}):t.jsx(it,{variant:a,href:r,onClick:i=>{i.preventDefault(),s.navigate(r)},children:e.label})}function DV({page:e,boxed:n,root:s}){const r=jt();return e.data&&r.sensitive.has(e.data.query)?t.jsx(lM,{children:t.jsx(RC,{page:e,boxed:n})}):t.jsx(RC,{page:e,boxed:n,root:s})}function RC({page:e,boxed:n,root:s}){const r=bn(s?void 0:e.data,null),a=s??r;return t.jsxs(de,{gap:"lg",divided:!n,children:[t.jsx(re,{message:a.error}),t.jsx(vl.Provider,{value:n,children:e.body.map((i,l)=>t.jsx(Bs,{component:i,data:a.data??null},l))})]})}function LV(e,n){if(!n)return{};const s=[],r=a=>{for(const i of a)if(i.kind==="list-detail")s.push(i.param),r(i.detail);else if(i.kind==="section"||i.kind==="detail"||i.kind==="expand")r(i.body);else if(i.kind==="tabs")for(const l of i.tabs)r(l.body)};return r(e.body),Object.fromEntries(s.map(a=>[a,n]))}function FV(e){return t.jsx(kM,{...e,embedded:!0})}function Rl({text:e}){const n=e.search(/[.!?]\s/),s=n===-1?e.replace(/[.]$/,""):e.slice(0,n+(e[n]==="."?0:1)),r=n===-1?"":e.slice(n+1).trim();return t.jsx(ms,{title:s,children:r||null})}const _V=50,zV=9,UV=24,BV=.6,WV=48,HV=/(amount|total|balance|price|cost|paid|pay|payment|net|spend|spent|due|limit|owed|fee|income|charge|burn|minimum|principal|interest|worth|cash|debt|deposit|credit|debit|value|revenue|budget|floor|avg|mean|median)/i,KV=/^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}|$)/,VV=/^id$|(^|[a-z0-9])Id$|_id$/;function uo(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function Fs(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function NM(...e){for(const n of e)if(Fs(n))for(const s of["currency","currencyCode"]){const r=n[s];if(typeof r=="string"&&/^[A-Za-z]{3}$/.test(r))return r.toUpperCase()}return null}function SM(e,n,s){const r=n.filter(a=>a!=null&&a!=="");return r.length===0?"text":r.every(a=>typeof a=="boolean")?"boolean":r.every(a=>typeof a=="number"&&Number.isFinite(a))?s!==null&&HV.test(e)?"currency":"number":r.every(a=>typeof a=="string"&&KV.test(a))?"date":"text"}function GV(e,n){if(!VV.test(e))return!1;const s=n.filter(r=>!ua(r));return s.length<2?!1:new Set(s.map(r=>String(r))).size===s.length}function ua(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:Fs(e)?Object.keys(e).length===0:!1}function IC(e,n){const s=e.filter(Fs);if(s.length===0||s.length/e.length<.8)return null;const r=s.slice(0,_V),a=new Map,i=[];for(const h of r)for(const f of Object.keys(h))a.has(f)||i.push(f),a.set(f,(a.get(f)??0)+1);if(a.size===0||a.size>UV||[...a.values()].reduce((h,f)=>h+f,0)/(a.size*r.length)<BV)return null;const o=[...a.keys()].sort((h,f)=>{const m=(a.get(f)??0)-(a.get(h)??0);return m!==0?m:i.indexOf(h)-i.indexOf(f)}),c=[],u=[];for(const h of o){const f=r.map(g=>g[h]),m=f.filter(g=>!ua(g));if(m.length===0||GV(h,f))continue;const p=NM(r[0],n),x=SM(h,f,p);if(r.length>=4&&m.length===f.length&&f.every(g=>uo(g)&&g===f[0])){u.push({label:rn(h),value:f[0],type:x,currency:p});continue}if(c.push({key:h,label:rn(h),type:x,currency:x==="currency"?p:null}),c.length===zV)break}return c.length===0?null:{columns:c,rows:s,constants:u}}function qV(e,n,s){const r=NM(s);return{label:rn(e),value:n,type:SM(e,[n],r),currency:r}}function CM(e){return typeof e=="string"&&e.length>WV}function YV(e){return e==null?"This tool returned nothing.":typeof e=="string"&&e.trim()===""?"This tool returned an empty string.":Array.isArray(e)&&e.length===0?"This tool returned no items.":Fs(e)&&Object.keys(e).length===0?"This tool returned an empty result.":null}function Ij(e){if(typeof e=="string"&&e.trim()!=="")return e;if(Fs(e))for(const n of["message","error","reason","detail","description"]){const s=e[n];if(typeof s=="string"&&s.trim()!=="")return s;if(Fs(s)){const r=Ij(s);if(r!=="The call failed with no reason given.")return r}}return"The call failed with no reason given."}function ak(e,n={}){if(n.failed){let f=e;if(typeof e=="string")try{const m=JSON.parse(e.replace(/^tool-error:\s*/,""));Fs(m)&&(f=m)}catch{}return{kind:"error",summary:Ij(f),detail:PC(f)}}if(Fs(e)){const f=e.error,m=e.ok;if(typeof f=="string"&&f.trim()!==""||m===!1)return{kind:"error",summary:Ij(e),detail:PC(e)}}const s=YV(e);if(s)return{kind:"empty",note:s,stats:[]};if(Array.isArray(e)){const f=IC(e,e);return f?{kind:"table",label:null,columns:f.columns,rows:f.rows,total:f.rows.length,stats:f.constants,notes:[],asides:[]}:e.every(uo)?{kind:"list",label:null,items:e,total:e.length,stats:[],notes:[],asides:[]}:{kind:"tree",value:e}}if(!Fs(e))return{kind:"tree",value:e};const r=Object.entries(e);let a=null,i=null;for(const[f,m]of r){if(!Array.isArray(m))continue;const p=IC(m,e);if(p){(!a||p.rows.length>a.candidate.rows.length)&&(a={key:f,candidate:p});continue}m.length>0&&m.every(uo)&&(!i||m.length>i.items.length)&&(i={key:f,items:m})}const l=(a==null?void 0:a.key)??(i==null?void 0:i.key)??null,o=[],c=[],u=[];for(const[f,m]of r)if(f!==l){if(CM(m)){c.push(m);continue}if(uo(m)){if(m==="")continue;o.push(qV(f,m,e));continue}m!==void 0&&u.push({label:rn(f),value:m})}if(a)return{kind:"table",label:rn(a.key),columns:a.candidate.columns,rows:a.candidate.rows,total:a.candidate.rows.length,stats:[...o,...a.candidate.constants],notes:c,asides:u};if(i)return{kind:"list",label:rn(i.key),items:i.items,total:i.items.length,stats:o,notes:c,asides:u};const h=r.filter(([,f])=>Array.isArray(f)&&f.length===0);return h.length>0&&h.length===r.filter(([,f])=>Array.isArray(f)).length?{kind:"empty",note:`No ${h.map(([m])=>rn(m).toLowerCase()).join(", ")} to show.`,stats:o}:r.every(([,f])=>uo(f)||Fs(f)||Array.isArray(f))?{kind:"record",pairs:o,notes:c,asides:u}:{kind:"tree",value:e}}function PC(e){if(!Fs(e))return null;const n=Object.entries(e).filter(([s])=>s!=="message"&&s!=="error");return n.length===0?null:Object.fromEntries(n)}const rm=25,QV=3,Pj=8,EM=6;function Mj(e,n=0){if(n>EM||ua(e)||CM(e))return 0;if(uo(e))return 1;if(Array.isArray(e)){let s=0;for(const r of e)if(s+=Mj(r,n+1),s>=Pj)return s;return s}if(Fs(e)){let s=0;for(const r of Object.values(e))if(s+=Mj(r,n+1),s>=Pj)return s;return s}return 0}function Oj(e,n=0){if(n>EM)return!1;if(Array.isArray(e))return e.some(i=>Oj(i,n+1));if(!Fs(e))return!1;const s=e.artifactId??e.artifact_id;if(typeof s=="string"&&s.trim()!=="")return!0;const r=e.mime??e.mimeType??e.contentType,a=e.url??e.src??e.downloadUrl??e.path;return typeof r=="string"&&r.includes("/")&&typeof a=="string"&&a.trim()!==""?!0:Object.values(e).some(i=>Oj(i,n+1))}function JV(e){if(Oj(e))return!0;const n=ak(e);switch(n.kind){case"table":return n.rows.length>0;case"list":return n.items.length>=QV;case"record":case"tree":return Mj(e)>=Pj;default:return!1}}function _g(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ep(e){const n=_g(e);if(!n)return null;const s=_g(n.output)??n;if(typeof s.state!="string"||typeof s.stdout!="string"||typeof s.stderr!="string"||!(s.exitCode===null||typeof s.exitCode=="number"&&Number.isFinite(s.exitCode)))return null;const r=s===n?null:_g(n.input),a=(r==null?void 0:r.command)??s.command;return{command:typeof a=="string"?a:null,input:r,result:s}}function XV({text:e,label:n}){const[s,r]=d.useState("");return t.jsxs("span",{className:"wb-command-copy",children:[t.jsx("button",{className:"ui-btn",onClick:()=>{var a;if(r(""),!((a=navigator.clipboard)!=null&&a.writeText)){r("Copy unavailable; select the text to copy.");return}navigator.clipboard.writeText(e).then(()=>r("Copied"),()=>r("Copy failed; select the text to copy."))},children:n}),s&&t.jsx("span",{role:"status",className:"wb-hint",children:s})]})}function zg({title:e,text:n,error:s=!1}){return t.jsxs("section",{className:"wb-command-stream","data-error":s||void 0,children:[t.jsxs("div",{className:"wb-command-bar",children:[t.jsx("h4",{children:e}),t.jsx(XV,{text:n,label:`Copy ${e.toLowerCase()}`})]}),t.jsx("pre",{className:"wb-command-text","aria-label":e,tabIndex:0,children:n})]})}function ZV({value:e,children:n}){const{result:s,command:r,input:a}=e,i=s.state==="completed"&&s.exitCode!==null&&s.exitCode!==0,l=typeof s.signal=="string"&&s.signal?s.signal:null,o=s.state==="completed"&&s.exitCode===0,c=Object.fromEntries(Object.entries(s).filter(([h,f])=>!["stdout","stderr","state","exitCode","artifacts","outputErrors","command"].includes(h)&&f!==null&&f!==void 0&&f!=="")),u=Array.isArray(s.outputErrors)?s.outputErrors.filter(h=>typeof h=="string"):[];return t.jsxs("div",{className:"wb-command-result",children:[t.jsxs("div",{className:"wb-command-bar",children:[t.jsx("span",{className:"ui-pill","data-tone":o?"good":"critical",children:i?"Failed":s.state==="completed"&&l?"Terminated":s.state}),s.exitCode!==null&&t.jsxs("span",{className:"mono",children:["Exit code ",s.exitCode]}),l&&t.jsxs("span",{className:"mono",children:["Signal ",l]}),t.jsx("span",{className:"wb-hint",children:"Recorded command result"})]}),r!==null&&t.jsx(zg,{title:"Command",text:r}),s.state==="output-limit"&&t.jsx("p",{className:"wb-fail",children:"Output limit reached. The command was stopped and the captured output may be incomplete."}),s.state==="timed-out"&&t.jsx("p",{className:"wb-fail",children:"The command exceeded its time limit. Output below may be partial."}),s.state==="cancelled"&&t.jsx("p",{className:"wb-note",children:"The command was cancelled. Completed changes were not undone."}),s.stdout?t.jsx(zg,{title:"Output",text:s.stdout}):t.jsx("p",{className:"wb-note",children:"No standard output."}),s.stderr?t.jsx(zg,{title:"Standard error",text:s.stderr,error:!0}):null,u.length>0&&t.jsxs("section",{children:[t.jsx("h4",{children:"File export errors"}),u.map((h,f)=>t.jsx("p",{className:"wb-fail",children:h},f))]}),n,(Object.keys(c).length>0||a!==null)&&t.jsxs("details",{className:"wb-aside",children:[t.jsx("summary",{children:"Execution details"}),t.jsx("pre",{children:fs({...c,...a?{input:a}:{}})})]})]})}const gh=2,MC=64;function Il({props:e,bare:n=!1}){const[s,r]=d.useState(!1),a=Ep(e.value),i=eG((a==null?void 0:a.result)??e.value),l=d.useMemo(()=>ak(e.value,{failed:e.failed??!1}),[e.value,e.failed]);return t.jsxs("div",{children:[!a&&t.jsx(OC,{files:i}),s?t.jsx("pre",{className:"ui-code",children:fs(e.value)}):a?t.jsx(ZV,{value:a,children:i.length>0&&t.jsxs("section",{children:[t.jsx("h4",{children:"Generated files"}),t.jsx(OC,{files:i})]})}):i.length?t.jsxs("details",{className:"wb-aside",children:[t.jsx("summary",{children:"Tool details"}),t.jsx(DC,{shape:l})]}):t.jsx(DC,{shape:l}),n?null:t.jsx("div",{className:"wb-row-end wb-section",children:t.jsx("button",{className:"ui-btn","data-variant":"ghost","data-size":"sm",onClick:()=>r(o=>!o),"aria-pressed":s,children:s?"Readable":"Raw JSON"})})]})}function eG(e){const n=e&&typeof e=="object"&&"artifacts"in e?e.artifacts:null;return Array.isArray(n)?n.filter(s=>s&&typeof s.id=="string"&&/^[0-9a-f-]{36}$/i.test(s.id)&&typeof s.filename=="string"):[]}function OC({files:e}){return e.length?t.jsx("div",{className:"wb-artifacts",children:e.map(n=>{var s;return t.jsxs("div",{children:[["image/png","image/jpeg","image/gif","image/webp"].includes(n.mime??"")?t.jsx(tG,{file:n}):null,t.jsx("a",{className:"ui-btn",href:`/api/artifacts/${encodeURIComponent(n.id)}/download`,download:!0,children:(s=n.mime)!=null&&s.startsWith("image/")?`Download ${n.filename}`:n.filename})]},n.id)})}):null}function tG({file:e}){const[n,s]=d.useState(!1);return n?t.jsx("p",{className:"wb-note",children:"Preview unavailable. You can still download the file."}):t.jsx("img",{className:"wb-artifact-image",src:`/api/artifacts/${e.id}/preview`,alt:e.filename,onError:()=>s(!0)})}function DC({shape:e}){switch(e.kind){case"error":return t.jsxs("div",{children:[t.jsx("p",{className:"wb-fail",role:"status",children:e.summary}),e.detail===null?null:t.jsxs("details",{className:"wb-aside",children:[t.jsx("summary",{children:"What came back with it"}),t.jsx("div",{className:"wb-tree",children:Yu(e.detail,1)})]})]});case"empty":return t.jsxs("div",{children:[t.jsx(Ug,{stats:e.stats}),t.jsx("p",{className:"wb-note",children:e.note})]});case"table":{const n=lG(e.columns,e.rows);return t.jsxs("div",{children:[t.jsx(Ug,{stats:e.stats}),t.jsx(Bg,{notes:e.notes}),n?t.jsx(oG,{label:e.label,plan:n,rows:e.rows,total:e.total}):t.jsx(sG,{label:e.label,columns:e.columns,rows:e.rows,total:e.total}),t.jsx(Wg,{asides:e.asides})]})}case"list":return t.jsxs("div",{children:[t.jsx(Ug,{stats:e.stats}),t.jsx(Bg,{notes:e.notes}),e.label?t.jsx("h4",{className:"wb-sub",children:e.label}):null,t.jsx("ul",{className:"wb-list",children:e.items.slice(0,100).map((n,s)=>t.jsx("li",{children:Mn(n,"text",null)},s))}),e.total>100?t.jsxs("p",{className:"wb-note",children:["Showing 100 of ",e.total,"."]}):null,t.jsx(Wg,{asides:e.asides})]});case"record":return t.jsxs("div",{children:[t.jsx(Bg,{notes:e.notes}),t.jsx(nG,{pairs:e.pairs}),t.jsx(Wg,{asides:e.asides})]});default:return t.jsx("div",{className:"wb-tree",children:Yu(e.value,0)})}}function Ug({stats:e}){return e.length===0?null:t.jsx("div",{className:"ui-stats","data-inline":"true",children:e.map(n=>t.jsxs("div",{children:[t.jsx("div",{className:"ui-stat-k",children:n.label}),t.jsx("div",{className:"ui-stat-v",children:ik(n.value,n.type,n.currency)})]},n.label))})}const LC=200;function Bg({notes:e}){if(e.length===0)return null;const n=e.filter(r=>r.length<=LC),s=e.filter(r=>r.length>LC);return t.jsxs(t.Fragment,{children:[n.map(r=>t.jsx("p",{className:"wb-note",children:r},r)),s.length>0?t.jsxs("details",{className:"wb-aside",children:[t.jsx("summary",{children:s.length===1?"A note that came with this result":`${s.length} notes that came with this result`}),s.map(r=>t.jsx("p",{className:"wb-note",children:r},r))]}):null]})}function nG({pairs:e}){return e.length===0?t.jsx("p",{className:"wb-note",children:"Nothing to show."}):t.jsx("dl",{className:"ui-kv",children:e.map(n=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:n.label}),t.jsx("dd",{className:n.type==="text"?void 0:"tnum",children:ik(n.value,n.type,n.currency)})]},n.label))})}function Wg({asides:e}){return e.length===0?null:t.jsx("div",{className:"wb-section",children:e.map(n=>t.jsxs("details",{className:"wb-aside",children:[t.jsx("summary",{children:n.label}),t.jsx("div",{className:"wb-tree",children:Yu(n.value,1)})]},n.label))})}function sG({label:e,columns:n,rows:s,total:r}){const[a,i]=d.useState(!1),l=r<=rm+5?r:rm,o=a?s:s.slice(0,l);return t.jsxs("div",{children:[e?t.jsx("h4",{className:"wb-sub",children:e}):null,t.jsx("div",{className:"ui-table-wrap",children:t.jsxs("table",{className:"ui-table",children:[t.jsx("thead",{children:t.jsx("tr",{children:n.map(c=>t.jsx("th",{className:$M(c.type)?"num":void 0,children:c.label},c.key))})}),t.jsx("tbody",{children:o.map((c,u)=>t.jsx("tr",{children:n.map(h=>t.jsx(cG,{value:c[h.key],column:h},h.key))},u))})]})}),r>o.length?t.jsxs("p",{className:"wb-note wb-note-row",children:[t.jsxs("span",{children:["Showing ",o.length," of ",r]}),t.jsxs("button",{className:"ui-btn",onClick:()=>i(!0),children:["Show all ",r]})]}):null]})}const rG=/^(title|name|headline|subject|label|heading)$/i,aG=/^(url|link|href|uri|permalink)$/i;function am(e){return typeof e=="string"&&/^https?:\/\/[^\s]+$/i.test(e.trim())}function iG(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return e}}function AM(e,n=48){try{const s=new URL(e),r=s.pathname==="/"?"":s.pathname,a=`${s.hostname.replace(/^www\./,"")}${r}${s.search}`;return a.length>n?`${a.slice(0,n-1)}…`:a}catch{return e.length>n?`${e.slice(0,n-1)}…`:e}}function xh(e,n){const s=e.map(r=>r[n]).filter(r=>typeof r=="string"&&r.trim()!=="");return s.length===0?0:s.reduce((r,a)=>r+a.length,0)/s.length}function lG(e,n){if(n.length===0)return null;const s=e.filter(h=>h.type==="text"),r=s.find(h=>aG.test(h.key)&&n.some(f=>am(f[h.key])))??s.find(h=>{const f=n.map(m=>m[h.key]).filter(m=>!ua(m));return f.length>0&&f.filter(am).length/f.length>=.6});if(!r)return null;const a=s.filter(h=>h.key!==r.key),i=a.find(h=>rG.test(h.key))??a.find(h=>xh(n,h.key)>0);if(!i)return null;const o=[...a.filter(h=>h.key!==i.key)].sort((h,f)=>xh(n,f.key)-xh(n,h.key)),c=o[0]&&xh(n,o[0].key)>40?o[0]:null,u=e.filter(h=>h.key!==r.key&&h.key!==i.key&&h.key!==(c==null?void 0:c.key)).map(h=>h.key);return{url:r.key,title:i.key,description:(c==null?void 0:c.key)??null,meta:u}}function oG({label:e,plan:n,rows:s,total:r}){const[a,i]=d.useState(!1),l=r<=rm+5?r:rm,o=a?s:s.slice(0,l);return t.jsxs("div",{children:[e?t.jsx("h4",{className:"wb-sub",children:e}):null,t.jsx("ol",{className:"wb-records",children:o.map((c,u)=>{const h=c[n.url],f=am(h)?h.trim():null,m=typeof c[n.title]=="string"&&c[n.title].trim()!==""?c[n.title]:f?AM(f):"Untitled",p=n.description&&typeof c[n.description]=="string"?c[n.description]:null,x=f?iG(f):null,g=n.meta.map(b=>c[b]).filter(b=>!ua(b)&&typeof b!="object").map(b=>String(b)).filter(b=>x===null||b.replace(/^www\./,"")!==x);return t.jsxs("li",{className:"wb-record",children:[f?t.jsx("a",{className:"wb-record-title",href:f,target:"_blank",rel:"noopener noreferrer",children:m}):t.jsx("span",{className:"wb-record-title",children:m}),t.jsxs("div",{className:"wb-record-meta",children:[x?t.jsx("span",{className:"wb-record-host",title:f??void 0,children:x}):null,g.map((b,j)=>t.jsx("span",{children:b.length>60?`${b.slice(0,59)}…`:b},j))]}),p?t.jsx("p",{className:"wb-record-desc",children:p.length>280?`${p.slice(0,279)}…`:p}):null]},u)})}),r>o.length?t.jsxs("p",{className:"wb-note wb-note-row",children:[t.jsxs("span",{children:["Showing ",o.length," of ",r]}),t.jsxs("button",{className:"ui-btn",onClick:()=>i(!0),children:["Show all ",r]})]}):null]})}function cG({value:e,column:n}){if(ua(e))return t.jsx("td",{className:"wb-cell-soft",children:"—"});if(am(e)){const a=e.trim();return t.jsx("td",{className:"wb-cell-link",children:t.jsx("a",{href:a,target:"_blank",rel:"noopener noreferrer",title:a,children:AM(a)})})}if(e!==null&&typeof e=="object"){const a=Array.isArray(e)?`${e.length} item${e.length===1?"":"s"}`:`${Object.keys(e).length} fields`;return t.jsx("td",{className:"wb-cell-soft",title:fs(e),children:a})}const s=ik(e,n.type,n.currency),r=s.length>MC?`${s.slice(0,MC-1)}…`:s;return t.jsx("td",{className:$M(n.type)?"num":"wb-cell-text",...r===s?{}:{title:s},children:r})}function $M(e){return e==="number"||e==="currency"}function ik(e,n,s){return e==null?"—":n==="boolean"?e?"yes":"no":Mn(e,n==="text"?"text":n,s)}function Yu(e,n){if(e===null)return t.jsx("span",{className:"wb-tree-null",children:"null"});if(e===void 0)return t.jsx("span",{className:"wb-tree-null",children:"—"});if(typeof e=="number")return t.jsx("span",{className:"wb-tree-num",children:e});if(typeof e=="boolean")return t.jsx("span",{className:"wb-tree-bool",children:e?"true":"false"});if(typeof e=="string")return t.jsx("span",{children:e===""?t.jsx("em",{className:"wb-tree-null",children:"empty"}):e});if(Array.isArray(e)){if(e.length===0)return t.jsx("span",{className:"wb-tree-null",children:"none"});const a=t.jsxs("div",{className:"wb-tree-branch",children:[e.slice(0,50).map((i,l)=>t.jsxs("div",{children:[t.jsxs("span",{className:"wb-tree-key",children:[l,". "]}),Yu(i,n+1)]},l)),e.length>50?t.jsxs("div",{className:"wb-tree-key",children:["…and ",e.length-50," more"]}):null]});return n>=gh?t.jsx(FC,{summary:`${e.length} items`,open:n===gh,children:a}):a}const s=Object.entries(e);if(s.length===0)return t.jsx("span",{className:"wb-tree-null",children:"empty"});const r=t.jsx("div",{className:n===0?void 0:"wb-tree-branch",children:s.map(([a,i])=>t.jsxs("div",{children:[t.jsxs("span",{className:"wb-tree-key",children:[rn(a),": "]}),Yu(i,n+1)]},a))});return n>=gh?t.jsx(FC,{summary:`${s.length} fields`,open:n===gh,children:r}):r}function FC({summary:e,open:n,children:s}){return t.jsxs("details",{open:n,children:[t.jsx("summary",{className:"wb-tree-key",children:e}),s]})}const uG=e=>e&&typeof e=="object"&&!Array.isArray(e)?e:{};function TM({value:e}){return t.jsxs("details",{className:"cv-story-details",children:[t.jsx("summary",{children:"Technical details"}),t.jsx(Il,{props:{value:e}})]})}function dG({props:e}){const n=uG(e.value);if(typeof n.id!="string"||typeof n.mime!="string"||!vp(n.mime))return t.jsx(Il,{props:e});const s=[n.voice,n.model].filter(r=>typeof r=="string"&&r!=="").join(" · ");return t.jsxs("div",{children:[t.jsx(yp,{audio:{fileId:n.id,mime:n.mime,filename:typeof n.name=="string"?n.name:null,sizeBytes:typeof n.bytes=="number"?n.bytes:null}}),s?t.jsx("p",{className:"muted",children:s}):null,t.jsx(TM,{value:n})]})}function hG({props:e,timezone:n}){return!e.plugin||!e.query||e.body.length===0?t.jsx(Il,{props:{value:e.value}}):t.jsxs("div",{children:[t.jsx(O9,{plugin:e.plugin,query:e.query,params:e.params,body:e.body,timezone:n??Intl.DateTimeFormat().resolvedOptions().timeZone}),t.jsx(TM,{value:e.value})]})}const ko=e=>e&&typeof e=="object"&&!Array.isArray(e)?e:{},kt=e=>typeof e=="string"?e:"",Hg=e=>Array.isArray(e)?e.map(ko):[];function RM(e){try{const n=new URL(kt(e));return n.protocol==="https:"||n.protocol==="http:"?n.href:void 0}catch{return}}function IM(e){const n=ko(e);return kt(n.key)?n:void 0}const fG=new Set(["kicker","title","titleAttribution","image","summary","lead","summaryAttribution","update","updateAttribution","meta","sources","timeline","url","attachments"]);function _C(e,n){return Object.fromEntries(Object.entries(ko(e)).filter(([s])=>!n.has(s)))}function PM({value:e}){return Object.keys(e).length===0?null:t.jsxs("details",{className:"pl-story-sheet-block",children:[t.jsx("summary",{children:"Technical details"}),t.jsx(Il,{props:{value:e}})]})}function mG({props:e}){if(e.rows)return t.jsx(pG,{rows:Hg(e.rows),plugin:e.plugin,value:_C(e.value,new Set([...Object.keys(ko(e.value)).filter(i=>ko(e.value)[i]===e.rows),"attachments"]))});const n=ko(e.value);if(!kt(n.title))return t.jsx(Il,{props:{value:e.value}});const s=kt(n.summary)||kt(n.lead),r=Hg(n.sources).filter(i=>kt(i.title)),a=Hg(n.timeline).filter(i=>kt(i.text));return t.jsxs("article",{className:"pl-story-sheet",children:[t.jsxs("header",{className:"pl-story-sheet-lead",children:[kt(n.kicker)?t.jsx("p",{className:"pl-story-sheet-meta",children:kt(n.kicker)}):null,t.jsx("h2",{className:"pl-story-sheet-title",children:kt(n.title)}),kt(n.titleAttribution)?t.jsx("p",{className:"pl-story-sheet-meta",children:kt(n.titleAttribution)}):null,t.jsx(wp,{image:IM(n.image),plugin:e.plugin}),s?t.jsx("p",{className:"pl-story-sheet-summary",children:s}):null,s&&kt(n.summaryAttribution)?t.jsx("p",{className:"pl-story-sheet-meta",children:kt(n.summaryAttribution)}):null,kt(n.update)?t.jsxs("div",{className:"pl-story-sheet-update",children:[t.jsx("p",{children:kt(n.update)}),kt(n.updateAttribution)?t.jsx("p",{className:"pl-story-sheet-meta",children:kt(n.updateAttribution)}):null]}):null,kt(n.meta)?t.jsx("p",{className:"pl-story-sheet-meta",children:kt(n.meta)}):null]}),r.length>0?t.jsxs("section",{className:"pl-story-sheet-block",children:[t.jsx("h3",{className:"pl-story-sheet-head",children:"Sources"}),t.jsx("ul",{className:"cv-story-sources",children:r.map((i,l)=>{const o=RM(i.url);return t.jsxs("li",{children:[t.jsx($l,{src:Al(e.plugin,i.logo),label:kt(i.outlet)}),t.jsxs("div",{children:[o?t.jsxs("a",{href:o,target:"_blank",rel:"noopener noreferrer",children:[kt(i.title)," ↗"]}):t.jsx("span",{children:kt(i.title)}),t.jsx("p",{className:"pl-story-sheet-meta",children:kt(i.meta)||kt(i.outlet)})]})]},l)})})]}):null,a.length>0?t.jsxs("section",{className:"pl-story-sheet-block",children:[t.jsx("h3",{className:"pl-story-sheet-head",children:"Timeline"}),t.jsx("ol",{className:"cv-story-timeline",children:a.map((i,l)=>t.jsxs("li",{"data-told":i.told===!0||void 0,children:[t.jsx("time",{children:kt(i.at)}),t.jsx("div",{children:t.jsx("p",{children:kt(i.text)})})]},l))})]}):null,t.jsx(PM,{value:_C(e.value,fG)})]})}function pG({rows:e,plugin:n,value:s}){const r=e.filter(a=>kt(a.title));return t.jsxs("section",{className:"cv-story-list",children:[r.length>0?t.jsx("ul",{children:r.map((a,i)=>{const l=RM(a.url),o=IM(a.image),c=kt(a.meta)||kt(a.kicker),u=o?[o.credit,o.outlet].filter(Boolean).join(" · "):"";return t.jsxs("li",{children:[t.jsx(wp,{image:o,plugin:n,compact:!0}),t.jsxs("div",{children:[c?t.jsx("p",{className:"pl-story-sheet-meta",children:c}):null,t.jsx("h3",{children:l?t.jsxs("a",{href:l,target:"_blank",rel:"noopener noreferrer",children:[kt(a.title)," ↗"]}):kt(a.title)}),kt(a.lead)||kt(a.summary)?t.jsx("p",{children:kt(a.lead)||kt(a.summary)}):null,u?t.jsx("p",{className:"pl-story-sheet-meta",children:u}):null]})]},kt(a.id)||i)})}):t.jsx("p",{className:"muted",children:"Nothing to show."}),t.jsx(PM,{value:s})]})}function gG({props:e}){if(e.bars.length===0)return t.jsx("p",{className:"wb-empty",children:"No categories came back."});const n=e.bars.map(i=>i.value),s=Math.max(0,...n),r=Math.min(0,...n),a=s-r||1;return t.jsx("div",{className:"wb-bars",children:e.bars.map(i=>{const l=Math.abs(i.value)/a;return t.jsxs("div",{className:"wb-bar-row",children:[t.jsx("div",{className:"wb-bar-cat",title:i.category,children:i.category}),t.jsx("div",{className:"wb-bar-track",children:t.jsx("div",{className:"wb-bar-fill",style:{width:`${Math.max(1,l*100)}%`,background:i.value<0?"var(--chart-bar-negative)":"var(--chart-bar)"}})}),t.jsx("div",{className:"wb-bar-val",children:Mn(i.value,e.unit,e.currency)})]},i.category)})})}const xG=/^(diff --git |index [0-9a-f]|--- (a\/|\/dev\/null)|\+\+\+ (b\/|\/dev\/null)|new file mode|deleted file mode|similarity index|rename (from|to) |old mode|new mode|Binary files )/,vG=/^(… |\.\.\. |\(no change\)$|\)/;function jG(e){return e.replace(/\n$/,"").split(`
|
|
103
|
+
`).map(s=>({kind:yG(s),text:s}))}function yG(e){return e.startsWith("@@")?"hunk":xG.test(e)||vG.test(e)?"meta":e.startsWith("+")?"add":e.startsWith("-")?"del":"context"}function wG({text:e,marks:n}){const s=e.toLowerCase(),r=[];for(const l of n){const o=l.trim().toLowerCase();if(o!=="")for(let c=s.indexOf(o);c!==-1;c=s.indexOf(o,c+o.length))r.push([c,c+o.length])}if(r.length===0)return t.jsx(t.Fragment,{children:e===""?" ":e});r.sort((l,o)=>l[0]-o[0]);const a=[];let i=0;for(const[l,o]of r)l<i||(l>i&&a.push(t.jsx("span",{children:e.slice(i,l)},`t${i}`)),a.push(t.jsx("mark",{className:"wb-diff-mark",children:e.slice(l,o)},`m${l}`)),i=o);return i<e.length&&a.push(t.jsx("span",{children:e.slice(i)},`t${i}`)),t.jsx(t.Fragment,{children:a})}function im({text:e,limit:n,more:s,label:r="Diff",marks:a}){const i=jG(e),l=n===void 0?i:i.slice(0,n),o=i.length-l.length;return t.jsxs("div",{className:"wb-diff-wrap",children:[t.jsx("pre",{className:"wb-diff","aria-label":r,"data-testid":"diff",children:l.map((c,u)=>t.jsx("span",{className:"wb-diff-line","data-kind":c.kind,children:a&&a.length>0?t.jsx(wG,{text:c.text,marks:a}):c.text===""?" ":c.text},u))}),o>0?t.jsxs("p",{className:"wb-diff-more",children:[o," more line",o===1?"":"s",s?t.jsxs(t.Fragment,{children:[" · ",t.jsx("button",{type:"button",className:"wb-diff-open",onClick:s.onClick,children:s.label})]}):null]}):null]})}function bG({props:e}){return t.jsxs("div",{children:[e.title?t.jsx("h4",{className:"wb-doc-title mono",children:e.title}):null,e.metadata.length>0?t.jsx("dl",{className:"ui-kv wb-block",children:e.metadata.map(n=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:n.label}),t.jsx("dd",{children:Mn(n.value,n.unit,null)})]},n.label))}):null,e.diff?t.jsx(im,{text:e.diff,label:e.title?`Diff of ${e.title}`:"Diff"}):t.jsx("p",{className:"wb-empty",children:"This change came back with no diff."})]})}const MM=d.createContext([]);function gr({text:e,className:n}){const s=Dj(e.replace(/\r\n/g,`
|
|
104
|
+
`).split(`
|
|
105
|
+
`));return t.jsx("div",{className:n??"wb-md",children:s.map((r,a)=>t.jsx(Lj,{block:r},a))})}const zC=/^(\s*)(```|~~~)\s*([\w+-]*)\s*$/,UC=/^(#{1,6})\s+(.*?)\s*#*\s*$/,BC=/^\s*([-*_])(\s*\1){2,}\s*$/,vh=/^(\s*)([-*+])\s+(.*)$/,Tc=/^(\s*)(\d{1,9})[.)]\s+(.*)$/,jh=/^\s*>\s?(.*)$/,Kg=/^\s*\|.*\|\s*$/,WC=/^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)*\|?\s*$/;function Dj(e){const n=[];let s=0;for(;s<e.length;){const r=e[s];if(r.trim()===""){s+=1;continue}const a=zC.exec(r);if(a){const o=a[2],c=[];for(s+=1;s<e.length&&!new RegExp(`^\\s*${o}\\s*$`).test(e[s]);)c.push(e[s]),s+=1;s+=1,n.push({type:"code",lang:a[3]||null,text:c.join(`
|
|
106
|
+
`)});continue}const i=UC.exec(r);if(i){n.push({type:"h",level:i[1].length,text:i[2]}),s+=1;continue}if(BC.test(r)){n.push({type:"hr"}),s+=1;continue}if(jh.test(r)){const o=[];for(;s<e.length&&jh.test(e[s]);)o.push(jh.exec(e[s])[1]),s+=1;n.push({type:"quote",blocks:Dj(o),raw:o.join(`
|
|
107
|
+
`)});continue}if(Kg.test(r)&&s+1<e.length&&WC.test(e[s+1])){const o=Gg(r),c=Gg(e[s+1]).map(h=>{const f=h.startsWith(":"),m=h.endsWith(":");return f&&m?"center":m?"right":f?"left":null});s+=2;const u=[];for(;s<e.length&&Kg.test(e[s]);)u.push(Gg(e[s])),s+=1;n.push({type:"table",head:o,rows:u,align:c});continue}if(vh.test(r)||Tc.test(r)){const o=Tc.exec(r)??vh.exec(r),c=Tc.test(r),u=o[1].length,h=c?Number(o[2]):1,f=[];for(;s<e.length;){const m=c?Tc.exec(e[s]):vh.exec(e[s]);if(!m||m[1].length!==u)break;const p=[m[3]];for(s+=1;s<e.length;){const x=e[s],g=x.trim()!==""&&Vg(x)>u,b=x.trim()===""&&s+1<e.length&&e[s+1].trim()!==""&&Vg(e[s+1])>u;if(!g&&!b)break;p.push(x.trim()===""?"":x.slice(Math.min(Vg(x),u+2))),s+=1}f.push(Dj(p))}n.push({type:"list",ordered:c,start:h,items:f});continue}const l=[];for(;s<e.length;){const o=e[s];if(o.trim()===""||zC.test(o)||UC.test(o)||BC.test(o)||jh.test(o)||vh.test(o)||Tc.test(o)||Kg.test(o)&&s+1<e.length&&WC.test(e[s+1]))break;l.push(o.trim()),s+=1}l.length>0&&n.push({type:"p",text:l.join(`
|
|
108
|
+
`)})}return n}function Vg(e){return e.length-e.trimStart().length}function Gg(e){const n=e.trim().replace(/^\|/,"").replace(/\|$/,""),s=[];let r="";for(let a=0;a<n.length;a+=1){const i=n[a];if(i==="\\"&&n[a+1]==="|"){r+="|",a+=1;continue}if(i==="|"){s.push(r.trim()),r="";continue}r+=i}return s.push(r.trim()),s}function Lj({block:e}){switch(e.type){case"p":return t.jsx("p",{children:Cr(e.text)});case"h":{const n=Math.min(6,Math.max(1,e.level)),s=`h${Math.min(n+2,6)}`;return t.jsx(s,{className:"wb-md-h","data-level":n,children:Cr(e.text)})}case"code":return t.jsxs("div",{className:"wb-md-code-frame",children:[t.jsxs("div",{className:"wb-md-code-head",children:[t.jsx("span",{className:"wb-md-code-lang",children:e.lang??"text"}),t.jsx(HC,{text:e.text,what:"code",always:!0})]}),t.jsx("pre",{className:"wb-md-code","data-lang":e.lang??void 0,children:t.jsx("code",{children:e.text})})]});case"quote":return t.jsxs("div",{className:"wb-md-copyable",children:[t.jsx("blockquote",{children:e.blocks.map((n,s)=>t.jsx(Lj,{block:n},s))}),t.jsx(HC,{text:e.raw,what:"quote"})]});case"hr":return t.jsx("hr",{});case"list":{const n=e.items.map((s,r)=>t.jsx("li",{children:s.map((a,i)=>a.type==="p"?t.jsx(d.Fragment,{children:Cr(a.text)},i):t.jsx(Lj,{block:a},i))},r));return e.ordered?t.jsx("ol",{start:e.start,children:n}):t.jsx("ul",{children:n})}case"table":return t.jsx("div",{className:"ui-table-wrap",children:t.jsxs("table",{className:"ui-table wb-md-table",children:[t.jsx("thead",{children:t.jsx("tr",{children:e.head.map((n,s)=>t.jsx("th",{style:e.align[s]?{textAlign:e.align[s]}:void 0,children:Cr(n)},s))})}),t.jsx("tbody",{children:e.rows.map((n,s)=>t.jsx("tr",{children:n.map((r,a)=>t.jsx("td",{style:e.align[a]?{textAlign:e.align[a]}:void 0,children:Cr(r)},a))},s))})]})})}}function HC({text:e,what:n,always:s=!1}){const[r,a]=d.useState("idle"),i=()=>{var l;if(!((l=navigator.clipboard)!=null&&l.writeText)){a("failed");return}navigator.clipboard.writeText(e).then(()=>a("done"),()=>a("failed")),window.setTimeout(()=>a("idle"),1500)};return t.jsx("button",{type:"button",className:"wb-md-copy","data-state":r,"data-always":s||void 0,"aria-label":`Copy ${n}`,title:`Copy ${n}`,onClick:i,children:r==="done"?"Copied":r==="failed"?"Select to copy":t.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 13 13","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("rect",{x:"4.5",y:"4.5",width:"6.5",height:"6.5",rx:"1.2"}),t.jsx("path",{d:"M8.5 4.5V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v4.5a1 1 0 0 0 1 1h1.5"})]})})}function kG({handle:e}){const s=d.useContext(MM).find(r=>r.handle.toLowerCase()===e.toLowerCase());return s?t.jsxs(Tu,{children:[t.jsx(Ru,{asChild:!0,children:t.jsxs("a",{className:"wb-mention-link",href:ht(s.id),children:["@",s.handle]})}),t.jsx(Iu,{children:t.jsxs(Pu,{className:"wb-agent-card",sideOffset:6,children:[t.jsx(Bn,{id:s.id,name:s.name,face:s,unavailable:!s.available}),t.jsxs("span",{className:"wb-agent-card-text",children:[t.jsx("span",{className:"wb-agent-card-name",children:s.name}),t.jsx("span",{className:"wb-agent-card-desc",children:s.description}),t.jsxs("span",{className:"wb-agent-card-meta",children:[s.model,s.available?"":" · unavailable"]})]})]})})]}):t.jsxs(t.Fragment,{children:["@",e]})}const NG=new RegExp("(`+)([\\s\\S]*?[^`])\\1(?!`)|\\*\\*([^*]+?)\\*\\*|__([^_]+?)__|~~([^~]+?)~~|(?<![\\w*])\\*([^*\\n]+?)\\*(?![\\w*])|(?<![\\w_])_([^_\\n]+?)_(?![\\w_])|\\[([^\\]\\n]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)|<?(https?:\\/\\/[^\\s<>)\\]]+[^\\s<>)\\].,;:!?'\"])>?|(?<![\\w@/])@([a-z0-9][a-z0-9_-]{0,63})(?![\\w-])","i");function Cr(e){const n=[];let s=e,r=0;for(;s!=="";){const a=NG.exec(s);if(!a){n.push(...KC(s,r));break}a.index>0&&n.push(...KC(s.slice(0,a.index),r)),r+=100,a[2]!==void 0?n.push(t.jsx("code",{children:a[2]},r)):a[3]!==void 0?n.push(t.jsx("strong",{children:Cr(a[3])},r)):a[4]!==void 0?n.push(t.jsx("strong",{children:Cr(a[4])},r)):a[5]!==void 0?n.push(t.jsx("s",{children:Cr(a[5])},r)):a[6]!==void 0?n.push(t.jsx("em",{children:Cr(a[6])},r)):a[7]!==void 0?n.push(t.jsx("em",{children:Cr(a[7])},r)):a[8]!==void 0&&a[9]!==void 0?n.push(t.jsx("a",{href:a[9],target:"_blank",rel:"noopener noreferrer",children:Cr(a[8])},r)):a[10]!==void 0?n.push(t.jsx("a",{href:a[10],target:"_blank",rel:"noopener noreferrer",children:a[10]},r)):a[11]!==void 0&&n.push(t.jsx(kG,{handle:a[11]},r)),s=s.slice(a.index+a[0].length)}return n}function KC(e,n){return e.split(`
|
|
109
|
+
`).flatMap((r,a)=>a===0?[r]:[t.jsx("br",{},`${n}-br-${a}`),r])}function SG({props:e}){return t.jsxs("div",{children:[e.title?t.jsx("h4",{className:"wb-doc-title",children:e.title}):null,e.metadata.length>0?t.jsx("dl",{className:"ui-kv wb-block",children:e.metadata.map(n=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:n.label}),t.jsx("dd",{children:Mn(n.value,n.unit,null)})]},n.label))}):null,e.kind==="image"&&e.src?t.jsx("img",{src:e.src,alt:e.title??"Attached image",className:"wb-doc-image"}):e.kind==="pdf"&&e.src?t.jsx("object",{data:e.src,type:"application/pdf",className:"wb-doc-pdf",children:t.jsx("a",{href:e.src,children:"Open the PDF"})}):e.text?t.jsx("div",{className:"wb-doc",children:t.jsx(gr,{text:e.text})}):t.jsx("p",{className:"wb-empty",children:"This document came back with no body."})]})}function CG({props:e,timezone:n="UTC",onDecided:s}){var y;const[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState(!1),[u,h]=d.useState(null);d.useEffect(()=>{let k=!1;return a(null),l(null),T.approval(e.approvalId).then(N=>{k||a(N)}).catch(N=>{k||l(N instanceof pe?N.message:String(N))}),()=>{k=!0}},[e.approvalId]);const{values:f,controls:m}=_b(r==null?void 0:r.choices),p=(k,N)=>{h(k),l(null),(f&&k==="approve"?T.decide(e.approvalId,k,N,f):T.decide(e.approvalId,k,N)).then(w=>{a(w.action),s==null||s(w.action)}).catch(w=>l(w instanceof pe?w.message:String(w))).finally(()=>h(null))};if(i&&!r)return t.jsx("p",{className:"wb-empty",children:i});if(!r)return t.jsx("p",{className:"wb-empty",children:"Loading the envelope…"});const x=r.state==="pending",g=(y=r.permissionScopes)==null?void 0:y.includes("always"),b=EG(r),j=(r.preview??"").split(`
|
|
110
|
+
`).length>12||(r.preview??"").length>900,v=[r.decidedBy?`by ${r.decidedBy}`:"",r.decidedVia?`via ${r.decidedVia}`:""].filter(Boolean).join(" ");return t.jsxs("div",{className:"wb-envelope",children:[t.jsxs("div",{className:"envelope",children:[t.jsxs("dl",{className:"envelope-head",children:[t.jsx("dt",{children:"Action"}),t.jsx("dd",{className:"wb-envelope-action",children:r.tool.split(".").map(k=>rn(k)).join(" · ")}),t.jsx("dt",{children:"Status"}),t.jsxs("dd",{children:[x?t.jsx(Ae,{tone:"warning",dot:!0,children:"waiting for you"}):t.jsx(kd,{state:r.state}),!x&&v?t.jsxs("span",{className:"wb-envelope-note",children:[" ",v]}):null]}),t.jsx("dt",{children:x?"Expires":"Decided"}),t.jsx("dd",{children:Nt(x?r.expiresAt:r.decidedAt,n)})]}),t.jsxs("div",{className:"envelope-body","data-clamp":j&&!o?"true":void 0,children:[r.preview||"(this tool wrote no preview)",j&&!o?t.jsx("button",{type:"button",className:"wb-doc-more",onClick:()=>c(!0),children:"Show the whole preview"}):null]})]}),t.jsx(re,{message:i}),x?m:null,x?t.jsxs("div",{className:"wb-envelope-decide",children:[t.jsx("p",{className:"wb-envelope-note",children:g?"Auto and Always also approve later calls to this tool in that scope; you can take it back on the agent's Tools tab.":"This runs the action exactly as shown above."}),t.jsxs("div",{className:"wb-envelope-buttons",children:[t.jsx("button",{className:"ui-btn","data-variant":"danger",disabled:u!==null,onClick:()=>p("reject"),children:u==="reject"?"Rejecting…":"Reject"}),g?t.jsxs(t.Fragment,{children:[t.jsx("button",{className:"ui-btn",disabled:u!==null,onClick:()=>p("approve","conversation"),children:"Auto: this conversation"}),t.jsx("button",{className:"ui-btn",disabled:u!==null,onClick:()=>p("approve","always"),children:"Always: this agent"})]}):null,t.jsx("button",{className:"ui-btn","data-variant":"good",disabled:u!==null,onClick:()=>p("approve"),children:u==="approve"?"Approving…":g?"Allow once":"Approve"})]})]}):null,t.jsxs("details",{className:"ui-details",children:[t.jsx("summary",{children:"The envelope, field by field"}),t.jsx("dl",{className:"ui-kv wb-envelope-fields",children:b.map(k=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:k.label}),k.block?t.jsx("dd",{className:"wb-envelope-block",children:t.jsx("pre",{className:"mono",children:k.value})}):t.jsx("dd",{className:k.mono?"mono":void 0,children:k.value})]},k.label))})]})]})}function EG(e){const n=[],s=e.envelope;if(s!==null&&typeof s=="object"&&!Array.isArray(s))for(const[a,i]of Object.entries(s))n.push(VC(rn(a),i));else s!=null&&n.push({label:"Envelope",value:lk(s)});const r=e.canonicalArgs;if(r!==null&&typeof r=="object"&&!Array.isArray(r))for(const[a,i]of Object.entries(r)){const l=`Argument · ${rn(a)}`;n.some(o=>o.label===l)||n.push(VC(l,i))}return n.push({label:"Action id",value:e.id,mono:!0},{label:"Tool version",value:e.toolVersion,mono:!0},{label:"Agent",value:e.agentId,mono:!0},{label:"Args hash",value:e.argsHash,mono:!0},{label:"Policy version",value:String(e.policyVersion)}),e.conversationId&&n.push({label:"Conversation",value:e.conversationId,mono:!0}),e.jobId&&n.push({label:"Job",value:e.jobId,mono:!0}),n}function VC(e,n){return n!==null&&typeof n=="object"&&(!Array.isArray(n)||n.some(r=>r!==null&&typeof r=="object"))?{label:e,value:JSON.stringify(n,null,2),block:!0}:{label:e,value:lk(n)}}function lk(e){return e==null?"—":Array.isArray(e)?e.map(n=>lk(n)).join(", ")||"—":typeof e=="object"?JSON.stringify(e):Mn(e,"text",null)}function AG({props:e}){const n=$P(e.artifactId),[s,r]=d.useState(null),[a,i]=d.useState(null),[l,o]=d.useState(!1);if(d.useEffect(()=>{if(n===null)return;let h=!0;return r(null),i(null),o(!1),T.libraryEntry(n).then(f=>{h&&r({filename:f.entry.filename,sizeBytes:f.entry.sizeBytes})}).catch(()=>{}),()=>{h=!1}},[n]),n===null)return t.jsx("p",{className:"wb-empty",children:"This result names no file in the Files library."});const c=e.title??(s==null?void 0:s.filename)??"Image",u=[a?`${a.width} × ${a.height}`:null,s!=null&&s.sizeBytes?qn(s.sizeBytes):null].filter(h=>h!==null);return t.jsxs("figure",{className:"wb-image",children:[t.jsx("div",{className:"wb-image-frame",children:l?t.jsx("p",{className:"wb-empty",children:"This file cannot be shown here. Download it to open it."}):t.jsx("a",{href:Lr(n),className:"wb-image-link",title:"Open at full size",children:t.jsx("img",{src:Lr(n),alt:e.caption??c,onLoad:h=>{const f=h.currentTarget;f.naturalWidth>0&&i({width:f.naturalWidth,height:f.naturalHeight})},onError:()=>o(!0)})})}),t.jsxs("figcaption",{className:"wb-image-caption",children:[t.jsxs(ne,{children:[t.jsx("span",{className:"wb-image-name",children:c}),u.length>0?t.jsx("span",{className:"wb-image-facts",children:u.join(" · ")}):null,t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsx(it,{size:"sm",href:ca(n),download:(s==null?void 0:s.filename)??c,children:"Download"})]}),e.caption&&e.captionLabel?t.jsx(Kt,{summary:e.captionLabel,className:"wb-image-note",children:t.jsx("p",{className:"wb-image-note-body",children:e.caption})}):e.caption?t.jsx("p",{className:"wb-image-note",children:e.caption}):null]})]})}function $G({props:e}){return e.pairs.length===0?t.jsx("p",{className:"wb-empty",children:"Nothing to show."}):t.jsx("dl",{className:"ui-kv",children:e.pairs.map(n=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:n.label}),t.jsx("dd",{className:"tnum",style:n.tone==="neutral"?void 0:{color:`var(--${n.tone})`},children:Mn(n.value,n.unit,n.currency)})]},n.label))})}const TG=8;function OM({text:e,label:n="Output",className:s}){const r=d.useRef(null),a=d.useRef(!0);return d.useLayoutEffect(()=>{const i=r.current;i&&a.current&&(i.scrollTop=i.scrollHeight)},[e]),t.jsx("pre",{ref:r,className:s?`wb-terminal-body ${s}`:"wb-terminal-body","aria-label":n,tabIndex:0,onScroll:i=>{const l=i.currentTarget;a.current=l.scrollHeight-l.scrollTop-l.clientHeight<=TG},children:e})}function RG(e){if(e<1e3)return`${Math.round(e)} ms`;const n=e/1e3;if(n<60)return`${n.toFixed(n<10?1:0)} s`;const s=Math.floor(n/60);return`${s} min ${Math.round(n-s*60)} s`}function IG({text:e}){const[n,s]=d.useState("");return t.jsxs(t.Fragment,{children:[n?t.jsx("span",{role:"status",className:"wb-hint",children:n}):null,t.jsx(A,{size:"sm",onClick:()=>{var r;if(s(""),!((r=navigator.clipboard)!=null&&r.writeText)){s("Copy unavailable; select the text to copy.");return}navigator.clipboard.writeText(e).then(()=>s("Copied"),()=>s("Copy failed; select the text to copy."))},children:"Copy"})]})}function PG({props:e}){const n=e.output??"";return t.jsxs("div",{className:"wb-terminal",children:[t.jsxs(ne,{className:"wb-terminal-head",children:[e.command!==null?t.jsx("code",{className:"wb-terminal-command",title:e.command,children:e.command}):null,e.exitCode!==null?t.jsxs(Ae,{tone:e.exitCode===0?"good":"critical",mono:!0,children:["exit ",e.exitCode]}):null,e.elapsedMs!==null?t.jsx("span",{className:"wb-terminal-fact",children:RG(e.elapsedMs)}):null,t.jsx("span",{className:"ui-toolbar-spacer"}),n!==""?t.jsx(IG,{text:n}):null]}),e.omittedBytes!==null?t.jsxs("p",{className:"wb-terminal-note",children:["First ",qn(e.omittedBytes)," not shown."]}):null,n!==""?t.jsx(OM,{text:n}):t.jsx("p",{className:"wb-empty",children:"No output."}),e.metadata.length>0?t.jsx("dl",{className:"ui-kv wb-terminal-facts",children:e.metadata.map(s=>t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:s.label}),t.jsx("dd",{children:Mn(s.value,s.unit,null)})]},s.label))}):null]})}function MG(){const e=window.location.hostname.replace(/^\[|\]$/g,"").toLowerCase();return e==="127.0.0.1"||e==="::1"||e==="localhost"}function GC(e){try{const n=new URL(e);return n.searchParams.delete("ticket"),n.toString()}catch{return e}}function OG(e){const n=new Set(e.ports??[]);return e.port!==null&&n.add(e.port),[...n].sort((s,r)=>s-r)}function DG({props:e}){var N;const[n,s]=d.useState(null),[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState(!1),u=((N=e.target)==null?void 0:N.plugin)??null,h=OG(e),[f,m]=d.useState(null),p=f!==null&&h.includes(f)?f:e.port,x=e.target?p!==null&&p!==e.port?`${e.target.name}.${p}`:e.target.name:null,g=e.changes??0,b=d.useRef(g),[j,v]=d.useState(0);d.useEffect(()=>{g<=b.current||(b.current=g,e.reloadsItself||v(w=>w+1))},[g,e.reloadsItself]),d.useEffect(()=>{if(u===null||x===null)return;let w=!0;return s(null),a(null),l(null),v(0),T.previewLink(u,x).then(S=>{w&&(s(S.url),a(GC(S.url)))}).catch(S=>{w&&l(S instanceof Error?S.message:"That preview could not be opened.")}),()=>{w=!1}},[u,x]);const y=()=>{u===null||x===null||T.previewLink(u,x).then(w=>a(w.url)).catch(()=>{})};if(e.target===null)return t.jsxs("p",{className:"wb-empty",children:["This panel names no preview. A preview is ",t.jsx("code",{children:"/preview/<plugin>/<name>/"}),", and nothing else is framed here."]});const k=!(e.output===null||e.output==="");return t.jsxs("div",{className:"wb-preview","data-output":o||void 0,children:[t.jsxs("div",{className:"wb-row wb-preview-head",children:[e.title?t.jsx("h4",{className:"wb-doc-title",children:e.title}):null,h.length>1?t.jsx("select",{className:"wb-preview-port","aria-label":"Port",title:"The ports this process is listening on.",value:p??"",onChange:w=>m(Number(w.target.value)),children:h.map(w=>t.jsxs("option",{value:w,children:[":",w]},w))}):null,k?t.jsx("button",{type:"button",className:"ui-btn wb-preview-toggle","data-variant":"ghost","data-size":"sm","aria-pressed":o,onClick:()=>c(w=>!w),children:o?"Hide output":"Output"}):null,r?t.jsx("a",{className:"wb-preview-open",href:r,target:"_blank",rel:"noreferrer noopener",onPointerEnter:y,onFocus:y,title:"Through buddi: works from anywhere the dashboard does, including the tailnet.",children:"Open in a tab"}):null,p!==null&&MG()?t.jsxs("a",{className:"wb-preview-direct",href:`http://localhost:${p}/`,target:"_blank",rel:"noreferrer noopener",title:"The process itself, on this machine only.",children:["localhost:",p]}):null]}),t.jsxs("div",{className:"wb-preview-body",children:[n?t.jsx("iframe",{className:"wb-preview-frame",src:j===0?n:GC(n),title:e.title??"Preview",sandbox:"allow-scripts allow-forms allow-same-origin allow-modals allow-downloads"},j):t.jsx("p",{className:"wb-empty wb-preview-frame",children:i??"Opening the preview…"}),k&&o?t.jsx(OM,{text:e.output??"",className:"wb-preview-output"}):null]})]})}function LG({props:e}){const n=e.groups.every(s=>s.rows.length===0);return t.jsxs("div",{children:[e.summary.length>0?t.jsx("div",{className:"ui-stats","data-inline":"true",children:e.summary.map(s=>t.jsxs("div",{children:[t.jsx("div",{className:"ui-stat-k",children:s.label}),t.jsx("div",{className:"ui-stat-v","data-tone":s.tone,children:Mn(s.value,s.unit,s.currency)})]},s.label))}):null,n?t.jsx("p",{className:"wb-empty",children:e.empty}):e.groups.map((s,r)=>t.jsxs("div",{className:r>0?"wb-section":void 0,children:[s.label?t.jsx("h4",{className:"ui-stat-k wb-label",children:s.label}):null,t.jsx("div",{className:"ui-table-wrap",children:t.jsxs("table",{className:"ui-table",children:[t.jsx("thead",{children:t.jsx("tr",{children:e.columns.map(a=>t.jsx("th",{className:DM(a.type)?"num":void 0,"data-type":a.type,children:a.label},a.key))})}),t.jsx("tbody",{children:s.rows.map((a,i)=>t.jsx("tr",{children:a.map((l,o)=>{var c;return t.jsx(FG,{cell:l},((c=e.columns[o])==null?void 0:c.key)??o)})},i))})]})})]},s.label??r))]})}function FG({cell:e}){const n=Mn(e.value,e.type,e.currency);return e.bar?t.jsx("td",{className:"num",children:t.jsxs("div",{className:"wb-row wb-row-end",children:[t.jsx("div",{className:"ui-meter",role:"meter","aria-valuenow":Math.round(e.bar.fraction*100),"aria-valuemin":0,"aria-valuemax":100,"aria-label":n,children:t.jsx("div",{className:"ui-meter-fill","data-tone":e.bar.tone,style:{width:`${Math.round(e.bar.fraction*100)}%`}})}),t.jsx("span",{className:"tnum",children:n})]})}):t.jsx("td",{className:DM(e.type)?"num":void 0,"data-type":e.type,title:n.length>40?n:void 0,children:n})}function DM(e){return e==="number"||e==="currency"||e==="percent"}const Bl=760,qg=400,vn={top:18,right:18,bottom:36,left:66},_G=5;function zG({props:e}){const{points:n,referenceLines:s,unit:r,currency:a}=e;if(n.length===0)return t.jsx("p",{className:"wb-empty",children:"This result carried no points to plot."});const i=[...n.map(k=>k.y),...s.map(k=>k.value)],l=Math.min(...i),o=Math.max(...i),c=o-l||Math.abs(o)||1,u=l-c*.08,h=o+c*.08,f=Bl-vn.left-vn.right,m=qg-vn.top-vn.bottom,p=k=>vn.left+(n.length===1?f/2:k/(n.length-1)*f),x=k=>vn.top+m-(k-u)/(h-u)*m,g=Wf(l,o,4),b=BG(n.map(k=>k.y),e.mark),j=e.shadeBelow===null?[]:WG(n.map(k=>k.y),e.shadeBelow),v=n.map((k,N)=>`${N===0?"M":"L"}${p(N)},${x(k.y)}`).join(" "),y=k=>Mn(k,r,a);return t.jsxs("div",{children:[e.label?t.jsx("p",{className:"ui-panel-sub",children:e.label}):null,t.jsxs("div",{className:"wb-chart-layout",children:[t.jsx("div",{className:"wb-chart-plot",children:t.jsxs("svg",{className:"wb-chart",viewBox:`0 0 ${Bl} ${qg}`,role:"img","aria-label":UG(e,y),preserveAspectRatio:"xMidYMid meet",children:[j.map(k=>t.jsx("rect",{className:"wb-chart-breach",x:p(k.from),width:Math.max(2,p(k.to)-p(k.from)),y:vn.top,height:m},`band-${k.from}`)),g.map(k=>t.jsxs("g",{children:[t.jsx("line",{className:"wb-chart-grid",x1:vn.left,x2:Bl-vn.right,y1:x(k),y2:x(k)}),t.jsx("text",{x:vn.left-8,y:x(k)+4,textAnchor:"end",children:y(k)})]},`tick-${k}`)),s.map(k=>t.jsxs("g",{children:[t.jsx("line",{className:"wb-chart-floor",x1:vn.left,x2:Bl-vn.right,y1:x(k.value),y2:x(k.value)}),t.jsxs("text",{x:Bl-vn.right,y:x(k.value)-6,textAnchor:"end",children:[k.label," ",y(k.value)]})]},`rule-${k.label}`)),t.jsx("line",{className:"wb-chart-axis",x1:vn.left,x2:vn.left,y1:vn.top,y2:vn.top+m}),t.jsx("line",{className:"wb-chart-axis",x1:vn.left,x2:Bl-vn.right,y1:vn.top+m,y2:vn.top+m}),t.jsx("path",{className:"wb-chart-series",d:v}),b!==null?t.jsxs("g",{children:[t.jsx("circle",{className:"wb-chart-min",cx:p(b),cy:x(n[b].y),r:4.5}),t.jsx("text",{x:p(b),y:x(n[b].y)+20,textAnchor:"middle",children:y(n[b].y)})]}):null,HG(n.length).map(k=>t.jsx("text",{x:p(k),y:qg-10,textAnchor:"middle",children:aj(n[k].x)},`x-${k}`))]})}),e.events.length>0?t.jsxs("aside",{className:"wb-chart-events",children:[t.jsx("h4",{className:"ui-stat-k wb-label",children:"What happens"}),t.jsx("ul",{className:"wb-chart-event-list",children:e.events.map((k,N)=>t.jsxs("li",{className:"wb-chart-event",children:[t.jsxs("span",{children:[t.jsx("span",{className:"wb-chart-event-day",children:aj(k.at)}),k.label]}),k.amount===null?null:t.jsx("span",{className:k.amount<0?"tnum critical":"tnum good",children:Mn(k.amount,r,a)})]},`${k.at}-${k.label}-${N}`))})]}):null]})]})}function UG(e,n){const s=e.points.map(l=>l.y),r=e.points[0],a=e.points[e.points.length-1],i=e.referenceLines.map(l=>`${l.label} at ${n(l.value)}`).join(", ");return[`${e.points.length} points from ${r==null?void 0:r.x} to ${a==null?void 0:a.x}`,`low ${n(Math.min(...s))}, high ${n(Math.max(...s))}`,i].filter(Boolean).join("; ")}function BG(e,n){if(!n||e.length===0)return null;let s=0;for(let r=1;r<e.length;r+=1)(n==="min"?e[r]<e[s]:e[r]>e[s])&&(s=r);return s}function WG(e,n){const s=[];let r=null;return e.forEach((a,i)=>{a<n?r===null&&(r=i):r!==null&&(s.push({from:r,to:i}),r=null)}),r!==null&&s.push({from:r,to:e.length-1}),s}function HG(e,n=_G){if(e<=0)return[];if(e<=n)return[...Array(e).keys()];const s=e-1,r=new Set;for(let a=0;a<n;a+=1)r.add(Math.round(a/(n-1)*s));return[...r].sort((a,i)=>a-i)}const ls=e=>e,Fj={timeseries:ls(zG),table:ls(LG),bars:ls(gG),keyvalue:ls($G),tiles:ls(OP),document:ls(SG),diff:ls(bG),terminal:ls(PG),image:ls(AG),preview:ls(DG),envelope:ls(CG),story:ls(mG),audio:ls(dG),query:ls(hG),structured:ls(Il)},KG="structured";function VG(e){return(lm(e)?Fj[e]:void 0)??Fj[KG]}function lm(e){return Object.prototype.hasOwnProperty.call(Fj,e)}function GG({renderer:e,props:n,timezone:s,onDecided:r}){const a=VG(e),l=lm(e)?n:{value:n};return t.jsx(a,{props:l,timezone:s,onDecided:r})}function wi(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}const qG=["preferredName","displayName","fullName","name","title","label","subject","username","email"],YG=/^(name|title|label|subject|displayName|display_name|heading)$/i,QG=/^(url|link|href|uri|permalink)$/i,JG=/^(id|uuid|_id)$|(Id|_id)$/;function _j(e){return e===null||["string","number","boolean"].includes(typeof e)}function ok(e){return qG.find(n=>typeof e[n]=="string"&&e[n].trim()!=="")??null}const XG=6;function LM(e){let n=e,s=null,r=[];if(wi(e)){const c=Object.entries(e).filter(([,h])=>Array.isArray(h)),u=Object.entries(e).filter(([,h])=>!Array.isArray(h));if(c.length!==1||!u.every(([,h])=>_j(h)))return null;[s,n]=[rn(c[0][0]),c[0][1]],r=u.filter(([,h])=>!ua(h))}if(!Array.isArray(n)||n.length===0||!n.every(wi))return null;const a=n,i=[...new Set(a.flatMap(c=>Object.keys(c)))];if(i.length>XG||i.some(c=>QG.test(c)))return null;const l=i.find(c=>YG.test(c)&&a.filter(u=>typeof u[c]=="string").length>=a.length*.8);if(!l)return null;const o=i.filter(c=>c!==l&&!JG.test(c)).filter(c=>a.some(u=>_j(u[c])&&!ua(u[c]))).sort((c,u)=>qC(a,u)-qC(a,c)).slice(0,2);return{label:s,rows:a,name:l,facts:o,extras:r}}function qC(e,n){return e.filter(s=>!ua(s[n])).length}function ZG(e){return wi(e)&&ok(e)!==null&&Object.keys(e).length>=3}const e7=60;function t7(e){if(!wi(e))return!1;const n=Object.values(e);return n.length>=2&&n.every(s=>_j(s)&&(typeof s!="string"||s.length<=e7))}const n7=[{name:"items",matches:e=>LM(e)!==null},{name:"profile",matches:ZG},{name:"settings",matches:t7},{name:"fields",matches:e=>wi(e)&&Object.keys(e).length>0}];function s7(e){var n;return((n=n7.find(s=>s.matches(e)))==null?void 0:n.name)??"other"}const FM=8,r7=32,a7=/^\d{4}-\d{2}-\d{2}$/,i7=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?$/,l7=/^[a-z]+([_-][a-z]+)*$/,o7=/(name|title|label|email|subject|text|note|message|description|summary|path|file)$/i;function _M(e,n){if(ua(n))return{kind:"empty"};if(typeof n=="boolean")return{kind:"boolean",value:n};if(typeof n=="number")return{kind:"number",value:n};if(typeof n=="string"){const s=n.trim();return a7.test(s)?{kind:"day",value:s}:i7.test(s)&&!Number.isNaN(Date.parse(s))?{kind:"moment",value:s}:/^https?:\/\/\S+$/i.test(s)?{kind:"link",value:s}:s.length<=24&&l7.test(s)&&!o7.test(e)?{kind:"enum",value:s}:{kind:"text",value:n}}return Array.isArray(n)?n.length<=FM&&n.every(s=>typeof s=="string"&&s.length<=r7)?{kind:"chips",values:n}:{kind:"rows",values:n}:wi(n)?{kind:"group",value:n}:{kind:"text",value:String(n)}}function c7({value:e,title:n,tool:s,face:r,timezone:a}){const[i,l]=d.useState(!1),o=Ep(e)||u7(e)?"other":s7(e);return t.jsxs("div",{className:"wb-result","data-testid":"tool-result","data-view":o,children:[t.jsxs("header",{className:"ui-panel-head wb-result-head",children:[r?t.jsx("span",{className:"wb-result-face","aria-hidden":"true",children:r}):null,t.jsx("h2",{className:"ui-panel-title wb-result-title",title:s,children:n}),t.jsx(rs,{label:`More for ${n}`,items:[{label:i?"Show readable":"Raw JSON",onSelect:()=>l(c=>!c)}]})]}),i?t.jsx("pre",{className:"ui-code",children:fs(e)}):t.jsx(d7,{view:o,value:e,timezone:a})]})}function u7(e){return wi(e)&&Array.isArray(e.artifacts)}function d7({view:e,value:n,timezone:s}){switch(e){case"items":return t.jsx(f7,{shape:LM(n),timezone:s});case"profile":return t.jsx(h7,{value:n,timezone:s});case"settings":return t.jsx(m7,{value:n,timezone:s});case"fields":return t.jsx(ck,{value:n,timezone:s,depth:0});default:return t.jsx(Il,{props:{value:n},bare:!0})}}function h7({value:e,timezone:n}){const s=ok(e),r=Object.fromEntries(Object.entries(e).filter(([a])=>a!==s));return t.jsxs("div",{className:"wb-result-profile",children:[t.jsxs("p",{className:"wb-result-lead",children:[t.jsx("span",{className:"wb-result-lead-k",children:rn(s)}),t.jsx("span",{className:"wb-result-lead-v",children:String(e[s])})]}),t.jsx(ck,{value:r,timezone:n,depth:0})]})}function f7({shape:e,timezone:n}){const[s,r]=d.useState(!1),a=e.rows.length<=25?e.rows.length:20,i=s?e.rows:e.rows.slice(0,a);return t.jsxs("div",{className:"wb-result-items",children:[e.label||e.extras.length?t.jsxs("p",{className:"wb-result-items-head",children:[e.label?t.jsx("span",{className:"wb-result-items-label",children:e.label}):null,e.extras.map(([l,o])=>t.jsxs("span",{className:"wb-result-items-extra",children:[rn(l)," ",t.jsx(_o,{field:l,value:o,timezone:n})]},l))]}):null,t.jsx("ul",{className:"wb-result-rows",children:i.map((l,o)=>t.jsxs("li",{className:"wb-result-row",children:[t.jsx("span",{className:"wb-result-row-name",children:String(l[e.name]??"—")}),e.facts.length?t.jsx("span",{className:"wb-result-row-facts",children:e.facts.filter(c=>l[c]!==void 0&&l[c]!==null&&l[c]!=="").map(c=>t.jsx("span",{className:"wb-result-row-fact",title:rn(c),children:t.jsx(_o,{field:c,value:l[c],timezone:n})},c))}):null]},o))}),e.rows.length>i.length?t.jsxs("p",{className:"wb-note wb-note-row",children:[t.jsxs("span",{children:["Showing ",i.length," of ",e.rows.length]}),t.jsxs("button",{type:"button",className:"ui-btn","data-size":"sm",onClick:()=>r(!0),children:["Show all ",e.rows.length]})]}):null]})}function m7({value:e,timezone:n}){return t.jsx("dl",{className:"wb-result-settings",children:Object.entries(e).map(([s,r])=>t.jsxs("div",{className:"wb-result-setting",children:[t.jsx("dt",{children:rn(s)}),t.jsx("dd",{children:t.jsx(_o,{field:s,value:r,timezone:n})})]},s))})}const p7=3;function ck({value:e,timezone:n,depth:s}){const r=Object.entries(e);return r.length===0?t.jsx("p",{className:"wb-note",children:"Nothing to show."}):t.jsx("dl",{className:"wb-result-grid",children:r.map(([a,i])=>{const l=_M(a,i);if(l.kind==="group"){const o=Object.keys(l.value).length;return t.jsx("div",{className:"wb-result-group",children:t.jsx(Kt,{summary:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"wb-result-group-k",children:rn(a)})," ",t.jsxs("span",{className:"wb-result-group-n",children:[o," ",o===1?"field":"fields"]})]}),open:s===0&&o<=4,children:s+1>=p7?t.jsx("pre",{className:"ui-code",children:fs(l.value)}):t.jsx(ck,{value:l.value,timezone:n,depth:s+1})})},a)}return t.jsxs("div",{className:"contents",children:[t.jsx("dt",{children:rn(a)}),t.jsx("dd",{children:t.jsx(_o,{field:a,value:i,timezone:n})})]},a)})})}function _o({field:e,value:n,timezone:s}){const r=_M(e,n);switch(r.kind){case"empty":return t.jsx("span",{className:"wb-result-empty",children:Array.isArray(n)?"None":"—"});case"boolean":return t.jsx(Ae,{tone:r.value?"good":void 0,dot:!0,children:r.value?"Yes":"No"});case"number":return t.jsx("span",{className:"tnum",children:Number.isInteger(r.value)?Cn(r.value):String(Math.round(r.value*100)/100)});case"day":return t.jsx("span",{children:nc(r.value,{year:!0})});case"moment":return t.jsx("time",{dateTime:r.value,children:Nt(r.value,s)});case"link":return t.jsx("a",{href:r.value,target:"_blank",rel:"noopener noreferrer",children:r.value});case"enum":return t.jsx(Ae,{children:r.value.replace(/_/g," ")});case"text":return t.jsx("span",{className:"wb-result-text",children:r.value});case"chips":return t.jsx("span",{className:"wb-result-chips",children:r.values.map((a,i)=>t.jsx(Ae,{children:a},`${a}-${i}`))});case"rows":return t.jsx(g7,{values:r.values,timezone:s});case"group":return t.jsxs("span",{className:"wb-result-empty",children:[Object.keys(r.value).length," fields"]})}}function g7({values:e,timezone:n}){const[s,r]=d.useState(!1),a=s?e:e.slice(0,FM);return t.jsxs("span",{className:"wb-result-compact",children:[t.jsx("ul",{children:a.map((i,l)=>t.jsx("li",{children:x7(i,n)},l))}),e.length>a.length?t.jsxs("button",{type:"button",className:"ui-btn","data-variant":"ghost","data-size":"sm",onClick:()=>r(!0),children:[e.length-a.length," more"]}):null]})}function x7(e,n){if(wi(e)){const s=ok(e),r=Object.entries(e).filter(([a,i])=>a!==s&&(typeof i=="string"||typeof i=="number"||typeof i=="boolean")).slice(0,2);return t.jsxs(t.Fragment,{children:[s?t.jsx("span",{className:"wb-result-row-name",children:String(e[s])}):null,r.map(([a,i])=>t.jsxs("span",{className:"wb-result-row-fact",title:rn(a),children:[" ",t.jsx(_o,{field:a,value:i,timezone:n})]},a))]})}return t.jsx(_o,{field:"",value:e,timezone:n})}function v7({profile:e,onChange:n}){return t.jsxs("div",{className:"wb-prof","data-testid":"agent-profile",children:[t.jsx("p",{className:"wb-prof-lead",children:e.description}),t.jsxs("div",{className:"wb-prof-tags",children:[e.isDefault?t.jsx(Yg,{children:"Opens by default"}):null,t.jsx(Yg,{children:e.source==="example"?"Shipped with buddi":"Yours"}),e.roles.map(s=>t.jsx(Yg,{title:`A surface command that asks for "${s}" lands on this agent.`,children:rn(s)},s))]}),e.available?null:t.jsxs("p",{className:"wb-prof-blocked","data-testid":"agent-profile-unavailable",children:[t.jsx("strong",{children:"This agent cannot run here."})," ",e.unavailableReason]}),(e.disabled??[]).map(s=>t.jsx("p",{className:"wb-prof-blocked","data-testid":"agent-profile-disabled",children:s},s)),t.jsx(Rc,{title:"How it works with you",note:"Live decisions stay in the conversation; this page explains the standing rules.",children:t.jsxs("ul",{className:"wb-prof-list",children:[t.jsxs("li",{className:"wb-prof-row",children:[t.jsxs("span",{className:"wb-prof-row-main",children:[t.jsx("span",{className:"wb-prof-row-name",children:"Quick questions"}),t.jsx("span",{className:"wb-prof-row-desc",children:"When it knows the likely answers, it can show one-tap choices in the dashboard and Telegram. You can still write a different answer when the question allows it."})]}),t.jsx("span",{className:"wb-prof-auto",children:"Answers only"})]}),t.jsxs("li",{className:"wb-prof-row","data-gated":"true",children:[t.jsxs("span",{className:"wb-prof-row-main",children:[t.jsx("span",{className:"wb-prof-row-name",children:"Action approvals"}),t.jsx("span",{className:"wb-prof-row-desc",children:"A request to send, spend, publish or otherwise affect the world appears in the conversation with the exact action. Answering a question never approves it."})]}),t.jsxs("span",{className:"wb-prof-gate",children:[t.jsx(zM,{}),"Exact action"]})]})]})}),t.jsx(Rc,{title:"What it can do",note:j7(e),tone:e.gatedCount>0?"warning":void 0,children:e.tools.length===0?t.jsx("p",{className:"wb-prof-empty",children:"No tools at all. It answers from the conversation and from what it remembers, and it can change nothing."}):[...e.tools].sort((s,r)=>+(r.gated>0)-+(s.gated>0)).map(s=>t.jsx(y7,{family:s},s.family))}),t.jsx(Rc,{title:"What it runs on",children:t.jsxs("dl",{className:"wb-prof-kv",children:[t.jsx(Ic,{label:"Provider",children:e.engine.provider}),t.jsx(Ic,{label:"Model",children:t.jsx("span",{className:"mono",children:e.engine.model})}),t.jsxs(Ic,{label:"Credential",children:[e.engine.credentialKind," from"," ",t.jsx("span",{className:"mono",children:e.engine.credentialEnv})]}),t.jsxs(Ic,{label:"Turn budget",children:[e.engine.maxTurns," ",e.engine.maxTurns===1?"turn":"turns"," per message"]}),t.jsx(Ic,{label:"Language",children:S7(e.engine.language)})]})}),e.skills.length>0?t.jsx(Rc,{title:"What it has read",note:`${e.skills.length} ${e.skills.length===1?"skill":"skills"}, composed into every run`,children:t.jsx("ul",{className:"wb-prof-list",children:e.skills.map(s=>t.jsxs("li",{className:"wb-prof-row",children:[t.jsxs("span",{className:"wb-prof-row-main",children:[t.jsx("span",{className:"wb-prof-row-name mono",children:s.name}),s.description?t.jsx("span",{className:"wb-prof-row-desc",children:s.description}):null]}),t.jsxs("span",{className:"wb-prof-row-side",title:s.file,children:[s.scope==="private"?"its own":"shared"," · ",s.provenance]})]},s.file))})}):null,e.delegates.length>0?t.jsx(Rc,{title:"Who it can hand work to",note:"A colleague's tools are reached through the colleague, never held here",children:t.jsx("ul",{className:"wb-prof-list",children:e.delegates.map(s=>t.jsxs("li",{className:"wb-prof-row",children:[t.jsxs("span",{className:"wb-prof-row-main",children:[t.jsxs("span",{className:"wb-prof-row-name mono",children:["@",s.handle]}),t.jsx("span",{className:"wb-prof-row-desc",children:s.description})]}),t.jsx("span",{className:"wb-prof-row-side",children:s.available?s.name:`${s.name} · cannot run`})]},s.id))})}):null,t.jsxs("footer",{className:"wb-prof-foot",children:[t.jsx("p",{className:"wb-prof-note",children:e.note}),t.jsx("p",{className:"wb-prof-file mono",title:e.file,children:e.file}),e.changeVia&&n?t.jsxs("button",{className:"ui-btn","data-testid":"agent-profile-change",title:e.changeVia.prompt,onClick:()=>n({agentId:e.changeVia.agentId,prompt:e.changeVia.prompt}),children:["Ask @",e.changeVia.handle," to change this"]}):null]})]})}function j7(e){if(e.toolCount===0)return"Nothing. This agent holds no tools.";const n=`${e.toolCount} ${e.toolCount===1?"tool":"tools"}`;if(e.gatedCount===0)return`${n}, every one of them running without asking you. None of them can send, spend or write to the world.`;const s=e.gatedCount===1?"one of them stops and waits for you":`${e.gatedCount} of them stop and wait for you`;return`${n}, and ${s}.`}function y7({family:e}){const n=[...e.tools].sort((s,r)=>Number(r.gated)-Number(s.gated));return t.jsxs("section",{className:"wb-prof-family",children:[t.jsxs("h4",{className:"wb-prof-family-head",children:[t.jsx("span",{className:"wb-prof-family-name",children:rn(e.family)}),t.jsxs("span",{className:"wb-prof-family-note",children:[e.tools.length," ",e.tools.length===1?"tool":"tools",e.gated>0?` · ${e.gated} needs you`:""]})]}),t.jsx("ul",{className:"wb-prof-list",children:n.map(s=>t.jsx(w7,{tool:s},s.name))})]})}function w7({tool:e}){return t.jsxs("li",{className:"wb-prof-row","data-gated":e.gated?"true":void 0,"data-testid":"agent-profile-tool",children:[t.jsxs("span",{className:"wb-prof-row-main",children:[t.jsx("span",{className:"wb-prof-row-name mono",children:N7(e.name)}),t.jsx("span",{className:"wb-prof-row-desc","data-clamp":"true",title:e.description,children:e.description})]}),e.gated?t.jsxs("span",{className:"wb-prof-gate",title:"The call is recorded and waits; nothing happens until you approve it.",children:[t.jsx(zM,{}),"Needs your approval"]}):t.jsx("span",{className:"wb-prof-auto",title:k7(e.tier),children:b7(e.tier)})]})}function b7(e){return e==="auto"?"Runs on its own":e==="gated"?"Needs your approval":"Not runnable here"}function k7(e){return e==="auto"?"Called during a run without asking you. It reads, or records something you can see.":`Tier "${e}" does not execute in this build; a call to it is refused.`}function N7(e){const n=e.split(".");return(n[n.length-1]??e).replace(/_/g," ")}function S7(e){return e==="mirror"?"Mirrors whichever language you write in":e==="en"?"Always English":e==="fr"?"Always French":e}function Rc({title:e,note:n,tone:s,children:r}){return t.jsxs("section",{className:"wb-prof-section",children:[t.jsx("h3",{className:"wb-prof-title",children:e}),n?t.jsx("p",{className:"wb-prof-note-lead","data-tone":s,children:n}):null,r]})}function Ic({label:e,children:n}){return t.jsxs(t.Fragment,{children:[t.jsx("dt",{className:"wb-prof-k",children:e}),t.jsx("dd",{className:"wb-prof-v",children:n})]})}function Yg({children:e,title:n}){return t.jsx("span",{className:"wb-prof-tag",title:n,children:e})}function zM(){return t.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 14 14","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("rect",{x:"2.8",y:"6",width:"8.4",height:"6.2",rx:"1.4"}),t.jsx("path",{d:"M4.8 6V4.4a2.2 2.2 0 0 1 4.4 0V6"})]})}const Qg=1e5,Jg=200,Xg=30;function UM({artifactId:e,filename:n,mime:s,family:r,available:a=!0}){const[i,l]=d.useState(!1);return a?r==="image"&&!i?t.jsx("figure",{className:"file-preview file-preview-image",children:t.jsx("img",{src:Lr(e),alt:n??"Image",onError:()=>l(!0)})}):r==="audio"&&vp(s)?t.jsx("div",{className:"file-preview file-preview-audio",children:t.jsx(jp,{artifactId:e,name:n??"Audio",mime:s})}):r==="pdf"?t.jsx("div",{className:"file-preview file-preview-pdf",children:t.jsx("object",{data:Lr(e),type:"application/pdf","aria-label":n??"PDF",children:t.jsx(Q,{children:"Your browser cannot show this PDF here. Download it to open it."})})}):r==="text"||r==="code"||r==="table"?t.jsx(C7,{artifactId:e,filename:n,mime:s,family:r}):t.jsx(Q,{children:"Preview not supported for this kind of file. Download it to open it."}):t.jsx(Q,{children:"The file is no longer available; its record is kept."})}function C7({artifactId:e,filename:n,mime:s,family:r}){const[a,i]=d.useState("loading");if(d.useEffect(()=>{let o=!1;return i("loading"),fetch(Lr(e),{credentials:"same-origin"}).then(async c=>{if(!c.ok)throw new Error(String(c.status));const u=await c.text();o||i({text:u.slice(0,Qg),truncated:c.headers.get("X-Preview-Truncated")==="1"||u.length>Qg})}).catch(()=>{o||i("failed")}),()=>{o=!0}},[e]),a==="loading")return t.jsx("div",{className:"file-preview",children:t.jsx(Ce,{children:"Loading preview…"})});if(a==="failed")return t.jsx(Q,{children:"The preview could not be loaded. Download the file to open it."});const l=r==="table"&&(/csv|tab-separated/.test(s)||/\.(csv|tsv)$/i.test(n??""));return t.jsxs("div",{className:"file-preview",children:[l?t.jsx(A7,{text:a.text,delimiter:/tab|\.tsv$/i.test(s+(n??""))?" ":","}):t.jsx("pre",{className:"file-preview-text",children:a.text}),a.truncated?t.jsxs("p",{className:"muted",children:["Showing the first ",Qg.toLocaleString()," characters. The download has the whole file."]}):null]})}function E7(e,n,s,r){const a=[];let i=[],l="",o=!1,c=!1,u=!1;const h=()=>{i.length<r?i.push(l):c=!0,l=""},f=()=>{h(),a.push(i),i=[]};let m=0;for(;m<e.length;m+=1){if(a.length>=s){u=e.slice(m).trim()!=="";break}const p=e[m];if(o){p==='"'?e[m+1]==='"'?(l+='"',m+=1):o=!1:l+=p;continue}if(p==='"'){o=!0;continue}if(p===n){h();continue}if(p!=="\r"){if(p===`
|
|
111
|
+
`){f();continue}l+=p}}return a.length<s&&(l!==""||i.length>0)&&f(),{rows:a,truncatedRows:u,truncatedCols:c}}function A7({text:e,delimiter:n}){const s=d.useMemo(()=>E7(e,n,Jg+1,Xg),[e,n]),[r,...a]=s.rows;if(!r)return t.jsx("p",{className:"muted",children:"The file is empty."});const i=Math.min(Xg,s.rows.reduce((o,c)=>Math.max(o,c.length),0)),l=Array.from({length:i},(o,c)=>c);return t.jsxs("div",{className:"ui-table-wrap file-preview-table",children:[t.jsxs("table",{className:"ui-table",children:[t.jsx("thead",{children:t.jsx("tr",{children:l.map(o=>t.jsx("th",{children:r[o]??""},o))})}),t.jsx("tbody",{children:a.slice(0,Jg).map((o,c)=>t.jsx("tr",{children:l.map(u=>t.jsx("td",{children:o[u]??""},u))},c))})]}),s.truncatedRows||s.truncatedCols?t.jsxs("p",{className:"muted",children:["Showing the first ",Jg," rows",s.truncatedCols?` and ${Xg} columns`:"",". The download has the whole file."]}):null]})}function $7(e,n){const s=e.toLowerCase().split(";")[0].trim(),r=(n??"").toLowerCase().split(".").pop()??"";return s==="text/markdown"||s==="text/x-markdown"||s==="text/plain"&&(r==="md"||r==="markdown")?[{format:"pdf",label:"PDF",hint:".pdf"},{format:"docx",label:"Word",hint:".docx"},{format:"md",label:"Markdown",hint:".md, as written",asWritten:!0}]:s==="text/csv"||s==="text/plain"&&r==="csv"?[{format:"xlsx",label:"Excel",hint:".xlsx"},{format:"csv",label:"CSV",hint:".csv, as written",asWritten:!0}]:[]}function T7(e,n){return`/api/artifacts/${encodeURIComponent(e)}/export/${n}`}function R7(e,n){return`${(e??"document").replace(/\.[a-z0-9]{1,8}$/i,"")||"document"}.${n}`}function YC(e,n){const s=document.createElement("a");s.href=e,s.download=n,s.rel="noopener",document.body.appendChild(s),s.click(),s.remove()}function BM({artifactId:e,filename:n,mime:s,accent:r=!0}){const a=n??"download",i=$7(s,n),l=r?"accent":void 0;if(i.length===0)return t.jsx("a",{className:"ui-btn","data-variant":l,href:ca(e),download:a,children:"Download"});const o=i.filter(h=>!h.asWritten),c=i.filter(h=>h.asWritten),u=h=>({label:h.label,hint:h.hint,onSelect:()=>h.asWritten?YC(ca(e),a):YC(T7(e,h.format),R7(n,h.format))});return t.jsx(rs,{label:`Download ${a}`,note:"Download as",items:[...o.map(u),"separator",...c.map(u)],trigger:t.jsxs("button",{type:"button",className:"ui-btn","data-variant":l,"aria-label":`Download ${a}`,children:["Download ",t.jsx(se,{name:"chevron-down"})]})})}function I7({attachment:e}){const n=Mb(e.mime,e.filename);return t.jsxs("div",{className:"wb-artifact","data-family":n,"data-testid":"artifact-view",children:[t.jsx(UM,{artifactId:e.artifactId,filename:e.filename??null,mime:e.mime,family:n}),t.jsxs("dl",{className:"ui-kv",children:[t.jsx("dt",{children:"Type"}),t.jsxs("dd",{children:[il[n],t.jsx("span",{className:"wb-artifact-mime mono",children:e.mime})]}),e.sizeBytes?t.jsxs(t.Fragment,{children:[t.jsx("dt",{children:"Size"}),t.jsx("dd",{children:qn(e.sizeBytes)})]}):null,t.jsx("dt",{children:"Id"}),t.jsx("dd",{className:"mono",children:e.artifactId})]}),t.jsx("div",{className:"ui-toolbar","data-align":"end",children:t.jsx(BM,{artifactId:e.artifactId,filename:e.filename,mime:e.mime})})]})}const QC=80,P7=["query","path","url","dir"],M7=["message","task"];function uk(e,n){const s=O7(n);if(!s)return null;const r=Wl(s.command);if(r!==null){const l=Wl(s.name);return yh(l===null?r:`${l}: ${r}`)}for(const l of P7){const o=Wl(s[l]);if(o!==null)return yh(o)}const a=Wl(s.action);if(a!==null){const l=M7.map(o=>Wl(s[o])).find(o=>o!==null)??null;return yh(l===null?a:`${a} · ${l}`)}const i=Object.values(s).filter(l=>typeof l=="string");return i.length===1?yh(Wl(i[0])):null}function Wl(e){if(typeof e!="string")return null;const n=e.replace(/\s+/g," ").trim();return n===""?null:n}function yh(e){return e===null?null:e.length>QC?`${e.slice(0,QC-1)}…`:e}function O7(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function D7({text:e}){const s=e.indexOf(`
|
|
112
|
+
|
|
113
|
+
The material this mission reads first`),r=/<DATA-([a-f0-9]+)>/.exec(e.slice(s));return s<0||!r||!e.includes(`</DATA-${r[1]}>`)?t.jsx(t.Fragment,{children:e}):t.jsxs(t.Fragment,{children:[e.slice(0,s),t.jsxs("details",{className:"wb-mission-material",children:[t.jsx("summary",{children:"Mission material · supplied to the agent"}),t.jsx("pre",{children:e.slice(s+2)})]})]})}const WM="owner.notify",ka=e=>typeof e=="string"&&e.trim()!==""?e:null;function L7(e){const n=e!==null&&typeof e=="object"?e:{};return{title:ka(n.title)??"(no title)",text:ka(n.text),urgency:ka(n.urgency)??"now",key:ka(n.key),link:ka(n.link)}}function HM(e){if(e===null||typeof e!="object")return ka(e);const n=e;return ka(n.delivered)??ka(n.message)??ka(n.error)}function F7(e,n){if(!n||!e)return"critical";const s=e.toLowerCase();return/^(refused|not sent)/.test(s)?"critical":/^sent\b/.test(s)?"good":"warning"}const _7="mission.report",Hl=e=>typeof e=="string"&&e.trim()!==""?e.trim():null,z7=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function U7(e,n){const s=e!==null&&typeof e=="object"?e:{},r=n!==null&&typeof n=="object"?n:{},a=Hl(r.link),i=r.audio!==null&&typeof r.audio=="object"?r.audio:null,l=i?Hl(i.fileId):null,o=i?Hl(i.mime):null;return{text:Hl(s.text),link:a&&a.startsWith("#/")?{route:a,label:Hl(r.linkLabel)??"Open"}:null,audio:l&&z7.test(l)&&o&&vp(o)?{fileId:l,mime:o,filename:i?Hl(i.filename):null,sizeBytes:i&&typeof i.sizeBytes=="number"?i.sizeBytes:null}:null}}function B7(e){return!!(e.text&&e.link&&jP(e.link.route))}function JC({view:e}){var a;if(!e.text&&!e.audio)return null;const n=e.audio?t.jsx(jp,{artifactId:e.audio.fileId,name:e.audio.filename??"Voice note",mime:e.audio.mime,sizeBytes:e.audio.sizeBytes}):null,s=e.text?t.jsx("div",{className:"wb-bubble","data-rich":"true",children:t.jsx(gr,{text:e.text})}):null,r=jP((a=e.link)==null?void 0:a.route);return r&&e.link&&e.text?t.jsx(dH,{editionId:r,text:s,audio:e.audio,link:e.link}):t.jsxs("div",{className:"wb-report","data-testid":"mission-report",children:[n,s,e.link?t.jsx("a",{className:"ui-btn wb-report-link","data-size":"sm",href:e.link.route,children:e.link.label}):null]})}const KM=3,W7=2*6e4,XC=40,H7=["filename","fileName","file_name","file","filePath","file_path","path"],K7=["accountName","account_name","account"],V7=["pageId","page_id","page"],G7=["url","href","link"],q7=new Set(["conversationId","agentId","runId","toolUseId","ownerId","requestId"]);function VM(e){return e.length>XC?`${e.slice(0,XC-1)}…`:e}function nf(e){const n=e.trim();return n===""?null:{key:n,label:VM(n)}}function ZC(e){const n=(e.split(/[?#]/)[0]??"").trim(),s=(n.split(/[\\/]/).filter(Boolean).at(-1)??"").trim();return s===""?null:{key:n,label:VM(s)}}function Y7(e){try{const n=new URL(e);return n.host?nf(n.host.replace(/^www\./,"")):null}catch{return null}}function Zg(e){if(typeof e=="string")return nf(e);if(typeof e=="number"&&Number.isFinite(e))return nf(String(e));if(e&&typeof e=="object"&&!Array.isArray(e)){const n=e;for(const s of["name","filename","title"])if(typeof n[s]=="string")return nf(n[s])}return null}function e1(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;const n=e;for(const s of H7){const r=n[s];if(typeof r=="string"){const a=ZC(r);if(a)return a}else if(s==="file"){const a=Zg(r);if(a)return ZC(a.key)}}for(const s of K7){const r=Zg(n[s]);if(r)return r}for(const s of V7){const r=Zg(n[s]);if(r)return r}for(const s of G7){const r=n[s];if(typeof r=="string"){const a=Y7(r);if(a)return a}}return null}function Q7(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;for(const[n,s]of Object.entries(e))if(!(q7.has(n)||!/(?:[a-z]Id|_id)$/.test(n))){if(typeof s=="string"&&s.trim()!==""){const r=s.trim();return{key:r,label:r.length>8?r.slice(0,8):r}}if(typeof s=="number")return{key:String(s),label:String(s)}}return null}function J7(e,n){return e1(e)??e1(n)??Q7(e)}function t1(e){if(e===null||typeof e!="object"||Array.isArray(e))return null;const n=e;for(const s of["expiresAt","expires_at","expires"]){const r=n[s];if(typeof r=="string"&&!Number.isNaN(Date.parse(r)))return r}return null}function Ap(e){var n;return((n=e.versions)==null?void 0:n.at(-1))??null}function Wi(e){var n;return((n=Ap(e))==null?void 0:n.id)??e.id}function n1(e,n){return e.find(s=>s.id!==n&&(s.versions??[]).some(r=>r.id===n))??null}function X7(e,n){if(e.expiresAt&&Date.parse(e.expiresAt)<=n)return"gone";if(e.source==="fallback"&&e.tone==="critical"){const s=e.versions??[],r=a=>(a==null?void 0:a.failed)===!0;if(s.length>0?s.every(a=>r(a.props)):r(e.props))return"parked"}return null}function Qu(e){if(!e)return 0;const n=Date.parse(e);return Number.isNaN(n)?0:n}function Z7(e,n){var s;return Math.max(Qu(((s=Ap(e))==null?void 0:s.at)??e.at),n[e.id]??0)}function GM(e,n={}){return e.map((s,r)=>({item:s,index:r,at:Z7(s,n)})).sort((s,r)=>r.at-s.at||r.index-s.index).map(({item:s})=>s)}function eq(e,n,s=KM,r={},{turnStartedAt:a=null}={}){const i=GM(e,r),l=Qu(a),o=h=>{var m;if(l===0||r[h.id]!==void 0)return!1;const f=Qu(((m=Ap(h))==null?void 0:m.at)??h.at);return f>0&&f<l},c=new Set(e.filter(h=>h.id===n||h.source==="approval"||h.pinned===!0).map(h=>h.id));for(const h of i){if(c.size>=s)break;h.parked||o(h)||c.add(h.id)}const u=i.filter(h=>c.has(h.id));return{shown:[...u.filter(h=>h.pinned===!0),...u.filter(h=>h.pinned!==!0)],hidden:i.filter(h=>!c.has(h.id))}}function tq(e,{now:n,turnStartedAt:s,touched:r={}}){var l;const a=Qu(s),i=[{label:"Now",items:[]},{label:"Earlier this turn",items:[]},{label:"Earlier",items:[]}];for(const o of GM(e,r)){const c=Qu(((l=Ap(o))==null?void 0:l.at)??o.at),u=a>0&&c>=a;c>0&&c>=n-W7&&(a===0||u)?i[0].items.push(o):u?i[1].items.push(o):i[2].items.push(o)}return i.filter(o=>o.items.length>0)}const nq=new Set(["table","tiles","timeseries","bars","keyvalue","story","document","diff","terminal","image","audio","preview","query","envelope"]),sq=["browser.*","secret.*","secrets.*","mission.*","owner.notify"];function qM(e){return sq.some(n=>n.endsWith(".*")?e.startsWith(n.slice(0,-1)):e===n)}function rq({tool:e,renderer:n,substantial:s}){return qM(e)?!1:n==="structured"?s:nq.has(n)}const bi="agent.delegate";function aq(e){if(e===null||typeof e!="object")return null;const n=e,s=n.conversationId;if(typeof s!="string"||s==="")return null;const r=n.agentId??n.agent;return{conversationId:s,agentId:typeof r=="string"?r:"",runId:typeof n.runId=="string"?n.runId:null}}function iq(e){if(typeof e=="string")return e;if(e===null||typeof e!="object")return null;const n=e.text;return typeof n=="string"?n:null}const zj="canvas.show",s1="canvas.clear",r1=12;function lq(e){return`sources:${e}`}function oq(e){return`tab:${e}`}function YM(e){return e.role==="user"&&(e.blocks??[]).some(n=>n.type==="text"&&n.text.trim()!==""||n.type==="attachment")}function No(e){return`${e.plugin}/${e.name}`}function cq(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const n=e.diff;return typeof n=="string"&&n.trim()!==""}function uq({messages:e,descriptors:n}){const s=new Map(n.filter(i=>i.renderer==="preview").map(i=>[i.tool,i]));if(s.size===0)return[];const r=new Map,a=[];for(const i of e)for(const l of i.blocks??[]){if(l.type==="tool_use"&&r.set(l.id,l.name),l.type!=="tool_result"||l.ok===!1)continue;const o=s.get(l.name||r.get(l.toolUseId)||"");if(!o)continue;const c=IP(o,om(l.output)).props;c.target===null&&c.awaiting!==null&&a.push({...c.awaiting,at:i.at??null})}return a}function QM({messages:e,descriptors:n,awaiting:s,folded:r,served:a,gathered:i,quiet:l,titles:o}){var b,j;const c=v=>ZM(v,o),u=new Map(n.map(v=>[v.tool,v])),h=new Map;let f=[],m=0,p=null;const x=v=>{p||(p={id:lq(v.id),tool:v.tool,title:"Sources",renderer:"sources",source:"sources",props:{entries:[]},at:v.at,substantial:!1,count:0},f.push(p));const y=p.props,k=y.entries.some(w=>w.id===v.id)?y.entries.map(w=>w.id===v.id?{...v,input:v.input??w.input}:w):[...y.entries,v],N=[...new Set(k.map(w=>w.tool))];p.props={entries:k},p.tool=N.join(" · "),p.count=k.length,p.substantial=k.some(w=>w.ok===!0),p.tone=k.every(w=>w.ok===!1)?"critical":void 0},g=(v,y,k)=>{if(k&&(v.expiresAt=k),!y){f.push(v);return}v.subject=y.label,v.subjectKey=y.key,v.title=`${v.title} · ${y.label}`;const N={id:v.id,at:v.at,title:v.title,renderer:v.renderer,props:v.props,substantial:v.substantial,...v.tone?{tone:v.tone}:{}},w=f.find(C=>C.subjectKey===y.key&&C.tool===v.tool&&(C.source==="descriptor"||C.source==="fallback"));if(!w){f.push({...v,id:oq(v.id),versions:[N]});return}f=f.filter(C=>C!==w);const S={...v,id:w.id,versions:[...w.versions??[],N]};v.tone||delete S.tone,k||delete S.expiresAt,f.push(S)};for(const v of e){YM(v)&&(p=null);for(const y of v.blocks??[]){if(y.type==="tool_use"){if(h.set(y.id,{name:y.name,input:y.input,at:v.at??null}),i!=null&&i.has(y.name)){x({id:y.id,tool:y.name,input:y.input,output:null,ok:null,at:v.at??null});continue}if(y.name===zj){const I=hq(y.id,y.input,v.at??null);I&&f.push(I)}if(y.name===s1&&(f=[],p=null),y.name===bi){const I=aq(y.input);I&&f.push({id:y.id,tool:bi,title:"Delegation",renderer:"delegate",props:{...I,result:null},at:v.at??null,source:"delegate",substantial:!0})}continue}if(y.type!=="tool_result"||y.name===zj||y.name===s1)continue;const k=h.get(y.toolUseId),N=v.at??(k==null?void 0:k.at)??null,w=y.name||(k==null?void 0:k.name)||"tool",S=f.find(I=>I.source==="delegate"&&I.id===y.toolUseId);if(S&&((b=y.delegation)==null?void 0:b.state)==="waiting"){S.props={...S.props,result:null,waiting:{approvalId:y.delegation.approvalId}},y.delegation.approvalId&&(S.tone="warning");continue}if(S){S.props={...S.props,result:{ok:y.ok,text:iq(y.ok?y.output:y.error??y.output),...y.ok&&qf(y.output).length>0?{files:qf(y.output)}:{}}},y.ok||(S.tone="critical");continue}const C=y.approval?Uj(y):(s==null?void 0:s.get(y.toolUseId))??Uj(y);if(C){f.push({id:y.toolUseId,tool:w,title:"Approval",renderer:"envelope",props:{approvalId:C},at:N,tone:"warning",source:"approval",substantial:!0});continue}if(r!=null&&r.has(w)||l!=null&&l.has(w)&&y.ok!==!1||qM(w))continue;if(i!=null&&i.has(w)){x({id:y.toolUseId,tool:w,input:(k==null?void 0:k.input)??null,output:om(y.output)??null,ok:y.ok!==!1,...y.error===void 0?{}:{error:y.error},at:N});continue}const E=om(y.output),$=((j=u.get(w))==null?void 0:j.renderer)==="story"&&E&&typeof E=="object"?E:null,R=$&&typeof $.title=="string"&&typeof $.id=="string"?{key:$.id,label:$.title.length>60?`${$.title.slice(0,59)}…`:$.title}:J7((k==null?void 0:k.input)??null,E);if(y.ok===!1){g({id:y.toolUseId,tool:w,title:c(w),renderer:"structured",props:{value:y.error??E??null,failed:!0},at:N,tone:"critical",source:"fallback",substantial:!1},R,null);continue}cq(E)&&(m+=1);const P=u.get(w);if(P){const I=IP(P,E),{renderer:F}=I;let{props:U}=I;if(F==="preview"){const M=U,z=M.target??(M.awaiting&&(a!=null&&a.has(No(M.awaiting)))?M.awaiting:null);if(z===null)continue;U={...M,target:z,awaiting:null};const D=No(z);f=f.filter(H=>!(H.source==="descriptor"&&H.renderer==="preview"&&H.props.target!==null&&No(H.props.target)===D))}if(!rq({tool:w,renderer:F,substantial:sf(F,U)}))continue;const L={id:y.toolUseId,tool:w,title:P.title??c(w),renderer:F,props:U,at:N,source:"descriptor",substantial:sf(F,U)};F==="preview"?f.push(L):g(L,R,t1(E));continue}const O={value:Ep(E)?{input:k==null?void 0:k.input,output:E}:E};fq("structured",O)&&g({id:y.toolUseId,tool:w,title:c(w),renderer:"structured",props:O,at:N,source:"fallback",substantial:sf("structured",O)},R,t1(E))}}for(const v of f)v.source==="descriptor"&&v.renderer==="preview"&&(v.props={...v.props,changes:m});return dq(f)}const a1="forAgent";function om(e){if(e===null||typeof e!="object"||Array.isArray(e)||!(a1 in e))return e;const{[a1]:n,...s}=e;return s}function dq(e){if(e.length<=r1)return e;const n=e.length-r1;return[...e.slice(0,n).filter(r=>r.source==="approval"),...e.slice(n)]}function hq(e,n,s){if(n===null||typeof n!="object")return null;const{renderer:r,title:a,data:i}=n,l=typeof r=="string"&&lm(r)?r:"structured";return{id:e,tool:zj,title:typeof a=="string"&&a.trim()!==""?a:"Shown",renderer:l,props:l==="structured"&&!lm(String(r))?{value:i}:i,at:s,substantial:!0,source:"canvas"}}function fq(e,n){const s=n??{};return!!(s.failed===!0||sf(e,n)||ak(s.value).kind==="error")}function sf(e,n){const s=n??{};switch(e){case"timeseries":return Pc(s.points)>0;case"bars":return Pc(s.bars)>0;case"keyvalue":return Pc(s.pairs)>0;case"tiles":return s.notice!==!0&&Pc(s.tiles)>0;case"document":return!!s.text||!!s.src;case"diff":return!!s.diff;case"terminal":return!!s.output||!!s.command;case"image":return!!s.artifactId;case"preview":return!!s.target;case"envelope":return!0;case"table":return(Array.isArray(s.groups)?s.groups:[]).some(a=>Pc(a.rows)>0);default:return Ep(s.value)?!0:s.failed===!0?!1:JV(s.value)}}function Pc(e){return Array.isArray(e)?e.length:0}function Uj(e){if(e.approval)return e.approval.state==="pending"?e.approval.id:null;for(const n of[e.error,e.output]){const s=XM(n,0);if(s)return s}return null}function mq(e,n,s={}){var c,u,h;const r=f=>ZM(f,s.titles),a=e.flatMap(f=>f.blocks),i=a.find(f=>f.type==="tool_use"&&f.id===n);if((i==null?void 0:i.type)!=="tool_use")return null;const l=a.find(f=>f.type==="tool_result"&&f.toolUseId===n);if(i.name===WM&&(l==null?void 0:l.type)==="tool_result")return{id:n,tool:i.name,title:"Message to you",renderer:"notify",props:{input:i.input??null,output:l.output??null,ok:l.ok!==!1},at:null,tone:l.ok===!1?"critical":void 0,source:"notify",substantial:!1};if((c=s.resultOf)!=null&&c.has(i.name)&&(l==null?void 0:l.type)==="tool_result"&&l.ok&&!l.approval)return{id:n,tool:i.name,title:r(i.name),renderer:"structured",props:{value:om(l.output)??null},at:null,source:"fallback",substantial:!1};const o=(u=s.redactInputOf)!=null&&u.has(i.name)?JM(i.input):i.input;return{id:n,tool:i.name,title:r(i.name),renderer:"structured",props:{value:{input:o,...(l==null?void 0:l.type)==="tool_result"?{status:((h=l.approval)==null?void 0:h.state)??(l.ok?"completed":"failed"),output:l.output,...l.error?{error:l.error}:{}}:{status:"Awaiting result"}}},at:null,source:"fallback",substantial:!1}}const pq=new Set(["value","text","password","secret","code"]);function JM(e){if(e===null||typeof e!="object"||Array.isArray(e))return e;const n={};for(const[s,r]of Object.entries(e))n[s]=pq.has(s)&&typeof r=="string"?"— withheld —":JM(r);return n}function XM(e,n){if(n>3||e===null||typeof e!="object")return null;const s=e,r=s.reason,a=s.actionId??s.approvalId;if(typeof a=="string"&&a!==""&&(r===void 0||r==="approval-required"))return a;for(const i of Object.values(s)){const l=XM(i,n+1);if(l)return l}return null}function jl(e){const n=e.split(".");return n.length===1?rn(e):n.map(s=>rn(s)).join(" · ")}function ZM(e,n){return(n==null?void 0:n.get(e))??jl(e)}function i1(e,n){return e.find(s=>s.source==="sources"&&s.props.entries.some(r=>r.id===n))??null}function gq(e,n,s){const r=o1(e),a=o1(n==null?void 0:n.input),i=Hi(r==null?void 0:r.name)??wq(Hi(r==null?void 0:r.handle))??Hi(r==null?void 0:r.agent)??Hi(a==null?void 0:a.agent),l=typeof e=="string"?e.trim()||null:Hi(r==null?void 0:r.text)??Hi(r==null?void 0:r.note),o=l1(r==null?void 0:r.durationMs)??l1(r==null?void 0:r.elapsedMs),c=n!=null&&n.at?Date.parse(n.at):NaN,u=s?Date.parse(s):NaN,h=Number.isFinite(c)&&Number.isFinite(u)&&u>=c?u-c:null;return{who:i,question:Hi(a==null?void 0:a.task),answer:l,files:qf(e),durationMs:o??h}}function xq(e,n){var r;let s=null;for(const a of e)for(const i of a.blocks??[])i.type==="tool_result"&&i.name===bi&&((r=i.delegation)==null?void 0:r.approvalId)===n&&(s=i.toolUseId);if(s===null)return null;for(const a of e)for(const i of a.blocks??[])if(i.type==="tool_use"&&i.id===s)return{input:i.input,at:a.at||null};return null}function vq({block:e,messages:n,answeredAt:s}){const r=gq(e.output,xq(n,e.actionId),s),a=[r.who?`Asked ${r.who}`:null,r.durationMs===null?null:`took ${jq(r.durationMs)}`].filter(i=>i!==null);return t.jsxs("div",{className:"wb-delegation-result","data-testid":"delegation-result",children:[a.length>0?t.jsx("p",{className:"wb-delegation-facts",children:a.join(" · ")}):null,r.question?t.jsx("blockquote",{className:"wb-delegation-question",children:r.question}):null,r.answer?t.jsx("div",{className:"wb-delegation-answer","data-testid":"delegation-answer",children:t.jsx(gr,{text:r.answer})}):t.jsx("p",{className:"wb-delegation-facts",children:"No answer came back."}),r.files.length>0?t.jsx("div",{className:"wb-msg-files",role:"list","aria-label":`Files ${r.who??"the colleague"} made`,children:r.files.map(i=>t.jsx("a",{role:"listitem",href:ca(i.artifactId),download:!0,children:t.jsx(Nd,{name:i.filename??"Untitled file",mime:i.mime,sizeBytes:i.sizeBytes,thumbnail:Pb(i.mime)?Lr(i.artifactId):null,size:"sm"})},i.artifactId))}):null,t.jsx(Kt,{summary:"Raw JSON",children:t.jsx("pre",{className:"wb-approval-output mono",children:yq(e.output)})})]})}function jq(e){if(e<1e3)return`${Math.round(e)}ms`;const n=Math.round(e/1e3);if(n<60)return`${n}s`;const s=Math.floor(n/60);return s<60?`${s}m ${String(n%60).padStart(2,"0")}s`:`${Math.floor(s/60)}h ${String(s%60).padStart(2,"0")}m`}function yq(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)??"null"}catch{return String(e)}}function wq(e){return e===null?null:`@${e.replace(/^@/,"")}`}function Hi(e){return typeof e=="string"&&e.trim()!==""?e:null}function l1(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function o1(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}const bq=1e3;function kq({messageId:e,text:n,onReadAloud:s,rawTextBlocks:r}){const[a,i]=d.useState(!1),[l,o]=d.useState(!1),c=d.useRef(null),u=d.useSyncExternalStore(tH,eH)===e;d.useEffect(()=>()=>{c.current&&clearTimeout(c.current)},[]);const h=()=>{var f;(f=navigator.clipboard)==null||f.writeText(n).then(()=>{o(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>o(!1),bq)},()=>{})};return t.jsxs("div",{className:"wb-reply-actions","data-testid":"reply-actions",children:[t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":l?"Copied":"Copy",title:l?"Copied":"Copy",onClick:h,children:t.jsx(se,{name:l?"check":"copy",size:14})}),t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":"View raw response",title:"View raw response",onClick:()=>i(!0),children:t.jsx(se,{name:"code",size:14})}),a?t.jsxs(Qe,{title:"Raw response",onClose:()=>i(!1),scrollBody:!0,children:[t.jsx("p",{children:"Stored text blocks before Markdown rendering. Each block is shown unchanged; this is not the full provider response."}),(r??[n]).map((f,m)=>t.jsxs("section",{children:[t.jsxs("h3",{children:["Text block ",m+1]}),t.jsx("pre",{className:"wb-raw-response",children:t.jsx("code",{children:f})})]},m))]}):null,l?t.jsx("span",{className:"wb-reply-copied",role:"status",children:"Copied"}):null,s?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":u?"Stop reading aloud":"Read aloud",title:u?"Stop reading aloud":"Read aloud","aria-pressed":u,onClick:()=>u?uc():s(e,n),children:t.jsx(se,{name:u?"stop":"play",size:14})}):null]})}function Nq(e){const n=Sq(e);if(!n)return null;const s=ex(n.diff);if(s!==null)return{kind:"diff",diff:s};const r=ex(n.command),a=ex(n.plain),i=tx(n.exitCode);return r!==null&&(a!==null||i!==null||tx(n.pid)!==null)?{kind:"command",command:r,output:a,exitCode:i,elapsedMs:tx(n.elapsedMs)}:null}function ex(e){return typeof e=="string"&&e.trim()!==""?e:null}function tx(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Sq(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}const c1="offer:",e2="owner:interjection";function Cq(e){return e===e2}function Eq(e){if(typeof e!="string"||!e.startsWith(c1))return null;const n=e.slice(c1.length).trim();return n===""?null:n}const u1="brief:";function Aq(e){if(typeof e!="string"||!e.startsWith(u1))return null;const n=e.slice(u1.length).trim();return n===""?null:n}const d1="stamp:";function $q(e){if(typeof e!="string"||!e.startsWith(d1))return null;const n=e.slice(d1.length).trim();return n===""?null:n}function dk({messages:e,live:n,now:s,onOpen:r,working:a=!1,partial:i=null,agents:l,agentId:o,speakers:c,coordinatorId:u,workingAs:h,onOpenFile:f,onReadAloud:m,children:p,agentName:x,emptyHint:g,empty:b,plain:j=!1,workingLine:v,runs:y,onContinue:k,mediaTools:N,timezone:w}){var oe;const S=d.useRef(null);d.useEffect(()=>{var B;(B=S.current)==null||B.scrollIntoView({block:"end"})},[e.length,n.length,a,i==null?void 0:i.text.length,i==null?void 0:i.thinking.length,!!p]);const C=i&&!i.settled&&(i.text!==""||i.thinking!==""),E=e.filter(B=>(B.blocks??[]).some(Wq)).map(t2),$=_q(E,y??[]),R=Uq(E,y??[]),P=c??l??[],O=B=>(o&&!c?P.find(ue=>ue.id===o):void 0)??P.find(ue=>ue.name===B)??null,I=o?P.find(B=>B.id===o)??null:null,F=a||n.length>0,U=F||!!C,L=!!C&&i.text!=="",M=F&&!L,z=E.at(-1),D=(z==null?void 0:z.role)!=="assistant"||!!h,H=h??x??"Assistant",K=E.filter((B,ue)=>{var Ne;return ue===0||(c?(((Ne=E[ue-1])==null?void 0:Ne.speaker)??null)!==(B.speaker??null):E[ue-1].role!==B.role)}),X=U&&!D?((oe=K.at(-1))==null?void 0:oe.id)??null:null,W=(y??[]).reduce((B,ue)=>B===null||(ue.startedAt??"")>(B.startedAt??"")?ue:B,null),me=(y??[]).some(B=>B.finishedAt===null),fe=k&&!U&&!me&&z&&(W==null?void 0:W.stopped)==="max_turns"&&$.get(z.id)===W?z.id:null;return t.jsx(MM.Provider,{value:l??c??[],children:t.jsxs("div",{className:"wb-messages","data-testid":"messages",children:[E.length===0&&n.length===0?b??t.jsx("p",{className:"wb-chat-empty",children:g}):null,E.map((B,ue)=>{var rt;const Ne=B.speaker??null,Ke=c?Ne==="owner"||Ne===null&&B.role==="user":B.role==="user",G=c&&Ne==="room",ae=c&&Ne&&Ne!=="owner"&&Ne!=="room"?c.find(ye=>ye.id===Ne)??null:null,J=E[ue-1],xe=ue===0||(c?((J==null?void 0:J.speaker)??null)!==Ne:J.role!==B.role);if(G)return t.jsx("div",{className:"wb-msg wb-msg-room","data-role":"room",children:(B.blocks??[]).filter(ye=>ye.type==="text").map((ye,Ue)=>t.jsx("span",{children:ye.text},Ue))},B.id);const Ie=(B.blocks??[]).filter(ye=>ye.type==="approval_result");if(Ie.length>0)return t.jsx("div",{className:"wb-msg","data-role":"assistant","data-testid":"approval-result",children:Ie.map((ye,Ue)=>t.jsx(Hq,{block:ye,messages:e,at:B.at||null},Ue))},B.id);const Y=B.role==="user"&&Cq(Ne),te=B.role==="user"?$q(Ne):null;if(te){const ye=B.at?new Date(B.at):null;return t.jsxs("p",{className:"ss-stamp",role:"status","data-testid":"thread-stamp",children:[t.jsx(se,{name:"key",size:14}),t.jsx("span",{children:te}),ye&&!Number.isNaN(ye.getTime())?t.jsx("span",{className:"ss-stamp-when",children:Lt(ye,w??Intl.DateTimeFormat().resolvedOptions().timeZone)}):null]},B.id)}const ie=B.role==="user"?Aq(Ne):null;if(ie)return t.jsx("div",{className:"wb-msg","data-role":"user","data-testid":"offer-turn",children:t.jsx("div",{className:"wb-bubble wb-bubble-offer",children:ie})},B.id);const ge=B.role==="user"?Eq(Ne):null;if(ge){const ye=(B.blocks??[]).filter(Ue=>Ue.type==="text").map(Ue=>Ue.text).join(`
|
|
114
|
+
`);return t.jsx("div",{className:"wb-msg","data-role":"user","data-testid":"offer-turn",children:t.jsx("div",{className:"wb-bubble wb-bubble-offer",title:ye,children:ge})},B.id)}const je=c&&ae&&B.role==="user"?Oq(B):null;if(je){const ye=E.slice(ue+1).find(st=>st.role==="assistant"&&st.speaker&&st.speaker!==ae.id),Ue=ye!=null&&ye.speaker?c.find(st=>st.id===ye.speaker):void 0;return t.jsxs("details",{className:"wb-msg wb-msg-room wb-msg-ask","data-role":"room",children:[t.jsxs("summary",{children:[ae.name," asked ",(Ue==null?void 0:Ue.name)??"a member",je.request?`: ${je.request.length>120?`${je.request.slice(0,119)}…`:je.request}`:""]}),je.request?t.jsx("p",{children:je.request}):null]},B.id)}const Se=$.get(B.id)??null,ke=Fq(B,e),Be=!Ke&&!Y&&!j?Lq(B):"";return t.jsxs("div",{className:"wb-msg","data-role":Ke||Y?"user":"assistant",children:[Y?t.jsx("div",{className:"wb-msg-added","data-testid":"added-while-working",children:ke.length>0?`Queued with ${ke.length} file${ke.length===1?"":"s"}`:"added while working"}):null,xe&&!Ke&&!Y?t.jsx(h1,{name:ae?ae.name:c&&Ne&&Ne!=="owner"&&Ne!=="room"?Ne:x??"Assistant",face:ae??I??O(x),moving:M&&X===B.id,children:ae&&u===ae.id?t.jsx("span",{className:"wb-msg-role",children:"coordinator"}):null}):null,ke.length>0?t.jsx("div",{className:"wb-msg-files",role:"list","aria-label":"Files sent with this message",children:ke.map(ye=>t.jsx("span",{role:"listitem",children:vp(ye.mime)?t.jsx(jp,{artifactId:ye.artifactId,name:ye.filename??"Untitled file",mime:ye.mime,sizeBytes:ye.sizeBytes}):t.jsx(Nd,{name:ye.filename??"Untitled file",mime:ye.mime,sizeBytes:ye.sizeBytes,thumbnail:Pb(ye.mime)?Lr(ye.artifactId):null,...f?{onOpen:()=>f(ye)}:{}})},ye.artifactId))}):null,(B.blocks??[]).map((ye,Ue)=>{const st=Iq(B.blocks??[],Ue,e);if(st==="inside")return null;if(st)return t.jsx(Pq,{refusals:st.refusals},Ue);if(ye.type==="thinking")return j||ye.text.trim()===""?null:t.jsx(Bj,{text:ye.text},Ue);if(ye.type==="text")return ye.text.trim()===""?null:Ke?t.jsx("div",{className:"wb-bubble",children:t.jsx(D7,{text:ye.text})},Ue):t.jsx("div",{className:"wb-bubble","data-rich":"true",children:t.jsx(gr,{text:ye.text})},Ue);if(ye.type==="attachment")return null;if(ye.type==="tool_use"){if(j||ye.name==="secret.request")return null;const Fe=hk(e,ye.id),wt=Fe?Gq(Fe):null,ot=!wt&&ye.name===WM&&Fe?HM(Fe.output):null,tn=!wt&&Fe!==null&&!Fe.ok&&typeof Fe.error=="string"&&Fe.error.startsWith("not-executed:"),$t=!wt&&ye.name===_7&&(Fe!=null&&Fe.ok)?U7(ye.input,Fe.output):null;return $t&&B7($t)?t.jsx(JC,{view:$t},Ue):t.jsxs(d.Fragment,{children:[t.jsx(Wj,{label:wt&&!(Fe!=null&&Fe.delegation)?`Approval · ${ye.name}`:jl(ye.name),tool:ye.name,ok:tn?null:(Fe==null?void 0:Fe.ok)??null,running:Fe===null,...wt?{status:wt.status,waiting:wt.waiting,approval:!0}:ot?{status:ot}:tn?{status:"not run"}:{},gist:uk(ye.name,ye.input),body:Fe?Nq(Fe.output):null,opens:!0,onOpen:()=>r(ye.id)},Ue),!wt&&(Fe!=null&&Fe.ok)&&(N!=null&&N.has(ye.name))?hH(ye.name.split(".")[0]??"",Fe.output).map(Et=>"report"in Et?t.jsx(wP,{link:Et.report},Et.report):t.jsx(uH,{id:Et.artifact},Et.artifact)):null,$t?t.jsx(JC,{view:$t}):null]},Ue)}return null}),Se?t.jsxs("div",{className:"wb-msg-budget","data-testid":"budget-stop",children:[t.jsx("span",{children:Bq(Se)}),fe===B.id?t.jsx(A,{size:"sm",className:"wb-msg-budget-continue","data-testid":"budget-continue",onClick:k,children:"Continue"}):null]}):null,R.has(B.id)?t.jsx("div",{className:"wb-msg-unchecked","data-testid":"unchecked-answer",children:zq}):null,B.feedback&&!Ke&&!Y?t.jsx(Qq,{feedback:B.feedback}):null,Be!==""?t.jsx(kq,{messageId:B.id,text:Be,rawTextBlocks:(((rt=e.find(ye=>ye.id===B.id))==null?void 0:rt.blocks)??[]).flatMap(ye=>ye.type==="text"?[ye.text]:[]),onReadAloud:m}):null]},B.id)}),U?t.jsxs("div",{className:"wb-msg","data-role":"assistant","data-testid":"live-turn",children:[D?t.jsx(h1,{name:H,face:O(H)??I,moving:M}):null,C&&i.thinking!==""&&!j?t.jsx(Bj,{text:i.thinking,live:i.text==="",seconds:Mq(i.thinkingStartedAt,i.textStartedAt??s)}):null,L?t.jsxs("div",{className:"wb-bubble","data-live":"true","data-rich":"true",children:[t.jsx(gr,{text:i.text}),t.jsx("span",{className:"wb-caret","aria-hidden":"true"})]}):null,a&&n.length===0&&!C?t.jsxs("span",{className:"wb-working",role:"status","aria-live":"polite","data-testid":"working",children:[v??`${h??x??"The agent"} is working`,t.jsxs("span",{className:"wb-dots","aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]})]}):null,n.map(B=>t.jsx(Wj,{label:jl(B.name),tool:B.name,ok:null,running:!0,elapsed:Math.max(0,Math.round((s-B.startedAt)/1e3)),opens:!1,onOpen:()=>r(B.toolUseId)},B.toolUseId))]}):null,p,t.jsx("div",{ref:S})]})})}function h1({name:e,face:n,moving:s=!1,children:r}){const a=(n==null?void 0:n.picture)??null,i=OI(s?a:null);return t.jsxs("div",{className:"wb-msg-who","data-testid":"turn-head",children:[t.jsx("span",{className:"wb-msg-mark","data-moving":s?i&&a?"blob":"ring":void 0,children:s&&i&&a?t.jsx(yd,{state:"working",size:"sm",still:a,className:"wb-msg-blob"}):t.jsx(Bn,{id:(n==null?void 0:n.id)??e,name:(n==null?void 0:n.name)??e,unavailable:n?!n.available:!1,...n?{face:n}:{}})}),t.jsx("span",{children:e}),r]})}function Tq(e){var n,s;return((s=(n=/ may delegate to ([^;]*);/.exec(e)??/\(allowed: ([^)]*)\)/.exec(e))==null?void 0:n[1])==null?void 0:s.trim())||null}const Rq="delegation refused:";function Iq(e,n,s){const r=i=>{const l=e[i];if(!l||l.type!=="tool_use"||l.name!==bi)return null;const o=hk(s,l.id);if(!o||o.ok!==!1)return null;const c=typeof o.error=="string"?o.error:String(o.error??"");if(!c.trimStart().startsWith(Rq))return null;const u=l.input??{};return{target:typeof u.agent=="string"&&u.agent!==""?u.agent:"a colleague",message:c}};if(!r(n))return null;if(r(n-1))return"inside";const a=[];for(let i=n;;i+=1){const l=r(i);if(!l)break;a.push(l)}return a.length<2?null:{refusals:a}}function Pq({refusals:e}){const[n,s]=d.useState(!1),r=e.map(o=>Tq(o.message)).find(o=>o!==null)??null,a=e.map(o=>o.target),i=a.slice(0,3),l=`Delegation refused ${e.length} times: ${i.join(", ")}${a.length>i.length?", …":""}`+(r?` (allowed: ${r})`:"");return t.jsxs("div",{className:"wb-refusals","data-testid":"delegation-refusals","data-open":n||void 0,children:[t.jsxs("button",{type:"button",className:"wb-tool","data-ok":!1,"aria-expanded":n,onClick:()=>s(o=>!o),children:[t.jsx("span",{className:"wb-tool-mark","data-ok":"false","aria-hidden":"true"}),t.jsx("span",{className:"wb-tool-label",children:l}),t.jsx(se,{name:"arrow",className:"wb-tool-arrow"})]}),n?t.jsx("div",{className:"wb-refusals-list",children:e.map((o,c)=>t.jsxs("div",{className:"wb-refusal",children:[t.jsxs("span",{className:"wb-tool","data-static":"true","data-ok":!1,children:[t.jsx("span",{className:"wb-tool-mark","data-ok":"false","aria-hidden":"true"}),t.jsxs("span",{className:"wb-tool-label",children:[jl(bi)," · ",o.target]}),t.jsx("span",{className:"wb-tool-elapsed",children:"refused"})]}),t.jsx("p",{className:"wb-refusal-why",children:o.message})]},c))}):null]})}function Mq(e,n){return e===null?null:Math.max(0,Math.round((n-e)/1e3))}function Bj({text:e,live:n=!1,seconds:s=null}){const[r,a]=d.useState(!1),i=n?`Thinking${s!==null&&s>0?` · ${s}s`:""}`:s!==null&&s>0?`Thought for ${s}s`:"Thoughts";return t.jsxs("div",{className:"wb-thought","data-live":n||void 0,"data-open":r||void 0,children:[t.jsxs("button",{type:"button",className:"wb-thought-toggle","aria-expanded":r,onClick:()=>a(l=>!l),children:[n?t.jsxs("span",{className:"wb-dots","aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]}):t.jsx(se,{name:"thought"}),t.jsx("span",{children:i}),t.jsx(se,{name:"arrow",className:"wb-tool-arrow"})]}),r?t.jsx("div",{className:"wb-thought-text",children:t.jsx(gr,{text:e})}):null]})}function Oq(e){var r;const n=((r=(e.blocks??[]).find(a=>a.type==="text"))==null?void 0:r.text)??"",s=/You are a member of the group "[^"]*"\. @([\w-]+), the coordinator, asks you now:\n\n([\s\S]*?)(?:\n\nAnswer for the room|$)/.exec(n);return s?{handle:s[1],request:s[2].trim()}:null}function t2(e){const n=e.blocks??[];if(e.role!=="assistant"||n.length<2)return e;const s=[];let r=!1;for(const a of n){const i=s[s.length-1];a.type==="text"&&(i==null?void 0:i.type)==="text"?(s[s.length-1]={...i,text:i.text+Dq(i.text,a.text)+a.text},r=!0):s.push(a)}return r?{...e,blocks:s}:e}function Dq(e,n){return e===""||n===""||/\s$/.test(e)||/^\s/.test(n)||/^[.,;:!?)\]}»”’'"]/.test(n)?"":/[.!?:…)"”»]$/.test(e)?`
|
|
115
|
+
|
|
116
|
+
`:""}function Lq(e){return(t2(e).blocks??[]).filter(n=>n.type==="text").map(n=>n.text.trim()).filter(n=>n!=="").join(`
|
|
117
|
+
|
|
118
|
+
`)}function Fq(e,n){const s=[],r=new Set,a=i=>{r.has(i.artifactId)||(r.add(i.artifactId),s.push(i))};for(const i of e.blocks??[])if(i.type==="attachment"&&a(i),i.type==="tool_use"&&i.name===bi){const l=hk(n,i.id);l!=null&&l.ok&&qf(l.output).forEach(a)}return s}function _q(e,n){return n2(e,n,s=>(s.stopped==="max_turns"||s.stopped==="max_tokens")&&s.noticed===!0)}const zq="Answered from memory, not checked";function Uq(e,n){return n2(e,n,s=>s.unchecked===!0)}function n2(e,n,s){const r=n.filter(o=>o.startedAt!==null&&o.finishedAt!==null),a=(o,c)=>c.at!==""&&c.at>=o.startedAt&&c.at<=o.finishedAt,i=(o,c)=>o!==c&&o.startedAt>=c.startedAt&&o.finishedAt<=c.finishedAt&&(o.startedAt>c.startedAt||o.finishedAt<c.finishedAt),l=new Map;for(const o of r){if(!s(o)||o.runId===null)continue;let c=null;for(const u of e)u.role!=="assistant"||!a(o,u)||(c=u);c===null||r.some(u=>i(u,o)&&a(u,c))||l.has(c.id)||l.set(c.id,o)}return l}function Bq(e){if(e.stopped==="max_tokens")return"Length limit reached · answer cut off";const n=e.turns;return n===null?"Turn budget reached":`Turn budget reached · ${n} ${n===1?"step":"steps"}`}function Wq(e){return e.type==="text"||e.type==="thinking"?e.text.trim()!=="":e.type==="tool_use"||e.type==="attachment"||e.type==="approval_result"}function Hq({block:e,messages:n,at:s}){const[r,a]=d.useState(!1),i=e.state==="succeeded";return t.jsxs("div",{className:"wb-approval","data-open":r||void 0,children:[t.jsxs("button",{type:"button",className:"wb-tool","data-ok":i,"aria-expanded":r,onClick:()=>a(l=>!l),children:[t.jsx("span",{className:"wb-tool-mark","data-ok":i?"true":"false","aria-hidden":"true"}),t.jsx("span",{className:"wb-tool-label",children:e.name===""?"Approved action":jl(e.name)}),t.jsx("span",{className:"wb-tool-elapsed",children:e.state}),t.jsx(se,{name:"arrow",className:"wb-tool-arrow"})]}),r&&e.name===bi?t.jsx(vq,{block:e,messages:n,answeredAt:s}):null,r&&e.name!==bi?t.jsx("pre",{className:"wb-approval-output mono",children:Kq(e.output)}):null]})}function Kq(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)??"null"}catch{return String(e)}}const Vq=40;function Gq(e){var s,r;if(((s=e.delegation)==null?void 0:s.state)==="waiting")return{status:e.delegation.approvalId?"waiting for your approval":"running",waiting:!0};if(Uj(e))return{status:"waiting",waiting:!0};const n=(r=e.approval)==null?void 0:r.state;return n?n==="approved"||n==="executing"?{status:"approved",waiting:!0}:n==="succeeded"?{status:"approved",waiting:!1}:{status:n,waiting:!1}:null}function Wj({label:e,tool:n,ok:s,running:r,elapsed:a,opens:i,onOpen:l,status:o,waiting:c=!1,approval:u=!1,gist:h=null,body:f=null}){const[m,p]=d.useState(!1),x=t.jsxs(t.Fragment,{children:[r?t.jsx("span",{className:"wb-pulse","aria-hidden":"true"}):t.jsx("span",{className:"wb-tool-mark","data-ok":c?"pending":s===!1?"false":"true","aria-hidden":"true"}),t.jsx("span",{className:"wb-tool-label",children:e}),h?t.jsx("span",{className:"wb-tool-gist mono","data-testid":"tool-gist",children:h}):null,a===void 0?null:t.jsxs("span",{className:"wb-tool-elapsed",children:[a,"s"]}),o||s===!1?t.jsx("span",{className:"wb-tool-elapsed",children:o??"failed"}):null]}),g={"data-ok":s===null?void 0:s,"data-running":r,"data-gist":h?!0:void 0,"data-approval":u||void 0};return f?t.jsxs("div",{className:"wb-toolcall","data-open":m||void 0,children:[t.jsxs("div",{className:"wb-tool","data-split":"true",...g,children:[t.jsxs("button",{type:"button",className:"wb-tool-toggle","aria-expanded":m,onClick:()=>p(b=>!b),children:[t.jsx(se,{name:"chevron",className:"wb-tool-chevron"}),x]}),i?t.jsxs(Tu,{children:[t.jsx(Ru,{asChild:!0,children:t.jsx("button",{type:"button",className:"wb-tool-open","aria-label":"Open on the canvas",onClick:l,children:t.jsx(se,{name:"arrow",className:"wb-tool-arrow"})})}),t.jsx(Iu,{children:t.jsxs(Pu,{className:"ui-tip",sideOffset:6,children:[t.jsx("span",{className:"ui-tip-title",children:"Open on the canvas"}),t.jsx("span",{className:"ui-tip-hint mono",children:n})]})})]}):null]}),m?t.jsx(qq,{body:f,onOpen:i?l:null}):null]}):i?t.jsxs(Tu,{children:[t.jsx(Ru,{asChild:!0,children:t.jsxs("button",{className:"wb-tool",...g,onClick:l,children:[x,t.jsx(se,{name:"arrow",className:"wb-tool-arrow"})]})}),t.jsx(Iu,{children:t.jsxs(Pu,{className:"ui-tip",sideOffset:6,children:[t.jsx("span",{className:"ui-tip-title",children:"Open on the canvas"}),t.jsx("span",{className:"ui-tip-hint mono",children:n})]})})]}):t.jsx("span",{className:"wb-tool","data-static":"true",...g,children:x})}function qq({body:e,onOpen:n}){const s=n?{label:"Open on the canvas",onClick:n}:void 0;if(e.kind==="diff")return t.jsx("div",{className:"wb-tool-body","data-kind":"diff","data-testid":"tool-body",children:t.jsx(im,{text:e.diff,limit:Vq,...s?{more:s}:{}})});const r=[e.exitCode===null?null:`exit ${e.exitCode}`,e.elapsedMs===null?null:Yq(e.elapsedMs)].filter(a=>a!==null);return t.jsxs("div",{className:"wb-tool-body","data-kind":"command","data-testid":"tool-body",children:[t.jsxs("div",{className:"wb-tool-command",children:[t.jsx("code",{className:"mono",children:e.command}),r.length>0?t.jsx("span",{className:"wb-tool-facts","data-failed":e.exitCode!==null&&e.exitCode!==0?!0:void 0,children:r.join(" · ")}):null]}),e.output?t.jsx("pre",{className:"wb-tool-output",children:e.output}):null]})}function Yq(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function hk(e,n){for(const s of e)for(const r of s.blocks??[])if(r.type==="tool_result"&&r.toolUseId===n)return r;return null}function Qq({feedback:e}){const n=e.source==="telegram"?"on Telegram":`on ${e.source}`;return t.jsxs("div",{className:"wb-msg-feedback","data-value":e.value,"data-testid":"message-feedback",title:`You reacted ${e.emoji} ${n}`,children:[t.jsx("span",{className:"wb-msg-feedback-emoji","aria-label":`You reacted ${e.emoji} ${n}`,children:e.emoji}),t.jsx("span",{children:n}),e.note?t.jsxs("span",{className:"wb-msg-feedback-note",children:["“",e.note,"”"]}):null]})}const Jq=20*1024*1024,Xq=500,Va=e=>`/skills/${encodeURIComponent(e)}`,wh=e=>`/skills/bundles/${encodeURIComponent(e)}`;async function Zq(e){var n;try{const{staged:s}=await Zw("/skills/bundles",e,"bundle.zip");return s}catch(s){const r=s instanceof pe?(n=s.detail)==null?void 0:n.refusal:void 0;throw r?new s2({...r,filename:e.name,error:s instanceof Error?s.message:void 0}):s}}class s2 extends Error{constructor(s){super(s.error??`“${s.filename}” was refused.`);F0(this,"name","BundleRefused");this.refusal=s}}const gn={list:()=>be("/skills"),detail:e=>be(Va(e)),downloadUrl:e=>`/api${Va(e)}/download`,create:e=>ee("/skills",e),saveText:(e,n)=>ee(`${Va(e)}/text`,{text:n}),grant:(e,n)=>ee(`${Va(e)}/grants`,n),trust:e=>ee(`${Va(e)}/trust`),remove:e=>js(Va(e)),file:(e,n)=>be(`${Va(e)}/file`,{path:n}),imageUrl:(e,n)=>`/api${Va(e)}/image?path=${encodeURIComponent(n)}`,uploadBundle:Zq,stagedFile:(e,n)=>be(`${wh(e)}/file`,{path:n}),stagedImageUrl:(e,n)=>`/api${wh(e)}/image?path=${encodeURIComponent(n)}`,acceptBundle:(e,n)=>ee(wh(e),n),discardBundle:e=>js(wh(e))};function r2(e,n){return`${Mt}?tab=skills${e?`&skill=${encodeURIComponent(e)}`:""}${e&&n?`&skfile=${encodeURIComponent(n)}`:""}`}function eY(e){var s;const n=(s=/[?&]skfile=([^&]+)/.exec(e))==null?void 0:s[1];if(!n)return null;try{return decodeURIComponent(n)}catch{return null}}function tY(e){var s;const n=(s=/[?&]skill=([^&]+)/.exec(e))==null?void 0:s[1];if(!n)return null;try{return decodeURIComponent(n)}catch{return null}}function a2(e){const n=document.createElement("a");n.href=gn.downloadUrl(e),n.download="",document.body.appendChild(n),n.click(),n.remove()}const fk=[{id:"mine",title:"Yours",aside:"Written or uploaded by you."},{id:"learned",title:"Learned",aside:"An agent proposed it and you kept it."},{id:"plugin",title:"From plugins",aside:"Comes with a plugin and goes with it."},{id:"catalogue",title:"From the catalogue",aside:"Came with a teammate. Yours to change."}];function ki(e){return e.length<=1?e[0]??"":`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function hr(e,n){var s;return((s=e.find(r=>r.id===n))==null?void 0:s.name)??n}function mk(e){return e.charAt(0).toUpperCase()+e.slice(1)}function pk(e,n){const s=e.shadowedBy??[];if(!s.length)return"Every agent";const r=s.map(a=>{var i;return`@${((i=n.find(l=>l.id===a))==null?void 0:i.handle)??a}`});return`Every agent except ${ki(r)} (${s.length===1?"has its own":"each has its own"})`}function i2(e,n){return e.holders.some(s=>s.agent===n)}function nY(e,n){if(e.every)return pk(e,n);const s=e.holders.map(r=>hr(n,r.agent));return s.length?ki(s):"No agent uses it yet"}function sY(e){return!e.every&&e.holders.length===0}function rY(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function f1(e){return e.slice(0,10)===rY()?"today":`on ${nc(e,{compact:!0})}`}function au(e,n,s=!1){var l,o;if(e.learned){const c=e.learned.by,u=s&&e.holders.some(f=>f.agent===c),h=e.learned.keptAt?` · kept ${Xe(e.learned.keptAt)}`:"";return`${u?"":`learned by ${hr(n,c)} · `}v${e.learned.version}${e.learned.edited?" with your correction":""}${h}`}const r=e.from;if((r==null?void 0:r.kind)==="plugin")return`from ${mk(r.plugin)} ${r.version}`;if((r==null?void 0:r.kind)==="catalogue")return`came with ${hr(n,r.agent)} ${r.version}`;if((r==null?void 0:r.kind)==="upload")return`uploaded${e.created?` ${f1(e.created)}`:""} · ${r.filename}`;const a=((l=e.created)==null?void 0:l.slice(0,10))??null,i=((o=e.updatedAt)==null?void 0:o.slice(0,10))??null;return a&&(!i||i<=a)?`written by you ${f1(a)}`:e.updatedAt?`edited by you ${Xe(e.updatedAt)}`:"written by you"}function l2(e){return e.charAt(0).toUpperCase()+e.slice(1)}function gk(e,n){var s;return e.untrusted==="page"?`Untrusted: a web page was in view when ${hr(n,((s=e.learned)==null?void 0:s.by)??e.home??"")} proposed it.`:e.bundle?"Untrusted: it came in a .zip, so agents read its text as outside text and its scripts can’t run.":"Untrusted: it came from a file, so agents read it as outside text."}function aa(e){return e<1024*1024?`${Math.max(1,Math.round(e/1024))} KB`:`${(e/(1024*1024)).toFixed(e<10*1024*1024?1:0).replace(/\.0$/,"")} MB`}function o2(e,n){return e.every?n.filter(s=>!(e.shadowedBy??[]).includes(s.id)).map(s=>s.id):e.holders.map(s=>s.agent)}function aY(e,n){const s=e.bundle;if(!s)return null;const r=s.scripts.length;if(!r)return`No scripts · ${s.files} file${s.files===1?"":"s"} beside the text`;const a=o2(e,n),i=u=>{var h;return((h=n.find(f=>f.id===u))==null?void 0:h.canRunScripts)===!0},l=a.filter(i).map(u=>hr(n,u)),o=a.filter(u=>!i(u)).map(u=>hr(n,u)),c=`${r} script${r>1?"s":""}`;return e.untrusted?`${c} · they can’t run until you mark it as yours`:a.length?l.length?`${c} · ${ki(l)} can run them, asking first${o.length?`; ${ki(o)} ${o.length>1?"read":"reads"} the text only`:""}`:`${c} · nobody holding it can run them, so it’s text only`:`${c} · they run only through an agent you allow, and ask first`}function iY(e){var n;switch(e.kind){case"big":return{title:`“${e.filename}” is too big`,body:`${e.size?`It’s ${aa(e.size)}; a`:"A"} bundle can be up to 20 MB unpacked. Leave large files out — SKILL.md can say where to find them.`};case"count":return{title:`“${e.filename}” holds too many files`,body:`It holds ${e.files??"over 500"} files; a bundle can hold up to ${Xq}.`};case"noskill":{const s=(e.looked??[]).filter(r=>r!=="");return{title:`No SKILL.md in “${e.filename}”`,body:`buddi looked at the top${s.length?` and inside ${s.join(", ")}`:""}. A bundle needs SKILL.md in one of them, with scripts/ and assets/ beside it.`}}case"paths":{const s=((n=e.entries)==null?void 0:n.length)??0;return{title:`“${e.filename}” was refused`,body:`${s===1?"One entry reaches":`${s===2?"Two":s} entries reach`} outside the bundle, so nothing was unpacked. A bundle holds plain files inside its own folder.`,items:(e.entries??[]).map(r=>({path:r.path,rest:r.why==="is a link"&&r.target?`is a link to ${r.target}`:r.why}))}}case"executable":return{title:`“${e.filename}” was refused`,body:"Something that runs is outside scripts/, so nothing was kept. A bundle keeps anything that runs in scripts/.",items:(e.entries??[]).map(s=>({path:s.path,rest:s.why}))};case"frontmatter":return{title:`“${e.filename}” has no usable SKILL.md`,body:"Its SKILL.md needs front matter with a description (when it’s used) between --- lines, then the steps."};case"notzip":return{title:`“${e.filename}” isn’t a .zip or a .md`,body:"A skill is one Markdown file, or a .zip bundle with SKILL.md inside."};default:return{title:`“${e.filename}” was refused`,body:e.error??"It could not be read as a bundle."}}}function m1(e){const n=e.file.split(/[\\/]/).pop()??e.file;return e.bundle?`skills/${e.name}/${n}`:e.home?`agents/${e.home}/skills/${n}`:`skills/${n}`}function xk(e){return e.every?[]:e.holders.map(n=>n.agent)}function lY(e,n){var s;if(e.learned){const r=hr(n,e.learned.by);return`Saved as v${e.learned.version+1}, your correction. v${e.learned.version} stays in ${r}’s folder.`}return((s=e.from)==null?void 0:s.kind)==="catalogue"?`${hr(n,e.from.agent)}’s next update will ask before it replaces your change.`:null}function oY(e,n,s){var o;const r=n.stops.map(c=>hr(s,c)),a=e.learned?hr(s,e.learned.by):"";if(e.learned&&!n.every&&n.stops.length===1&&n.stops[0]===e.learned.by)return`${a} stops using it and won’t propose it again for 90 days. Earlier versions stay in its folder.`;const i=n.every?"Every agent stops using it.":r.length===0?"No agent uses it, so nothing changes.":`${ki(r)} ${r.length>1?"stop":"stops"} using it.`,l=n.then==="versions-kept"?`${a} won’t propose it again for 90 days. Earlier versions stay in its folder.`:n.then==="catalogue-asks"?`${((o=e.from)==null?void 0:o.kind)==="catalogue"?hr(s,e.from.agent):"Its teammate"}’s next update asks before bringing it back.`:"The file goes to the trash folder.";return`${i} ${l}`}function cY(e,n){var c,u;const s=n.replace(/\r\n/g,`
|
|
119
|
+
`),r=/^---\n([\s\S]*?)\n---\n*/.exec(s),a=h=>{var m;return(r?((m=new RegExp(`^${h}:\\s*(.*)$`,"m").exec(r[1]))==null?void 0:m[1])??"":"").trim().replace(/^(['"])(.*)\1$/,"$2")},i=r?s.slice(r[0].length):s,l=(u=(c=/^#\s+(.+)$/m.exec(i))==null?void 0:c[1])==null?void 0:u.trim(),o=a("name");return{title:l||(o?l2(o.replace(/-/g," ")):e.replace(/\.md$/i,"")),description:a("description"),body:i}}function uY(e){const n=e==null?void 0:e.envelope;if(!n||typeof n!="object"||Array.isArray(n))return null;const s=n.skillRun;if(!s||typeof s!="object")return null;const r=s;return typeof r.bundle!="string"||typeof r.script!="string"?null:{bundle:r.bundle,title:typeof r.title=="string"?r.title:r.bundle,script:r.script,interpreter:typeof r.interpreter=="string"?r.interpreter:"",args:Array.isArray(r.args)?r.args.filter(a=>typeof a=="string"):[],reads:typeof r.reads=="string"?r.reads:"",writes:typeof r.writes=="string"?r.writes:"",files:typeof r.files=="number"?r.files:0}}function nx(e){return/[\s"'\\]/.test(e)||e===""?JSON.stringify(e):e}function dY(e){const n=[];for(let s=0;s<e.length;s+=1){const r=e[s],a=e[s+1];r.startsWith("-")&&!r.includes("=")&&a!==void 0&&!a.startsWith("-")?(n.push(`${nx(r)} ${nx(a)}`),s+=1):n.push(nx(r))}return n}function hY({action:e,run:n,agentName:s,count:r,busy:a,error:i,onDecide:l}){const o=a!==null||e.state!=="pending",c=dY(n.args);return t.jsxs("section",{id:"approval-dock",tabIndex:-1,className:"wb-question skb-dock","data-kind":"approval","aria-label":"Approval needed","data-testid":"approval-dock",children:[t.jsxs("div",{className:"wb-question-head",children:[t.jsx("span",{className:"wb-question-kicker",children:"Needs your OK"}),r>1?t.jsxs("span",{className:"wb-dock-count","data-testid":"approval-dock-count",children:["1 of ",r]}):null,t.jsxs("strong",{children:[s," wants to run a script from ",n.title]})]}),t.jsxs("div",{className:"wb-dock-section wb-dock-subject",children:[t.jsx("code",{className:"wb-dock-gist",children:[n.interpreter,n.script].filter(Boolean).join(" ")}),t.jsx("span",{className:"wb-dock-where",children:"From a bundle you marked as yours."})]}),t.jsx("div",{className:"wb-dock-section",children:t.jsx(un,{items:[{label:"Arguments",value:c.length?t.jsx("span",{className:"mono skb-args",children:c.map((u,h)=>t.jsx("span",{children:u},`${h}:${u}`))}):"None"},{label:"Working folder",value:t.jsx("span",{className:"mono skb-path",children:n.writes})},{label:"What it may touch",value:`Reads ${n.title}’s ${n.files} file${n.files===1?"":"s"} without changing them, and the working folder. Writes only in the working folder.`}]})}),t.jsx(re,{message:i}),t.jsx("div",{className:"wb-dock-section",children:t.jsxs(ne,{children:[t.jsx("span",{className:"skb-dock-note",children:"Scripts ask every time."}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",size:"sm",disabled:o,onClick:()=>l("reject"),children:a==="reject"?"Rejecting…":"Reject"}),t.jsx(A,{size:"sm",onClick:()=>{window.location.hash=r2(n.bundle,n.script)},children:"Show the script"}),t.jsx(A,{variant:"good",size:"sm",disabled:o,onClick:()=>l("approve"),children:a==="approve"?"Allowing…":"Allow once"})]})})]})}function fY(e,n,s,r){const a=e.width||1,i=e.height||1,l=n.pageScaleFactor||1,o=(s-e.left)*(n.deviceWidth/a)/l,c=((r-e.top)*(n.deviceHeight/i)-n.offsetTop)/l,u=(h,f)=>Math.max(0,Math.min(Math.round(h),Math.round(f)));return{x:u(o,n.deviceWidth),y:u(c,n.deviceHeight)}}function sx(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}function p1(e){return[...e].length===1&&e.codePointAt(0)>=32&&e.codePointAt(0)!==127}const mY=4e3;function pY(e){return e.replace(/\r\n?/g,`
|
|
120
|
+
`).replace(/[\u0000-\u0008\u000b-\u001f\u007f]/g,"").slice(0,mY)}const gY=3e3;async function xY(e,n=typeof navigator>"u"?void 0:navigator.clipboard,s=globalThis.ClipboardItem){if(!n)return!1;if(s&&n.write)try{return await n.write([new s({"text/plain":e.then(a=>new Blob([a],{type:"text/plain"}))})]),!0}catch{}const r=await e.catch(()=>null);if(r===null||!n.writeText)return!1;try{return await n.writeText(r),!0}catch{return!1}}const vY=["left","middle","right"],jY=33,g1=150,x1=1e4;function yY(e,n=800){const s=e.deltaMode===1?16:e.deltaMode===2?n:1;return{dx:e.deltaX*s,dy:e.deltaY*s}}var tl,nl,rd,ad,rr;class wY{constructor(n,s=a=>typeof requestAnimationFrame=="function"?requestAnimationFrame(a):setTimeout(a,16),r=a=>{typeof cancelAnimationFrame=="function"?cancelAnimationFrame(a):clearTimeout(a)}){zi(this,tl,0);zi(this,nl,0);zi(this,rd,0);zi(this,ad,0);zi(this,rr);this.sendWheel=n,this.schedule=s,this.cancel=r}add(n,s,r){is(this,tl,Ut(this,tl)+s),is(this,nl,Ut(this,nl)+r),is(this,rd,n.x),is(this,ad,n.y),Ut(this,rr)===void 0&&is(this,rr,this.schedule(()=>{is(this,rr,void 0),this.flush()}))}flush(){Ut(this,rr)!==void 0&&(this.cancel(Ut(this,rr)),is(this,rr,void 0));const n=a=>Math.max(-x1,Math.min(x1,Math.round(a))),s=n(Ut(this,tl)),r=n(Ut(this,nl));is(this,tl,0),is(this,nl,0),!(s===0&&r===0)&&this.sendWheel({kind:"wheel",x:Ut(this,rd),y:Ut(this,ad),deltaX:s,deltaY:r})}reset(){Ut(this,rr)!==void 0&&this.cancel(Ut(this,rr)),is(this,rr,void 0),is(this,tl,0),is(this,nl,0)}}tl=new WeakMap,nl=new WeakMap,rd=new WeakMap,ad=new WeakMap,rr=new WeakMap;function bY(e,n,s){if(!s||!e||!c2(e,n))return!0;const r=n.scrollOffsetX-e.scrollOffsetX,a=n.scrollOffsetY-e.scrollOffsetY;if(r===0&&a===0)return!0;const i=(l,o)=>l!==0&&o!==0&&Math.sign(l)!==Math.sign(o);return!i(r,s.dx)&&!i(a,s.dy)}function bh(e,n){return(e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()===n}function c2(e,n){return e.deviceWidth===n.deviceWidth&&e.deviceHeight===n.deviceHeight&&e.pageScaleFactor===n.pageScaleFactor&&e.offsetTop===n.offsetTop&&e.url===n.url}function kY(e){if(e.byteLength<3)return null;const n=new DataView(e);if(n.getUint8(0)!==1)return null;const s=n.getUint16(1);if(e.byteLength<3+s)return null;try{return{metadata:JSON.parse(new TextDecoder().decode(new Uint8Array(e,3,s))),jpeg:new Blob([new Uint8Array(e,3+s)],{type:"image/jpeg"})}}catch{return null}}function NY(e=window.location){return`${e.protocol==="https:"?"wss":"ws"}://${e.host}/api/browser/hand`}const SY=d.forwardRef(function({sessionId:n,csrf:s,onGiveBack:r,connect:a,bare:i=!1,typing:l,onTyping:o,onLocation:c,onLoginSeen:u,onLevel:h},f){const[m,p]=d.useState("connecting"),[x,g]=d.useState(null),[b,j]=d.useState(!1),[v,y]=d.useState(null),[k,N]=d.useState(void 0),[w,S]=d.useState(!1),C=l??w,E=Y=>{o?o(Y):S(Y)},[$,R]=d.useState(0),P=d.useRef(null),O=d.useRef(u);O.current=u;const I=d.useRef(null),F=d.useRef(null),U=d.useRef({at:0});d.useEffect(()=>{var Y,te,ie,ge;l!==void 0&&(l?(te=(Y=F.current)==null?void 0:Y.focus)==null||te.call(Y):(ge=(ie=F.current)==null?void 0:ie.blur)==null||ge.call(ie))},[l]);const L=d.useRef(null),M=d.useRef(null),z=d.useRef(null),D=d.useRef(null),H=d.useRef({arrived:0,drawn:0,shown:null}),K=(Y,te)=>{const ie=H.current,ge=te??++ie.arrived,je=D.current&&Date.now()-D.current.at<g1?D.current:null;if(te===void 0&&!bY(ie.shown,Y.metadata,je)){ie.held={...Y,seq:ge},clearTimeout(ie.timer),ie.timer=setTimeout(()=>{const Se=H.current.held;H.current.held=void 0,Se&&K(Se,Se.seq)},g1);return}te===void 0&&ie.held&&ie.held.seq<ge&&(ie.held=void 0),typeof createImageBitmap=="function"&&createImageBitmap(Y.jpeg).then(Se=>{var rt,ye,Ue;const ke=I.current,Be=H.current;if(!ke||ge<=Be.drawn){(rt=Se.close)==null||rt.call(Se);return}Be.drawn=ge,Be.shown=Y.metadata,(ke.width!==Se.width||ke.height!==Se.height)&&(ke.width=Se.width,ke.height=Se.height),(ye=ke.getContext("2d"))==null||ye.drawImage(Se,0,0),(Ue=Se.close)==null||Ue.call(Se)}).catch(()=>{})};d.useEffect(()=>{const Y=a??(ge=>new WebSocket(ge));let te=!0,ie;try{ie=Y(NY())}catch{p("lost");return}return ie.binaryType="arraybuffer",P.current=ie,ie.onopen=()=>ie.send(JSON.stringify({type:"hello",csrf:s,sessionId:n})),ie.onmessage=ge=>{var Se;if(!te)return;if(typeof ge.data!="string"){const ke=kY(ge.data);if(!ke)return;y(Be=>Be&&c2(Be,ke.metadata)?Be:ke.metadata),j(!0),ke.metadata.level&&N(ke.metadata.level),K(ke);return}const je=JSON.parse(ge.data);if(je.type==="driving"){p("driving"),g(null);return}if(je.type==="clipboard"){const ke=L.current;L.current=null,ke==null||ke.answer(typeof je.text=="string"?je.text:"");return}if(je.type==="loginSeen"){typeof je.id=="string"&&typeof je.site=="string"&&typeof je.username=="string"&&((Se=O.current)==null||Se.call(O,{id:je.id,site:je.site,username:je.username,...je.update===!0?{update:!0}:{}}));return}(je.type==="refused"||je.type==="ended")&&(g(je.error??"The screen cannot be driven from here."),p("refused"))},ie.onclose=()=>{te&&p(ge=>ge==="refused"?ge:"lost")},ie.onerror=()=>{te&&p(ge=>ge==="refused"?ge:"lost")},()=>{var ge;te=!1,P.current=null,(ge=z.current)==null||ge.reset(),clearTimeout(H.current.timer),H.current.held=void 0;try{ie.close()}catch{}}},[n,s,$,a]),d.useEffect(()=>()=>{clearTimeout(U.current.timer)},[]);const X=v==null?void 0:v.url;d.useEffect(()=>{X&&(c==null||c(X))},[X]),d.useEffect(()=>{k&&(h==null||h(k))},[k]);const W=d.useCallback(Y=>{const te=P.current;if(te)try{te.send(JSON.stringify({type:"input",input:Y}))}catch{}},[]);z.current||(z.current=new wY(Y=>W(Y))),d.useImperativeHandle(f,()=>({nav:(Y,te)=>P.current?(W({kind:"nav",action:Y,...Y==="navigate"&&te?{url:te}:{}}),!0):!1,snapshot:()=>{const Y=I.current;if(!Y||H.current.drawn===0||!Y.width||!Y.height)return null;try{const te=Y.toDataURL("image/jpeg",.85);return typeof te=="string"&&te.startsWith("data:image/")?te:null}catch{return null}}}),[W]);const me=Y=>{var ge;const te=I.current;if(!te||!v)return null;const ie=(ge=te.getBoundingClientRect)==null?void 0:ge.call(te);return ie?fY(ie,v,Y.clientX,Y.clientY):null},fe=Y=>{const te=U.current,ie=Date.now();clearTimeout(te.timer),te.timer=void 0;const ge=te.at+jY-ie;if(ge<=0){te.at=ie,te.pending=void 0,W(Y);return}te.pending=Y,te.timer=setTimeout(()=>{const je=U.current.pending;U.current.timer=void 0,U.current.pending=void 0,U.current.at=Date.now(),je&&W(je)},ge)},oe=()=>{const Y=U.current;clearTimeout(Y.timer),Y.timer=void 0;const te=Y.pending;Y.pending=void 0,te&&(Y.at=Date.now(),W(te))},B=Y=>te=>{var je,Se,ke;const ie=me(te);if(!ie)return;Y==="mousePressed"&&(te.preventDefault(),(Se=(je=I.current)==null?void 0:je.focus)==null||Se.call(je));const ge={kind:"mouse",type:Y,x:ie.x,y:ie.y,button:vY[te.button]??"left",clickCount:Y==="mouseMoved"?0:Math.min(3,Math.max(1,te.detail||1)),modifiers:sx(te)};if(Y==="mouseMoved"){fe(ge);return}oe(),(ke=z.current)==null||ke.flush(),W(ge)},ue=d.useRef(me);ue.current=me,d.useEffect(()=>{const Y=I.current;if(!b||!Y)return;const te=ie=>{var ke,Be,rt,ye;ie.preventDefault();const ge=ue.current(ie);if(!ge)return;oe();const{dx:je,dy:Se}=yY(ie,((ke=Y.getBoundingClientRect)==null?void 0:ke.call(Y).height)||800);D.current={dx:je||((Be=D.current)==null?void 0:Be.dx)||0,dy:Se||((rt=D.current)==null?void 0:rt.dy)||0,at:Date.now()},(ye=z.current)==null||ye.add(ge,je,Se)};return Y.addEventListener("wheel",te,{passive:!1}),()=>Y.removeEventListener("wheel",te)},[b]);const Ne=Y=>Y.ctrlKey||Y.metaKey||Y.altKey,Ke=Y=>{var ie,ge;if(Y.key==="Escape"&&Ne(Y)){E(!1),(ge=(ie=Y.target).blur)==null||ge.call(ie);return}if(bh(Y,"v")){J(Y.currentTarget);return}if(Y.preventDefault(),bh(Y,"c")){Ie();return}const te=sx(Y);if(p1(Y.key)&&!Ne(Y)){W({kind:"key",type:"char",key:Y.key,code:Y.code,text:Y.key,modifiers:te});return}W({kind:"key",type:"keyDown",key:Y.key,code:Y.code,modifiers:te})},G=Y=>{Y.key==="Escape"&&Ne(Y)||bh(Y,"v")||(Y.preventDefault(),!bh(Y,"c")&&(p1(Y.key)&&!Ne(Y)||W({kind:"key",type:"keyUp",key:Y.key,code:Y.code,modifiers:sx(Y)})))},ae=Y=>{var ie;Y.preventDefault(),xe();const te=pY(((ie=Y.clipboardData)==null?void 0:ie.getData("text/plain"))??"");te!==""&&W({kind:"text",text:te})},J=Y=>{var ie;const te=F.current;!te||Y===te||(M.current=Y,(ie=te.focus)==null||ie.call(te,{preventScroll:!0}),setTimeout(xe,250))},xe=()=>{var te;const Y=M.current;M.current=null,(te=Y==null?void 0:Y.focus)==null||te.call(Y,{preventScroll:!0})},Ie=()=>{var te;(te=L.current)==null||te.answer("");const Y=new Promise((ie,ge)=>{const je=setTimeout(()=>{var ke;((ke=L.current)==null?void 0:ke.answer)===Se&&(L.current=null),ge(new Error("no answer"))},gY),Se=ke=>{clearTimeout(je),ke===""?ge(new Error("nothing selected")):ie(ke)};L.current={answer:Se}});Y.catch(()=>{}),W({kind:"copy"}),xY(Y)};return t.jsxs("section",{className:"hand","data-testid":"remote-hand","data-phase":m,"data-bare":i?"true":void 0,"aria-label":"Driving the page",children:[i?null:t.jsxs("div",{className:"hand-bar",children:[t.jsx("span",{className:"hand-said",role:"status",children:"You have the page. Nothing you type here is kept."}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",variant:C?"accent":"ghost","aria-pressed":C,onClick:()=>{var te,ie,ge,je;const Y=!C;E(Y),Y?(ie=(te=F.current)==null?void 0:te.focus)==null||ie.call(te):(je=(ge=F.current)==null?void 0:ge.blur)==null||je.call(ge)},children:"Keyboard"}),t.jsx(A,{size:"sm",variant:"accent",onClick:r,children:"Give it back"})]})]}),m==="lost"?t.jsxs(Q,{tone:"warning",role:"status",children:["Connection lost. The picture below is the last frame that arrived.",t.jsx(ne,{align:"end",children:t.jsx(A,{size:"sm",variant:"accent",onClick:()=>{p("connecting"),R(Y=>Y+1)},children:"Reconnect"})})]}):null,m==="refused"&&x?t.jsx(Q,{tone:"warning",role:"status",children:x}):null,t.jsx("div",{className:"hand-screen",children:b?t.jsx("canvas",{ref:I,className:"hand-picture",role:"img","aria-label":"The host browser, live","data-testid":"hand-picture",tabIndex:0,onMouseDown:B("mousePressed"),onMouseUp:B("mouseReleased"),onMouseMove:B("mouseMoved"),onKeyDown:Ke,onKeyUp:G,onPaste:ae,onContextMenu:Y=>Y.preventDefault()}):t.jsx("p",{className:"muted hand-waiting",children:m==="lost"?"No picture arrived before the connection dropped.":"Waiting for the first frame…"})}),t.jsx("input",{ref:F,className:"hand-typing","aria-label":"Type into the host browser",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:!1,value:"",onChange:()=>{},onKeyDown:Ke,onKeyUp:G,onPaste:ae,onBlur:()=>{M.current||E(!1)}})]})});function CY(e){return e==="darwin"?"this Mac":"this computer"}let rx=null;function hc(){const[e,n]=d.useState(void 0);return d.useEffect(()=>{let s=!0;return rx??(rx=Promise.resolve().then(()=>T.session()).then(r=>r.platform,()=>{rx=null})),rx.then(r=>{s&&n(r)}),()=>{s=!1}},[]),CY(e)}const v1={"Microsoft Edge":"Edge","Google Chrome":"Chrome",Brave:"Brave",Opera:"Opera",Vivaldi:"Vivaldi",Arc:"Arc"};function EY(e){var a;if(!e)return;const n=e.userAgent??"",s=(((a=e.userAgentData)==null?void 0:a.brands)??[]).map(i=>String((i==null?void 0:i.brand)??"")),r=i=>s.some(l=>i.test(l));if(r(/^Microsoft Edge$/)||/\bEdg\//.test(n))return"Microsoft Edge";if(r(/^Opera/)||/\bOPR\//.test(n))return"Opera";if(r(/^Brave$/)||e.brave)return"Brave";if(/\bVivaldi\//.test(n)||r(/^Vivaldi$/))return"Vivaldi";if(e.arc)return"Arc";if(r(/^Google Chrome$/)||s.length===0&&/\bChrome\//.test(n)&&!/\bChromium\/|\bCriOS\/|Firefox\//.test(n))return"Google Chrome"}function u2(){if(typeof navigator>"u")return;const e=navigator;let n=!1;try{n=getComputedStyle(document.documentElement).getPropertyValue("--arc-palette-title").trim()!==""}catch{}return EY({userAgent:e.userAgent,userAgentData:e.userAgentData,brave:e.brave,arc:n})}function d2(e){return e!==void 0&&Object.prototype.hasOwnProperty.call(v1,e)?v1[e]:void 0}function da(e){return`your ${e??"browser"}`}function $p(e){return`Your ${e??"browser"}`}function Hj(e){return e??"your browser"}function j1(e){return`${e==="Edge"?"edge":e==="Brave"?"brave":e==="Opera"?"opera":e==="Vivaldi"?"vivaldi":"chrome"}://extensions`}function AY(e){return e==="Chrome"?"Add to Chrome":e?`Get the buddi extension (Chrome Web Store, works in ${e})`:"Get the buddi extension (Chrome Web Store)"}let cm,Kj=!1;const Vj=new Set;function h2(e){if(!e)return;Kj=!0;const n=e.pairedAt?e.browser:void 0;if(n!==cm){cm=n;for(const s of Vj)s()}}const $Y=e=>(Vj.add(e),()=>{Vj.delete(e)}),y1=()=>cm;function TY(){return d2(cm??u2())}function Mi(){const e=d.useSyncExternalStore($Y,y1,y1);return d.useEffect(()=>{var n;if(!Kj){Kj=!0;try{Promise.resolve((n=T.extension)==null?void 0:n.call(T)).then(h2,()=>{})}catch{}}},[]),d2(e??u2())}const RY="sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0";function IY({timezone:e,navigate:n}={}){var u;const{data:s,error:r,reload:a}=ve(()=>T.browser(),[],3e3),i=ve(()=>T.session(),[]),l=(u=i.data)!=null&&u.platform?i.data.platform==="darwin":!0,o=!!i.data||!!i.error,c=h=>{n?n(h):window.location.hash=h};return t.jsxs("div",{className:"ui-stack br-looking","data-gap":"lg",children:[t.jsx(re,{message:r}),!s||!o?t.jsx(Ce,{children:"Checking where agents may look…"}):t.jsx(FY,{data:s,macOS:l,reload:a,timezone:e,go:c})]})}function vk({kind:e}){const n={own:t.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("rect",{x:"2.8",y:"3.6",width:"14.4",height:"12.8",rx:"1.8"}),t.jsx("path",{d:"M2.8 7.2h14.4M5.4 5.4h.1M7.4 5.4h.1"})]}),chrome:t.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("circle",{cx:"10",cy:"10",r:"7.1"}),t.jsx("circle",{cx:"10",cy:"10",r:"2.6"}),t.jsx("path",{d:"M10 7.4h6.6M7.8 11.4 4.4 5.6M12.2 11.4 9 16.9"})]}),apps:t.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("rect",{x:"3",y:"3",width:"6",height:"6",rx:"1.4"}),t.jsx("rect",{x:"11",y:"3",width:"6",height:"6",rx:"1.4"}),t.jsx("rect",{x:"3",y:"11",width:"6",height:"6",rx:"1.4"}),t.jsx("rect",{x:"11",y:"11",width:"6",height:"6",rx:"1.4"})]})}[e];return t.jsx("span",{className:"br-glyph","aria-hidden":"true",children:n})}function Er({line:e,status:n,tone:s,children:r}){return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"pl-row-line",children:e}),n?t.jsx("span",{className:"pl-row-status","data-tone":s,children:n}):null,r]})}function PY({text:e}){const[n,s]=d.useState(!1);return t.jsxs("span",{className:"br-copy",children:[t.jsx("code",{className:"mono",children:e}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>{var r;(r=navigator.clipboard)==null||r.writeText(e).then(()=>s(!0),()=>{})},children:n?"Copied":"Copy"})]})}function kh({label:e,hint:n,children:s}){return t.jsxs("div",{className:"br-adv-row",children:[t.jsxs("span",{className:"br-adv-head",children:[t.jsx("span",{className:"br-adv-title",children:e}),n?t.jsx("span",{className:"br-adv-hint",children:n}):null]}),s]})}function Tp(e){const n=e.split(".").filter(Boolean).at(-1)??e;return n.charAt(0).toUpperCase()+n.slice(1)}function MY(e){return e.length<=2?e.join(" and "):`${e.slice(0,2).join(", ")} and ${e.length-2} more`}const OY=[{value:"auto",label:"Let it choose"},{value:"own",label:"Its own browser only"},{value:"chrome",label:"Your browser first"},{value:"apps",label:"Your apps first"}];function Gj({value:e,label:n,apps:s,disabled:r,onChange:a}){const i=Mi();return t.jsx("select",{className:"br-select",value:e,"aria-label":n,disabled:r,onChange:l=>a(l.target.value),children:OY.filter(l=>s||l.value!=="apps"||e==="apps").map(l=>t.jsx("option",{value:l.value,children:l.value==="chrome"?`${$p(i)} first`:l.label},l.value))})}function DY(e){return(e==null?void 0:e.installed)===!0}function LY(e,n){var s;return e?e.pending?"pair":e.pairedAt?e.connected?"connected":(s=n==null?void 0:n.pairings)!=null&&s.some(r=>Ju(r.origin)&&r.enabled===!1)?"off":n&&n.state!=="paired"&&(Ju(n.gateway)||qj(n))?"broken":"notrunning":n&&n.state!=="paired"?"pair":"none":"none"}function qj(e){return Array.isArray(e.pairings)}function w1(e){return e!=null&&e.pairings?e.pairings.filter(n=>!Ju(n.origin)).length:0}function b1(e){return e<=0?null:`paired with this buddi and ${e} other${e===1?"":"s"}`}function FY({data:e,macOS:n,reload:s,timezone:r,go:a}){var v,y;const[i,l]=d.useState(!1),[o,c]=d.useState(null),u=async k=>{l(!0),c(null);try{await k()}catch(N){c(N instanceof Error?N.message:String(N))}finally{l(!1),s()}},h=e.settings,f=k=>void u(()=>T.browserSettings(k)),m=r??Intl.DateTimeFormat().resolvedOptions().timeZone,p=e.learnedSignInSites??[],x=Mi(),g=(v=e.routes)==null?void 0:v.find(k=>k.kind==="apps"),b=DY(g),j=(y=e.sessions)!=null&&y.length?e.sessions:e.session?[e]:[];return t.jsxs(t.Fragment,{children:[t.jsxs(Q,{children:["Agents pick where to look for each task: their own browser first, ",da(x)," for a site that needs your sign-in, an app when you name one. You don’t choose each time; here you say what they may use."]}),t.jsx(re,{message:o}),e.enabled?null:t.jsx(Q,{tone:"warning",children:"Agents can’t look at pages from here. Start buddi serve on the machine buddi runs on."}),e.stop?t.jsx(Q,{tone:"warning",role:"status",action:t.jsx(A,{size:"sm",variant:"accent",disabled:i,onClick:()=>void u(()=>T.browserControl("resume")),children:"Resume"}),children:`Agents’ browsing is paused since ${Lt(new Date(e.stop.at),m)}, by you from the Canvas, ${e.stop.until?`until ${Lt(new Date(e.stop.until),m)}`:"until you resume it"}. An agent that needs a page asks you in its chat.`}):null,t.jsx(lt,{title:"Browsers and apps",flush:!0,children:t.jsxs("div",{className:"ui-list",children:[t.jsx(BY,{data:e,busy:i,run:u}),h?t.jsx(WY,{settings:h,learned:p,busy:i||!e.enabled,save:f,zone:m}):null,b&&h?t.jsx(HY,{route:g,settings:h,busy:i||!e.enabled,save:f,run:u,onSettings:()=>a(Dr(g.provider||"computer"))}):null]})}),t.jsx(UY,{busy:i,run:u}),!b&&n?t.jsxs("p",{className:"pl-note br-foot","data-testid":"computer-plugin-offer",children:["Agents can also work in apps on this Mac with the Computer plugin. ",t.jsx("a",{href:"#/settings/plugins?tab=browse&kind=plugins",children:"See plugins"})]}):null,j.length>0?t.jsx(lt,{title:"Looking now",flush:!0,actions:t.jsx(A,{size:"sm",disabled:i,onClick:()=>void u(()=>T.browserControl("stop")),children:"Stop agents’ browsing"}),children:t.jsx("div",{className:"ui-list",children:j.map(k=>{var N;return t.jsxs("a",{className:"ui-list-row",href:ht(k.session.agentId,k.session.conversationId,"browser"),children:[t.jsx(Bn,{id:k.session.agentId,name:k.session.agentId,size:"sm"}),t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:((N=k.page)==null?void 0:N.title)||k.session.task}),t.jsx("span",{className:"ui-list-sub",children:f2(k)})]}),t.jsx("span",{className:"ui-list-side",children:"Open the Canvas"})]},k.session.id)})})}):null,h?t.jsx(KY,{settings:h,learned:p,busy:i,save:f,run:u,showApps:b}):null]})}function _Y(e){return`${e.files===0?"Nothing waiting":`${e.files} ${e.files===1?"file":"files"} waiting · ${qn(e.bytes)}`} · kept ${e.retentionDays} days, at most ${qn(e.fileCap)} a file`}function zY(e){return`${e===1?"This file is":`These ${e} files are`} not in Files: ${e===1?"it is the only copy":"they are the only copies"}. Clearing deletes ${e===1?"it":"them"} for good. File ${e===1?"it":"the ones you want"} first.`}function UY({busy:e,run:n}){var m;const s=ve(()=>T.browserDownloads(),[],3e4),r=ve(()=>T.agents(),[]),[a,i]=d.useState(!1),l=Mi(),o=s.data,c=(o==null?void 0:o.waiting)??[],u=new Map((((m=r.data)==null?void 0:m.agents)??[]).map(p=>[p.id,p.name])),h=p=>void n(async()=>{await T.fileBrowserDownload(p),s.reload()}),f=()=>void n(async()=>{i(!1),await T.clearBrowserDownloads(),s.reload()});return t.jsxs(lt,{title:"Downloads",flush:!0,children:[t.jsxs("div",{className:"ui-list",children:[t.jsxs("div",{className:"ui-list-row","data-testid":"downloads-row",children:[t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:"Files agents download"}),t.jsxs("span",{className:"ui-list-sub",children:[o?_Y(o):"Checking…",". A download goes straight to Files; only one that could not be filed waits here."]}),t.jsxs("span",{className:"ui-list-sub",children:["In ",da(l),", agents’ downloads need the extension’s Downloads permission: open the buddi extension and press Allow downloads. Downloads you start yourself are never read."]})]}),t.jsx("span",{className:"ui-list-side",children:t.jsx(A,{size:"sm",disabled:e||!o||o.files===0,onClick:()=>i(!0),children:"Clear"})})]}),c.map(p=>t.jsxs("div",{className:"ui-list-row","data-testid":"download-waiting",children:[t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:p.name}),t.jsx("span",{className:"ui-list-sub",children:`${u.get(p.agent)??p.agent} · ${nc(p.day)} · ${qn(p.size)} · not in Files yet`})]}),t.jsx("span",{className:"ui-list-side",children:t.jsx(A,{size:"sm",variant:"accent",disabled:e,onClick:()=>h(p.id),children:"File it"})})]},p.id))]}),a&&o?t.jsx(Vt,{title:`Clear ${o.files} ${o.files===1?"download":"downloads"}?`,onClose:()=>i(!1),foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>i(!1),children:o.files===1?"Keep it":"Keep them"}),t.jsx(A,{variant:"danger",disabled:e,onClick:f,children:`Clear ${o.files}`})]}),children:t.jsx("p",{children:zY(o.files)})}):null]})}function f2(e,n=TY()){var r,a;return e.needsOwner?`Waiting for you · ${e.needsOwner.kind==="human"?"it asks for a human":e.needsOwner.kind==="uncertain"?"did that click land?":e.needsOwner.kind==="budget"?"keep going?":"it asks for your sign-in"}`:e.route==="apps"?`Working in ${(r=e.page)!=null&&r.appId?Tp(e.page.appId):"an app"} · its own window`:`Looking at ${jk((a=e.page)==null?void 0:a.url)??"a page"} · ${e.route==="chrome"?`in ${da(n)} · background tab`:"in buddi’s browser"}`}function jk(e){if(e)try{return new URL(e).hostname.replace(/^www\./,"")||void 0}catch{return}}function BY({data:e,busy:n,run:s}){var c,u,h;const r=e.browser,a=r==null?void 0:r.install,i=(c=e.settings)!=null&&c.showWindow?"For every page, in a window on this machine":"For every page, out of sight";let l,o;if((a==null?void 0:a.state)==="running"){const f=(u=a.progress)==null?void 0:u.percent;l=t.jsx(Er,{line:i,status:t.jsxs("span",{className:"br-installing",children:[t.jsx("span",{className:"pl-spin","aria-hidden":"true"}),`Installing Chromium…${f!==void 0?` ${Math.round(f)}%`:""}`]})}),o=null}else(r==null?void 0:r.engine)==="none"?(l=t.jsx(Er,{line:i,tone:"critical",status:(a==null?void 0:a.state)==="failed"?`The install didn’t finish: ${a.line??"no reason given"}`:"Chromium isn’t installed, so agents can’t look at pages yet."}),o=t.jsx(A,{size:"sm",variant:"accent",disabled:n,onClick:()=>void s(()=>T.browserInstall()),children:"Install · 150 MB"})):(r==null?void 0:r.problem)==="no-sandbox"?(l=t.jsx(Er,{line:i,tone:"critical",status:"Linux blocks its sandbox (AppArmor). Run this once, then Check again:",children:t.jsx(PY,{text:RY})}),o=t.jsx(A,{size:"sm",disabled:n,onClick:()=>void s(()=>T.browserCheck()),children:"Check again"})):r!=null&&r.problem?(l=t.jsx(Er,{line:i,tone:"critical",status:r.message??"It doesn’t start on this machine."}),o=t.jsx(A,{size:"sm",disabled:n,onClick:()=>void s(()=>T.browserCheck()),children:"Check again"})):(l=(h=e.settings)!=null&&h.showWindow?"For every page, in a window on this machine. You also watch it on the Canvas.":"For every page, out of sight. You watch it on the Canvas.",o=e.enabled?t.jsx(Ae,{tone:"good",dot:!0,children:"ready"}):null);return t.jsxs("div",{className:"ui-list-row",children:[t.jsx(vk,{kind:"own"}),t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:"buddi’s own browser"}),t.jsx("span",{className:"ui-list-sub",children:l})]}),o?t.jsx("span",{className:"ui-list-side",children:t.jsx("span",{className:"br-side",children:o})}):null]})}const k1=1e4;async function N1(e,n={pair:s=>T.pairExtension(s),extension:()=>T.extension()}){try{await n.pair(e)}catch(s){if((s==null?void 0:s.status)!==409)throw s;const r=(n.now??Date.now)(),a=await n.extension().catch(()=>{}),i=a!=null&&a.pairedAt?Date.parse(a.pairedAt):NaN;if(!(Number.isFinite(i)&&r-i>=-k1&&r-i<=k1))throw s}m2()}function m2(){if(typeof window>"u")return;const e=window.location.hash,n=fW(e);if(n!==e)try{window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${n}`)}catch{}}function WY({settings:e,learned:n,busy:s,save:r,zone:a}){var W,me,fe,oe,B,ue,Ne,Ke,G,ae;const i=ve(()=>T.extension(),[],3e3);d.useEffect(()=>{h2(i.data)},[i.data]);const l=Mi(),o=da(l),c=$p(l),u=Hj(l),h=ve(()=>QY(),[],3e3).data??null,f=hc(),[m,p]=d.useState(()=>WS(typeof window>"u"?"":window.location.hash)??"");d.useEffect(()=>{const J=()=>{const xe=WS(window.location.hash);xe&&p(xe)};return window.addEventListener("hashchange",J),()=>window.removeEventListener("hashchange",J)},[]);const[x,g]=d.useState(!1),[b,j]=d.useState(null),[v,y]=d.useState(!1),[k,N]=d.useState(!1),w=LY(i.data,h),S=JY(),C=async J=>{g(!0),j(null);try{await J()}catch(xe){j(xe instanceof Error?xe.message:String(xe))}finally{g(!1),i.reload()}},E=(W=i.data)!=null&&W.pending&&(h==null?void 0:h.state)==="pairing"?h.code??"":"",$=d.useRef("");d.useEffect(()=>{!E||$.current===E||x||($.current=E,C(async()=>{await T.pairExtension(E),m2()}))},[E]);const R=s||x,P=(me=i.data)!=null&&me.pairedAt?`paired ${Nt(i.data.pairedAt,a)}`:null,O=(h==null?void 0:h.version)??((fe=i.data)==null?void 0:fe.extension),I=t.jsx(rs,{label:`More for ${o}`,items:[P||w==="broken"||w==="notrunning"||w==="connected"?{label:"Pair again",hint:[O?`Extension ${O}`:null,P].filter(Boolean).join(" · ")||void 0,onSelect:()=>void C(()=>T.forgetExtension())}:null,(oe=i.data)!=null&&oe.checkout?{label:"Install unpacked…",hint:"For a developer build of the extension",onSelect:()=>N(!0)}:null,(B=i.data)!=null&&B.pairedAt?"separator":null,(ue=i.data)!=null&&ue.pairedAt?{label:l?`Forget this ${l}…`:"Forget this browser…",tone:"critical",onSelect:()=>y(!0)}:null]}),F=t.jsxs("span",{className:"br-pair",children:[t.jsx("input",{"aria-label":"Pairing code",inputMode:"numeric",autoComplete:"one-time-code",maxLength:7,placeholder:"482 913",value:m,onChange:J=>p(J.target.value),onKeyDown:J=>{J.key==="Enter"&&m.replace(/[^0-9]/g,"").length===6&&!R&&C(async()=>{await N1(m),p("")})}}),t.jsx(A,{size:"sm",variant:"accent",disabled:R||m.replace(/[^0-9]/g,"").length!==6,onClick:()=>void C(async()=>{await N1(m),p("")}),children:"Pair"})]}),U=t.jsxs("span",{className:"br-enter-code",children:[t.jsx("span",{className:"pl-row-line",children:`Enter the code · Open the buddi icon in ${u}; type its code here`}),F]}),L=[...e.signInSites,...n],M=L.length>0?`Always for ${MY(L)}`:null;let z,D;if(w==="none")z=t.jsx(Er,{line:"For sites that need your sign-in",status:S==="chromium"?`Add the buddi extension to ${u}, then pair it here. Until then agents use their own browser and your saved logins.`:"The buddi extension runs in Chrome, Edge, Brave or Arc on a computer: add it there, then pair it on this page. Until then agents use their own browser and your saved logins.",children:U}),D=t.jsxs(t.Fragment,{children:[S==="chromium"?t.jsxs(it,{size:"sm",variant:"accent",href:p2,target:"_blank",rel:"noopener noreferrer",children:[AY(l)," ",t.jsx("span",{"aria-hidden":"true",children:"↗"})]}):null,I]});else if(w==="pair"){const J=h?`Extension ${h.version} found in ${u}`:"The buddi extension asks to pair",xe=h&&qj(h)&&(h.pairings??[]).length>0&&!h.pairings.some(Ie=>Ju(Ie.origin))?"Open the extension and press Add a buddi: it offers this buddi’s address, then shows a code, and this page pairs with it.":"Open the extension and press Connect: it shows a code, and this page pairs with it.";z=E?t.jsx(Er,{line:J,status:"Pairing with the code the extension shows. This finishes by itself.",children:t.jsx("span",{className:"br-code mono","aria-label":"Pairing code",children:E.replace(/^(\d{3})(\d{3})$/,"$1 · $2")})}):(Ne=i.data)!=null&&Ne.pending?t.jsx(Er,{line:J,status:"Type the six digits the extension shows.",children:F}):t.jsx(Er,{line:J,status:xe,children:U}),D=I}else if(w==="broken")z=t.jsx(Er,{line:"Used only for sites that need your sign-in",tone:"critical",status:`${l??"The browser"} forgot the pairing, so agents use their own browser instead.`}),D=t.jsxs(t.Fragment,{children:[t.jsx(A,{size:"sm",variant:"accent",disabled:R,onClick:()=>void C(()=>T.forgetExtension()),children:"Pair again"}),I]});else{const J=e.yourChrome?w==="notrunning"?`Used only for sites that need your sign-in · ${l??"Your browser"} isn’t open on ${f}; agents wait or use their own browser`:w==="off"?"Switched off for this buddi in the buddi extension · turn it on in its popup; until then agents use their own browser":`Used only for sites that need your sign-in · background tabs in a buddi group${b1(w1(h))?` · ${b1(w1(h))}`:""}`:"Off. Sites that need a sign-in use your saved logins, or ask you.";z=M&&e.yourChrome?t.jsx(Er,{line:J,status:M}):J,D=t.jsxs(t.Fragment,{children:[e.yourChrome?w==="notrunning"?t.jsx(Ae,{children:l?`${l} closed`:"closed"}):w==="off"?t.jsx(Ae,{children:l?`off in ${l}`:"off in the browser"}):t.jsx(Ae,{tone:"good",dot:!0,children:"connected"}):null,t.jsx(oc,{checked:e.yourChrome,label:`Let agents use ${o}`,disabled:R,onChange:xe=>r({yourChrome:xe})}),I]})}const H=h&&((Ke=i.data)!=null&&Ke.extensionMinimum)&&YY(h.version,i.data.extensionMinimum)?`This extension is ${h.version}; this buddi needs ${i.data.extensionMinimum} or later. Update it from ${j1(l)} or the store.`:null,K=h&&!qj(h)&&!Ju(h.gateway)?`The extension is pointed at ${h.gateway}; set it to ${window.location.origin} in its popup.`:null,X=(G=i.data)!=null&&G.portMoved&&w!=="pair"?`Port ${i.data.portMoved.from} was taken by another program, so buddi now listens on ${i.data.portMoved.to}. Pair the extension again: in its popup press Add a buddi with http://127.0.0.1:${i.data.portMoved.to}.`:null;return X&&w!=="broken"&&w!=="none"&&(D=t.jsxs(t.Fragment,{children:[t.jsx(A,{size:"sm",variant:"accent",disabled:R,onClick:()=>void C(()=>T.forgetExtension()),children:"Pair again"}),I]})),t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"ui-list-row",children:[t.jsx(vk,{kind:"chrome"}),t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:c}),t.jsxs("span",{className:"ui-list-sub",children:[z,H?t.jsx("span",{className:"pl-row-status","data-tone":"warning",children:H}):null,K?t.jsx("span",{className:"pl-row-status","data-tone":"warning",children:K}):null,X?t.jsx("span",{className:"pl-row-status","data-tone":"warning",children:X}):null,b??i.error?t.jsx("span",{className:"pl-row-status","data-tone":"critical",children:b??i.error}):null]})]}),t.jsx("span",{className:"ui-list-side",children:t.jsx("span",{className:"br-side",children:D})})]}),v?t.jsx("div",{className:"br-confirm",children:t.jsxs(Q,{tone:"warning",action:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>y(!1),children:"Cancel"}),t.jsx(A,{size:"sm",variant:"danger",disabled:R,onClick:()=>{y(!1),C(()=>T.forgetExtension())},children:"Forget"})]}),children:[l?`Forget this ${l}?`:"Forget this browser?"," Agents stop using it until you pair it again."]})}):null,k?t.jsxs(Qe,{title:"Install the extension unpacked",onClose:()=>N(!1),children:[t.jsx("div",{className:"ui-prose muted",children:t.jsxs("p",{children:["For a developer build. Open ",j1(l),", turn on Developer mode, choose Load unpacked, and pick this folder. Then pair it on this page."]})}),t.jsx(en,{label:"The unpacked extension",children:((ae=i.data)==null?void 0:ae.path)??"…"})]}):null]})}function HY({route:e,settings:n,busy:s,save:r,run:a,onSettings:i}){const l=n.yourApps!=="off",o=`From the ${e.label??Tp(e.provider.replace(/^@withbuddi\/plugin-/,""))} plugin`,c=l&&!e.available&&!!e.message,u=c?t.jsx(Er,{line:o,tone:"critical",status:e.message}):l?`${o} · ${n.yourApps==="ask"?"asks for each app":"when you name an app"}`:"Off. Agents tell you when a task needs an app.";return t.jsxs("div",{className:"ui-list-row",children:[t.jsx(vk,{kind:"apps"}),t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title",children:"Your apps"}),t.jsx("span",{className:"ui-list-sub",children:u})]}),t.jsx("span",{className:"ui-list-side",children:t.jsxs("span",{className:"br-side",children:[c&&e.repair==="permissions"?t.jsx(A,{size:"sm",variant:"accent",onClick:i,children:"Allow in macOS"}):null,!c&&l?t.jsx(Ae,{tone:"good",dot:!0,children:"ready"}):null,c&&e.repair==="permissions"?null:t.jsx(oc,{checked:l,label:"Let agents use your apps",disabled:s,onChange:h=>r({yourApps:h?"on":"off"})}),t.jsxs(A,{size:"sm",variant:"ghost","aria-label":"Manage apps",onClick:i,children:["Settings",t.jsx(se,{name:"chevron-right",size:12})]})]})})]})}function KY({settings:e,learned:n,busy:s,save:r,run:a,showApps:i}){var S;const l=ve(()=>T.agents(),[]),o=Mi(),c=((S=l.data)==null?void 0:S.engines)??[],u=c.filter(C=>C.browser&&C.browser!=="auto"),h=c.filter(C=>!C.browser||C.browser==="auto"),[f,m]=d.useState(!1),[p,x]=d.useState(""),[g,b]=d.useState("own"),[j,v]=d.useState(""),y=(C,E)=>void a(async()=>{await T.setAgentEngine(C,{browser:E}),l.reload()}),k=e.defaultRoute==="apps"?"auto":e.defaultRoute,N=[1,3,5].includes(e.maxOwnPages)?[1,3,5]:[1,3,5,e.maxOwnPages].sort((C,E)=>C-E),w=()=>{const C=j.trim().toLowerCase().replace(/^https?:\/\//,"").replace(/\/.*$/,"").replace(/^www\./,"");if(!C||e.signInSites.includes(C)||n.includes(C)){v("");return}r({signInSites:[...e.signInSites,C]}),v("")};return t.jsx(Kt,{boxed:!0,summary:"Advanced",children:t.jsxs("div",{className:"br-adv",children:[t.jsx(kh,{label:"First choice for every agent",hint:"Let them choose is right for almost everyone: a wrong guess costs one extra page load, never a stop.",children:t.jsx(dn,{label:"First choice for every agent",value:k,onChange:C=>r({defaultRoute:C}),options:[{value:"auto",label:"Let them choose"},{value:"own",label:"Own browser only"},{value:"chrome",label:`${$p(o)} first`}]})}),t.jsxs("div",{className:"br-adv-block",children:[t.jsxs("span",{className:"br-adv-head",children:[t.jsx("span",{className:"br-adv-title",children:"Agents with their own rule"}),t.jsx("span",{className:"br-adv-hint",children:"Also on each agent’s page, under Where it may look. A rule never allows what is off above."})]}),u.length?t.jsx("div",{className:"ui-list",children:u.map(C=>t.jsxs("div",{className:"ui-list-row",children:[t.jsx(Bn,{id:C.id,name:C.name,size:"sm"}),t.jsx("span",{className:"ui-list-main",children:t.jsx("span",{className:"ui-list-title",children:C.name})}),t.jsxs("span",{className:"ui-list-side",children:[t.jsx(Gj,{value:C.browser??"auto",label:`Where ${C.name} may look`,apps:i,disabled:s,onChange:E=>y(C.id,E)}),t.jsx(A,{size:"sm",variant:"ghost",disabled:s,onClick:()=>y(C.id,"auto"),children:"Remove"})]})]},C.id))}):t.jsx("p",{className:"br-adv-empty",children:"No agent has its own rule. Every agent follows the first choice."}),f?t.jsxs(ne,{children:[t.jsxs("select",{className:"br-select","aria-label":"Agent",value:p,onChange:C=>x(C.target.value),children:[t.jsx("option",{value:"",children:"Choose an agent"}),h.map(C=>t.jsx("option",{value:C.id,children:C.name},C.id))]}),t.jsx(Gj,{value:g,label:"Its rule",apps:i,onChange:b}),t.jsx(ft,{}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>m(!1),children:"Cancel"}),t.jsx(A,{size:"sm",variant:"accent","aria-label":"Add this rule",disabled:s||!p||g==="auto",onClick:()=>{y(p,g),m(!1),x("")},children:"Add"})]}):t.jsx(ne,{children:t.jsxs(A,{size:"sm",disabled:h.length===0,onClick:()=>m(!0),children:[t.jsx("span",{"aria-hidden":"true",children:"+"})," Give an agent its own rule"]})})]}),t.jsxs("div",{className:"br-adv-block",children:[t.jsxs("span",{className:"br-adv-head",children:[t.jsx("span",{className:"br-adv-title",children:"Sites that need your sign-in"}),t.jsxs("span",{className:"br-adv-hint",children:["Always looked at in ",da(o)," while it is on and connected. buddi adds a site, outlined dashed, when it meets its sign-in page."]})]}),e.signInSites.length||n.length?t.jsxs("span",{className:"br-sites",children:[e.signInSites.map(C=>t.jsxs("span",{className:"br-site-chip mono",children:[C,t.jsx("button",{type:"button","aria-label":`Remove ${C}`,disabled:s,onClick:()=>r({forgetSignInSite:C}),children:"×"})]},C)),n.map(C=>t.jsxs("span",{className:"br-site-chip mono","data-learned":"true",title:"buddi added this when it met its sign-in page",children:[C,t.jsx("button",{type:"button","aria-label":`Remove ${C}`,disabled:s,onClick:()=>r({forgetSignInSite:C}),children:"×"})]},C))]}):t.jsx("p",{className:"br-adv-empty",children:"None yet."}),t.jsxs("form",{className:"br-site-add",onSubmit:C=>{C.preventDefault(),w()},children:[t.jsx("input",{"aria-label":"A site that needs your sign-in",placeholder:"amazon.com",value:j,onChange:C=>v(C.target.value)}),t.jsx(A,{size:"sm",type:"submit",disabled:s||!j.trim(),children:"Add"})]})]}),t.jsx(kh,{label:"Stop agents’ browsing lasts",hint:"What Stop in the Canvas does. Resume from the chat card, here, or /browser resume on Telegram.",children:t.jsx(dn,{label:"Stop agents’ browsing lasts",value:e.stopExpiryMinutes===0?"until":"hour",onChange:C=>r({stopExpiryMinutes:C==="until"?0:60}),options:[{value:"hour",label:"An hour"},{value:"until",label:"Until I say"}]})}),t.jsx(kh,{label:"Pages open at once",hint:"In buddi’s own browser. One more waits its turn; nothing is refused.",children:t.jsx(dn,{label:"Pages open at once",value:String(e.maxOwnPages),onChange:C=>r({maxOwnPages:Number(C)}),options:N.map(C=>({value:String(C),label:String(C)}))})}),t.jsx(kh,{label:"Show buddi’s browser as a window",hint:"Off: it works out of sight and you watch on the Canvas. On for the few sites that refuse a hidden browser.",children:t.jsx(oc,{checked:e.showWindow,label:"Show buddi’s browser as a window",disabled:s,onChange:C=>r({showWindow:C})})}),t.jsxs("p",{className:"br-adv-empty",children:["Missions run without you, so they look only in buddi’s own browser, never in ",da(o),"."]})]})})}const VY="kmbckpnnjfggeffkkbmkggojnolkdokb",GY="pbfpjefkiijjgefblpnlnlpmeaddfbah",p2="https://chromewebstore.google.com/detail/pbfpjefkiijjgefblpnlnlpmeaddfbah",qY=[VY,GY].filter(Boolean);function YY(e,n){const s=i=>/^\d+(\.\d+){0,3}$/.test(i.trim())?i.trim().split(".").map(Number):null,r=s(e),a=s(n);if(!r||!a)return!1;for(let i=0;i<4;i++){const l=(r[i]??0)-(a[i]??0);if(l!==0)return l<0}return!1}async function QY(){var e;try{if(typeof chrome>"u"||!((e=chrome==null?void 0:chrome.runtime)!=null&&e.sendMessage))return null;for(const n of qY)try{const s=await chrome.runtime.sendMessage(n,{type:"buddi.status"});if(s!=null&&s.installed)return s}catch{}return null}catch{return null}}function JY(e=navigator){var s,r,a;const n=e.userAgent??"";return(s=e.userAgentData)!=null&&s.mobile||/Android|iPhone|iPad|iPod|Mobile/i.test(n)?"phone":(a=(r=e.userAgentData)==null?void 0:r.brands)!=null&&a.some(i=>/Chromium/i.test(i.brand))||/Chrome\/|Chromium\/|Edg\//.test(n)&&!/Firefox\/|OPR\//.test(n)?"chromium":"other"}function Ju(e){try{return new URL(e).origin===window.location.origin}catch{return!1}}const S1=new Set(["co.uk","org.uk","me.uk","ltd.uk","plc.uk","net.uk","sch.uk","ac.uk","gov.uk","nhs.uk","police.uk","mod.uk","gov.ie","co.at","or.at","ac.at","gv.at","com.pl","net.pl","org.pl","info.pl","biz.pl","edu.pl","gov.pl","waw.pl","com.es","org.es","nom.es","gob.es","edu.es","com.pt","org.pt","gov.pt","edu.pt","com.gr","org.gr","net.gr","edu.gr","gov.gr","com.cy","org.cy","net.cy","gov.cy","ac.cy","com.mt","org.mt","net.mt","edu.mt","gov.mt","co.hu","org.hu","info.hu","com.ro","org.ro","info.ro","nom.ro","co.rs","org.rs","edu.rs","gov.rs","in.rs","com.ua","org.ua","net.ua","gov.ua","edu.ua","in.ua","kiev.ua","com.ru","org.ru","net.ru","msk.ru","spb.ru","co.no","priv.no","com.hr","from.hr","iz.hr","name.hr","co.it","gov.it","edu.it","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","co.je","net.je","org.je","co.gg","net.gg","org.gg","co.im","net.im","org.im","gc.ca","on.ca","qc.ca","bc.ca","ab.ca","com.mx","org.mx","net.mx","edu.mx","gob.mx","ny.us","ca.us","tx.us","fl.us","wa.us","k12.ca.us","lib.ca.us","com.br","net.br","org.br","gov.br","edu.br","art.br","blog.br","eco.br","emp.br","ind.br","inf.br","tv.br","app.br","dev.br","com.ar","org.ar","net.ar","gob.ar","edu.ar","int.ar","tur.ar","com.co","org.co","net.co","edu.co","gov.co","nom.co","com.pe","org.pe","net.pe","gob.pe","edu.pe","nom.pe","com.ve","org.ve","net.ve","gob.ve","co.ve","com.uy","org.uy","net.uy","gub.uy","edu.uy","com.ec","org.ec","net.ec","gob.ec","edu.ec","fin.ec","com.bo","org.bo","net.bo","gob.bo","edu.bo","com.py","org.py","net.py","gov.py","edu.py","gob.cl","gov.cl","co.cl","com.do","org.do","net.do","gob.do","edu.do","com.gt","org.gt","net.gt","gob.gt","edu.gt","co.cr","or.cr","fi.cr","go.cr","ac.cr","com.pa","org.pa","net.pa","gob.pa","com.sv","org.sv","gob.sv","edu.sv","com.ni","org.ni","gob.ni","com.hn","org.hn","net.hn","gob.hn","com.cu","org.cu","net.cu","gob.cu","com.jm","org.jm","net.jm","gov.jm","com.tt","org.tt","net.tt","gov.tt","co.tt","com.pr","org.pr","net.pr","gov.pr","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","co.nz","net.nz","org.nz","ac.nz","govt.nz","school.nz","geek.nz","gen.nz","kiwi.nz","maori.nz","co.jp","ne.jp","or.jp","ac.jp","ad.jp","ed.jp","go.jp","gr.jp","lg.jp","com.cn","net.cn","org.cn","gov.cn","edu.cn","ac.cn","com.hk","net.hk","org.hk","edu.hk","gov.hk","idv.hk","com.tw","net.tw","org.tw","edu.tw","gov.tw","idv.tw","co.kr","or.kr","ne.kr","go.kr","ac.kr","re.kr","pe.kr","co.in","net.in","org.in","firm.in","gen.in","ind.in","ac.in","edu.in","gov.in","res.in","nic.in","com.sg","net.sg","org.sg","edu.sg","gov.sg","per.sg","com.my","net.my","org.my","edu.my","gov.my","name.my","co.id","or.id","ac.id","go.id","web.id","my.id","biz.id","net.id","sch.id","co.th","in.th","ac.th","go.th","or.th","net.th","com.vn","net.vn","org.vn","edu.vn","gov.vn","com.ph","net.ph","org.ph","edu.ph","gov.ph","com.pk","net.pk","org.pk","edu.pk","gov.pk","com.bd","org.bd","net.bd","gov.bd","edu.bd","com.lk","org.lk","gov.lk","edu.lk","com.np","org.np","gov.np","edu.np","com.kh","org.kh","gov.kh","com.mm","org.mm","gov.mm","com.fj","org.fj","gov.fj","ac.fj","com.pg","org.pg","gov.pg","ac.pg","com.kz","org.kz","gov.kz","edu.kz","com.tr","net.tr","org.tr","gov.tr","edu.tr","gen.tr","biz.tr","info.tr","av.tr","bel.tr","k12.tr","co.il","org.il","net.il","ac.il","gov.il","muni.il","com.sa","net.sa","org.sa","gov.sa","edu.sa","med.sa","co.ae","net.ae","org.ae","gov.ae","ac.ae","com.qa","org.qa","net.qa","gov.qa","edu.qa","com.kw","org.kw","net.kw","gov.kw","edu.kw","com.bh","org.bh","net.bh","gov.bh","edu.bh","com.om","org.om","net.om","gov.om","co.om","com.jo","org.jo","net.jo","gov.jo","edu.jo","com.lb","org.lb","net.lb","gov.lb","edu.lb","com.eg","org.eg","net.eg","gov.eg","edu.eg","eun.eg","co.ir","ac.ir","gov.ir","org.ir","net.ir","co.za","org.za","net.za","gov.za","ac.za","web.za","edu.za","nom.za","com.ng","org.ng","net.ng","gov.ng","edu.ng","name.ng","co.ke","or.ke","ne.ke","go.ke","ac.ke","sc.ke","co.tz","or.tz","ne.tz","go.tz","ac.tz","co.ug","or.ug","ne.ug","go.ug","ac.ug","com.gh","org.gh","gov.gh","edu.gh","co.ma","net.ma","org.ma","gov.ma","ac.ma","press.ma","com.tn","org.tn","gov.tn","ens.tn","fin.tn","com.dz","org.dz","net.dz","gov.dz","edu.dz","com.et","org.et","gov.et","edu.et","co.zw","org.zw","gov.zw","ac.zw","co.zm","org.zm","gov.zm","ac.zm","co.bw","org.bw","ac.bw","com.na","org.na","co.na","co.mz","org.mz","gov.mz","com.cm","co.cm","net.cm","gov.cm","com.sn","org.sn","edu.sn","gouv.sn","com.ci","co.ci","or.ci","go.ci","ac.ci","com.tg","gouv.tg","co.rw","gov.rw","ac.rw","*.ck","*.er","*.fk","*.jm","*.kh","*.mm","*.np","*.pg","*.bd","github.io","githubusercontent.com","gitlab.io","bitbucket.io","pages.dev","workers.dev","trycloudflare.com","vercel.app","vercel.dev","now.sh","netlify.app","netlify.com","herokuapp.com","herokussl.com","cloudfront.net","amazonaws.com","s3.amazonaws.com","elasticbeanstalk.com","awsapprunner.com","amplifyapp.com","azurewebsites.net","azurestaticapps.net","cloudapp.net","azureedge.net","azurefd.net","blob.core.windows.net","trafficmanager.net","appspot.com","firebaseapp.com","web.app","run.app","cloudfunctions.net","blogspot.com","fly.dev","onrender.com","up.railway.app","deno.dev","deno.net","glitch.me","repl.co","replit.dev","replit.app","ngrok.io","ngrok.app","ngrok-free.app","ngrok.dev","ngrok-free.dev","surge.sh","readthedocs.io","myshopify.com","wixsite.com","webflow.io","framer.app","framer.website","ondigitalocean.app","digitaloceanspaces.com","supabase.co","fastly.net","global.ssl.fastly.net","edgecompute.app","duckdns.org","dyndns.org","ddns.net","no-ip.org","hopto.org","zapto.org","eu.org","us.org","neocities.org","codeberg.page","sourceforge.io","pythonanywhere.com","streamlit.app","hf.space"]);function XY(e){const n=e.toLowerCase().replace(/\.$/,"");if(!n.includes(".")||S1.has(n))return!0;const s=n.slice(n.indexOf(".")+1);return S1.has(`*.${s}`)}function ZY(e){return typeof e=="string"&&e.includes("*")}function eQ(e){const n=/^(https?):\/\/([^/?#@\s]+)(?:[/?#]\S*)?$/i.exec(e.trim());if(n===null)return{ok:!1,reason:"invalid"};const[,s,r]=n;if(!r.startsWith("*.")||r.slice(2).includes("*"))return{ok:!1,reason:"placement"};let a;try{a=new URL(`${s.toLowerCase()}://${r.slice(2)}`)}catch{return{ok:!1,reason:"invalid"}}const i=a.hostname;return i===""||i.startsWith("[")||/^[\d.]+$/.test(i)||i.startsWith(".")||i.includes("..")?{ok:!1,reason:"invalid"}:XY(i)?{ok:!1,reason:"public-suffix"}:{ok:!0,value:{pattern:`${a.protocol}//*.${a.host}`,protocol:a.protocol,suffix:i,port:a.port}}}const C1=["every-time","first-time","pre-approved"];function g2(e){const n=C1.indexOf(e);return C1.slice(0,n<0?1:n+1)}function Pl(e){return e.endsWith(".account")}const tQ="Stored, not usable until it has a binding.";function nQ(e){return e==="browser.field"?"the origin of the site that holds the field, e.g. https://en.wikipedia.org or *.wikimedia.org":e==="browser.form.data"?"the origin, then the field name — e.g. https://localhost:8443 card-number":e==="browser.native.type"?"the app’s bundle id, e.g. com.bank.app":e==="http.header"?"the host, then the header name — e.g. localhost:9200 Authorization":e==="http.url"?"the plugin, then the host — e.g. calendar calendar.google.com":e==="http.basic"?"the plugin, then the host — e.g. calendar *.icloud.com":e==="http.bearer"?"the plugin, then the host — e.g. calendar www.googleapis.com":e==="developer.env"?"the workspace, then the variable name — e.g. cour des comptes ADMIN_PASSWORD":Pl(e)?"the account id, e.g. acct-1":'the place, as JSON — e.g. {"host":"localhost","header":"Authorization"}'}const x2={"browser.form.data":{hint:"an origin, then the field name",build:(e,n)=>({origin:e,field:n})},"http.header":{hint:"a host, then the header name",build:(e,n)=>({host:e,header:n})},"http.url":{hint:"a plugin, then the host",build:(e,n)=>({plugin:e,host:n})},"http.basic":{hint:"a plugin, then the host",build:(e,n)=>({plugin:e,host:n})},"http.bearer":{hint:"a plugin, then the host",build:(e,n)=>({plugin:e,host:n})},"developer.env":{hint:"a workspace, then the variable name",build:(e,n)=>({workspace:e,variable:n})}},sQ="A wildcard may only stand for the leftmost part of a site, like *.wikimedia.org.",rQ=e=>`That is a public suffix; ${e} would match every site.`,E1="Give the site as an origin, like https://en.wikipedia.org.";function A1(e){const n=/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:["https:","//",e].join("");if(ZY(e)){const s=eQ(n);if(s.ok)return{ok:!0,target:s.value.pattern};if(s.reason==="placement")return{ok:!1,error:sQ};if(s.reason==="public-suffix"){const r=n.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"").replace(/[/?#:].*$/,"").toLowerCase();return{ok:!1,error:rQ(r)}}return{ok:!1,error:E1}}try{const s=new URL(n);if(s.origin==="null"||s.protocol!=="https:"&&s.protocol!=="http:")throw new Error("not an origin");return{ok:!0,target:s.origin}}catch{return{ok:!1,error:E1}}}function aQ(e){const n=e.search(/\s\S+\s*$/);if(n<=0)return null;const s=e.slice(n).trim(),r=e.slice(0,n).trim();return r&&s?[r,s]:null}function iQ(e,n){const s=n.trim();if(s==="")return{ok:!1,error:"Give the exact place this value may go."};if(s.startsWith("{"))try{const i=JSON.parse(s);return i!==null&&typeof i=="object"&&!Array.isArray(i)?{ok:!0,target:i}:{ok:!1,error:'A target in JSON is an object, like {"host":"localhost","header":"Authorization"}.'}}catch{return{ok:!1,error:"That opens like JSON but does not parse."}}if(e==="browser.field")return A1(s);if(e==="browser.native.type"||Pl(e))return{ok:!0,target:s};const r=x2[e];if(r===void 0)return{ok:!0,target:s};const a=aQ(s);if(a===null)return{ok:!1,error:`${e} needs both: ${r.hint}.`};if(e==="browser.form.data"){const i=A1(a[0]);return i.ok?{ok:!0,target:r.build(i.target,a[1])}:i}return{ok:!0,target:r.build(a[0],a[1])}}function lQ(e){if(typeof e=="string")return e;try{return JSON.stringify(e)??""}catch{return""}}function v2(e,n){if(typeof n=="string")return n;if(n!==null&&typeof n=="object"&&!Array.isArray(n)){const s=n,r=x2[e];if(r!==void 0){const a=Object.keys(r.build("a","b")),i=a.map(l=>s[l]);if(a.every(l=>typeof s[l]=="string"))return i.join(" · ")}}try{return JSON.stringify(n)??String(n)}catch{return String(n)}}const fc="accounts.provider";function j2(e,n){if(typeof e!="object"||e===null)return[];const s=e[n];return Array.isArray(s)?s.flatMap(r=>{if(typeof r!="object"||r===null)return[];const a=r.place,i=r.count;return typeof a!="string"||typeof i!="number"||!(i>0)?[]:[{place:a,count:i}]}):[]}function y2(e){const n=e.map(({place:s,count:r})=>`${r.toLocaleString("en-GB")} ${r===1?s.replace(/s$/,""):s}`);return n.length<=1?n[0]??"":`${n.slice(0,-1).join(", ")} and ${n[n.length-1]}`}function oQ(e){const n=j2(e,"found");return n.length?`The value already sits in ${y2(n)}.`:""}function cQ(e){const n=j2(e,"scrubbed");return n.length?`Replaced with ‹secret:…› in ${y2(n)}.`:""}const uQ=/^(PROVIDER_ACCOUNT_|CODEX_ACCOUNT_|ANTHROPIC_ACCOUNT_|OLLAMA_DEVICE_)/,dQ=/^MCP_(TOKEN|ENV|CONNECTION)_/,w2="GMAIL_APP_PASSWORD";function Ba(e){const n=e.usedBy??[],s=e.bindings.map(r=>r.kind);if(n.some(r=>r.kind==="mailbox")||s.includes("email.account")||e.name===w2)return"mail";if(n.some(r=>r.kind==="model-account")||s.includes(fc)||uQ.test(e.name))return"models";if(n.some(r=>r.kind==="connection")||s.includes("mcp.env")||dQ.test(e.name))return"connections";for(const r of e.bindings){if((r.kind==="http.url"||r.kind==="http.basic"||r.kind==="http.bearer")&&yk(r.target)&&typeof r.target.plugin=="string")return`plugin:${r.target.plugin}`;if(Pl(r.kind))return`plugin:${r.kind.slice(0,-8)}`}return"mine"}function hQ(e){if(e==="mine")return{title:"Your secrets",aside:"Agents fill these where you allow, without seeing them."};if(e==="mail")return{title:"Mail",aside:"Mailbox passwords. A new one is set on the Email page, which tests it first."};if(e==="models")return{title:"Model accounts",aside:"Managed in Model accounts."};if(e==="connections")return{title:"Connections",aside:"Managed in Connections."};const n=e.slice(7);return n==="calendar"?{title:"Calendar links and sign-ins",aside:"Private links and app passwords, used only by the calendar plugin."}:{title:n.charAt(0).toUpperCase()+n.slice(1),aside:`Kept for the ${n} plugin.`}}function fQ(e,n){const s=r=>r==="mine"?0:r==="mail"?1:r==="models"?3:r==="connections"?4:2;return s(e)-s(n)||e.localeCompare(n)}function b2(e){return e==="models"||e==="connections"}function yk(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function $1(e){const n=e.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"").replace(/\/.*$/,"").replace(/^www\./,"");return n.startsWith("*.")?`any ${n.slice(2)} site`:n}const wk=e=>(e.usedBy??[]).flatMap(n=>n.kind==="mailbox"?[n]:[]),Rp=e=>(e.usedBy??[]).find(n=>n.kind==="model-account"),bk=e=>(e.usedBy??[]).find(n=>n.kind==="connection");function iu(e,n=new Map){var r,a;const s=Ba(e);if(s==="mail"){const i=wk(e)[0];return i?`${i.provider==="Email"?"Mailbox":i.provider} ${i.auth==="xoauth2"?"sign-in":"app password"}`:"Old mailbox password"}if(s==="models"){const i=Rp(e),l=(i==null?void 0:i.id)??((r=e.bindings.find(c=>c.kind===fc&&typeof c.target=="string"))==null?void 0:r.target),o=typeof l=="string"?n.get(l):void 0;return(o==null?void 0:o.label)??(i==null?void 0:i.label)??"Old model account key"}if(s==="connections")return((a=bk(e))==null?void 0:a.name)??"Old connection sign-in";if(s.startsWith("plugin:")){const i=/^[^:]{1,40}:\s+(.+)$/.exec(e.name);return i?i[1]:e.name}return e.login?`Login · ${e.login.site}`:e.name}function k2(e){const n=e.indexOf("@");return n>0?`${e.slice(0,Math.min(n,24))}@…`:e.length>24?`${e.slice(0,23)}…`:e}function mQ(e,n){const s=new Date(e);if(Number.isNaN(s.getTime()))return"";try{return new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"short",...n?{timeZone:n}:{}}).format(s)}catch{return new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"short"}).format(s)}}function pQ(e,n){const s=e.login;if(!s)return null;const r=mQ(s.savedAt,n);return[s.username?`for ${k2(s.username)}`:null,r?`saved ${r}`:null].filter(Boolean).join(" · ")}function gQ(e,n){var r,a,i;if(Ba(e)!=="models")return null;const s=((r=Rp(e))==null?void 0:r.id)??((a=e.bindings.find(l=>l.kind===fc&&typeof l.target=="string"))==null?void 0:a.target);return typeof s=="string"?((i=n.get(s))==null?void 0:i.provider)??null:null}function N2(e,n){const s=yk(n)?n:{},r=a=>typeof s[a]=="string"?s[a]:"";return e==="browser.field"&&typeof n=="string"?`Filled on ${$1(n)}`:e==="browser.form.data"&&r("origin")?`Filled into “${r("field")}” on ${$1(r("origin"))}`:e==="browser.native.type"&&typeof n=="string"?`Typed into the app ${n}`:(e==="http.header"||e==="http.url"||e==="http.basic"||e==="http.bearer")&&r("host")?`Sent only to ${r("host")}`:e==="developer.env"&&r("variable")?`Given to ${r("workspace")} as ${r("variable")}`:e==="mcp.env"&&r("variable")?`Given to a program as ${r("variable")}`:e==="email.account"?"Used by a mailbox":e===fc?"Used by a model account":Pl(e)?`Used by a ${e.slice(0,-8)} account`:`Goes to ${v2(e,n)}`}function xQ(e,n){return Pl(e)||e===fc?"Signed in":N2(e,n).replace(/^Sent only to/,"Sent to")}const vQ={"api-key":"API key for this model account",chatgpt:"ChatGPT sign-in for this model account","anthropic-oauth":"Claude sign-in for this model account","device-key":"Ollama device key for this model account"};function jQ(e){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function kk(e){const n=Ba(e);if(n==="mail"){const l=wk(e).map(o=>o.address);return l.length?`Used by the ${l.length===1?"mailbox":"mailboxes"} ${jQ(l)}`:e.name===w2?"From the old .env setup":"No mailbox uses it"}if(n==="models"){const l=Rp(e);return l?vQ[l.auth]??"Key for this model account":"No model account uses it"}if(n==="connections"){const l=bk(e);if(l!=null&&l.variable)return`Given to the program as ${l.variable}`;const o=e.bindings.find(u=>u.kind==="http.header"),c=o&&yk(o.target)&&typeof o.target.host=="string"?o.target.host:null;return c?`Sign-in token · sent only to ${c}`:l?"Sign-in for this connection":"No connection uses it"}if(e.bindings.length===0)return"";const s=yQ(e),r=s?[`Filled on ${s}`]:e.bindings.map(l=>N2(l.kind,l.target));let a=r.length<=2?r.join(" · "):`${r[0]} and ${r.length-1} more places`;const i=new Set(e.bindings.map(l=>l.rule==="first-time"&&l.firstApprovedAt!==null?"pre-approved":l.rule));return i.size===1&&i.has("every-time")&&(a+=" · asks you every time"),i.size===1&&i.has("first-time")&&(a+=" · asks you the first time"),e.totp&&(a+=" · a fresh code each time"),a}function yQ(e){var r;const n=(r=e.savedFrom)==null?void 0:r.site;if(!n)return null;const s=a=>{if(typeof a!="string")return!1;const i=a.replace(/^https?:\/\//,"").replace(/:\d+$/,"").replace(/^\*\./,"").replace(/^www\./,"");return i===n||i.endsWith(`.${n}`)};return e.bindings.every(a=>a.kind==="browser.field"&&s(a.target))?n:null}function wQ(e,n=Date.now()){return e.lastUse?`Last used ${Xe(e.lastUse.at,n)}`:"Never used"}function Yj(e){return Dr("email","settings",{account:e,set:"password"})}function S2(e){var s,r;const n=Ba(e);if(n==="models"){const a=(s=Rp(e))==null?void 0:s.id;return{label:"Managed in Model accounts",href:a?ZI(a):We("accounts")}}if(n==="connections"){const a=(r=bk(e))==null?void 0:r.id;return{label:"Managed in Connections",href:a?eP(a):We("connections")}}return null}function C2(e){const n=/is not bound to (.+?)\.?$/.exec(e);if(!n)return null;const s=n[1];return/[0-9a-f]{8}-[0-9a-f]{4}-/i.test(s)?null:s}function E2(e,n=Date.now()){if(e.unused)return null;const s=Ba(e),r=wk(e)[0],a=S2(e),i=()=>r?{label:"Set password",href:Yj(r.id)}:a?{label:s==="models"?"Fix in Model accounts":"Fix in Connections",href:a.href}:{label:"Set a value",action:"replace"},l=e.lastUse,o=l?Xe(l.at,n):"",c=(l==null?void 0:l.detail)??"";if(e.hasValue===!1||(l==null?void 0:l.outcome)==="refused"&&/has no value stored/.test(c))return{text:"No value stored.",fix:i()};if(r!=null&&r.loginFailedAt)return{text:`${r.provider==="Email"?"The mail server":r.provider} turned it down at sign-in ${Xe(r.loginFailedAt,n)}.`,fix:{label:"Set password",href:Yj(r.id)}};if((l==null?void 0:l.outcome)==="refused"){if(/vault is locked/.test(c))return{text:`Held back ${o}: the vault was locked.`,fix:null};if(/TOTP secret/.test(c))return{text:`Held back ${o}: a one-time code goes only into a field on a website.`,fix:null};if(/is not bound to/.test(c)){const u=s==="mine"?C2(c):null;return{text:u?`Held back ${o}: it was asked for at ${u}, where it may not go.`:`Held back ${o}: it was asked for somewhere it may not go.`,fix:s==="mine"?{label:"Change where it may go",action:"places"}:null}}return{text:`Held back ${o}: ${$2(c||null)}.`,fix:null}}if((l==null?void 0:l.outcome)==="failed"){const u=r?i():a?null:{label:"Replace value",action:"replace"};return{text:`Didn’t go through ${o}${c?`: ${c.replace(/\.$/,"")}`:""}.`,fix:u}}return(l==null?void 0:l.outcome)==="pending"?{text:`Waiting for your approval since ${o}.`,fix:{label:"Review",href:Oo}}:s==="mine"&&e.bindings.length===0?{text:"Can’t be used anywhere until you choose where it may go.",fix:{label:"Choose where it may go",action:"places"}}:null}function A2(e){if(!e.unused)return"";const n=Ba(e);return n==="mail"?"Not used by anything — no mailbox uses it any more.":n==="models"?"Not used by anything — no model account uses it any more.":n==="connections"?"Not used by anything — no connection uses it any more.":"Not used by anything — what it was for is gone."}function Qj(e){return e.usageUnknown&&!e.unused?"Couldn’t check what uses it just now.":""}function ho(e){return!!e.unused&&!b2(Ba(e))}function bQ(e){if(e.unused||e.bindings.length===0)return"Nothing uses it, so nothing stops working.";const n=kk(e).split(" · ")[0]??"";return n.startsWith("Filled on ")?`Agents can no longer fill it on ${n.slice(10)}.`:n.startsWith("Sent only to ")?`Agents can no longer send it to ${n.slice(13)}.`:`Whatever uses it stops working: ${n.charAt(0).toLowerCase()}${n.slice(1)}.`}const kQ={"every-time":"Every time","first-time":"The first time, then not again","pre-approved":"Never — allowed ahead of time"};function NQ(e){const n={"browser.field":"A field on a website","browser.form.data":"A form field, by its name","browser.native.type":"An app on this computer","http.header":"A request to a host","http.url":"A plugin’s web address","http.basic":"A plugin’s sign-in","http.bearer":"A plugin’s account sign-in","developer.env":"A workspace variable","mcp.env":"A program’s variable",[fc]:"A model account"};return n[e]?n[e]:Pl(e)?`A ${e.slice(0,-8)} account`:e}const SQ={"every-time":"Every time","first-time":"The first time","pre-approved":"Never"};function $2(e){if(!e)return"buddi didn’t hand it over";if(/has no value stored/.test(e))return"no value was stored";if(/vault is locked/.test(e))return"the vault was locked";if(/TOTP secret/.test(e))return"a one-time code goes only into a field on a website";const n=/is not bound to/.test(e)?C2(e):void 0;return n!==void 0?n?`asked for at ${n}, where it may not go`:"asked for somewhere it may not go":e.replace(/\.$/,"")}function CQ(e){return e==="browser.field"?"www.pnc.com":e==="browser.form.data"?"www.pnc.com card-number":e==="browser.native.type"?"com.bank.app":e==="http.header"?"api.github.com Authorization":e==="http.url"?"calendar calendar.google.com":e==="http.basic"?"calendar caldav.fastmail.com":e==="http.bearer"?"calendar www.googleapis.com":e==="developer.env"?"my-app ADMIN_PASSWORD":Pl(e)?"acct-1":'{"host":"localhost","header":"Authorization"}'}function um(e){return g2(e).includes("first-time")?"first-time":e}function EQ(e){const n=xQ(e.kind,e.target);return e.outcome==="refused"?{text:`Held back — ${$2(e.detail)}`,tone:"warning"}:e.outcome==="failed"?{text:`Didn’t go through — ${(e.detail??n).replace(/\.$/,"")}`,tone:"warning"}:e.outcome==="pending"?{text:`Asked for your approval · ${n}`}:{text:n}}const AQ=2*6e4,$Q=2e3;function TQ({login:e,onDone:n}){const[s,r]=d.useState(!1),[a,i]=d.useState(null),[l,o]=d.useState(!1);d.useEffect(()=>{o(!1),i(null);const f=window.setTimeout(n,AQ);return()=>window.clearTimeout(f)},[e.id]),d.useEffect(()=>{if(!l)return;const f=window.setTimeout(n,$Q);return()=>window.clearTimeout(f)},[l]);const c=async f=>{r(!0),i(null);try{const m=await T.browserLogin(e.id,f);if(f==="save"&&m.outcome==="saved"){o(!0);return}if(f==="save"&&m.outcome==="gone"){i({reason:"That sign-in is no longer held. Add it in Keys and secrets.",retry:!1});return}n()}catch(m){i({reason:m instanceof Error?m.message:String(m),retry:f==="save"})}finally{r(!1)}},u=e.update===!0;if(l)return t.jsxs(Q,{tone:"good",role:"status",title:u?`Updated the login for ${e.site}`:`Saved the login for ${e.site}`,children:["Agents can sign in there now without seeing it. It’s under ",t.jsx("a",{className:"wb-link",href:We("secrets"),children:"Keys and secrets"}),"."]});const h=e.username?`For ${k2(e.username)}. `:"";return t.jsxs("section",{className:"br-login","data-testid":"save-login","aria-label":u?"Update this login":"Save this login",children:[t.jsx(Q,{tone:"accent",role:"status",title:u?`Update the login for ${e.site}?`:`Save this login for ${e.site}?`,action:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",variant:"ghost",disabled:s,onClick:()=>void c("never"),children:"Never for this site"}),t.jsx(A,{size:"sm",disabled:s,onClick:()=>void c("later"),children:"Not now"}),t.jsx(A,{size:"sm",variant:"accent",disabled:s,onClick:()=>void c("save"),children:u?"Update":"Save"})]}),children:u?`${h}buddi replaces the password it keeps under Keys and secrets with the one you just used.`:`${h}buddi keeps it under Keys and secrets, and agents use it without ever seeing it.`}),a?t.jsx(Q,{tone:"critical",role:"alert",action:a.retry?t.jsx(A,{size:"sm",disabled:s,onClick:()=>void c("save"),children:"Try again"}):void 0,children:a.reason}):null]})}const RQ=2e3,IQ=5,PQ="(hover: none) and (pointer: coarse)",Jj="buddi:browser-enlarge",MQ=4e3,OQ=8e3,DQ="https:";function LQ(e){const n=e.trim();if(n===""||/\s/.test(n))return null;const s=/^[a-z][a-z0-9+.-]*:/i.test(n)&&!/^[^:]+:\d+(\/|$)/.test(n)?n:`${DQ}//${n}`;try{const r=new URL(s);return r.protocol==="https:"||r.protocol==="http:"?r.toString():null}catch{return null}}function FQ(e){if(!e)return null;try{const n=new URL(e);if(n.protocol!=="http:"&&n.protocol!=="https:")return{host:e,rest:"",secure:!1};const s=`${n.pathname==="/"?"":n.pathname}${n.search}${n.hash}`;return{host:n.host.replace(/^www\./,""),rest:s,secure:n.protocol==="https:"}}catch{return{host:e,rest:"",secure:!1}}}function Xj(e,n){if(!e.hasScreenshot||!e.page)return null;const s=e.session?`&sessionId=${encodeURIComponent(e.session.id)}`:"";return`/api/browser/screenshot?v=${encodeURIComponent(e.page.id)}${s}${n?`&tick=${n}`:""}`}function Zj(e){var s,r,a;return(e==null?void 0:e.route)==="apps"&&((s=e.page)!=null&&s.appId)?Tp(e.page.appId).charAt(0).toUpperCase():(jk((r=e==null?void 0:e.page)==null?void 0:r.url)??((a=e==null?void 0:e.page)==null?void 0:a.title)??"·").charAt(0).toUpperCase()}function _Q({status:e,error:n,reload:s,live:r,agentName:a="The agent",timezone:i,paused:l=null}){var Te,De,xt,It,On,as,er,tr,Dn,Ot,Ee,Hr;const o=i??Intl.DateTimeFormat().resolvedOptions().timeZone,c=Mi(),[u,h]=d.useState(0),[f,m]=d.useState(0),p=f>=IQ;d.useEffect(()=>{if(!r||p)return;const Je=window.setInterval(()=>{typeof document<"u"&&document.hidden||h(tt=>tt+1)},RQ);return()=>window.clearInterval(Je)},[r,p]);const x=d.useRef(null);r&&(e!=null&&e.session)&&(x.current=e);const[g,b]=d.useState(null);d.useEffect(()=>{!r&&x.current&&g===null&&b(Date.now()),r&&b(null)},[r]);const[j,v]=d.useState(null),y=d.useRef(null),k=((Te=e==null?void 0:e.page)==null?void 0:Te.id)??null;d.useEffect(()=>{const Je=r&&e?Xj(e):null;if(!Je||typeof fetch!="function"||typeof(URL==null?void 0:URL.createObjectURL)!="function")return;let tt=!1;return(async()=>{try{const Pt=await fetch(Je);if(!Pt.ok||tt)return;const Is=await Pt.blob();if(tt)return;const Qn=URL.createObjectURL(Is);y.current&&URL.revokeObjectURL(y.current),y.current=Qn,v(Qn)}catch{}})(),()=>{tt=!0}},[r,k]),d.useEffect(()=>()=>{y.current&&typeof(URL==null?void 0:URL.revokeObjectURL)=="function"&&URL.revokeObjectURL(y.current)},[]);const N=x.current,w=r?e:N??e,[S,C]=d.useState(!1),[E,$]=d.useState(null),[R,P]=d.useState(null),[O,I]=d.useState(!1),[F,U]=d.useState(null),[L,M]=d.useState(!1),z=hc(),D=ts(PQ),H=d.useRef(null),[K,X]=d.useState(null),W=d.useRef(null),me=w==null?void 0:w.session,fe=async(Je,tt)=>{C(!0),$(null);try{await Je()}catch(Pt){tt==null||tt(),$(Pt instanceof Error?Pt.message:String(Pt))}try{await Promise.race([Promise.resolve(s()),new Promise(Pt=>{window.setTimeout(Pt,MQ)})])}catch{}C(!1)},[oe,B]=d.useState(null),ue=()=>void fe(async()=>{var Pt;U(null),M(!1);const Je=me==null?void 0:me.id;Je&&(W.current=Je);const tt=await T.browserControl("takeover",Je);((Pt=tt.held)==null?void 0:Pt.where)!=="chrome"&&(tt.hand&&tt.session&&(!Je||tt.session.id===Je)?P(tt.session.id):tt.handReason==="browser-offline"?M(!0):U(tt.handMessage??null))}),[Ne,Ke]=d.useState(null),G=()=>{var Pt;const Je=(me==null?void 0:me.id)??null,tt=((Pt=H.current)==null?void 0:Pt.snapshot())??null;tt&&Ke(tt),B(Je),P(null),I(!1)},ae=()=>void fe(async()=>{G(),await T.browserControl("resume",me==null?void 0:me.id)},()=>B(null)),J=()=>void fe(async()=>{var tt;if(!me)return;const Je=((tt=H.current)==null?void 0:tt.snapshot())??null;Je&&Ke(Je),P(null),I(!1),await T.browserFront(me.id)}),xe=()=>void fe(async()=>{G(),await T.browserControl("stop",me==null?void 0:me.id)},()=>B(null)),Ie=()=>void fe(async()=>{me&&(await T.browserPin(me.conversationId,"own"),await T.browserControl("release",me.id),M(!1),U("This conversation uses buddi’s browser now. Send the agent a message and it opens the page there."))}),Y=r&&!!(e!=null&&e.session)&&e.state==="paused"&&e.session.id!==oe;d.useEffect(()=>{var Je;!oe||S||(!r||((Je=e==null?void 0:e.session)==null?void 0:Je.id)!==oe||e.state!=="paused")&&B(null)},[oe,S,e,r]);const te=Y&&((De=e==null?void 0:e.held)==null?void 0:De.where)==="chrome",ie=!te&&R&&((xt=e==null?void 0:e.session)==null?void 0:xt.id)===R&&(Y||S)&&e.session.id!==oe?R:null;d.useEffect(()=>{ie&&Ke(null)},[ie]);const ge=Y?((It=e==null?void 0:e.session)==null?void 0:It.id)??null:null;d.useEffect(()=>{!ge||R===ge||D||S||(e==null?void 0:e.route)==="apps"||te||W.current!==ge&&ue()},[ge,R,D,S]),d.useEffect(()=>{Y||(W.current=null)},[Y]);const[je,Se]=d.useState(!1),[ke,Be]=d.useState(null),rt=()=>{var tt;const Je=(tt=e==null?void 0:e.session)==null?void 0:tt.id;!Je||je||(Se(!0),$(null),Be(null),T.browserCapture(Je).then(Pt=>Be({artifactId:Pt.artifactId,name:Pt.name})).catch(Pt=>$(Pt instanceof Error?Pt.message:String(Pt))).finally(()=>Se(!1)))},[ye,Ue]=d.useState(!1);d.useEffect(()=>{const Je=()=>Ue(!0);return window.addEventListener(Jj,Je),()=>window.removeEventListener(Jj,Je)},[]),d.useEffect(()=>{if(!ye)return;const Je=tt=>{tt.key==="Escape"&&!tt.defaultPrevented&&Ue(!1)};return window.addEventListener("keydown",Je),()=>window.removeEventListener("keydown",Je)},[ye]);const[st,Fe]=d.useState(null),[wt,ot]=d.useState(!1),[tn,$t]=d.useState(null);d.useEffect(()=>{Fe(null),ot(!1),$t(null)},[ie]),d.useEffect(()=>{if(!wt)return;const Je=window.setTimeout(()=>ot(!1),OQ);return()=>window.clearTimeout(Je)},[wt]);const Et=Je=>{Fe(Je),ot(!1)},$n=(Je,tt)=>{var Pt;$(null),(Pt=H.current)!=null&&Pt.nav(Je,tt)&&ot(!0)},nn=Y||!!ie,ce=r&&!!(w!=null&&w.needsOwner),Me=!r&&!l,Ze=jk((On=w==null?void 0:w.page)==null?void 0:On.url)??((as=w==null?void 0:w.page)!=null&&as.appId?Tp(w.page.appId):"the page"),Ct=(w==null?void 0:w.route)==="chrome",mt=da(c),Pe=Ct?`in ${mt} · background tab`:(w==null?void 0:w.route)==="apps"?`in ${Ze}`:"in buddi’s browser",ct=l?"Browsing is paused":((er=w==null?void 0:w.page)==null?void 0:er.title)||Ze,_e=l?`By you at ${Lt(new Date(l.at),o)} · ${l.until?`until ${Lt(new Date(l.until),o)}`:"until you resume it"}`:te?`You have the page · in ${mt} · it’s in front`:nn?`You have the page · ${Ct?`in ${mt}`:Pe}`:Me?`${a} looked at ${Ze} · done${g?` at ${Lt(new Date(g),o)}`:""}`:w?f2(w,c):"Opening the page…",Gt=r?(w?Xj(w,u):null)??Ne:j??Ne,Z=(w==null?void 0:w.route)==="apps",ut=ie?st??((tr=w==null?void 0:w.page)==null?void 0:tr.url):(Dn=w==null?void 0:w.page)==null?void 0:Dn.url,Yn=r&&(wt||!nn&&!!(e!=null&&e.busy)),xn=w||r?t.jsx("button",{type:"button",className:"ui-icon-btn br-enlarge","data-size":"sm","aria-label":ye?"Back to the side":"Enlarge the page",title:ye?"Back to the side (Esc)":"Enlarge the page",onClick:()=>Ue(!ye),children:t.jsx(se,{name:ye?"collapse":"expand"})}):null;return t.jsxs("div",{className:"br-canvas","data-testid":"browser-view","data-live":r?"true":"false","data-enlarged":ye?"true":void 0,...ye?{role:"dialog","aria-modal":!0,"aria-label":"The page, full size"}:{},children:[t.jsxs("header",{className:"br-head",children:[t.jsx("span",{className:"br-tile","aria-hidden":"true",children:l?t.jsx(UQ,{}):Zj(w)}),t.jsxs("span",{className:"br-head-text",children:[t.jsx("span",{className:"br-head-title",children:ct}),t.jsxs("span",{className:"br-head-line",role:"status",children:[r&&!ce&&!nn&&!l?t.jsx("span",{className:"br-live","aria-hidden":"true"}):null,_e]})]}),nn?t.jsxs(ne,{align:"end",children:[te?null:ie?D?t.jsx(A,{size:"sm",variant:O?"accent":"ghost","aria-pressed":O,onClick:()=>I(!O),children:"Type into the page"}):null:t.jsx(A,{size:"sm",variant:"ghost",disabled:S,onClick:ue,children:"Drive it here"}),Ct&&!te?t.jsx(A,{size:"sm",variant:"ghost",disabled:S,title:`For when you are at the computer: the tab comes to the front of ${mt}`,onClick:J,children:"Bring the tab to the front"}):null,t.jsx(A,{size:"sm",variant:"accent",disabled:S,onClick:ae,children:"Give it back"}),xn]}):l?t.jsx(A,{size:"sm",variant:"accent",disabled:S,onClick:()=>void fe(async()=>{await T.browserControl("resume")}),children:"Resume"}):Me||!me?xn?t.jsx(ne,{align:"end",children:xn}):null:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",disabled:S||!(w!=null&&w.enabled),onClick:xe,children:"Stop"}),t.jsx(A,{size:"sm",variant:ce?"accent":void 0,disabled:S||!(w!=null&&w.enabled)||(w==null?void 0:w.state)==="paused",onClick:ue,children:"Take over"}),xn]})]}),nn?t.jsx("p",{className:"br-hand-said",role:"status",children:te?`Finish in ${Hj(c)}, then give it back.`:ie?`Nothing you type here is kept. ${a} carries on when you give it back.${D?" Tap Type into the page to bring up your keyboard.":""}`:`${a} waits. It carries on when you give the page back.`}):null,E||n?t.jsx(Q,{tone:"critical",role:"alert",children:E??n}):null,F?t.jsx(Q,{tone:"warning",role:"status",children:F}):null,ke?t.jsx(Q,{tone:"good",role:"status",action:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>Be(null),children:"Dismiss"}),t.jsx(A,{size:"sm",variant:"accent",onClick:()=>{window.location.hash=oo(ke.artifactId)},children:"Open in Files"})]}),children:`Saved to Files as ${ke.name}.`}):null,L?t.jsx(Q,{tone:"warning",role:"status",title:`${$p(c)} isn’t connected.`,action:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",disabled:S,onClick:Ie,children:"Use buddi’s browser"}),t.jsx(A,{size:"sm",variant:"accent",disabled:S,onClick:ue,children:"Try again"})]}),children:`Open ${Hj(c)} on ${z} and try again, or let this conversation use buddi’s own browser.`}):null,K?t.jsx(TQ,{login:K,onDone:()=>X(null)}):null,l?t.jsx("div",{className:"br-frame br-frame-empty",children:t.jsx("p",{className:"ui-empty",children:`No page is open. Agents look again when you resume${l.until?`, or by themselves at ${Lt(new Date(l.until),o)}`:""}.`})}):t.jsxs("div",{className:"br-window","data-state":ie?"yours":ce?"waiting":Me?"done":"live",children:[t.jsx(zQ,{app:Z?Ze:null,title:((Ot=w==null?void 0:w.page)==null?void 0:Ot.title)||void 0,address:ut,held:!!ie,level:ie&&tn?tn==="sharp"?"sharp":"fast":null,loading:Yn,onCapture:r&&(e!=null&&e.session)&&!Z?rt:void 0,capturing:je,onNav:$n,onRefused:Je=>$(Je)}),ie?t.jsx("div",{className:"br-frame","data-state":"yours",children:t.jsx(SY,{ref:H,sessionId:ie,csrf:Nl(),onGiveBack:ae,bare:!0,typing:O,onTyping:I,onLocation:Et,onLoginSeen:X,onLevel:$t})}):t.jsx("div",{className:"br-frame","data-state":ce?"waiting":Me?"done":"live",children:Gt?t.jsx("img",{className:"br-shot",src:Gt,alt:`What ${a} sees: ${((Ee=w==null?void 0:w.page)==null?void 0:Ee.title)||Ze}`,onError:()=>m(Je=>Je+1),onLoad:()=>m(0)},r?((Hr=w==null?void 0:w.page)==null?void 0:Hr.id)??"live":"kept"):t.jsx("p",{className:"ui-empty br-frame-wait",children:r?"The page appears here as soon as it opens.":"No picture of this page was kept."})})]}),Me?t.jsx("p",{className:"br-ended",role:"status",children:"The page is closed. This is the last thing it showed."}):r&&p?t.jsx("p",{className:"br-ended",role:"status",children:"The newest picture didn’t load. Showing the one before it."}):null]})}function zQ({app:e,title:n,address:s,held:r,level:a=null,loading:i,onCapture:l,capturing:o=!1,onNav:c,onRefused:u}){const[h,f]=d.useState(null),[m,p]=d.useState(!1);d.useEffect(()=>{f(null)},[s,r]),d.useEffect(()=>{if(!m)return;const v=window.setTimeout(()=>p(!1),1500);return()=>window.clearTimeout(v)},[m]);const x=FQ(s),g=()=>{var v;s&&((v=navigator.clipboard)==null||v.writeText(s).then(()=>p(!0),()=>{}))},b=v=>{var k,N;if(v.preventDefault(),h===null)return;const y=LQ(h);if(!y){u("That isn’t a web address. Type one like amazon.com/orders.");return}f(null),c("navigate",y),(N=(k=document.activeElement)==null?void 0:k.blur)==null||N.call(k)},j=v=>{v.key==="Escape"&&(v.preventDefault(),f(null),v.currentTarget.blur())};return t.jsxs("div",{className:"br-window-bar",role:"toolbar","aria-label":"Page controls",children:[e?t.jsx("span",{className:"br-window-app",children:e}):t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"br-window-nav",children:[t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":"Back",title:"Back",disabled:!r,onClick:()=>c("back"),children:t.jsx(se,{name:"back"})}),t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":"Forward",title:"Forward",disabled:!r,onClick:()=>c("forward"),children:t.jsx(se,{name:"forward"})}),t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":"Reload",title:"Reload",disabled:!r,onClick:()=>c("reload"),children:t.jsx(se,{name:"reload"})})]}),r?t.jsxs("form",{className:"br-address","data-editable":"true",onSubmit:b,children:[t.jsx(T1,{secure:(x==null?void 0:x.secure)??!1}),t.jsx("input",{className:"br-address-input","aria-label":"Address",value:h??s??"",spellCheck:!1,autoCapitalize:"off",autoCorrect:"off",onFocus:v=>v.currentTarget.select(),onChange:v=>f(v.target.value),onKeyDown:j}),t.jsx("button",{type:"button",className:"br-address-copy","aria-label":m?"Copied":"Copy the address",title:m?"Copied":"Copy the address",disabled:!s,onClick:g,children:t.jsx(se,{name:m?"check":"copy",size:14})})]}):t.jsxs("button",{type:"button",className:"br-address","aria-label":m?"Address copied":"Copy the address",title:m?"Copied":"Copy the address",disabled:!s,onClick:g,children:[t.jsx(T1,{secure:(x==null?void 0:x.secure)??!1}),t.jsx("span",{className:"br-address-text",children:x?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"br-address-host",children:x.host}),t.jsx("span",{className:"br-address-rest",children:x.rest})]}):t.jsx("span",{className:"br-address-rest",children:"No address yet"})}),m?t.jsx("span",{className:"br-address-said","aria-hidden":"true",children:"Copied"}):null]})]}),n?t.jsx("span",{className:"br-window-title",title:n,children:n}):null,a?t.jsx("span",{className:"br-window-level","data-testid":"hand-level",title:a==="sharp"?"The picture is at full quality":"The picture is kept small so it stays live on this link",children:a}):null,l?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":"Capture the page to Files",title:"Capture the page to Files",disabled:o,onClick:l,children:t.jsx(se,{name:"camera"})}):null,i?t.jsx("span",{className:"br-window-progress",role:"progressbar","aria-label":"Loading"}):null]})}function T1({secure:e}){return t.jsx("span",{className:"br-address-mark","aria-hidden":"true",children:t.jsx(se,{name:e?"lock":"globe",size:12})})}function UQ(){return t.jsxs("svg",{viewBox:"0 0 20 20",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","aria-hidden":"true",children:[t.jsx("circle",{cx:"10",cy:"10",r:"7.2"}),t.jsx("path",{d:"M2.8 10h14.4M10 2.8c2.2 2.3 2.2 12.1 0 14.4M10 2.8c-2.2 2.3-2.2 12.1 0 14.4"})]})}function BQ({status:e,timezone:n,reload:s}){var o;const r=n??Intl.DateTimeFormat().resolvedOptions().timeZone,a=((o=e==null?void 0:e.settings)==null?void 0:o.stopExpiryMinutes)??60,i=Lt(new Date(Date.now()+(a||60)*6e4),r),l=c=>void c().catch(()=>{}).finally(s);return t.jsx(rs,{label:"More for this page",items:[{heading:"Stop agents’ browsing"},{label:"For an hour",hint:`Every agent, every conversation; back on at ${i}`,onSelect:()=>l(()=>T.browserControl("stop"))},{label:"Until I say",hint:"Until you press Resume",onSelect:()=>l(()=>T.browserControl("stop",void 0,{forever:!0}))},"separator",e!=null&&e.settings&&!e.settings.showWindow?{label:"Show the window",hint:"A window on this machine, for sites that refuse a hidden browser",onSelect:()=>l(()=>T.browserSettings({showWindow:!0}))}:null,{label:"Open the full page view",hint:"This page over the whole window; Esc comes back",onSelect:()=>{window.dispatchEvent(new Event(Jj))}}]})}function rf(e){const n=e==null?void 0:e.request;return n&&n.kind==="secret.request"&&!n.expand?n:null}function R1(e){const n=e==null?void 0:e.request;return n&&n.kind==="secret.request"&&n.expand?n:null}function WQ(e){const n=e.split(".").filter(Boolean);if(n.length<2)return e;const s=n.length>=3&&/^(co|com|net|org|gov|ac|edu)$/.test(n[n.length-2])?n[n.length-3]:n[n.length-2];return s.charAt(0).toUpperCase()+s.slice(1)}function ax(e,n){const s=n.trim();return`${WQ(e)} ${s.charAt(0).toLowerCase()}${s.slice(1)}`}function HQ(e){return e.length<3?e.join(" and "):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}const T2=e=>e.kind!=="username";function af({value:e,onChange:n,label:s,autoFocus:r,disabled:a}){const[i,l]=d.useState(!1);return t.jsxs("span",{className:"ss-reveal",children:[t.jsx("input",{type:i?"text":"password",autoComplete:"new-password",spellCheck:!1,value:e,onChange:o=>n(o.target.value),"aria-label":s,autoFocus:r,disabled:a}),t.jsx("button",{type:"button",className:"ss-reveal-btn","aria-pressed":i,onClick:()=>l(!i),children:i?"Hide":"Show"})]})}function R2(){return t.jsx(Q,{tone:"critical",title:"Nothing was saved: the vault is locked.",children:"The keychain on this Mac is locked, so buddi can’t store anything. Unlock this Mac, then press Save and fill again. What you typed is still here."})}function KQ(e,n){return[...e.fields.map((s,r)=>({label:s.label,kind:s.kind,value:n.values[r]??""})),...n.totp?[{label:"Code",kind:"totp",value:n.seed}]:[],...n.extra.filter(s=>s.label.trim()!=="").map(s=>({label:s.label.trim(),kind:"other",value:s.value}))]}function Nk({question:e,card:n,phone:s,container:r,page:a,disabled:i,onSettled:l,onChoice:o}){var S;const[c,u]=d.useState({values:n.fields.map(()=>""),totp:!1,seed:"",extra:[]}),[h,f]=d.useState(!1),[m,p]=d.useState(null),[x,g]=d.useState(!1),[b,j]=d.useState(null),v=n.agentName??"The agent",y=C=>{p(C),j(null),T.saveSecretSet({questionId:e.id,then:C,fields:KQ(n,c)}).then(()=>l()).catch(E=>{var $;if(p(null),E instanceof pe&&(($=E.detail)==null?void 0:$.locked)===!0){g(!0);return}g(!1),j(E instanceof pe?E.message:String(E))})},k=()=>{p("self"),j(null),T.declineSecretRequest(e.id,"sign-in-myself").then(()=>l()).catch(C=>{p(null),j(C instanceof pe?C.message:String(C))})},N=i||m!==null,w=C=>E=>u($=>({...$,values:$.values.map((R,P)=>P===C?E:R)}));return t.jsxs(t.Fragment,{children:[t.jsxs("section",{className:"wb-question br-ask ss-card","data-phone":s?"true":void 0,"aria-label":`No saved sign-in for ${n.site}`,"data-testid":"secret-request",children:[t.jsxs("div",{className:"br-ask-head",children:[t.jsx("span",{className:"wb-question-kicker",children:"Needs you"}),t.jsxs("strong",{children:["No saved sign-in for ",n.site]}),t.jsxs("span",{className:"br-ask-line",children:[v," stopped at the sign-in form. Type these once; buddi keeps them and fills them in, and ",v," carries on."]})]}),t.jsxs("div",{className:"wb-dock-section ss-inline",children:[t.jsx("div",{className:"ss-inline-fields",children:n.fields.map((C,E)=>t.jsx(le,{label:C.label,children:T2(C)?t.jsx(af,{value:c.values[E]??"",onChange:w(E),label:C.label,disabled:N}):t.jsx("input",{value:c.values[E]??"",onChange:$=>w(E)($.target.value),autoComplete:"off",spellCheck:!1,autoFocus:!s&&!x&&E===0,disabled:N})},C.label))}),t.jsxs("span",{className:"ss-place-row",children:[t.jsxs("span",{className:"ss-site-chip",children:[t.jsx(se,{name:"globe",size:14}),n.site]}),t.jsxs("span",{className:"ss-place-text",children:["only on this site · ",v," never sees them"]})]}),(S=n.warnings)==null?void 0:S.map(C=>t.jsx("p",{className:"ss-warning",role:"note",children:C},C)),x&&!h?t.jsx(R2,{}):null,t.jsx(re,{message:h?null:b})]}),t.jsxs("div",{className:"wb-dock-section",children:[t.jsxs(ne,{align:"end",children:[(n.choices??[]).map(C=>{const E=e.options.find($=>$.label===C);return o&&E?t.jsx(A,{size:"sm",variant:"ghost",disabled:N,title:E.hint??void 0,onClick:()=>o(C,E.id),children:C},C):null}),t.jsx(A,{size:"sm",variant:"ghost",disabled:N,onClick:k,children:m==="self"?"Handing it over…":"I’ll sign in myself"}),t.jsx(A,{size:"sm",disabled:N,onClick:()=>f(!0),children:"More options"}),t.jsx(A,{size:"sm",variant:"accent",disabled:N,onClick:()=>y("fill"),children:m==="fill"?"Saving…":"Save and fill"})]}),t.jsxs("p",{className:"ss-save-only",children:["Rather sign in yourself this time? ",t.jsx("button",{type:"button",className:"wb-link",disabled:N,onClick:()=>y("save"),children:"Save only"})," keeps them for next time and hands you the page."]})]})]}),h?t.jsx(GQ,{card:n,typed:c,setTyped:u,phone:s,container:s?null:r,page:a,locked:x,error:b,busy:m,disabled:N,onClose:()=>f(!1),onSave:y}):null]})}function VQ({site:e}){return t.jsxs("div",{className:"ss-place",children:[t.jsx("span",{className:"ui-field-label",children:"Where they go"}),t.jsxs("span",{className:"ss-place-row",children:[t.jsxs("span",{className:"ss-site-chip",children:[t.jsx(se,{name:"globe",size:14}),e]}),t.jsx("span",{className:"ss-place-text",children:"only on this site"})]}),t.jsx("span",{className:"ui-field-hint",children:"Agents can use them only here. Anywhere else, buddi holds them back and the row in Keys and secrets says so. Filling asks you the first time, then not again."})]})}function GQ({card:e,typed:n,setTyped:s,phone:r,container:a,page:i,locked:l,error:o,busy:c,disabled:u,onClose:h,onSave:f}){var v,y,k;const[m,p]=d.useState(!1),x=e.agentName??"The agent",g=[...e.fields.map(N=>ax(e.site,N.label)),...n.totp?[ax(e.site,"Code")]:[],...n.extra.filter(N=>N.label.trim()!=="").map(N=>ax(e.site,N.label))],b=i?Xj(i):null,j=((v=i==null?void 0:i.page)==null?void 0:v.title)??((y=e.page)==null?void 0:y.title)??e.site;return t.jsxs(Qe,{title:`Sign-in for ${e.site}`,onClose:h,container:a,children:[t.jsxs("div",{className:"ss-sheet",children:[r?t.jsxs("div",{className:"ss-peek",children:[t.jsxs("div",{className:"ss-peek-head",children:[t.jsx("span",{className:"br-tile","aria-hidden":"true",children:Zj(i)==="·"?e.site.charAt(0).toUpperCase():Zj(i)}),t.jsxs("span",{className:"br-head-text",children:[t.jsx("span",{className:"br-head-title",children:j}),t.jsxs("span",{className:"br-head-line",children:["The page ",x," has open"]})]}),t.jsx(A,{size:"sm",variant:"ghost","aria-expanded":m,onClick:()=>p(!m),children:m?"Hide the page":"Show the page"})]}),m?t.jsx("div",{className:"br-frame ss-peek-frame","data-state":"waiting",children:b?t.jsx("img",{src:b,alt:`The page ${x} has open`}):t.jsx("p",{className:"br-frame-wait",children:"No picture of the page yet."})}):null]}):null,t.jsxs("p",{className:"ss-note",children:[x," saw these fields on the page. Type them once; buddi keeps them and fills them in for you here."]}),t.jsxs("div",{className:"ss-form",children:[e.fields.map((N,w)=>t.jsx(le,{label:N.label,children:T2(N)?t.jsx(af,{value:n.values[w]??"",onChange:S=>s(C=>({...C,values:C.values.map((E,$)=>$===w?S:E)})),label:N.label,disabled:u}):t.jsx("input",{value:n.values[w]??"",onChange:S=>{const C=S.target.value;s(E=>({...E,values:E.values.map(($,R)=>R===w?C:$)}))},autoComplete:"off",spellCheck:!1,autoFocus:!r&&!l&&w===0,disabled:u})},N.label)),n.totp?t.jsxs("div",{className:"ss-extra",children:[t.jsx(le,{label:"Authenticator (TOTP seed)",hint:"The setup key the site showed when you turned on two-step sign-in. buddi fills the current code, never the seed.",children:t.jsx(af,{value:n.seed,onChange:N=>s(w=>({...w,seed:N})),label:"Authenticator (TOTP seed)",disabled:u})}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>s(N=>({...N,totp:!1,seed:""})),children:"Remove"})]}):null,n.extra.map((N,w)=>t.jsxs("div",{className:"ss-extra ss-extra-pair",children:[t.jsx(le,{label:"Label",children:t.jsx("input",{value:N.label,placeholder:"Security answer",onChange:S=>{const C=S.target.value;s(E=>({...E,extra:E.extra.map(($,R)=>R===w?{...$,label:C}:$)}))},disabled:u})}),t.jsx(le,{label:"Value",children:t.jsx(af,{value:N.value,onChange:S=>s(C=>({...C,extra:C.extra.map((E,$)=>$===w?{...E,value:S}:E)})),label:"Value",disabled:u})}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>s(S=>({...S,extra:S.extra.filter((C,E)=>E!==w)})),children:"Remove"})]},w)),t.jsxs(ne,{children:[n.totp?null:t.jsxs(A,{size:"sm",variant:"ghost",onClick:()=>s(N=>({...N,totp:!0})),children:[t.jsx(se,{name:"plus",size:12})," Add a code field"]}),t.jsxs(A,{size:"sm",variant:"ghost",onClick:()=>s(N=>({...N,extra:[...N.extra,{label:"",value:""}]})),children:[t.jsx(se,{name:"plus",size:12})," Add another field"]})]})]}),t.jsxs("div",{className:"ss-notes",children:[t.jsx(VQ,{site:e.site}),(k=e.warnings)==null?void 0:k.map(N=>t.jsx("p",{className:"ss-warning",role:"note",children:N},N)),t.jsxs("p",{className:"ss-note",children:["Kept in the vault and never shown again, not even here. ",x," never sees them: buddi types them into the page itself."]}),t.jsxs("p",{className:"ss-note",children:["Saved as ",HQ(g)," in Keys and secrets."]})]})]}),t.jsxs("div",{className:"ss-sheet-foot",children:[l?t.jsx(R2,{}):null,t.jsx(re,{message:o}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:h,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:u,onClick:()=>f("fill"),children:c==="fill"?"Saving…":"Save and fill"})]}),t.jsxs("p",{className:"ss-save-only",children:["Rather sign in yourself this time? ",t.jsx("button",{type:"button",className:"wb-link",disabled:u,onClick:()=>f("save"),children:"Save only"})," keeps them for next time and hands you the page."]})]})]})}function qQ(e){var s;const n=((s=(e??"").split(/\s[·|–—-]\s/)[0])==null?void 0:s.trim())??"";return n&&n.length<=40?`${n} `:""}function I1(e){if(!e||e.tool!=="secrets.use_set")return null;const n=e.canonicalArgs;if(!n||typeof n.site!="string"||!Array.isArray(n.items))return null;const s=n.items.filter(r=>typeof r.secret=="string").map(r=>({secret:String(r.secret),...typeof r.field=="string"?{field:r.field}:{}}));return s.length>0?{site:n.site,items:s}:null}function YQ({set:e,agentName:n,pageTitle:s,phone:r,busy:a,error:i,onFill:l,onSelf:o}){return t.jsxs("section",{className:"wb-question ss-card ss-saved","data-phone":r?"true":void 0,"aria-label":"Approval needed","data-testid":"secret-set-dock",children:[t.jsxs("div",{className:"br-ask-head",children:[t.jsx("span",{className:"wb-question-kicker",children:"Needs your OK"}),t.jsxs("strong",{children:[t.jsx("span",{className:"ss-saved-mark","aria-hidden":"true",children:"✓"}),"Saved ",e.items.length," secret",e.items.length===1?"":"s"," for ",e.site]})]}),t.jsxs("div",{className:"wb-dock-section",children:[t.jsx("ul",{className:"ss-set","aria-label":"What will be filled",children:e.items.map(c=>t.jsxs("li",{children:[t.jsx(se,{name:"key",size:14}),t.jsx("span",{className:"ss-set-name",children:c.secret}),c.field?t.jsxs("span",{className:"ss-set-into",children:["into ",c.field]}):null]},c.secret))}),t.jsxs("div",{className:"wb-dock-where",children:["On ",e.site,", the ",qQ(s),"page ",n," has open. ",n," never sees them; buddi types them in."]}),t.jsx(re,{message:i})]}),t.jsx("div",{className:"wb-dock-section",children:t.jsxs(ne,{align:"end",children:[t.jsx("a",{className:"wb-link ss-quiet-link",href:We("secrets"),children:"Edit in Keys and secrets"}),t.jsx(ft,{}),t.jsx(A,{size:"sm",variant:"ghost",disabled:a!==null,onClick:o,children:"I’ll sign in myself"}),t.jsx(A,{size:"sm",variant:"accent",disabled:a!==null,onClick:l,children:a==="approve"?"Filling…":"Fill them in"})]})})]})}const I2="approval-dock";function QQ(){var n;const e=document.getElementById(I2);e&&((n=e.scrollIntoView)==null||n.call(e,{block:"nearest"}),e.focus())}const JQ=["workspace","cwd","workdir","root"];function P2({approvals:e,timezone:n,now:s,version:r,onDecided:a,onSay:i,onOpenFull:l,phone:o,onSignInMyself:c,pageTitle:u,onSecretSet:h}){const[f,m]=d.useState([]),p=e.filter(b=>!f.includes(b.approvalId)),x=p[0];if(!x)return null;const g=b=>m(j=>j.includes(b)?j:[...j,b]);return t.jsx(XQ,{item:x,count:p.length,timezone:n,now:s,version:r,onSettled:b=>{g(x.approvalId),b&&a(b)},onSay:i,onOpenFull:()=>l(x.toolUseId),phone:o===!0,...c?{onSignInMyself:c}:{},...u?{pageTitle:u}:{},...h?{onSecretSet:h}:{}},x.approvalId)}function XQ({item:e,count:n,timezone:s,now:r,version:a,onSettled:i,onSay:l,onOpenFull:o,phone:c=!1,onSignInMyself:u,pageTitle:h,onSecretSet:f}){var F,U,L;const[m,p]=d.useState(null),[x,g]=d.useState(null),[b,j]=d.useState(null),[v,y]=d.useState("");d.useEffect(()=>{let M=!1;return T.approval(e.approvalId).then(z=>{M||(p(z),z.state!=="pending"&&i(z))}).catch(z=>{M||g(z instanceof pe?z.message:String(z))}),()=>{M=!0}},[e.approvalId,a]);const k=m!==null&&m.state==="pending"&&Date.parse(m.expiresAt)<=r;d.useEffect(()=>{k&&m&&i({...m,state:"expired"})},[k]);const{values:N,controls:w}=_b(m==null?void 0:m.choices),S=I1(m)!==null;d.useEffect(()=>(f==null||f(S),()=>f==null?void 0:f(!1)),[S]);const C=(M,z)=>{const D=v.trim();j(M),g(null),(N&&M==="approve"?T.decide(e.approvalId,M,z,N):T.decide(e.approvalId,M,z)).then(H=>{i(H.action),D&&l(D)}).catch(H=>{g(H instanceof pe?H.message:String(H)),j(null)})},E=uY(m);if(m&&E){const M=Wu(m.agentId)?Bu:m.agentId?m.agentId.charAt(0).toUpperCase()+m.agentId.slice(1):"An agent";return t.jsx(hY,{action:m,run:E,agentName:M,count:n,busy:b,error:x,onDecide:z=>C(z)})}const $=I1(m);if(m&&$){const M=Wu(m.agentId)?Bu:m.agentId?m.agentId.charAt(0).toUpperCase()+m.agentId.slice(1):"The agent";return t.jsx(YQ,{set:$,agentName:M,...h?{pageTitle:h}:{},phone:c,busy:b,error:x,onFill:()=>C("approve"),onSelf:()=>{C("reject"),u==null||u()}})}const R=b!==null||m===null||m.state!=="pending",P=((F=m==null?void 0:m.permissionScopes)==null?void 0:F.includes("always"))??!1,O=m?uk(m.tool,m.canonicalArgs)??eJ(m.preview):null,I=m?ZQ(m):null;return t.jsxs("section",{id:I2,tabIndex:-1,className:"wb-question","data-kind":"approval","aria-label":"Approval needed","data-testid":"approval-dock",children:[t.jsxs("div",{className:"wb-question-head",children:[t.jsx("span",{className:"wb-question-kicker",children:"Needs your OK"}),n>1?t.jsxs("span",{className:"wb-dock-count","data-testid":"approval-dock-count",children:["1 of ",n]}):null,t.jsx("strong",{children:m?jl(m.tool):"Loading the request…"}),e.askedBy?t.jsx("span",{className:"wb-dock-asker","data-testid":"approval-dock-asker",children:e.askedBy}):null]}),O||I?t.jsxs("div",{className:"wb-dock-section wb-dock-subject",children:[O?t.jsx("code",{className:"wb-dock-gist",children:O}):null,I?t.jsxs("span",{className:"wb-dock-where",children:["in ",t.jsx("span",{className:"mono",children:I})]}):null]}):null,w?t.jsx("div",{className:"wb-dock-section",children:w}):null,t.jsx(re,{message:x}),t.jsx("div",{className:"wb-dock-section",children:t.jsx("input",{className:"wb-dock-instead",value:v,onChange:M=>y(M.target.value),onKeyDown:M=>{M.key==="Enter"&&M.preventDefault()},placeholder:"Tell the agent what to do instead (optional)","aria-label":"Tell the agent what to do instead (optional)",disabled:b!==null})}),t.jsxs("div",{className:"wb-dock-section wb-dock-actions",children:[t.jsxs("span",{className:"wb-dock-meta",children:[m?t.jsxs(t.Fragment,{children:["Expires ",Nt(m.expiresAt,s)," · "]}):null,t.jsx("button",{type:"button",className:"wb-link",onClick:o,children:"See the full request on the Canvas"})]}),t.jsx(A,{variant:"ghost",size:"sm",disabled:R,onClick:()=>C("reject"),children:b==="reject"?"Rejecting…":((U=m==null?void 0:m.answers)==null?void 0:U.reject)??"Reject"}),P?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",size:"sm",disabled:R,onClick:()=>C("approve","conversation"),children:"Auto: this conversation"}),t.jsx(A,{size:"sm",disabled:R,onClick:()=>C("approve","always"),children:"Always: this agent"})]}):null,t.jsx(A,{variant:"good",size:"sm",disabled:R,onClick:()=>C("approve"),children:b==="approve"?"Approving…":((L=m==null?void 0:m.answers)==null?void 0:L.approve)??(P?"Allow once":"Approve")})]})]})}function ZQ(e){for(const n of[e.canonicalArgs,e.envelope])if(!(n===null||typeof n!="object"||Array.isArray(n)))for(const s of JQ){const r=n[s];if(typeof r=="string"&&r.trim()!=="")return r.trim()}return null}function eJ(e){const n=(e??"").split(`
|
|
121
|
+
`).map(s=>s.trim()).find(Boolean);return n?n.length>160?`${n.slice(0,157)}…`:n:null}const tJ=2e3;function nJ({conversationId:e,agentId:n,runId:s=null,result:r=null,waiting:a=null,agents:i=[]}){const l=r!==null,[o,c]=d.useState(l),u=!o||a!==null,{data:h,error:f}=ve(()=>nt.conversation(e),[e,o,(a==null?void 0:a.approvalId)??null],u?tJ:void 0),m=(h==null?void 0:h.runs)??[],p=s===null?null:m.find(k=>k.runId===s)??null,x=l||a===null&&(s!==null?p!==null&&p.finishedAt!==null:m.length>0&&m.every(k=>k.finishedAt!==null));d.useEffect(()=>{x&&c(!0)},[x]);const g=r?r.ok?"done":"failed":a!=null&&a.approvalId?"waiting":x?"done":"working",b=i.find(k=>k.id===n)??null,j=(b==null?void 0:b.name)??(h==null?void 0:h.agentId)??n,v=(h==null?void 0:h.messages)??[],y=(r==null?void 0:r.text)??sJ(v);return t.jsxs("div",{className:"wb-delegate","data-testid":"delegate-view","data-status":g,children:[t.jsxs("header",{className:"wb-delegate-head",children:[t.jsx(yn,{agents:i,id:n}),t.jsxs("div",{className:"wb-delegate-who",children:[t.jsx("strong",{children:j}),t.jsx("span",{className:"wb-delegate-status","data-status":g,role:"status",children:g==="working"?t.jsxs(t.Fragment,{children:["Working",t.jsxs("span",{className:"wb-dots","aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]})]}):g==="waiting"?"Waiting for your approval":g==="failed"?"Failed":"Done"})]})]}),f?t.jsx("p",{className:"muted",children:f}):null,t.jsx("div",{className:"wb-delegate-work",children:v.map((k,N)=>t.jsx("div",{className:"wb-delegate-turn",children:(k.blocks??[]).map((w,S)=>{if(w.type==="thinking")return w.text.trim()===""?null:t.jsx(Bj,{text:w.text},S);if(w.type==="tool_use"){const C=aJ(rJ(v,w.id));return t.jsx(Wj,{label:jl(w.name),tool:w.name,ok:C.ok,running:C.running,waiting:C.waiting,status:C.status,gist:uk(w.name,w.input),opens:!1,onOpen:()=>{}},S)}return null})},k.id??N))}),y?t.jsx("div",{className:"wb-delegate-answer","data-testid":"delegate-answer",children:t.jsx(gr,{text:y})}):g==="working"||g==="waiting"?t.jsxs("p",{className:"muted",children:[j," has not answered yet."]}):null,r!=null&&r.files&&r.files.length>0?t.jsx("div",{className:"wb-msg-files",role:"list","aria-label":`Files ${j} made`,"data-testid":"delegate-files",children:r.files.map(k=>t.jsx("a",{role:"listitem",href:ca(k.artifactId),download:!0,children:t.jsx(Nd,{name:k.filename??"Untitled file",mime:k.mime,sizeBytes:k.sizeBytes,thumbnail:Pb(k.mime)?Lr(k.artifactId):null})},k.artifactId))}):null,t.jsxs("div",{className:"wb-delegate-actions",children:[g==="waiting"?t.jsx(A,{variant:"accent",onClick:()=>QQ(),"data-testid":"delegate-to-approval",children:"Go to the approval"}):null,t.jsx("a",{className:"ui-btn",href:ht(n||(h==null?void 0:h.agentId)||"",e),children:"Open this conversation"})]})]})}function sJ(e){for(let n=e.length-1;n>=0;n-=1){const s=e[n];if(s.role!=="assistant")continue;const r=(s.blocks??[]).filter(a=>a.type==="text").map(a=>a.text.trim()).filter(a=>a!=="").join(`
|
|
122
|
+
|
|
123
|
+
`);if(r!=="")return r}return null}function rJ(e,n){for(const s of e)for(const r of s.blocks??[])if(r.type==="tool_result"&&r.toolUseId===n)return r;return null}function aJ(e){var s;if(e===null)return{running:!0,ok:null,waiting:!1,status:void 0};const n=(s=e.approval)==null?void 0:s.state;return n==="pending"?{running:!1,ok:null,waiting:!0,status:"waiting approval"}:n==="approved"||n==="executing"?{running:!0,ok:null,waiting:!1,status:"running"}:n==="succeeded"?{running:!1,ok:!0,waiting:!1,status:void 0}:n?{running:!1,ok:!1,waiting:!1,status:n}:{running:!1,ok:e.ok,waiting:!1,status:void 0}}const P1=1024*1024;function iJ({files:e,agentId:n,root:s,revision:r}){const[a,i]=d.useState({kind:"dir",path:""});return d.useEffect(()=>i({kind:"dir",path:""}),[e.plugin,n]),t.jsx("div",{className:"wb-files","data-testid":"files-view",children:a.kind==="dir"?t.jsx(lJ,{files:e,agentId:n,root:s,path:a.path,revision:r,go:i}):t.jsx(oJ,{files:e,agentId:n,root:s,path:a.path,revision:r,go:i})})}function M2({root:e,path:n,go:s}){const r=n===""?[]:n.split("/"),a=[{label:e,path:""},...r.map((i,l)=>({label:i,path:r.slice(0,l+1).join("/")}))];return t.jsx("nav",{className:"wb-files-crumbs","aria-label":"Where you are in the workspace",children:a.map((i,l)=>{const o=l===a.length-1;return t.jsxs("span",{className:"wb-files-crumb",children:[l>0?t.jsx("span",{className:"wb-files-sep","aria-hidden":"true",children:"/"}):null,o?t.jsx("span",{className:"wb-files-here mono","aria-current":"location",children:i.label}):t.jsx("button",{type:"button",className:"wb-files-step mono",onClick:()=>s({kind:"dir",path:i.path}),children:i.label})]},i.path)})})}function lJ({files:e,agentId:n,root:s,path:r,revision:a,go:i}){const[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(!1),[m,p]=d.useState(null);d.useEffect(()=>{let b=!1;return u(null),T.pageQuery(e.plugin,e.list,{agent:n,...r?{path:r}:{}}).then(j=>{b||o(j.data)}).catch(j=>{b||u(j instanceof Error?j.message:String(j))}),()=>{b=!0}},[e.plugin,e.list,n,r,a]),d.useEffect(()=>p(null),[r]);const x=async()=>{f(!0),p(null);try{const b=await fetch(T.pageFileUrl(e.plugin,e.archive,{agent:n,...r?{path:r}:{}}),{credentials:"same-origin"});if(!b.ok){const k=await b.json().catch(()=>null);p((k==null?void 0:k.error)??"The archive could not be made.");return}const j=await b.blob(),v=URL.createObjectURL(j),y=document.createElement("a");y.href=v,y.download=`${r===""?s:r.split("/").at(-1)}.zip`,y.click(),window.setTimeout(()=>URL.revokeObjectURL(v),1e4)}catch{p("The archive could not be made.")}finally{f(!1)}},g=l&&l.path===r?l.entries:null;return t.jsxs(t.Fragment,{children:[t.jsxs(ne,{children:[t.jsx(M2,{root:s,path:r,go:i}),t.jsx(ft,{}),t.jsx(A,{size:"sm",onClick:()=>void x(),disabled:h||g===null||g.length===0,children:h?"Packing…":"Download as archive"})]}),m?t.jsx(Q,{tone:"warning",role:"alert",children:m}):null,c?t.jsx(Q,{tone:"critical",role:"alert",children:c}):null,g===null?c?null:t.jsx(Ce,{children:"Reading the folder…"}):g.length===0?t.jsx(Ce,{children:r===""?t.jsxs(t.Fragment,{children:["Nothing in this workspace yet. To hand the agent a file, add it to the ",t.jsx("a",{href:La,children:"Files library"})," and mention it here."]}):"This folder is empty."}):t.jsx(yt,{children:g.map(b=>t.jsx(gt,{href:"#",onClick:()=>i({kind:b.kind,path:b.path}),lead:t.jsx(uJ,{kind:b.kind}),title:t.jsxs("span",{className:"mono",children:[b.name,b.kind==="dir"?"/":""]}),side:b.kind==="file"?qn(b.bytes):void 0},b.path))}),l&&l.path===r&&(l.skipped>0||l.truncated)?t.jsxs("p",{className:"wb-files-note",children:[l.truncated?`Only the first ${l.entries.length} entries are shown. `:"",l.skipped>0?`${l.skipped} ${l.skipped===1?"entry is":"entries are"} not shown: symbolic links and protected paths are never read.`:""]}):null]})}function oJ({files:e,agentId:n,root:s,path:r,revision:a,go:i}){const[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(!1);d.useEffect(()=>{let j=!1;return u(null),T.pageQuery(e.plugin,e.stat,{agent:n,path:r}).then(v=>{j||o(v.data)}).catch(v=>{j||u(v instanceof Error?v.message:String(v))}),()=>{j=!0}},[e.plugin,e.stat,n,r,a]);const m=l&&l.path===r?l:null,p=m?`${m.bytes}-${Math.round(m.mtimeMs)}`:"",x=m?T.pageFileUrl(e.plugin,e.read,{agent:n,path:r,v:p}):"",g=T.pageFileUrl(e.plugin,e.read,{agent:n,path:r,download:"1"}),b=(m==null?void 0:m.type)==="text"&&m.bytes<=P1;return t.jsxs(t.Fragment,{children:[t.jsxs(ne,{children:[t.jsx(M2,{root:s,path:r,go:i}),t.jsx(ft,{}),b?t.jsx(A,{size:"sm","aria-pressed":h,onClick:()=>f(j=>!j),children:"Wrap"}):null,t.jsx(it,{size:"sm",href:g,download:(m==null?void 0:m.name)??r.split("/").at(-1),children:"Download"})]}),c?t.jsx(Q,{tone:"critical",role:"alert",children:c}):null,m===null?c?null:t.jsx(Ce,{children:"Reading the file…"}):m.type==="image"?t.jsx("figure",{className:"wb-files-picture",children:t.jsx("img",{src:x,alt:m.name})}):m.type==="pdf"?t.jsx("div",{className:"file-preview file-preview-pdf",children:t.jsx("object",{data:x,type:"application/pdf","aria-label":m.name,children:t.jsx(Q,{children:"Your browser cannot show this PDF here. Download it to open it."})})}):b?t.jsx(cJ,{src:x,wrap:h}):t.jsxs(t.Fragment,{children:[t.jsx(Q,{children:m.type==="text"?`This file is over ${qn(P1)}, too long to read here. Download it to open it.`:"This kind of file is not shown here. Download it to open it."}),t.jsx(un,{items:[{label:"Size",value:qn(m.bytes)},{label:"Type",value:t.jsx("span",{className:"mono",children:m.mime})}]})]})]})}function cJ({src:e,wrap:n}){const[s,r]=d.useState(null),[a,i]=d.useState(!1);return d.useEffect(()=>{let l=!1;return i(!1),fetch(e,{credentials:"same-origin"}).then(async o=>{if(!o.ok)throw new Error(String(o.status));const c=await o.text();l||r(c)}).catch(()=>{l||i(!0)}),()=>{l=!0}},[e]),a?t.jsx(Q,{tone:"critical",children:"The file could not be read."}):s===null?t.jsx(Ce,{children:"Reading the file…"}):s===""?t.jsx(Ce,{children:"This file is empty."}):t.jsx("pre",{className:"wb-files-text","data-wrap":n?"true":void 0,"data-testid":"files-text",children:s})}function uJ({kind:e}){return t.jsx("span",{className:"wb-files-icon","data-kind":e,"aria-hidden":"true",children:t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round",children:e==="dir"?t.jsx("path",{d:"M2 4.2h4.2l1.4 1.6H14v7H2z"}):t.jsx("path",{d:"M4 2.4h5l3 3v8.2H4zM9 2.4v3h3"})})})}function dJ({input:e,output:n,ok:s}){const r=L7(e),a=HM(n)??(s?"sent":"not sent");return t.jsxs("div",{className:"wb-envelope",children:[t.jsxs("div",{className:"envelope",children:[t.jsxs("dl",{className:"envelope-head",children:[t.jsx("dt",{children:"To"}),t.jsx("dd",{className:"wb-envelope-action",children:"You"}),t.jsx("dt",{children:"Status"}),t.jsx("dd",{children:t.jsx(Ae,{tone:F7(a,s),dot:!0,children:a})})]}),t.jsxs("div",{className:"envelope-body",children:[t.jsx("strong",{children:r.title}),r.text?`
|
|
124
|
+
|
|
125
|
+
${r.text}`:null]})]}),t.jsx(Kt,{summary:"The call",children:t.jsxs("dl",{className:"ui-kv wb-envelope-fields",children:[t.jsx("dt",{children:"Urgency"}),t.jsx("dd",{children:r.urgency}),r.link?t.jsxs(t.Fragment,{children:[t.jsx("dt",{children:"Link"}),t.jsx("dd",{className:"mono",children:r.link})]}):null,r.key?t.jsxs(t.Fragment,{children:[t.jsx("dt",{children:"Key"}),t.jsx("dd",{className:"mono",children:r.key})]}):null]})})]})}const Wc=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{},mn=e=>typeof e=="string"&&e.trim()!==""?e:null,hJ={blocked:"Blocked — that address is on this computer or a private network, which the reader never opens.",forbidden:"The site turned the reader away. It may need a sign-in or refuse automated readers.",unauthorised:"The page needs a sign-in, which the reader doesn’t have.","not-found":"Page not found — the link may be old or mistyped.",timeout:"Timed out — the site didn’t answer in time.","too-large":"Too large to read — the page is bigger than the reader takes.","unsupported-content":"Not a web page — a PDF, an image or a file the reader doesn’t open.","rate-limited":"The site is limiting how often it can be read. Try again later.","server-error":"The site had a problem of its own.","too-many-redirects":"The link kept redirecting, so the reader gave up.",network:"Couldn’t reach the site.",unreadable:"The page came back unreadable.","turned-away":"The site turned the reader away with a robot check."};function fJ(e){const n=e.slice(0,4e3);if(n.length<20)return!1;let s=0;for(const r of n){const a=r.codePointAt(0);(a===65533||a<32&&a!==9&&a!==10&&a!==13||a>=127&&a<160)&&(s+=1)}return s/n.length>.1}function ix(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return e}}function mJ(e){if(!e)return null;try{const n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"?n.href:null}catch{return null}}function ey(e){try{const n=new URL(e);return`${n.hostname.replace(/^www\./,"")}${n.pathname.replace(/\/+$/,"")}${n.search}`}catch{return e}}function M1(e){var n;return((n=e.match(/[\p{L}\p{N}]/u))==null?void 0:n[0])??"?"}function O2(e){const n=Wc(e.input),s=Wc(e.output),r={input:e.input,...e.ok===null?{status:"Awaiting result"}:{output:e.output},...e.error===void 0?{}:{error:e.error}},a=e.ok===!1,i=mn(e.error)??mn(Wc(e.error).message);if(Array.isArray(s.results)||mn(n.query)&&!mn(n.url)){const f=(Array.isArray(s.results)?s.results:[]).map(p=>Wc(p)).flatMap(p=>{const x=mn(p.url);return x?[{title:mn(p.title)??ix(x),url:x,host:mn(p.source)??ix(x),snippet:mn(p.snippet)}]:[]}),m=s.available===!1;return{kind:"search",id:e.id,raw:r,query:mn(s.query)??mn(n.query)??"",state:e.ok===null?"pending":a||m?"failed":"ok",provider:mn(s.provider),results:f,why:a?`The search failed${i?`: ${i}`:"."}`:m?mn(s.provider)?"The search couldn’t be run this time.":"Web search isn’t set up on this buddi yet — `buddi doctor` says how.":null}}const l=mn(s.url)??mn(n.url)??"",o=!a&&s.ok!==!1&&fJ(mn(s.text)??""),c=a||s.ok===!1||o,u=o?"unreadable":mn(s.problem),h=mn(s.message);return{kind:"page",id:e.id,url:l,raw:r,host:mn(s.source)??ix(l),state:e.ok===null?"pending":c?"failed":"ok",title:mn(s.title),text:o?null:mn(s.text),truncated:s.truncated===!0,retrievedAt:mn(s.retrievedAt)??e.at,why:c?(u&&hJ[u])??(h?h.charAt(0).toUpperCase()+h.slice(1)+(/[.!?]$/.test(h)?"":"."):null)??`The read failed${i?`: ${i}`:"."}`:null}}function pJ(e){const n=e.entries.map(O2),s=n.filter(a=>a.kind==="search").length,r=n.length-s;return[s?`${s} ${s===1?"search":"searches"}`:null,r?`${r} ${r===1?"page":"pages"}`:null].filter(Boolean).join(" · ")}function gJ(e){return e.split(/\s+/).filter(Boolean).length}function xJ(e){return e>=1e3?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}k words`:`${e} ${e===1?"word":"words"}`}function vJ(e,n){if(!e)return null;const s=new Date(e);return Number.isNaN(s.getTime())?null:Lt(s,n??Intl.DateTimeFormat().resolvedOptions().timeZone)}function D2({url:e,className:n,children:s}){const r=mJ(e);return r?t.jsxs("a",{className:`wb-src-link ${n}`,href:r,target:"_blank",rel:"noopener noreferrer",children:[s,t.jsx("span",{className:"wb-src-out","aria-hidden":"true",children:"↗"})]}):t.jsx("span",{className:n,children:s})}function L2({value:e}){const[n,s]=d.useState(!1);return t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:"wb-src-quiet","data-raw":"","aria-expanded":n,onClick:()=>s(!n),children:n?"Hide JSON":"Raw JSON"}),n?t.jsx("pre",{className:"wb-src-raw",children:JSON.stringify(e,null,2)}):null]})}function jJ({page:e,focused:n,timezone:s}){const[r,a]=d.useState(n),[i,l]=d.useState(!1),o=d.useRef(null);if(d.useEffect(()=>{var m,p;n&&(a(!0),(p=(m=o.current)==null?void 0:m.scrollIntoView)==null||p.call(m,{block:"nearest"}))},[n]),e.state==="pending")return t.jsx("li",{className:"wb-src-page","data-state":"pending",ref:o,children:t.jsxs("div",{className:"wb-src-row",children:[t.jsx("span",{className:"wb-src-tile","data-state":"pending","aria-hidden":"true",children:M1(e.host)}),t.jsxs("span",{className:"wb-src-head",children:[t.jsxs("span",{className:"wb-src-title",children:["Reading ",e.host,"…"]}),t.jsx("span",{className:"wb-src-meta",children:e.url})]}),t.jsx("span",{})]})});const c=e.state==="failed",u=e.text?gJ(e.text):0,h=vJ(e.retrievedAt,s),f=[e.host,h?`read ${h}`:null,u?xJ(u):null,u?`${Math.max(1,Math.round(u/230))} min read`:null].filter(Boolean).join(" · ");return t.jsxs("li",{className:"wb-src-page","data-open":r?"true":void 0,"data-state":e.state,ref:o,children:[t.jsxs("div",{className:"wb-src-row",children:[t.jsx("span",{className:"wb-src-tile","data-tone":c?"critical":void 0,"aria-hidden":"true",children:c?"!":M1(e.host)}),t.jsxs("span",{className:"wb-src-head",children:[c?t.jsxs("span",{className:"wb-src-title",children:["Couldn’t read ",e.host]}):t.jsx(D2,{url:e.url,className:"wb-src-title",children:e.title??e.host}),c?t.jsx("span",{className:"wb-src-why",children:e.why}):t.jsx("span",{className:"wb-src-meta",children:f})]}),t.jsx("button",{type:"button",className:"wb-src-toggle","aria-expanded":r,"aria-label":r?`Hide what was read from ${e.host}`:`Show what was read from ${e.host}`,onClick:()=>a(!r),children:t.jsx(se,{name:"chevron"})})]}),r?t.jsxs("div",{className:"wb-src-body",children:[c?t.jsx("p",{className:"wb-src-note",children:e.url}):t.jsxs(t.Fragment,{children:[e.text?t.jsx("p",{className:"wb-src-text","data-clamped":i?void 0:"true",children:e.text}):t.jsx("p",{className:"wb-src-note",children:"The page had no text to read."}),e.truncated?t.jsx("p",{className:"wb-src-note",children:"Only the beginning of the page was read; it was longer than the limit."}):null]}),t.jsxs("div",{className:"wb-src-foot",children:[!c&&e.text?t.jsx("button",{type:"button",className:"wb-src-quiet",onClick:()=>l(!i),children:i?"Show less":"Show more"}):null,t.jsx(L2,{value:e.raw})]})]}):null]})}const O1=3;function yJ({search:e,read:n,focused:s}){const[r,a]=d.useState(!1),i=d.useRef(null);d.useEffect(()=>{var c,u;s&&((u=(c=i.current)==null?void 0:c.scrollIntoView)==null||u.call(c,{block:"nearest"}))},[s]);const l=r?e.results:e.results.slice(0,O1),o=e.state==="pending"?"Searching…":[e.provider,e.state==="ok"?`${e.results.length} ${e.results.length===1?"result":"results"}`:null].filter(Boolean).join(" · ");return t.jsxs("div",{className:"wb-src-list","data-state":e.state,ref:i,children:[t.jsxs("div",{className:"wb-src-query",children:[t.jsxs("span",{className:"wb-src-query-text",children:["“",e.query,"”"]}),o?t.jsx("span",{className:"wb-src-query-meta",children:o}):null,t.jsx("span",{className:"wb-src-query-raw",children:t.jsx(L2,{value:e.raw})})]}),e.state==="failed"?t.jsx("p",{className:"wb-src-empty wb-src-why",children:e.why}):null,e.state==="ok"&&e.results.length===0?t.jsx("p",{className:"wb-src-empty",children:"No results."}):null,l.length>0?t.jsx("ol",{className:"wb-src-results",children:l.map(c=>t.jsxs("li",{className:"wb-src-result",children:[t.jsx(D2,{url:c.url,className:"wb-src-result-title",children:c.title}),t.jsx("span",{className:"wb-src-result-site",children:c.host}),c.snippet?t.jsx("p",{className:"wb-src-result-snippet",children:c.snippet}):null,n.has(ey(c.url))?t.jsx("span",{className:"wb-src-result-side",children:t.jsx(Ae,{tone:"good",children:"Read"})}):null]},c.url))}):null,e.results.length>O1?t.jsx("div",{className:"wb-src-more",children:t.jsx("button",{type:"button",className:"wb-src-quiet",onClick:()=>a(!r),children:r?"Show fewer":`Show all ${e.results.length}`})}):null]})}function wJ({entries:e,focus:n,timezone:s}){const r=e.map(O2),a=r.filter(o=>o.kind==="page"),i=r.filter(o=>o.kind==="search"),l=new Set(a.filter(o=>o.state==="ok").flatMap(o=>{const c=e.find(h=>h.id===o.id),u=mn(Wc(c==null?void 0:c.input).url);return[ey(o.url),...u?[ey(u)]:[]]}));return t.jsxs("div",{className:"wb-src",children:[a.length>0?t.jsxs("div",{className:"wb-src-group",children:[t.jsx("p",{className:"wb-src-kicker",children:"Read"}),t.jsx("ul",{className:"wb-src-list",children:a.map(o=>t.jsx(jJ,{page:o,focused:n===o.id,timezone:s},o.id))})]}):null,i.length>0?t.jsxs("div",{className:"wb-src-group",children:[t.jsx("p",{className:"wb-src-kicker",children:"Searched"}),i.map(o=>t.jsx(yJ,{search:o,read:l,focused:n===o.id},o.id))]}):null]})}const bJ=3,kJ=152,NJ=104,SJ=100,CJ=2,lx=KM;function EJ({renderables:e,activeId:n,onActivate:s,timezone:r,onDecided:a,onChangeAgent:i,face:l,cardFace:o,descriptors:c,grantedTools:u,agentName:h,maxTabs:f,browserPanel:m,browserMenu:p,agents:x,onClose:g,onCloseMany:b,touched:j,turnStartedAt:v,unread:y,now:k=Date.now,loading:N=!1}){var U;const[w,S]=AJ(f),[C,E]=d.useState({}),$=d.useMemo(()=>TJ(e,r),[e,r]);if(e.length===0)return t.jsxs("div",{className:"wb-canvas","data-testid":"canvas",children:[t.jsx("div",{className:"wb-canvas-tabs",ref:w,"aria-hidden":"true",children:t.jsx("span",{className:"wb-canvas-label",children:"Canvas"})}),t.jsx("div",{className:"wb-canvas-body wb-canvas-body-empty",children:N?null:t.jsxs("div",{className:"wb-empty",children:[l?t.jsx("span",{className:"wb-empty-face",children:l}):null,t.jsx("p",{className:"ui-empty wb-empty-line",children:MJ(h,OJ(c??[],u??[]))})]})})]});const R=e.some(L=>L.id===n)?n:e[e.length-1].id,{shown:P,hidden:O}=eq(e,R,S,j,{turnStartedAt:v??null}),I=L=>L.id!==R&&(y==null?void 0:y.has(L.id))===!0,F=e.filter(ox).map(L=>L.id);return t.jsx("div",{className:"wb-canvas","data-testid":"canvas",children:t.jsxs(N5,{value:R,onValueChange:s,className:"contents",children:[t.jsxs("div",{className:"wb-canvas-tabs",ref:w,children:[t.jsx("span",{className:"wb-canvas-label","aria-hidden":"true",children:"Canvas"}),t.jsx(S5,{className:"wb-tabstrip","aria-label":"Canvas",children:P.map(L=>t.jsxs("div",{className:"wb-tab-item",children:[t.jsxs(C5,{value:L.id,className:"wb-tab","data-tone":L.tone,"data-unread":I(L)?"true":void 0,onKeyDown:M=>{M.key==="Delete"&&g&&ox(L)&&(M.preventDefault(),g(L.id))},children:[L.tone==="warning"||L.tone==="critical"?t.jsx("span",{className:"wb-tab-dot","data-tone":L.tone,"aria-hidden":"true"}):I(L)?t.jsx("span",{className:"wb-tab-dot","data-tone":"unread","aria-hidden":"true"}):null,t.jsx("span",{className:"wb-tab-text",children:$.get(L.id)??L.title}),L.count?t.jsx("span",{className:"wb-tab-count",children:L.count}):null]}),g&&ox(L)?t.jsx("button",{className:"wb-tab-close","aria-label":`Close ${$.get(L.id)??L.title} tab`,title:"Dismiss panel; keep conversation history",onClick:()=>g(L.id),children:"×"}):null]},L.id))}),t.jsx(IJ,{items:O,unread:new Set(O.filter(I).map(L=>L.id)),onActivate:s,timezone:r,labels:$,groups:tq(O,{now:k(),turnStartedAt:v??null,...j?{touched:j}:{}}),...b?{onCloseAll:F.length>0?()=>b(F):void 0,onCloseOthers:F.some(L=>L!==R)?()=>b(F.filter(L=>L!==R)):void 0}:{}}),p&&((U=e.find(L=>L.id===R))==null?void 0:U.source)==="browser"?t.jsx("span",{className:"wb-canvas-menu",children:p}):null]}),e.map(L=>{const M=L.versions??[],z=C[`${L.id}:${M.length}:${L.focus??""}`]??(L.focus&&M.some(K=>K.id===L.focus)?L.focus:null),D=z?M.find(K=>K.id===z)??null:null,H=D?$J(L,D):L;return t.jsxs(E5,{value:L.id,className:"wb-canvas-body","data-renderer":H.source==="descriptor"&&H.renderer==="preview"?"preview":void 0,"data-dense":LJ.has(H.renderer)?"true":void 0,"data-page":H.source==="browser"?"true":void 0,children:[M.length>1?t.jsx(RJ,{versions:M,current:H.id===L.id&&!D?M.at(-1).id:(D==null?void 0:D.id)??M.at(-1).id,timezone:r,onPick:K=>E(X=>({...X,[`${L.id}:${M.length}:${L.focus??""}`]:K}))}):null,H.source==="browser"?m:t.jsxs("section",{className:"ui-panel","data-flush":H.source==="descriptor"&&H.renderer==="preview"?"true":void 0,children:[H.source!=="files"&&!D1(H)&&!(H.source==="descriptor"&&H.renderer==="preview")?t.jsxs("header",{className:"ui-panel-head",children:[t.jsx("h2",{className:"ui-panel-title",children:H.title}),t.jsx("span",{className:"ui-panel-tool mono",children:H.source==="sources"?pJ(H.props):H.tool})]}):null,H.tone==="critical"?t.jsxs("p",{className:"muted",children:["Recorded tool failure",H.at?` · ${Nt(H.at,Intl.DateTimeFormat().resolvedOptions().timeZone)}`:"",". This is history, not live session status."]}):null,D1(H)?t.jsx(c7,{value:H.props.value,title:H.title,tool:H.tool,face:o,timezone:r}):H.source==="profile"?t.jsx(v7,{...H.props,...i?{onChange:i}:{}}):H.source==="artifact"?t.jsx(I7,{...H.props}):H.source==="files"?t.jsx(iJ,{...H.props}):H.source==="sources"?t.jsx(wJ,{...H.props,timezone:r}):H.source==="notify"?t.jsx(dJ,{...H.props}):H.source==="delegate"?t.jsx(nJ,{...H.props,agents:x??[]}):t.jsx(GG,{renderer:H.renderer,props:H.props,timezone:r,onDecided:a})]})]},L.id)})]})})}function D1(e){var n;return e.renderer==="structured"&&(e.source==="fallback"||e.source==="descriptor")&&!((n=e.props)!=null&&n.failed)}function ox(e){return e.source==="approval"?!1:e.source==="browser"?e.pinned!==!0:e.source!=="files"}function AJ(e){const[n,s]=d.useState(lx),r=d.useRef(null);return[d.useCallback(i=>{var o;if((o=r.current)==null||o.disconnect(),r.current=null,!i||e!==void 0||typeof ResizeObserver>"u")return;const l=()=>{const c=i.clientWidth;if(c===0)return;const u=Math.floor((c-SJ-NJ)/kJ);s(Math.max(CJ,Math.min(lx,u)))};l(),r.current=new ResizeObserver(l),r.current.observe(i)},[e]),e===void 0?n:Math.min(lx,e)]}function $J(e,n){const s={...e,title:n.title,renderer:n.renderer,props:n.props,at:n.at,substantial:n.substantial};return n.tone?s.tone=n.tone:delete s.tone,s}function TJ(e,n){const s=new Map;for(const a of e)s.set(a.title,(s.get(a.title)??0)+1);const r=new Map;for(const a of e){const i=a.subject||(s.get(a.title)??0)<2?null:Sk(a.at,n);r.set(a.id,i?`${a.title} · ${i}`:a.title)}return r}function RJ({versions:e,current:n,timezone:s,onPick:r}){const a=Math.max(0,e.findIndex(c=>c.id===n)),i=e[a],l=a===e.length-1,o=Sk(i.at,s);return t.jsxs("div",{className:"wb-versions",role:"group","aria-label":"Earlier results",children:[t.jsx(A,{variant:"ghost",size:"sm","aria-label":"Earlier result",disabled:a===0,onClick:()=>r(e[a-1].id),children:t.jsx(se,{name:"chevron-left"})}),t.jsxs("span",{className:"wb-versions-text",children:[l?"Latest":"Earlier"," · ",a+1," of ",e.length,o?t.jsxs("span",{className:"mono",children:[" · ",o]}):null]}),t.jsx(A,{variant:"ghost",size:"sm","aria-label":"Later result",disabled:l,onClick:()=>r(e[a+1].id),children:t.jsx(se,{name:"chevron-right"})})]})}function IJ({items:e,unread:n,groups:s,labels:r,onActivate:a,onCloseAll:i,onCloseOthers:l,timezone:o}){if(e.length===0&&!i&&!l)return null;const c=e.some(u=>u.tone==="critical")?"critical":e.some(u=>u.tone==="warning")?"warning":n.size>0?"unread":null;return t.jsxs(xd,{modal:!1,children:[t.jsx(vd,{asChild:!0,children:t.jsxs("button",{className:"wb-tab wb-tab-more","data-tone":c??void 0,"data-bare":e.length===0?"true":void 0,"aria-label":e.length>0?`${e.length} more ${e.length===1?"view":"views"} in this conversation`:"Tab actions",children:[c?t.jsx("span",{className:"wb-tab-dot","data-tone":c,"aria-hidden":"true"}):null,e.length>0?t.jsxs("span",{className:"wb-tab-text",children:[e.length," more"]}):null,t.jsx(se,{name:"chevron-down"})]})}),t.jsx(rc,{children:t.jsxs(jd,{className:"ui-menu","data-wide":"true",align:"end",sideOffset:6,children:[s.length>0?t.jsx("div",{className:"wb-tab-timeline",children:s.map(u=>t.jsxs(hb,{children:[t.jsx(pl,{className:"ui-menu-label",children:u.label}),u.items.map(h=>{var f,m;return t.jsxs(ws,{className:"ui-menu-item",onSelect:()=>a(h.id),children:[t.jsxs("span",{className:"ui-menu-item-text",children:[h.tone==="warning"||h.tone==="critical"?t.jsx("span",{className:"wb-tab-dot","data-tone":h.tone,"aria-hidden":"true"}):n.has(h.id)?t.jsx("span",{className:"wb-tab-dot","data-tone":"unread","aria-hidden":"true"}):null,r.get(h.id)??h.title]}),t.jsx("span",{className:"ui-menu-note mono",children:Sk(((m=(f=h.versions)==null?void 0:f.at(-1))==null?void 0:m.at)??h.at,o)??h.tool})]},h.id)})]},u.label))}):null,i||l?t.jsxs(t.Fragment,{children:[s.length>0?t.jsx(ea,{className:"ui-menu-sep"}):null,t.jsx(ws,{className:"ui-menu-item",disabled:!l,onSelect:()=>l==null?void 0:l(),children:t.jsx("span",{className:"ui-menu-item-text",children:"Close others"})}),t.jsx(ws,{className:"ui-menu-item",disabled:!i,onSelect:()=>i==null?void 0:i(),children:t.jsx("span",{className:"ui-menu-item-text",children:"Close all"})})]}):null]})})]})}function Sk(e,n){if(!e)return null;const s=new Date(e);return Number.isNaN(s.getTime())?null:Lt(s,n)}const PJ={timeseries:"charts",table:"tables",bars:"comparisons",keyvalue:"figures",tiles:"cards",document:"pages it read",diff:"diffs",terminal:"command output",image:"pictures",preview:"running apps",envelope:"drafts",story:"stories",audio:"recordings",query:"results",structured:"results"};function MJ(e,n){const s=e?`What ${e} shows you`:"What your agent shows you",r=[...new Set(n.map(a=>PJ[a.renderer]??"results"))].slice(0,3);return r.length>0?`${s} lands here: ${r.join(", ")}.`:`${s} lands here.`}function OJ(e,n){const s=new Set(n),r=new Set,a=e.filter(c=>{if(!s.has(c.tool))return!1;const u=DJ(c);return r.has(u)?!1:(r.add(u),!0)}),i=new Set,l=a.filter(c=>i.has(c.renderer)?!1:(i.add(c.renderer),!0)),o=a.filter(c=>!l.includes(c));return[...l,...o].slice(0,bJ)}function DJ(e){return e.title&&e.title.trim()!==""?e.title:e.tool.split(".").map(n=>n.replace(/[_-]+/g," ")).join(" · ").replace(/\b\w/,n=>n.toUpperCase())}const LJ=new Set(["table","diff","files"]),Xa=320,FJ=280,L1=24,_J=12,zJ=[1/3,1/2,2/3],ty="buddi.chatWidth";function dm(e){return{min:Xa,max:Math.max(Xa,Math.round(e)-FJ)}}function UJ(e,n,s){return Math.max(0,Math.round(e+n-Math.max(0,s)))}function BJ(e,n){return hm(e,n)}function hm(e,n){const{min:s,max:r}=dm(n);return Number.isFinite(e)?n<=0?Math.max(s,Math.round(e)):Math.min(r,Math.max(s,Math.round(e))):s}function WJ(e,n){if(n<=0)return e;for(const s of zJ){const r=Math.round(n*s);if(Math.abs(e-r)<=_J)return r}return e}function HJ(e,n){return hm(WJ(e,n),n)}function KJ(e,n,s){const{min:r,max:a}=dm(s);switch(n){case"ArrowLeft":return hm(e-L1,s);case"ArrowRight":return hm(e+L1,s);case"Home":return r;case"End":return s>0?a:null;default:return null}}function VJ(){try{const e=window.localStorage.getItem(ty);if(e===null)return null;const n=Number(e);return Number.isFinite(n)&&n>=Xa?Math.round(n):null}catch{return null}}function GJ(e){try{e===null?window.localStorage.removeItem(ty):window.localStorage.setItem(ty,String(Math.round(e)))}catch{}}const ny="--wb-chat-w";function qJ({columnRef:e,width:n,onChange:s,label:r="Resize the conversation column"}){const a=d.useRef(null),i=d.useRef(null),[l,o]=d.useState(!1),[c,u]=d.useState({now:n??Xa,max:Xa}),h=()=>{var N;const g=e.current,b=(N=a.current)==null?void 0:N.nextElementSibling,j=(g==null?void 0:g.getBoundingClientRect().width)||(g==null?void 0:g.offsetWidth)||n||Xa,v=g==null?void 0:g.parentElement,y=v?v.scrollWidth-v.clientWidth:0;return{shared:UJ((g==null?void 0:g.getBoundingClientRect().width)??0,(b==null?void 0:b.getBoundingClientRect().width)??0,y),current:j,left:(g==null?void 0:g.getBoundingClientRect().left)??0}},f=g=>{const{shared:b,current:j}=h();u({now:Math.round(g??j),max:dm(b).max})};d.useEffect(()=>{f(n??void 0)},[n]);const m=g=>{const b=e.current;b&&(g===null?(b.style.removeProperty(ny),delete b.dataset.sized):(b.style.setProperty(ny,`${g}px`),b.dataset.sized="true"))},p=g=>{m(g),GJ(g),s(g)},x=()=>{const g=i.current;g&&(g.frame!==null&&cancelAnimationFrame(g.frame),i.current=null,o(!1),document.documentElement.removeAttribute("data-resizing"),g.next!==null&&p(g.next))};return d.useEffect(()=>{var v;if(n===null)return;const g=(v=e.current)==null?void 0:v.parentElement;if(!g)return;const b=()=>{if(i.current)return;const{shared:y}=h();if(y<=0)return;const k=BJ(n,y);m(k),u({now:k,max:dm(y).max})};b();const j=typeof ResizeObserver>"u"?null:new ResizeObserver(b);return j==null||j.observe(g),window.addEventListener("resize",b),()=>{j==null||j.disconnect(),window.removeEventListener("resize",b)}},[n]),d.useEffect(()=>()=>{var g;((g=i.current)==null?void 0:g.frame)!=null&&cancelAnimationFrame(i.current.frame),document.documentElement.removeAttribute("data-resizing")},[]),t.jsx("div",{ref:a,className:"wb-grip",role:"separator",tabIndex:0,"aria-orientation":"vertical","aria-label":r,"aria-valuemin":Xa,"aria-valuemax":Math.max(Xa,c.max),"aria-valuenow":c.now,title:"Drag to resize · double-click to reset","data-dragging":l?"true":void 0,onPointerDown:g=>{var v,y;if(g.pointerType==="mouse"&&g.button!==0)return;g.preventDefault(),(y=(v=g.currentTarget).setPointerCapture)==null||y.call(v,g.pointerId);const{shared:b,left:j}=h();i.current={pointerId:g.pointerId,left:j,shared:b,next:null,frame:null},o(!0),document.documentElement.setAttribute("data-resizing","true")},onPointerMove:g=>{const b=i.current;!b||b.pointerId!==g.pointerId||(b.next=HJ(g.clientX-b.left,b.shared),b.frame===null&&(b.frame=requestAnimationFrame(()=>{const j=i.current;j&&(j.frame=null,j.next!==null&&m(j.next))})))},onPointerUp:x,onPointerCancel:x,onLostPointerCapture:x,onDoubleClick:()=>{p(null),f()},onKeyDown:g=>{const{shared:b,current:j}=h(),v=KJ(n??j,g.key,b);v!==null&&(g.preventDefault(),p(v))}})}const YJ=3.5*6e4,QJ=2e3;function JJ(e,n,s={}){const[r,a]=d.useState({served:new Set,live:new Set,scope:n}),i=d.useRef(r.served);if(r.scope!==n){const u={served:new Set,live:new Set,scope:n};i.current=u.served,a(u)}const l=s.check??T.previewCheck,o=s.everyMs??QJ,c=e.map(u=>`${No(u)}@${u.at??""}`).join("|");return d.useEffect(()=>{const u=new Map;for(const p of e){const x=No(p);if(i.current.has(x))continue;const g=p.at===null?Number.NaN:Date.parse(p.at),b=Number.isNaN(g)?0:g+YJ,j=u.get(x);(!j||b>j.until)&&u.set(x,{plugin:p.plugin,name:p.name,until:b})}if(u.size===0)return;let h=!1,f;const m=async()=>{const p=Date.now();for(const[x,g]of[...u]){const b=await l(g.plugin,g.name).catch(()=>null);if(h)return;const j=p<=g.until;b!=null&&b.ok?(u.delete(x),a(v=>{const y={served:new Set(v.served).add(x),live:j?new Set(v.live).add(x):v.live,scope:v.scope};return i.current=y.served,y})):j||u.delete(x)}!h&&u.size>0&&(f=setTimeout(()=>void m(),o))};return m(),()=>{h=!0,f!==void 0&&clearTimeout(f)}},[c,n,l,o]),r}const sy="workspace-files";function XJ(e){let n=0;for(const s of e)for(const r of s.blocks??[]){if(r.type!=="tool_result"||r.ok===!1)continue;const a=r.output;if(a===null||typeof a!="object"||Array.isArray(a))continue;const{diff:i,path:l}=a;typeof i=="string"&&i.trim()!==""&&typeof l=="string"&&l!==""&&(n+=1)}return n}function ZJ(e){const[n,s]=d.useState(null);return d.useEffect(()=>{if(s(null),!e)return;let r=!1;return(async()=>{var i;const a=await T.pages();for(const l of Array.isArray(a==null?void 0:a.files)?a.files:[]){const o=await T.pageQuery(l.plugin,l.workspace,{agent:e}).catch(()=>null),c=(i=o==null?void 0:o.data)==null?void 0:i.workspace;if(c&&typeof c.name=="string")return{files:l,agentId:e,root:c.name}}return null})().then(a=>{r||s(a)}).catch(()=>{}),()=>{r=!0}},[e]),n&&n.agentId===e?n:null}function eX(e,n){return{id:sy,tool:"",title:"Files",renderer:"files",props:{files:e.files,agentId:e.agentId,root:e.root,revision:n},at:null,source:"files",pinned:!0,substantial:!1}}function ry(e){return`agent-properties:${e}`}function tX(e){return{id:ry(e.id),tool:`@${e.handle}`,title:"Properties",renderer:"profile",props:{profile:e},at:null,source:"profile",substantial:!1}}function nX({agentId:e,conversationId:n}){const{data:s,error:r,reload:a}=ve(()=>T.host(e,n),[e,n],2e3),[i,l]=d.useState(null),[o,c]=d.useState(!1),u=async p=>{c(!0),l(null);try{await p(),a()}catch(x){l(x instanceof Error?x.message:String(x))}finally{c(!1)}},h=(s==null?void 0:s.permissions)??[],f=(s==null?void 0:s.runs)??[],m=h.some(p=>!p.conversationId)?"Always allowed":h.length?"Conversation auto-mode":"Ask each time";return t.jsx(Kt,{className:"host-controls",summary:`Host execution · ${r?"Status unavailable":m}${f.length?` · ${f.length} running`:""}`,children:t.jsxs(de,{gap:"sm",children:[t.jsx("p",{className:"muted",children:"Commands run as your user, not in a sandbox. Auto-mode covers all commands within its scope. Stop interrupts a command; revoke also ends the permission. Neither undoes completed changes."}),t.jsx(re,{message:i??r}),h.map(p=>t.jsxs(ne,{children:[t.jsxs("span",{children:[p.agentId,": ",p.conversationId?"conversation auto-mode":"always allowed"]}),t.jsx(A,{size:"sm",disabled:o,onClick:()=>void u(()=>T.revokeHost(p.id)),children:"Revoke permission"})]},p.id)),h.length?null:t.jsx("p",{className:"muted",children:"The next command will ask for approval. Choose its permission scope there."}),f.map(p=>t.jsxs(de,{gap:"sm",children:[t.jsxs("p",{children:[p.agentId," · ",t.jsx("span",{className:"mono",children:p.cwd})]}),t.jsx(en,{children:p.command}),t.jsx(en,{label:"Command output",children:p.stdout||p.stderr?`${p.stdout}
|
|
126
|
+
${p.stderr}`:"Waiting for output…"}),t.jsx(ne,{children:t.jsx(A,{size:"sm",variant:"danger",disabled:o,onClick:()=>void u(()=>T.stopHost(p.agentId,p.conversationId)),children:"Stop command"})})]},p.actionId))]})})}const sX="browser.act",rX="browser.status",lf=new Set([sX,rX]);function aX(e,n,s){const r=e==null?void 0:e.session;return!r||!n||!s||r.agentId!==n||r.conversationId!==s?null:{id:`host-browser:${r.id}`,title:"Page",tool:"Page",renderer:"browser",source:"browser",pinned:!0,props:{},at:null,substantial:!1}}function iX(e,n){return{...e,title:"Page",pinned:!1}}function lX(e,n,s){return!(e!=null&&e.stop)||!n||!s?null:{id:`host-browser:paused:${n}`,title:"Page",tool:"Page",renderer:"browser",source:"browser",pinned:!0,props:{},at:null,substantial:!1}}function F1(e,n){var r;let s=!1;for(const a of e)for(const i of a.blocks??[])if(i.type==="tool_use"&&i.id===n&&(s=lf.has(i.name)),i.type==="tool_result"&&i.toolUseId===n&&((r=i.approval)==null?void 0:r.state)==="pending")return null;return s?n:null}const cx="Save a login for next time",oX=new Set(["Skip this site","Skip it","Keep paused","Leave it stopped"]),cX=/^(Use (my )?\S+( when it’s open)?|Open Chrome and I'll use it there)$/;function ay(e){if(!e||e.allowOther)return null;const n=new Set(e.options.map(h=>h.label)),s=(...h)=>h.some(f=>n.has(f)),r=s("Look")&&s("Carry on")?"look":s("Keep going")&&s("Stop here")?"budget":s("Resume")&&s("Keep paused","Leave it stopped")?"paused":s("Take over")&&s("Skip this site","Skip it")?"human":s("Take over")&&(s(cx)||e.options.some(h=>h.label!=="Take over"&&cX.test(h.label))||/sign-in|asks for a code/i.test(e.question))?"signin":null;if(!r)return null;const[a,...i]=e.question.split(`
|
|
127
|
+
`),l=(a??"").trim().replace(/\.$/,""),o=e.options.find(h=>h.label===cx)??null,c=e.options.filter(h=>h.label!==cx),u=[...c.filter(h=>!h.recommended),...c.filter(h=>h.recommended)];return{kind:r,title:l,line:i.join(" ").trim(),saveLogin:o,actions:u}}function F2({card:e,disabled:n,onAnswer:s,site:r,signIn:a}){const[i,l]=d.useState(!1);if(i&&a)return t.jsx(Nk,{question:a.question,card:a.card,phone:a.phone,container:a.container,disabled:n,onSettled:a.onSettled});const o=`${dj}${r?`&site=${encodeURIComponent(r)}`:""}`;return t.jsxs("section",{className:"wb-question br-ask","data-kind":e.kind,"aria-label":e.kind==="paused"?"Browsing is paused":"The agent needs you","data-testid":"browser-ask",children:[t.jsxs("div",{className:"br-ask-head",children:[t.jsx("span",{className:"wb-question-kicker",children:e.kind==="paused"?"Paused":"Needs you"}),t.jsx("strong",{children:e.title}),e.line?t.jsx("span",{className:"br-ask-line",children:e.line}):null]}),t.jsx("div",{className:"wb-dock-section",children:t.jsxs(ne,{align:"end",children:[e.saveLogin?t.jsxs(t.Fragment,{children:[a?t.jsx("button",{type:"button",className:"wb-link","aria-expanded":!1,onClick:()=>l(!0),children:e.saveLogin.label}):t.jsx("a",{className:"wb-link",href:o,children:e.saveLogin.label}),t.jsx(ft,{})]}):null,e.actions.map(c=>t.jsx(A,{size:"sm",variant:c.recommended?"accent":oX.has(c.label)?"ghost":void 0,disabled:n,title:c.hint??void 0,onClick:()=>s(c.label,c.id),children:c.label},c.id))]})})]})}const uX="web.read",dX="web.search",hX=new Set([uX,dX]),_1=new Set(["owner.get_profile","memory.recall","memory.get_preferences","memory.people","memory.person","platform.list_agents","platform.read_agent","platform.installed_tools","platform.list_skills","platform.list_accounts","platform.list_groups","system.time"]),z1=new Map([["owner.get_profile","Your profile"],["owner.set_profile","Your profile, updated"],["owner.rename_me","A new name"],["owner.finish_onboarding","First run finished"],["memory.recall","From memory"],["memory.note","Noted"],["memory.get_preferences","Your preferences"],["memory.remember_preference","A preference, kept"],["memory.people","People you know"],["memory.person","Someone you know"],["platform.list_agents","Your team"],["platform.read_agent","An agent, in detail"],["platform.installed_tools","Installed tools"],["platform.list_skills","Skills"],["platform.list_accounts","Accounts"],["platform.list_groups","Groups"],["platform.catalogue","Agents you can add"],["system.time","The time"],["system.info","This Mac"],["reminder.list","Reminders"],["schedule.list_mine","Scheduled runs"],["goal.list","Goals"],["goal.status","How a goal is going"]]);function fX({agentId:e,groupId:n,currentId:s,timezone:r,onSelect:a,onNew:i}){const[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(0);return d.useEffect(()=>{let m=!1;return o(null),u(null),(n?nt.groupConversations(n):nt.conversations(e,100)).then(p=>{m||o(p.conversations)}).catch(p=>{m||u(p instanceof Error?p.message:String(p))}),()=>{m=!0}},[e,n,h]),t.jsxs("section",{className:"wb-history","aria-label":"Past conversations",children:[t.jsxs("div",{className:"ui-toolbar",children:[t.jsx("strong",{children:"Past conversations"}),t.jsx("button",{className:"ui-btn",onClick:i,children:"New conversation"})]}),c?t.jsxs("p",{role:"alert",children:[c," ",t.jsx("button",{className:"ui-btn",onClick:()=>f(m=>m+1),children:"Retry"})]}):l===null?t.jsx("p",{className:"muted",children:"Loading conversations…"}):l.length===0?t.jsx("p",{className:"muted",children:"No conversations yet."}):t.jsx("ul",{children:l.map(m=>t.jsx("li",{children:t.jsxs("a",{href:n?Gi(n,m.id):ht(e,m.id),"aria-current":m.id===s?"page":void 0,onClick:p=>{p.button===0&&!p.metaKey&&!p.ctrlKey&&!p.shiftKey&&!p.altKey&&(p.preventDefault(),a(m.id))},children:[t.jsx("span",{children:m.preview||m.opening||"Untitled conversation"}),t.jsxs("small",{children:[Nt(m.lastMessageAt??m.startedAt??m.createdAt??null,r)," · ",m.messageCount," messages",m.id===s?" · Current":""]})]})},m.id))}),t.jsx("a",{href:"#/conversations",children:"View all agents’ conversation records ↗"}),(l==null?void 0:l.length)===100?t.jsx("p",{className:"muted",children:"Showing the 100 most recent conversations."}):null]})}const mX=600,Kl={closed:[],touched:{}},U1=/^[\w:./-]{1,200}$/;function pX(e){return{closed:e.closed.filter(n=>U1.test(n)).slice(-200),touched:Object.fromEntries(Object.entries(e.touched).filter(([n])=>U1.test(n)).sort((n,s)=>n[1]-s[1]).slice(-200))}}function gX(e,n=Date.now){const[s,r]=d.useState({id:null,value:Kl}),a=d.useRef(null),i=d.useRef(null),l=d.useRef([]),o=d.useRef(null),c=d.useCallback(()=>{a.current&&clearTimeout(a.current),a.current=null;const g=i.current;i.current=null,g&&nt.saveCanvasTabs(g.id,g.value).catch(()=>{})},[]);d.useEffect(()=>{if(c(),l.current=[],o.current=null,r({id:e,value:Kl}),!e)return;let g=!0;return Promise.resolve().then(()=>nt.canvasTabs(e)).catch(()=>Kl).then(b=>{if(!g)return;const j=b&&Array.isArray(b.closed)&&b.touched&&typeof b.touched=="object"?b:Kl,v=l.current.reduce((k,N)=>N(k),j),y=l.current.length>0;l.current=[],o.current=e,r({id:e,value:v,ready:!0}),y&&(i.current={id:e,value:v},c())}),()=>{g=!1}},[e,c]),d.useEffect(()=>()=>c(),[c]);const u=d.useCallback(g=>{e&&(o.current!==e&&l.current.push(g),r(b=>{const j=pX(g(b.id===e?b.value:Kl));return o.current===e&&(i.current={id:e,value:j},a.current&&clearTimeout(a.current),a.current=setTimeout(c,mX)),{id:e,value:j,ready:b.id===e&&b.ready===!0}}))},[e,c]),h=d.useCallback(g=>u(b=>({...b,closed:[...b.closed.filter(j=>!g.includes(j)),...g]})),[u]),f=d.useCallback(g=>u(b=>b.closed.some(j=>g.includes(j))?{...b,closed:b.closed.filter(j=>!g.includes(j))}:b),[u]),m=d.useCallback(g=>u(b=>({...b,touched:{...b.touched,[g]:n()}})),[u,n]),p=s.id===e?s.value:Kl;return{ready:e===null||s.id===e&&s.ready===!0,closed:p.closed,touched:p.touched,close:h,reopen:f,touch:m}}const B1=3;function xX(e){return e.frontDesk?"the front desk":`@${e.handle}`}function W1(e){const n=e.slice(0,B1).map(xX);return e.length>B1?`${n.join(", ")}, …`:n.join(", ")}function vX(e){const n=e.asks==="everyone"?"may ask everyone":e.asks.length===0?"asks nobody yet":`may ask ${W1(e.asks)}`,s=e.askedBy.length===0?"and nobody asks it yet":`and can be asked by ${W1(e.askedBy)}`;return`New here. @${e.handle} ${n}, ${s}.`}function jX({agentId:e}){const n=ve(()=>T.agentIntro(e),[e]),[s,r]=d.useState(!1),a=n.data;if(s||!a||!a.show)return null;const i=()=>{r(!0),T.dismissAgentIntro(e).catch(()=>{})};return t.jsxs("div",{className:"wb-new-agent",role:"status","data-testid":"new-agent-strip",children:[t.jsx("p",{className:"wb-new-agent-text",children:vX(a)}),t.jsx(it,{variant:"ghost",size:"sm",href:Jt(e,"setup","team"),onClick:i,children:"Adjust"}),t.jsx(A,{variant:"ghost",size:"sm",className:"ui-icon-btn","aria-label":"Close",title:"Close",onClick:i,children:t.jsx(se,{name:"close",size:14})})]})}const iy="",ux=/(`[^`\n]+`)|(\*\*[^*\n]+\*\*)|(\*[^*\s][^*\n]*\*|_[^_\s][^_\n]*_)|(\[[^\]\n]+\]\([^)\s]+\))|(https?:\/\/[^\s)]+)|(@[a-z][a-z0-9-]*)/gi;function dx(e,n,s){const r=[];let a=0,i=0;ux.lastIndex=0;for(let l=ux.exec(e);l;l=ux.exec(e)){l.index>a&&r.push(e.slice(a,l.index));const o=l[0],c=`${s}-${i++}`;if(l[1])r.push(t.jsxs("span",{className:"cv-code",children:[t.jsx("span",{className:"cv-mark",children:"`"}),o.slice(1,-1),t.jsx("span",{className:"cv-mark",children:"`"})]},c));else if(l[2])r.push(t.jsxs("span",{className:"cv-b",children:[t.jsx("span",{className:"cv-mark",children:"**"}),o.slice(2,-2),t.jsx("span",{className:"cv-mark",children:"**"})]},c));else if(l[3])r.push(t.jsxs("span",{className:"cv-i",children:[t.jsx("span",{className:"cv-mark",children:o[0]}),o.slice(1,-1),t.jsx("span",{className:"cv-mark",children:o[0]})]},c));else if(l[4]){const u=o.indexOf("](");r.push(t.jsxs("span",{className:"cv-link-md",children:[t.jsx("span",{className:"cv-mark",children:"["}),t.jsx("span",{className:"cv-link",children:o.slice(1,u)}),t.jsx("span",{className:"cv-mark",children:o.slice(u)})]},c))}else if(l[5])r.push(t.jsx("span",{className:"cv-link",children:o},c));else{const u=l.index>0?e[l.index-1]:" ",h=/[\s(]/.test(u)?n.find(f=>f.handle.toLowerCase()===o.slice(1).toLowerCase()):void 0;r.push(h?t.jsx("span",{className:"cv-chip",...h.accent,children:o},c):o)}a=l.index+o.length}return a<e.length&&r.push(e.slice(a)),r}function yX(e,n){const s=e.split(`
|
|
128
|
+
`);let r=null;return s.map((a,i)=>{const l=/^```(\w*)\s*$/.exec(a);if(r===null&&l){r=l[1]??"";const u=s.slice(i+1).some(h=>/^```\s*$/.test(h));return t.jsxs("div",{className:"cv-line","data-code":"open","data-unclosed":u?void 0:"true",children:[t.jsx("span",{className:"cv-mark",children:a}),r?t.jsx("span",{className:"cv-lang","aria-hidden":"true","data-paint-extra":"",children:RR(r)}):null]},i)}if(r!==null)return/^```\s*$/.test(a)?(r=null,t.jsx("div",{className:"cv-line","data-code":"close",children:t.jsx("span",{className:"cv-mark",children:a})},i)):t.jsx("div",{className:"cv-line","data-code":"body",children:t.jsx("span",{className:"cv-code-ink",children:a||iy})},i);const o=/^(#{1,3} )(.*)$/.exec(a);if(o)return t.jsxs("div",{className:"cv-line","data-h":o[1].length-1,children:[t.jsx("span",{className:"cv-mark",children:o[1]}),t.jsx("span",{className:"cv-h",children:dx(o[2],n,String(i))})]},i);const c=/^(\s*)([-*]|\d+\.)( )(.*)$/.exec(a);return c?t.jsxs("div",{className:"cv-line",children:[c[1],t.jsx("span",{className:"cv-bullet",children:c[2]}),c[3],dx(c[4],n,String(i))]},i):t.jsx("div",{className:"cv-line",children:a?dx(a,n,String(i)):iy},i)})}const Ck=(e,n)=>`${e}-opt-${n}`;function wX({id:e,items:n,active:s,onPick:r,phone:a,maxHeight:i}){let l=null;return t.jsxs("div",{className:"cv-pop","data-testid":"mention-popup",children:[t.jsx("div",{className:"cv-pop-list",id:e,role:"listbox","aria-label":"Mention someone",style:i?{maxHeight:i}:void 0,children:n.map((o,c)=>{const u=o.group!==l?l=o.group:null;return t.jsxs(d.Fragment,{children:[u?t.jsx("div",{className:"cv-pop-group",role:"presentation",children:u}):null,t.jsxs("div",{id:Ck(e,c),role:"option","aria-selected":c===s,"aria-label":`${o.name}, @${o.handle}. ${o.effect}`,className:"cv-pop-row","data-mention":"true","data-active":c===s||void 0,onMouseDown:h=>{h.preventDefault(),r(o)},children:[t.jsx(Bn,{id:o.id,name:o.name,size:"sm",...o.face?{face:o.face}:{}}),t.jsxs("span",{className:"cv-pop-title",children:[o.name," ",t.jsxs("span",{className:"cv-pop-handle",children:["@",o.handle]})]}),c===s?t.jsx("span",{className:"cv-pop-effect",children:o.effect}):null,c===s&&!a?t.jsx("kbd",{className:"cv-kbd",children:"↵"}):null]})]},o.id)})}),a?null:t.jsxs("div",{className:"cv-pop-foot","aria-hidden":"true",children:[t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"↑"}),t.jsx("kbd",{className:"cv-kbd",children:"↓"})," choose"]}),t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"↵"})," or ",t.jsx("kbd",{className:"cv-kbd",children:"Tab"})," mention"]}),t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"Esc"})," close"]})]})]})}function bX({id:e,items:n,active:s,onPick:r,phone:a,query:i,maxHeight:l}){if(n.length===0)return t.jsx("div",{className:"cv-pop","data-testid":"command-menu",children:t.jsx("div",{className:"cv-pop-list",id:e,role:"listbox","aria-label":"Commands",children:t.jsxs("div",{className:"cv-pop-empty",role:"status",children:["No command called ",t.jsxs("span",{className:"mono",children:["/",i]}),". ",a?"Send sends it as text.":"Enter sends it as text."]})})});let o=null;return t.jsxs("div",{className:"cv-pop","data-testid":"command-menu",children:[t.jsx("div",{className:"cv-pop-list",id:e,role:"listbox","aria-label":"Commands",style:l?{maxHeight:l}:void 0,children:n.map((c,u)=>{const h=c.group!==o?o=c.group:null;return t.jsxs(d.Fragment,{children:[h?t.jsx("div",{className:"cv-pop-group",role:"presentation",children:h}):null,t.jsxs("div",{id:Ck(e,u),role:"option","aria-selected":u===s,"aria-disabled":c.off||void 0,"aria-label":`/${c.name}${c.args?` ${c.args}`:""}: ${c.desc}`,className:"cv-pop-row","data-cmd":"true","data-active":u===s||void 0,"data-off":c.off||void 0,onMouseDown:f=>{f.preventDefault(),c.off||r(c)},children:[t.jsxs("span",{className:"cv-pop-cmd",children:["/",c.name,c.args?t.jsxs("span",{className:"cv-pop-args",children:[" ",c.args]}):null]}),t.jsx("span",{className:"cv-pop-desc",children:c.desc}),a?null:c.key?t.jsx("kbd",{className:"cv-kbd",children:c.key}):u===s?t.jsx("kbd",{className:"cv-kbd",children:"↵"}):null]})]},`${c.group}/${c.name}`)})}),a?null:t.jsxs("div",{className:"cv-pop-foot","aria-hidden":"true",children:[t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"↑"}),t.jsx("kbd",{className:"cv-kbd",children:"↓"})," choose"]}),t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"↵"})," run"]}),t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"Tab"})," add words"]}),t.jsxs("span",{children:[t.jsx("kbd",{className:"cv-kbd",children:"Esc"})," close"]})]})]})}const kX=350,NX=60;function SX({conversationId:e,onText:n,onNotice:s}){const[r,a]=d.useState("idle"),i=d.useRef("idle"),l=v=>{i.current=v,a(v)},o=d.useRef(null),c=d.useRef(null),u=d.useRef(null),h=d.useRef(null),f=d.useRef(null),m=d.useRef({onText:n,onNotice:s,conversationId:e});m.current={onText:n,onNotice:s,conversationId:e};const p=()=>{u.current!==null&&(window.clearTimeout(u.current),u.current=null)},x=async()=>{if(i.current!=="idle")return;m.current.onNotice(null),l("starting"),c.current=null;let v;try{v=await QW(N=>{var w;return(w=f.current)==null?void 0:w.call(f,N)})}catch(N){h.current=null,l("idle"),m.current.onNotice(YW(N));return}const y=c.current;c.current=null;const k=i.current;if(y==="discard"||k!=="starting"){v.cancel(),k==="starting"&&l("idle");return}o.current=v,l("recording"),u.current=window.setTimeout(()=>void g(!1),VW),y&&g(y.sendNow)},g=async v=>{h.current=null;const y=o.current;if(!y){i.current==="starting"&&(c.current={sendNow:v});return}o.current=null,p(),l("transcribing");try{const k=await y.stop();if(k.size<=44){m.current.onNotice("Nothing was recorded.");return}const N=new File([k],`recording-${new Date().toISOString().slice(0,19).replace(/[:T]/g,"-")}.wav`,{type:"audio/wav"}),w=await nt.attach(N),S=m.current.conversationId,C=await nt.transcribe({artifactId:w.artifactId,...S?{conversationId:S}:{}});m.current.onText(C.text,v)}catch(k){m.current.onNotice(k instanceof pe||k instanceof Error?k.message:String(k))}finally{l("idle")}},b=()=>{h.current=null;const v=o.current;if(!v){i.current==="starting"&&(c.current="discard");return}o.current=null,p(),v.cancel(),l("idle")};d.useEffect(()=>{const v=y=>{if(h.current===null)return;const k=Date.now()-h.current;h.current=null,k>=kX&&g(y.shiftKey)};return window.addEventListener("pointerup",v),()=>window.removeEventListener("pointerup",v)},[]);const j=r==="starting"||r==="recording";return d.useEffect(()=>{if(!j)return;const v=y=>{y.isComposing||y.repeat||(y.key==="Escape"?(y.preventDefault(),y.stopPropagation(),b()):y.key==="Enter"&&(y.preventDefault(),y.stopPropagation(),g(y.shiftKey)))};return window.addEventListener("keydown",v,!0),()=>window.removeEventListener("keydown",v,!0)},[j]),d.useEffect(()=>()=>{var v;(v=o.current)==null||v.cancel(),p()},[]),{state:r,hold:()=>{h.current=Date.now(),x()},start:()=>{h.current=null,x()},finish:v=>void g(v),discard:b,levels:f}}function CX({disabled:e,voice:n}){const s=a=>{e||a.button>0||n.state!=="idle"||(a.preventDefault(),n.hold())},r=a=>{a.detail!==0||e||n.state!=="idle"||n.start()};return t.jsx("button",{type:"button",className:"ui-icon-btn wb-mic","data-size":"sm","aria-label":"Talk",title:"Talk: click to start, or hold to speak and let go to stop",disabled:e,onPointerDown:s,onClick:r,onContextMenu:a=>a.preventDefault(),children:t.jsx(se,{name:"mic"})})}function EX({voice:e}){const n=d.useRef(null),s=e.state==="transcribing";return d.useEffect(()=>{var r;(r=n.current)==null||r.focus()},[]),t.jsxs("div",{className:"wb-listening",role:"group","aria-label":"Recording","data-phase":s?"transcribing":"listening",children:[t.jsx("p",{className:"wb-listening-label","aria-live":"polite",children:s?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"wb-listening-spinner","aria-hidden":"true"}),"Transcribing…"]}):"Listening…"}),t.jsxs("div",{className:"wb-listening-row",children:[t.jsx(AX,{sink:e.levels,frozen:s}),t.jsx("button",{type:"button",className:"wb-send","data-variant":"quiet","aria-label":"Discard recording",title:"Discard (Escape)",disabled:s,onClick:()=>e.discard(),children:t.jsx(se,{name:"close"})}),t.jsx("button",{ref:n,type:"button",className:"wb-send","aria-label":"Stop and transcribe",title:"Stop and transcribe (Enter); Shift sends at once",disabled:s,onClick:r=>e.finish(r.shiftKey),children:t.jsx(se,{name:"check"})})]})]})}function AX({sink:e,frozen:n}){const[s,r]=d.useState(()=>Array(NX).fill(0));return d.useEffect(()=>{if(!n)return e.current=a=>r(i=>[...i.slice(1),a]),()=>{e.current=null}},[n]),t.jsx("div",{className:"wb-wave","aria-hidden":"true","data-testid":"waveform",children:s.map((a,i)=>t.jsx("span",{className:"wb-wave-bar",style:{"--level":a.toFixed(3)}},i))})}const $X="This browser cannot capture a tab. Chrome, Safari and Firefox can, on a secure address.",Nh="The tab could not be captured. Try again, and pick the tab itself rather than the whole screen.",TX=e=>e instanceof Error&&(e.name==="NotAllowedError"||e.name==="AbortError");async function RX(e={}){var r;const n=e.media??(typeof navigator>"u"?void 0:navigator.mediaDevices);if(!n||typeof n.getDisplayMedia!="function")throw new Error($X);let s;try{s=await n.getDisplayMedia({video:{displaySurface:"browser"},audio:!1,selfBrowserSurface:"exclude",surfaceSwitching:"exclude",preferCurrentTab:!1})}catch(a){if(TX(a))return null;throw new Error(Nh)}try{const a=e.document??document,i=a.createElement("video");i.muted=!0,i.playsInline=!0,i.srcObject=s,await new Promise((h,f)=>{i.onloadedmetadata=()=>h(),i.onerror=()=>f(new Error(Nh))}),await i.play(),await new Promise(h=>{const f=i.requestVideoFrameCallback;typeof f=="function"?f.call(i,()=>h()):setTimeout(h,120)});const l=a.createElement("canvas");l.width=i.videoWidth,l.height=i.videoHeight;const o=l.getContext("2d");if(!o||l.width===0)throw new Error(Nh);o.drawImage(i,0,0);const c=await new Promise(h=>l.toBlob(h,"image/png"));if(!c)throw new Error(Nh);const u=(((r=e.now)==null?void 0:r.call(e))??new Date).toISOString().slice(0,19).replace("T"," ").replace(/:/g,".");return new File([c],`Tab ${u}.png`,{type:"image/png"})}finally{s.getTracks().forEach(a=>a.stop())}}function IX(e,n){return`${e} picks up ${n===1?"the file":"the files"} between steps, or right after this answer.`}const ly="wb-composer-input",PX="(max-width: 720px)",H1={desk:288,phone:240};function MX(e,n,s){const[r,a]=d.useState(void 0);return d.useEffect(()=>{if(!n)return;const i=window.visualViewport??null,l=()=>{const o=e.current;if(!o||typeof o.getBoundingClientRect!="function")return;const c=o.getBoundingClientRect().top-(i?i.offsetTop:0),u=Math.floor(c-(s?16:64)),h=s?H1.phone:H1.desk;a(u>0&&u<h?Math.max(u,96):void 0)};return l(),i==null||i.addEventListener("resize",l),i==null||i.addEventListener("scroll",l),window.addEventListener("resize",l),()=>{i==null||i.removeEventListener("resize",l),i==null||i.removeEventListener("scroll",l),window.removeEventListener("resize",l)}},[n,s,e]),r}const Ek=d.forwardRef(function({disabled:n,running:s,onSend:r,onStop:a,agentName:i,draft:l,model:o,chrome:c,setupHref:u,thinking:h,onThinking:f,onOpenFile:m,mentions:p,team:x,onCommand:g,history:b,threadKey:j,conversationId:v,readAloud:y,onReadAloud:k,placeholder:N,slim:w},S){var Ad,$d,Wa;const C=Mi(),E=j?`buddi.draft.${j}`:null,$=q=>{if(!q)return"";try{return window.localStorage.getItem(q)??""}catch{return""}},[R,P]=d.useState(()=>$(E)),[O,I]=d.useState(()=>R.length),[F,U]=d.useState([]),[L,M]=d.useState(!1),[z,D]=d.useState(null),[H,K]=d.useState(!1),[X,W]=d.useState(null),me=d.useRef(null),fe=d.useRef(null),oe=d.useRef(null),B=ts(PX),ue=`cv-pop-${d.useId().replace(/[^a-zA-Z0-9_-]/g,"")}`,Ne=R4(),Ke=d.useMemo(()=>{const q=Le=>x==null?void 0:x.agents.find(fn=>fn.id===Le),Ve=(Le,fn)=>gl(ic(Le??{id:fn}));if(p)return p.map(Le=>{const fn=Le.id??Le.handle,xs=q(fn);return{id:fn,handle:Le.handle,name:Le.name,effect:`Asks @${Le.handle} in this room`,group:"In this room",accent:Ve(xs,fn),...xs?{face:xs}:{}}});if(!x)return[];const et=x.agents.find(Le=>Le.roles.includes(Mr)&&Le.id!==x.selfId),an=x.agents.filter(Le=>Le.id!==x.selfId&&Le!==et);return[...et?[{id:et.id,handle:et.handle,name:et.name,effect:`Borrows ${et.name} for this message`,group:"Borrow",accent:gl({key:"buddi"}),face:et}]:[],...an.map(Le=>({id:Le.id,handle:Le.handle,name:Le.name,effect:`${i} asks @${Le.handle}`,group:"Ask a teammate",accent:Ve(Le,Le.id),face:Le}))]},[p,x,i]),G=!p&&x?((Ad=x.agents.find(q=>q.roles.includes(Mr)&&q.id!==x.selfId))==null?void 0:Ad.handle)??null:null,[ae,J]=d.useState(!1),[xe,Ie]=d.useState(0),Y=!!g,te=Y&&zU(R,O),ie=!ae&&Ke.length>0?FU(R,O):null,ge=!ae&&Y&&!ie?_U(R,O):null,je=ie?Ke.filter(q=>!te||q.group!=="Borrow").filter(q=>q.handle.toLowerCase().startsWith(ie.query.toLowerCase())||q.name.toLowerCase().startsWith(ie.query.toLowerCase())).map(q=>te?{...q,group:"Talk to",effect:`Talk to ${q.name} from here on`}:q).slice(0,8):[],Se=d.useMemo(()=>[...C4(i,s),...A4(Ne)],[i,s,Ne]),ke=ge?Se.filter(q=>q.name.startsWith(ge.query.toLowerCase())):[],Be=ie&&je.length>0?"mention":ge?"slash":null,rt=Be==="mention"?je:Be==="slash"?ke:[],ye=rt.length>0?Math.min(xe,rt.length-1):-1,Ue=MX(oe,Be!==null,B),st=b??[],[Fe,wt]=d.useState(-1),ot=d.useRef(R),tn=d.useRef(E);if(tn.current!==E){tn.current=E;const q=$(E);ot.current=q,q!==R&&(P(q),I(q.length),wt(-1),W(null))}const $t=q=>{if(ot.current=q,!!E)try{q===""?window.localStorage.removeItem(E):window.localStorage.setItem(E,q)}catch{}},Et=q=>{P(q.value),I(q.caret),J(!1),Ie(0),Fe<0&&$t(q.value);const Ve=fe.current;Ve&&(Ve.value=q.value,Ve.setSelectionRange(q.caret,q.caret),window.requestAnimationFrame(()=>{Ve.focus(),Ve.setSelectionRange(q.caret,q.caret)}))},$n=q=>{P(q),I(q.length),J(!1);const Ve=fe.current;Ve&&(Ve.value=q,Ve.setSelectionRange(q.length,q.length))},nn=q=>!q.value.slice(0,q.selectionStart??q.value.length).includes(`
|
|
129
|
+
`),ce=()=>R===""||Fe>=0&&R===st[Fe],Me=()=>{Fe<0||(wt(-1),$n(ot.current))},Ze=F.some(q=>q.state==="uploading"),Ct=F.length>0,mt=s&&Ct,Pe=F.some(q=>q.state==="ready"&&q.uploaded),ct=!n&&!Ze&&(R.trim()!==""||Pe),_e=q=>{const Ve=[];for(const et of Array.from(q??[])){const an=`${et.name}:${et.size}:${Math.random().toString(36).slice(2,8)}`;Ve.push(an);const Le=et.type.startsWith("image/")&&typeof URL.createObjectURL=="function"?URL.createObjectURL(et):null;U(fn=>[...fn,{key:an,filename:et.name||"Pasted image",mime:et.type||"application/octet-stream",sizeBytes:et.size,thumbnail:Le,state:"uploading"}]),nt.attach(et).then(fn=>U(xs=>xs.map(jr=>jr.key===an?{...jr,state:"ready",uploaded:fn}:jr))).catch(fn=>U(xs=>xs.map(jr=>jr.key===an?{...jr,state:"failed",error:fn instanceof pe?fn.message:String(fn)}:jr)))}return Ve},Gt=q=>{q.thumbnail&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(q.thumbnail)},Z=q=>{const Ve=F.find(et=>et.key===q);Ve&&(Gt(Ve),Ve.state==="ready"&&Ve.uploaded&&nt.discardAttachment(Ve.uploaded.artifactId).catch(()=>{})),U(et=>et.filter(an=>an.key!==q)),(X==null?void 0:X.kind)==="long"&&X.key===q&&W(null)};d.useImperativeHandle(S,()=>({addFiles:q=>{var Ve;_e(q),(Ve=fe.current)==null||Ve.focus()},focus:()=>{var q;return(q=fe.current)==null?void 0:q.focus()},carryDraftTo:q=>{const Ve=`buddi.draft.${q}`;tn.current=Ve;try{R?window.localStorage.setItem(Ve,R):window.localStorage.removeItem(Ve),E&&E!==Ve&&window.localStorage.removeItem(E)}catch{}}}));const ut=d.useRef(F);ut.current=F,d.useEffect(()=>()=>ut.current.forEach(Gt),[]);const Yn=d.useRef(0);d.useEffect(()=>{if(!l||l.at===Yn.current)return;Yn.current=l.at;const q=R.trim()==="";P(et=>et.trim()===""?l.text:et),Fe<0&&q&&$t(l.text);const Ve=fe.current;Ve&&(Ve.focus(),window.requestAnimationFrame(()=>{Ve.setSelectionRange(Ve.value.length,Ve.value.length),I(Ve.value.length)}))},[l]);const xn=()=>{wt(-1),$t(""),P(""),I(0),W(null),J(!1)},Te=(q,Ve)=>{if(g){if(q==="stop"&&!s){xn();return}xn(),g(q,Ve)}},De=q=>{const Ve=(q??R).trim();if(q===void 0?!ct:n||Ze||Ve==="")return;const et=q===void 0&&g?UU(Ve):null;if(et&&YN(et.name)&&F.length===0){if(et.name==="use"&&et.arg===""){Et({value:"/use @",caret:6});return}Te(et.name,et.arg.replace(/^@/,""));return}const an=F.filter(Le=>Le.state==="ready"&&Le.uploaded).map(Le=>Le.uploaded);r(Ve,an),F.forEach(Gt),xn(),U([])},xt=q=>{if(ie){if(te&&g){Te("use",q.handle);return}Et(BU(R,O,ie.start,q.handle))}},It=(q,Ve)=>{if(q.off)return;const et=R.slice(O);if(Ve||$4(q)){const Le=`/${q.name} ${q.name==="use"?"@":""}`;Et({value:Le+et.replace(/^\S*/,"").replace(/^ /,""),caret:Le.length});return}if(q.source==="chat"&&YN(q.name)){Te(q.name,"");return}const an=`/${q.name}`;if(n||Ze){Et({value:`${an} `,caret:an.length+1});return}De(an)},On=q=>{if(q.nativeEvent.isComposing)return;if(Be&&rt.length>0){if(q.key==="ArrowDown"){q.preventDefault(),Ie((ye+1)%rt.length);return}if(q.key==="ArrowUp"){q.preventDefault(),Ie((ye-1+rt.length)%rt.length);return}if(q.key==="Enter"&&!q.shiftKey||q.key==="Tab"){q.preventDefault();const Le=rt[ye];Be==="mention"?xt(Le):It(Le,q.key==="Tab");return}}if(Be&&q.key==="Escape"){q.preventDefault(),J(!0);return}if(q.key==="ArrowUp"&&!q.shiftKey&&!q.altKey&&!q.metaKey&&!q.ctrlKey){const Le=q.currentTarget;if(st.length>0&&Fe+1<st.length&&nn(Le)&&ce()){q.preventDefault(),Fe<0&&(ot.current=R),wt(Fe+1),$n(st[Fe+1]);return}}if(q.key==="ArrowDown"&&!q.shiftKey&&!q.altKey&&!q.metaKey&&!q.ctrlKey&&Fe>=0&&R===st[Fe]){if(q.preventDefault(),Fe===0){Me();return}wt(Fe-1),$n(st[Fe-1]);return}if(q.key==="Escape"&&Fe>=0){q.preventDefault(),Me();return}if(q.key==="Escape"&&s&&g){q.preventDefault(),a();return}const Ve=q.currentTarget,et=Ve.selectionStart??O,an=Ve.selectionStart===Ve.selectionEnd;if(q.key==="Tab"&&an&&!q.altKey&&!q.metaKey&&!q.ctrlKey){const Le=KU(R,et,q.shiftKey);if(Le){q.preventDefault(),Et(Le);return}}if(q.key==="Enter"&&!q.shiftKey&&!q.metaKey&&!q.ctrlKey&&!q.altKey){const Le=an?HU(R,et):null;if(Le){q.preventDefault(),Et(Le);return}if(eu(R,et))return;q.preventDefault(),De();return}q.key==="Enter"&&(q.metaKey||q.ctrlKey)&&(q.preventDefault(),De())},as=q=>{var jr,Li;const Ve=Array.from(((jr=q.clipboardData)==null?void 0:jr.files)??[]);if(Ve.length>0){q.preventDefault(),_e(Ve);return}const et=typeof((Li=q.clipboardData)==null?void 0:Li.getData)=="function"?q.clipboardData.getData("text/plain"):"";if(et==="")return;const an=q.currentTarget,Le=an.selectionStart??O,fn=an.selectionEnd??Le,xs=R.slice(0,Le)+R.slice(fn);if(et.length>DU){q.preventDefault();const Ml=new File([et],"pasted-text.txt",{type:"text/plain"}),[Ps]=_e([Ml]),Ol=et.replace(/\n$/,"").split(`
|
|
130
|
+
`).length,Td=`${Ol} ${Ol===1?"line":"lines"} · ${Math.ceil(et.length/1024)} KB`;U(Rd=>Rd.map(Yt=>Yt.key===Ps?{...Yt,detail:Td}:Yt)),xs!==R&&Et({value:xs,caret:Le}),W({kind:"long",key:Ps,text:et,caret:Le});return}if(VU(et)&&!eu(xs,Le)){q.preventDefault();const Ml=GU(et),Ps=qU(xs,Le,et,Ml);W({kind:"fenced",lang:Ml,block:Ps.value.slice(Le,Ps.caret),text:et}),Et(Ps)}},er=()=>{if(X){if(X.kind==="fenced"){const q=R.indexOf(X.block);q>=0&&Et({value:R.slice(0,q)+X.text+R.slice(q+X.block.length),caret:q+X.text.length})}else{Z(X.key);const q=Math.min(X.caret,R.length);Et({value:R.slice(0,q)+X.text+R.slice(q),caret:q+X.text.length})}W(null)}},tr=F.filter(q=>q.state==="failed"),Dn=tr.length,Ot=SX({conversationId:v??null,onNotice:D,onText:(q,Ve)=>{const et=R.trim()===""?q:`${R.replace(/\s+$/,"")} ${q}`;if(Ve){De(et);return}$n(et),Fe<0&&$t(et)}}),Ee=Ot.state!=="idle",Hr=d.useRef(!1);d.useEffect(()=>{var q;Hr.current&&!Ee&&((q=fe.current)==null||q.focus()),Hr.current=Ee},[Ee]);const Je=Be!==null&&!Ee&&!n,tt=nb(R,O),Pt=eu(R,O),Is=YU(R).map(q=>Ke.find(Ve=>Ve.handle.toLowerCase()===q)).filter(q=>!!q),Qn=G!==null&&(($d=IR(R))==null?void 0:$d.handle)===G.toLowerCase(),vr=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent),qt=q=>q.group==="Borrow"?Qn?`borrows ${q.name} for this message`:`${i} asks them`:q.group==="In this room"?"is asked in this room":`${i} asks them`,Wn=Dn>0?Dn===1&&((Wa=tr[0])!=null&&Wa.error)?tr[0].error:`${Dn} files failed to upload and will not be sent`:z,nr=Wn??(s||Je?null:tt?"Enter continues the list · Enter on an empty item ends it · Tab indents":Pt?`In a code block Enter adds a line · ${vr?"⌘":"Ctrl+"}Enter sends`:Is.length>0?t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"cv-chip",...Is[0].accent,children:["@",Is[0].handle]})," ",qt(Is[0]),Is.length>1?` · and ${Is.length-1} more`:""]}):R!==""?"Enter sends, Shift+Enter for a new line":null),xa=N??(s?`${i} is working…`:p?"Message the room · @ to ask someone":x&&Y?`Message ${i} · @ to mention, / for commands`:`Message ${i}`),Di=d.useMemo(()=>Ke.map(q=>({handle:q.handle,accent:q.accent})),[Ke]),Ed=q=>I(q.selectionStart??q.value.length);return t.jsxs("div",{className:"wb-composer cv","data-testid":"composer","data-slim":w||void 0,"data-phone":B?"true":void 0,"data-busy":R.trim()!==""||Ct||Ee?"true":void 0,children:[t.jsxs("div",{className:"cv-anchor",children:[Je&&Be==="mention"?t.jsx(wX,{id:ue,items:je,active:ye,onPick:xt,phone:B,maxHeight:Ue}):null,Je&&Be==="slash"?t.jsx(bX,{id:ue,items:ke,active:ye,onPick:q=>It(q,!1),phone:B,query:(ge==null?void 0:ge.query)??"",maxHeight:Ue}):null,t.jsxs("div",{ref:oe,className:"wb-composer-box cv-box","data-focused":H||Ee,"data-disabled":n,"data-listening":Ee||void 0,children:[F.length>0?t.jsx("div",{className:"wb-composer-files",role:"list","aria-label":"Files to send",children:F.map(q=>t.jsx("span",{role:"listitem",children:t.jsx(Nd,{name:q.filename,mime:q.mime,sizeBytes:q.sizeBytes,thumbnail:q.thumbnail,state:q.state,error:q.error,onRemove:()=>Z(q.key),...m&&q.state==="ready"&&q.uploaded?{onOpen:()=>m(DX(q.uploaded))}:{},size:"sm",detail:q.detail})},q.key))}):null,t.jsxs("label",{className:"sr-only",htmlFor:ly,children:["Message ",i]}),t.jsxs("div",{className:"cv-field",hidden:Ee,children:[t.jsxs("div",{className:"cv-paint","aria-hidden":"true","data-testid":"composer-paint",children:[yX(R,Di),t.jsx("span",{className:"cv-tail",children:iy})]}),t.jsx("textarea",{id:ly,ref:fe,value:R,rows:1,spellCheck:!1,placeholder:xa,"aria-controls":Je?ue:void 0,"aria-expanded":Je?!0:void 0,"aria-autocomplete":Ke.length>0||Y?"list":void 0,"aria-activedescendant":Je&&ye>=0?Ck(ue,ye):void 0,onChange:q=>{P(q.target.value),Ed(q.target),J(!1),Ie(0),Fe<0&&$t(q.target.value)},onSelect:q=>Ed(q.currentTarget),onFocus:()=>K(!0),onBlur:()=>K(!1),onKeyDown:On,onPaste:as,disabled:n,hidden:Ee})]}),Ee?t.jsx(EX,{voice:Ot}):null,X&&!Ee?t.jsxs("div",{className:"cv-note",role:"status",children:[t.jsx("span",{className:"cv-note-icon",children:t.jsx(se,{name:X.kind==="long"?"pasted-doc":"code"})}),t.jsx("span",{className:"cv-note-text",children:X.kind==="fenced"?t.jsxs(t.Fragment,{children:["Pasted as code · ",RR(X.lang)]}):t.jsx(t.Fragment,{children:"Long paste, attached as a file"})}),t.jsx(A,{size:"sm",variant:"ghost",onClick:er,children:X.kind==="fenced"?"Undo":"Put it in the message"})]}):null,t.jsxs("div",{className:"wb-composer-row",hidden:Ee,children:[t.jsx("input",{ref:me,type:"file",multiple:!0,hidden:!0,"data-testid":"file-input",onChange:q=>{_e(q.target.files),q.target.value=""}}),t.jsx("button",{className:"ui-icon-btn","data-size":"sm","aria-label":"Attach a file",title:"Attach a file — or paste one, or drop it anywhere on the chat",onClick:()=>{var q;return(q=me.current)==null?void 0:q.click()},disabled:n,children:t.jsx(se,{name:"clip"})}),t.jsx(CX,{disabled:n,voice:Ot}),B?null:t.jsx("button",{className:"ui-icon-btn","data-size":"sm","aria-label":"Snap a tab",title:"Snap a tab — one picture of another tab in this browser, attached here",onClick:()=>{D(null),M(!0),RX().then(q=>{var Ve;q&&(_e([q]),(Ve=fe.current)==null||Ve.focus())}).catch(q=>D(q instanceof Error?q.message:String(q))).finally(()=>M(!1))},disabled:n||L,children:t.jsx(se,{name:"camera"})}),o&&!B?u?t.jsxs("a",{className:"wb-composer-model",href:u,title:`${o} — the model this agent runs on. Click to change it.`,children:[t.jsx("span",{className:"wb-composer-model-dot","aria-hidden":"true"}),t.jsx(K1,{model:o})]}):t.jsxs("span",{className:"wb-composer-model",title:`${o} — the model this agent runs on`,children:[t.jsx("span",{className:"wb-composer-model-dot","aria-hidden":"true"}),t.jsx(K1,{model:o})]}):null,f?t.jsxs("button",{type:"button",className:"ui-icon-btn wb-composer-thinking","data-size":"sm","aria-label":"Thinking","aria-pressed":Sh(h),disabled:n||s,title:s?`Thinking: ${Sh(h)?"on":"off"} — wait for ${i} to finish to change it`:`Thinking: ${Sh(h)?"on":"off"}`,onClick:()=>f(Sh(h)?"off":"on"),children:[t.jsx(se,{name:"spark"}),t.jsx("span",{className:"wb-composer-think-dot","aria-hidden":"true"})]}):null,c?t.jsxs("button",{type:"button",className:"wb-composer-think wb-composer-chrome","aria-pressed":c.on,disabled:n,title:c.on?`This conversation looks in ${da(C)} first, where you are signed in. Click to let the agent choose again.`:`Use my ${C??"browser"} for this conversation: pages open in background tabs of ${da(C)}, where you are signed in.`,onClick:()=>c.onChange(!c.on),children:[t.jsx("span",{className:"wb-composer-think-dot","aria-hidden":"true"}),t.jsxs("span",{className:"wb-composer-chip-label",children:[B?null:t.jsx("span",{className:"wb-composer-chip-lead",children:"Use my "}),C??(B?"Browser":"browser")]})]}):null,k?t.jsx("button",{type:"button",className:"ui-icon-btn wb-read-aloud","data-size":"sm","aria-label":"Read replies aloud","aria-pressed":!!y,title:y?"Replies are read aloud. Click to stop.":"Read replies aloud, through the voice chosen in Settings → Speech",onClick:()=>k(!y),children:t.jsx(se,{name:"speaker"})}):null,t.jsx("span",{className:"wb-hint cv-hint","data-shown":!!nr&&(!B||Wn!==null),"data-tone":Dn>0||z!==null?"critical":void 0,children:B&&Wn===null?null:nr}),s?t.jsx("button",{className:"ui-btn","data-variant":"stop",onClick:a,children:"Stop"}):null,t.jsx("button",{className:"wb-send","aria-label":"Send",title:Ze?"Waiting for the upload to finish":s?`Send — ${i} picks it up between steps`:"Send",onClick:()=>De(),disabled:!ct,children:t.jsx(se,{name:"send"})})]})]})]}),mt?t.jsx("p",{className:"cv-wait",role:"status","data-testid":"files-wait",children:IX(i,F.length)}):null]})});function OX(e){const s=e.slice(e.lastIndexOf("/")+1).replace(/[:@].*$/,"").replace(/^claude-/,"").replace(/-\d{8}$/,"");return s===""?e:s}function K1({model:e}){const n=OX(e);return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"wb-composer-chip-label wb-composer-model-full",children:e}),t.jsx("span",{className:"wb-composer-chip-label wb-composer-model-short","aria-hidden":"true",children:n})]})}function Sh(e){return(e??"on")==="on"}function DX(e){return{type:"attachment",artifactId:e.artifactId,filename:e.filename,mime:e.mime,kind:e.kind,sizeBytes:e.sizeBytes}}function _2({question:e,disabled:n,onAnswer:s,onSkip:r}){const[a,i]=d.useState("");return d.useEffect(()=>{if(n)return;const l=o=>{o.key!=="Escape"||o.defaultPrevented||(o.preventDefault(),r())};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[n,r]),t.jsxs("section",{className:"wb-question","aria-label":"Question from agent","data-testid":"question-picker",children:[t.jsxs("div",{className:"wb-question-head",children:[t.jsx("span",{className:"wb-question-kicker",children:"Needs your input"}),t.jsx(A,{className:"wb-question-skip",variant:"ghost",size:"sm",disabled:n,onClick:r,title:"Skip this question (Esc). The agent carries on without an answer.",children:"Skip"}),t.jsx("strong",{children:LX(e.question)})]}),e.options.length>0?t.jsx("div",{className:"wb-question-options",children:e.options.map((l,o)=>t.jsxs("button",{className:"wb-question-option","data-recommended":l.recommended||void 0,disabled:n,onClick:()=>s(l.label,l.id),children:[t.jsx("span",{className:"wb-question-number",children:o+1}),t.jsxs("span",{children:[t.jsxs("span",{className:"wb-question-label",children:[l.label,l.recommended?t.jsx("em",{children:"Recommended"}):null]}),l.hint?t.jsx("small",{children:l.hint}):null]})]},l.id))}):null,e.allowOther?t.jsxs("form",{className:"wb-question-other",onSubmit:l=>{l.preventDefault(),a.trim()&&s(a.trim())},children:[t.jsx("input",{value:a,onChange:l=>i(l.target.value),placeholder:e.options.length?"Something else…":"Type your answer…",disabled:n}),t.jsx("button",{className:"ui-btn","data-variant":"accent",disabled:n||!a.trim(),children:"Answer"})]}):null,t.jsx("p",{className:"wb-question-note",children:"This answers a question. It does not approve an action. Esc skips it."})]})}function LX(e){const n=[];let s=0;for(const r of e.matchAll(/https:\/\/[^\s<>"']+/g)){const a=r[0].replace(/[.,;:!?)\]]+$/,""),i=r.index??0;i>s&&n.push(e.slice(s,i)),n.push(t.jsx("a",{href:a,target:"_blank",rel:"noopener noreferrer",children:a},i)),s=i+a.length}return s<e.length&&n.push(e.slice(s)),n}function FX(e,n){const s=i=>{var l;return`@${((l=n.find(o=>o.id===i))==null?void 0:l.handle)??i}`},[r,...a]=e;return r===void 0?"":[s(r),...a.map(i=>`asked by ${s(i)}`)].join(", ")}function _X(e,n,s){return e?[...QM({messages:e.messages,descriptors:[],...s?{awaiting:new Map(s)}:{}}).filter(a=>a.source==="approval").map(a=>({approvalId:a.props.approvalId,toolUseId:a.id})),...z2(e,n)]:[]}function z2(e,n){return((e==null?void 0:e.delegatedApprovals)??[]).map(s=>({approvalId:s.approvalId,toolUseId:s.toolUseId??"",askedBy:FX(s.chain,n)}))}function V1(e){return e instanceof pe||e instanceof Error?e.message:String(e)}function U2({conversation:e,conversationId:n,agentId:s,now:r,refresh:a,onRunStarted:i,onError:l,navigate:o}){const[c,u]=d.useState(null),[h,f]=d.useState([]),[m,p]=d.useState(!1),x=((e==null?void 0:e.offers)??[]).filter(j=>!h.includes(j.id)&&Date.parse(j.expiresAt)>r),g=j=>{var y;const v=x.find(k=>k.id===j);if(((y=v==null?void 0:v.handoff)==null?void 0:y.kind)==="install"){o(iW(v.handoff.package));return}l(null),u(j),f(k=>[...k,j]),T.takeOffer(j,n??void 0).then(k=>{if(k.agentId&&k.agentId!==s){o(ht(k.agentId,k.conversationId??null));return}k.runId&&i(),n&&a(n)}).catch(k=>{f(N=>N.filter(w=>w!==j)),l(V1(k)),n&&a(n)}).finally(()=>u(null))},b=j=>{const v=e==null?void 0:e.question;v&&(l(null),p(!0),i(),nt.answerQuestion(v.id,j).then(()=>{if(n)return a(n)}).catch(y=>l(V1(y),!0)).finally(()=>p(!1)))};return{openOffers:x,takingOffer:c,takeOffer:g,answeringQuestion:m,answerQuestion:(j,v)=>b({answer:j,...v?{optionId:v}:{}}),skipQuestion:()=>b({answer:"",skipped:!0})}}function B2({offers:e,disabled:n,onTake:s}){return e.length===0?null:t.jsx("div",{className:"wb-offers","data-testid":"chat-offers",children:e.map(r=>{var a,i;return t.jsx("button",{type:"button",className:"ui-btn",disabled:n,title:((a=r.handoff)==null?void 0:a.kind)==="install"?`Opens ${r.handoff.title}'s install sheet`:r.prompt,"data-handoff":(i=r.handoff)==null?void 0:i.kind,onClick:()=>s(r.id),children:r.label},r.id)})})}function zX(e,n){return e.messages<=0?!1:e.chars>e.maxChars?!0:e.lastActivityAt===null||e.idleTimeoutMs===null?!1:n-Date.parse(e.lastActivityAt)>e.idleTimeoutMs}function UX(e){const n=e/864e5;if(n>=1&&Number.isInteger(n))return n===7?"1 week":`${n} day${n===1?"":"s"}`;const s=e/36e5;if(s>=1&&Number.isInteger(s))return`${s} hour${s===1?"":"s"}`;const r=Math.round(e/6e4);return`${r} minute${r===1?"":"s"}`}function BX(e){const{lifetime:n,startedAt:s,now:r,timezone:a}=e;if(!n||n.messages<=0)return{text:"New conversation",title:"Nothing has been said in this one yet.",tone:"quiet"};const i=`${Math.round(n.maxChars/1e3)}k characters`,l=(n.idleTimeoutMs===null?`A conversation ends once its transcript grows past ${i}. `:`A conversation ends after ${UX(n.idleTimeoutMs)} idle, or once its transcript grows past ${i}. `)+"What the agent remembers about you carries over.",o=`${n.messages} message${n.messages===1?"":"s"}`;if(zX(n,r))return{text:`${o} · your next message starts a fresh one`,title:l,tone:"note"};const c=s?Xe(s,r):"";return{text:c===""?o:`${o} · started ${c}`,title:s?`Started ${Nt(s,a)}. ${l}`:l,tone:"quiet"}}function WX({text:e,onDelete:n}){const[s,r]=d.useState(!1),[a,i]=d.useState(null);return t.jsx("div",{className:"wb-carryover","data-testid":"chat-carryover",children:t.jsxs(Kt,{summary:"Carried over from the previous conversation",children:[t.jsx("p",{className:"wb-carryover-text",children:e}),t.jsxs(ne,{align:"end",children:[a?t.jsx("span",{className:"critical",role:"alert",children:a}):null,t.jsx(A,{size:"sm",variant:"danger-ghost",disabled:s,onClick:()=>{r(!0),i(null),n().catch(l=>{i(l instanceof Error?l.message:String(l)),r(!1)})},children:"Delete note"})]})]})})}function W2(e){return e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function H2(e,n){return e.members.map(s=>n.find(r=>r.id===s)).filter(s=>s!==void 0)}function HX(e,n){var a;const s=H2(e,n),r=e.members.filter(i=>!n.some(l=>l.id===i));if(!n.some(i=>i.id===e.coordinator))return{kind:"coordinator",text:`${e.coordinator} coordinated this group and is no longer in buddi, so the group can't take requests.`,action:"Choose a coordinator"};if(s.length<2){const i=r.length>0?`: ${r.join(", ")} ${r.length===1?"was":"were"} removed from buddi`:"";return{kind:"alone",text:`Only ${((a=s[0])==null?void 0:a.name)??e.coordinator} is left here${i}.`,action:"Add a member"}}return null}function KX(){return t.jsx("span",{className:"ui-avatar group-gone-face","aria-hidden":"true",children:"?"})}function VX({group:e,agents:n,onClose:s,onSaved:r}){const[a,i]=d.useState(!1),[l,o]=d.useState(null),c=[e.coordinator,...e.members.filter(x=>x!==e.coordinator)],u=e.members.length>2,h=Cb(n).filter(x=>!e.members.includes(x.id)),f=!n.some(x=>x.id===e.coordinator),m=async x=>{i(!0),o(null);try{r(await nt.updateGroup(e.id,x))}catch(g){o(g instanceof pe?g.message:String(g))}finally{i(!1)}},p=x=>void m({members:e.members.filter(g=>g!==x)});return t.jsxs(Qe,{title:"Members",onClose:s,children:[t.jsxs("p",{className:"group-lede",children:[e.name," · ",e.members.length," agents. The coordinator may ask members here; each keeps its own account, tools and approvals."]}),f?t.jsxs(Q,{tone:"warning",children:[e.coordinator," coordinated this group and is no longer in buddi. Pick who coordinates now."]}):null,l?t.jsx(Q,{tone:"critical",children:l}):null,t.jsx(yt,{children:c.map(x=>{const g=n.find(j=>j.id===x),b=x===e.coordinator;return g?t.jsx(gt,{lead:t.jsx(yn,{agents:n,id:x}),title:g.name,sub:g.description,side:t.jsxs(t.Fragment,{children:[b?t.jsx(Ae,{tone:"accent",children:"Coordinator"}):null,f&&g.available?t.jsx(A,{size:"sm",disabled:a,onClick:()=>void m({coordinator:x}),children:"Make coordinator"}):null,t.jsx(rs,{label:`More for ${g.name}`,...b?{note:"Coordinates the group"}:{},items:[!b&&g.available&&{label:"Make coordinator",hint:"Reads your requests, answers for the room",onSelect:()=>void m({coordinator:x})},{label:`Open ${g.name}'s page`,onSelect:()=>{window.location.hash=Jt(x)}},!b&&"separator",!b&&{label:"Remove from group",hint:u?"What it said stays":"A group needs two",tone:"critical",onSelect:()=>{u?p(x):o("A group needs two agents. Add someone before taking this one out.")}}]})]})},x):t.jsx(gt,{lead:t.jsx(KX,{}),title:t.jsx("span",{className:"group-gone-id",children:x}),sub:t.jsxs("span",{className:"group-gone-line",children:["No longer in buddi",b?" · was the coordinator":u?"":" · add a member to take it out"]}),side:u&&!b?t.jsx(A,{size:"sm",disabled:a,onClick:()=>p(x),children:"Remove"}):void 0},x)})}),t.jsxs("div",{className:"group-add",children:[t.jsx("h3",{className:"group-add-title",children:"Add a member"}),h.length>0?t.jsx(yt,{children:h.map(x=>t.jsx(gt,{lead:t.jsx(yn,{agents:n,id:x.id,size:"sm"}),title:x.name,sub:x.description,side:t.jsx(A,{size:"sm",disabled:a,onClick:()=>void m({members:[...e.members,x.id]}),children:"Add"})},x.id))}):t.jsx("p",{className:"group-quiet",children:"Everyone who can join a group is here."})]}),t.jsx("p",{className:"group-quiet",children:"Members read what is said here and what they recall from shared and group memory; nothing an agent knows privately comes in on its own. Taking a member out leaves what it said in the history."})]})}function GX({group:e,onClose:n,onSaved:s}){const[r,a]=d.useState(e.name),[i,l]=d.useState(!1),[o,c]=d.useState(null),u=r.trim()!==""&&r.trim()!==e.name&&!i,h=async()=>{if(u){l(!0),c(null);try{s(await nt.updateGroup(e.id,{name:r.trim()}))}catch(f){c(f instanceof pe?f.message:String(f)),l(!1)}}};return t.jsx(Vt,{title:"Rename group",onClose:n,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!u,onClick:()=>void h(),children:i?"Renaming…":"Rename"})]}),children:t.jsx("form",{onSubmit:f=>{f.preventDefault(),h()},children:t.jsxs(de,{children:[t.jsx(le,{label:"Name",hint:"What this team is for: Household finances, The move, Tax season.",children:t.jsx("input",{value:r,autoFocus:!0,maxLength:80,onFocus:f=>f.currentTarget.select(),onChange:f=>a(f.target.value)})}),o?t.jsx(Q,{tone:"critical",children:o}):null]})})})}function K2(e){const[n,s]=d.useState(null);return d.useEffect(()=>{let r=!0;return nt.group(e).then(a=>{var i;r&&s(((i=a.history)==null?void 0:i.conversations)??null)}).catch(()=>{}),()=>{r=!1}},[e]),n}function qX(e){return e===null?"Its conversations":e===0?"Nothing has been said yet, and its next conversation":`Its ${e} ${e===1?"conversation":"conversations"}`}function YX({group:e,onClose:n,onCleared:s}){const r=K2(e.id),[a,i]=d.useState(!1),[l,o]=d.useState(null),c=async()=>{i(!0),o(null);try{await nt.clearGroup(e.id),s()}catch(h){o(h instanceof pe?h.message:String(h)),i(!1)}},u=r===0;return t.jsxs(Vt,{title:`Clear the history of ${e.name}?`,onClose:n,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:a||u,"data-testid":"group-clear-confirm",onClick:()=>void c(),children:a?"Clearing…":"Clear history"})]}),children:[t.jsx("p",{className:"group-dialog-text",children:u?"Nothing has been said in this group yet, so there is nothing to clear.":`${qX(r)} ${r===1?"is":"are"} deleted for good, and anything it is doing now stops. The group, its members and what it remembers stay; files it made stay in Files.`}),l?t.jsx(Q,{tone:"critical",children:l}):null]})}function QX({group:e,agents:n,onClose:s,onDeleted:r}){const a=K2(e.id),[i,l]=d.useState(!1),[o,c]=d.useState(null),u=H2(e,n).map(m=>m.name),h=async()=>{l(!0),c(null);try{const{undoUntil:m}=await nt.deleteGroup(e.id);r(m)}catch(m){c(m instanceof pe?m.message:String(m)),l(!1)}},f=a===null?"its conversations":a===0?"nothing said yet":`its ${a} ${a===1?"conversation":"conversations"}`;return t.jsxs(Vt,{title:`Delete ${e.name}?`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:i,"data-testid":"group-delete-confirm",onClick:()=>void h(),children:i?"Deleting…":"Delete group"})]}),children:[t.jsxs("p",{className:"group-dialog-text",children:["The group goes with ",f," and what it remembers."," ",u.length>0?`${W2(u)} ${u.length===1?"is":"are"} not touched, and files it made stay in Files.`:"Files it made stay in Files."]}),o?t.jsx(Q,{tone:"critical",children:o}):null]})}function G1(){var e;return typeof document>"u"||document.querySelector('[role="dialog"], [role="alertdialog"]')?!0:((e=window.matchMedia)==null?void 0:e.call(window,"(pointer: coarse)").matches)===!0}function JX({timezone:e,agents:n,agentId:s,defaultAgentId:r=null,group:a=null,onGroupAction:i,onSelectAgent:l,onWorking:o,attention:c,agentsInHeader:u,narrow:h,canvasOpen:f,onOpenCanvas:m,onCloseCanvas:p,newConversationSignal:x,requestedConversationId:g,requestedTab:b,onConversationOpened:j}){var N0,S0,C0,E0,A0,$0,T0,R0,I0,P0,M0,O0,D0;const v=hc(),[y,k]=d.useState(()=>{try{const V=Number(localStorage.getItem("buddi.chatTextSize"));return Number.isInteger(V)&&V>=11&&V<=19?V:13}catch{return 13}}),N=V=>{k(V);try{localStorage.setItem("buddi.chatTextSize",String(V))}catch{}},w=t.jsxs("div",{className:"wb-reading-controls",role:"group","aria-label":"Message text size",children:[t.jsx("span",{children:"Text size"}),t.jsx("button",{className:"ui-btn","data-size":"sm",role:"menuitem","aria-label":"Decrease message text size",disabled:y<=11,onClick:()=>N(y-1),children:"A−"}),t.jsx("button",{className:"ui-btn","data-size":"sm",role:"menuitem","aria-label":"Increase message text size",disabled:y>=19,onClick:()=>N(y+1),children:"A+"}),t.jsx("button",{className:"ui-btn","data-size":"sm",role:"menuitem","aria-label":"Reset message text size",disabled:y===13,onClick:()=>N(13),children:"Reset"})]}),[S,C]=d.useState([]),E=d.useMemo(()=>new Set(S.filter(V=>{var he;return((he=V.messenger)==null?void 0:he.mediaFirst)===!0}).map(V=>V.tool)),[S]),[$,R]=d.useState(null),[P,O]=d.useState(null),[I,F]=d.useState(null),[U,L]=d.useState([]),[M,z]=d.useState([]),[D,H]=d.useState(null),[K,X]=d.useState(!1),[W,me]=d.useState(new Map),[fe,oe]=d.useState(new Set),[B,ue]=d.useState(null),[Ne,Ke]=d.useState(0),G=d.useCallback(V=>{ue(V),Ke(he=>he+1)},[]),[ae,J]=d.useState(()=>new Set),xe=gX($??null),[Ie,Y]=d.useState(()=>Date.now());d.useEffect(()=>{const V=setInterval(()=>Y(Date.now()),6e4);return()=>clearInterval(V)},[]);const[te,ie]=d.useState([]),[ge,je]=d.useState(!1),Se=d.useRef(0),ke=d.useRef(null),[Be,rt]=d.useState(!1),ye=d.useRef(x??0),Ue=d.useRef(s),st=d.useRef({agentId:s,conversationId:$});st.current={agentId:s,conversationId:$};const Fe=xe.closed,[wt,ot]=d.useState(null),[tn,$t]=d.useState(null),[Et,$n]=d.useState(()=>Date.now()),[nn,ce]=d.useState(VJ),Me=d.useRef(null),[Ze,Ct]=d.useState(null),[mt,Pe]=d.useState(!1),[ct,_e]=d.useState(null),[Gt,Z]=d.useState(null),[ut,Yn]=d.useState(pP),xn=d.useRef(ut);xn.current=ut;const Te=d.useRef(null),[De,xt]=d.useState(null),It=d.useCallback(V=>{Yn(V),gP(V),V||uc()},[]),[On,as]=d.useState(null),[er,tr]=d.useState(null);d.useEffect(()=>{if(!s)return;_e(PU(s));const V=OU(s);V&&Z({text:V,at:Date.now()})},[s]);const Dn=a?`group:${a.id}`:s??null,Ot=[...n.top,...n.middle,...n.bottom],Ee=Ot.find(V=>V.id===s)??null,Hr=ve(()=>T.providerAccounts(),[]),Je=a?a.members.map(V=>Ot.find(he=>he.id===V)).filter(V=>!!V):[],[tt,Pt]=d.useState(null),Is=K?tt??s??null:null;d.useEffect(()=>{o==null||o(Is)},[Is,o]),d.useEffect(()=>()=>o==null?void 0:o(null),[o]),d.useEffect(()=>{let V=!1;return nt.views().then(he=>{V||C(he.views??[])}).catch(()=>{}),()=>{V=!0}},[]),d.useEffect(()=>{if(!s)return;const V=Ue.current===s;if(Ue.current=s,V&&g&&g===st.current.conversationId)return;let he=!1;return R(null),O(null),F(null),L([]),ot(null),X(!1),ue(null),ie([]),Li(null),rt(!1),Ct(null),g?(g!=="new"?R(g):F(Dn),()=>{he=!0}):((a?nt.groupConversations(a.id):nt.conversations(s)).then(Oe=>{if(he)return;const Ge=[...Oe.conversations??[]].sort(XX)[0];Ge?(R(Ge.id),j==null||j(s,Ge.id)):F(Dn)}).catch(()=>{he||F(Dn)}),()=>{he=!0})},[s,a==null?void 0:a.id,Dn,g,j]);const Qn=d.useCallback(V=>nt.conversation(V).then(he=>{if(st.current.conversationId===V){if(he.agentId!==st.current.agentId)throw new Error("This conversation belongs to another agent. Open it from that agent’s history.");O(he),L(Oe=>Oe.filter(Ge=>!hx(he,Ge)))}}).catch(he=>{st.current.conversationId===V&&ot(Ga(he))}),[]);d.useEffect(()=>{if(!$)return;let V=!1;return me(new Map),oe(new Set),z([]),nt.conversation($).then(he=>{if(!V){if(he.agentId!==s)throw new Error("This conversation belongs to another agent. Open it from that agent’s history.");O(he),L(Oe=>Oe.filter(Ge=>!hx(he,Ge)))}}).catch(he=>{V||ot(Ga(he))}),()=>{V=!0}},[$,s]),d.useEffect(()=>{if(!$)return;let V=!1;const he=window.setInterval(()=>{nt.conversation($).then(Oe=>{V||Oe.agentId!==st.current.agentId||(O(Oe),L(Ge=>Ge.filter(Ye=>!hx(Oe,Ye))))}).catch(()=>{})},3e3);return()=>{V=!0,window.clearInterval(he)}},[$,s]),d.useEffect(()=>{if(!$)return;const V=fp({url:nt.streamUrl($),onEvent:he=>{var Oe,Ge;switch(he.name){case"run.started":Te.current=null,X(!0),H(null),Pt(Hn(he.data.agentId));break;case"live":{const Ye=Hn(he.data.runId)??"",dt=Number(he.data.turn??0),pt=he.data.kind==="thinking"?"thinking":"text",bt=Hn(he.data.text)??"",Kr=Date.now();if(pt==="text"){const vs=Te.current;Te.current=vs&&vs.runId===Ye&&vs.turn===dt?{...vs,text:vs.text+bt}:{runId:Ye,turn:dt,text:bt}}H(vs=>{const Ha=vs&&vs.runId===Ye&&vs.turn===dt?vs:{runId:Ye,turn:dt,text:"",thinking:"",thinkingStartedAt:null,textStartedAt:null,settled:!1};return pt==="thinking"?{...Ha,thinking:Ha.thinking+bt,thinkingStartedAt:Ha.thinkingStartedAt??Kr}:{...Ha,text:Ha.text+bt,textStartedAt:Ha.textStartedAt??Kr}});break}case"live.snapshot":{const Ye=Hn(he.data.runId)??"",dt=Number(he.data.turn??0),pt=Hn(he.data.text)??"",bt=Hn(he.data.thinking)??"",Kr=Number(he.data.startedAt??Date.now());Te.current={runId:Ye,turn:dt,text:pt},H({runId:Ye,turn:dt,text:pt,thinking:bt,thinkingStartedAt:bt?Kr:null,textStartedAt:pt?Kr:null,settled:!1});break}case"live.settle":{const Ye=Hn(he.data.runId)??"",dt=Number(he.data.turn??0);if(he.data.retracted===!0){((Oe=Te.current)==null?void 0:Oe.runId)===Ye&&Te.current.turn===dt&&(Te.current=null),H(pt=>pt&&pt.runId===Ye&&pt.turn===dt?null:pt);break}H(pt=>pt&&pt.runId===Ye&&pt.turn===dt?{...pt,settled:!0}:pt);break}case"tool.called":{const Ye=Hn(he.data.toolUseId)??Hn(he.data.id),dt=Hn(he.data.name)??Hn(he.data.tool)??"tool";Ye&&z(pt=>[...pt.filter(bt=>bt.toolUseId!==Ye),{toolUseId:Ye,name:dt,startedAt:Date.now()}]);break}case"tool.result":{const Ye=Hn(he.data.toolUseId)??Hn(he.data.id);Ye&&z(dt=>dt.filter(pt=>pt.toolUseId!==Ye)),Qn($);break}case"reaction":Qn($);break;case"message.appended":Qn($).then(()=>{H(Ye=>Ye!=null&&Ye.settled?null:Ye)});break;case"awaiting-approval":{const Ye=Hn(he.data.approvalId)??Hn(he.data.actionId),dt=Hn(he.data.toolUseId);Ye&&dt&&me(pt=>new Map(pt).set(dt,Ye)),z(pt=>pt.filter(bt=>bt.toolUseId!==dt)),Qn($);break}case"run.finished":{X(!1),z([]),H(null),Pt(null);const Ye=Hn(he.data.message);ot(Ye??null);const dt=((Ge=Te.current)==null?void 0:Ge.text.trim())??"";Te.current=null,!Ye&&dt!==""&&xn.current&&fm(dt,$).then(pt=>{pt&&xt(pt)}),Qn($);break}}}});return()=>V.close()},[$,Qn]),d.useEffect(()=>{const V=window.setInterval(()=>$n(Date.now()),M.length===0?6e4:1e3);return()=>window.clearInterval(V)},[M.length]);const vr=ve(()=>s&&$?T.browser({agentId:s,conversationId:$}):Promise.resolve(void 0),[s,$],1500),qt=vr.error?void 0:vr.data,Wn=qt!=null&&qt.session&&qt.session.agentId===s&&qt.session.conversationId===$?qt:void 0,nr=aX(Wn,s,$),xa=(nr==null?void 0:nr.id)??null,[Di,Ed]=d.useState(null),Ad=Wn==null?void 0:Wn.mode;d.useEffect(()=>{nr&&s&&$&&Ed({agentId:s,conversationId:$,tab:iX(nr)})},[xa,Ad,s,$]);const $d=Di&&Di.agentId===s&&Di.conversationId===$&&!Fe.includes(Di.tab.id)?Di.tab:null,Wa=ay(P==null?void 0:P.question),q=rf(P==null?void 0:P.question),[Ve,et]=d.useState(!1),an=nr?null:lX(qt,$??null,(Wa==null?void 0:Wa.kind)==="paused"),Le=nr??an??$d,fn=(N0=qt==null?void 0:qt.routes)==null?void 0:N0.find(V=>V.kind==="chrome"),xs=!a&&$&&(fn!=null&&fn.allowed)&&fn.paired?{on:(qt==null?void 0:qt.pin)==="chrome",onChange:V=>{T.browserPin($,V?"chrome":"auto").catch(()=>{}).finally(vr.reload)}}:void 0,[jr,Li]=d.useState(null),Ml=d.useMemo(()=>uq({messages:(P==null?void 0:P.messages)??[],descriptors:S}),[P,S]),Ps=JJ(Ml,$??null),Ol=ZJ(a?null:s),Td=d.useMemo(()=>XJ((P==null?void 0:P.messages)??[]),[P]),Rd=d.useRef([]),Yt=d.useMemo(()=>{const V=QM({messages:(P==null?void 0:P.messages)??[],descriptors:S,awaiting:W,served:Ps.served,...Le?{folded:lf}:{},gathered:hX,quiet:_1,titles:z1});Rd.current=V;const he=dt=>B!==null&&(dt.id===B||(dt.versions??[]).some(pt=>pt.id===B)),Oe=[];for(const dt of xe.ready?V:V.filter(pt=>pt.source==="approval")){if(dt.source!=="approval"&&Fe.includes(Wi(dt))&&!he(dt))continue;const pt=X7(dt,Ie);pt==="gone"&&!he(dt)||Oe.push(pt==="parked"?{...dt,parked:!0}:dt)}const Ge=B?i1(Oe,B):null;Ge&&(Ge.props={...Ge.props,focus:B});const Ye=B&&!Ge?n1(Oe,B):null;if(Ye&&(Ye.focus=B),B&&!Ge&&!Ye&&!Fe.includes(B)&&!Oe.some(dt=>dt.id===B)){const dt=mq((P==null?void 0:P.messages)??[],B,{redactInputOf:lf,resultOf:_1,titles:z1});dt&&!lf.has(dt.tool)&&Oe.push(dt)}Le&&Oe.push(Le);for(const dt of te)Oe.push(KW(dt));return Ol&&Oe.unshift(eX(Ol,Td)),Ze?[...Oe,tX(Ze)]:Oe},[P,S,W,Ze,xa,Le==null?void 0:Le.title,B,xe.closed,xe.ready,Ie,$,te,Ps.served,Ol,Td]),LL=d.useMemo(()=>{var he;const V=[];for(const Oe of(P==null?void 0:P.messages)??[]){if(Oe.role!=="user"||Oe.speaker&&Oe.speaker!=="owner")continue;const Ge=(he=Oe.blocks.find(Ye=>Ye.type==="text"))==null?void 0:he.text.trim();Ge&&V.unshift(Ge)}return V},[P]),Bp=d.useMemo(()=>Yt.filter(V=>V.source==="approval"),[Yt]),Id=Bp.at(-1)??null,Pd=d.useMemo(()=>[...Bp.map(V=>({approvalId:V.props.approvalId,toolUseId:V.id})),...z2(P,Ot)].filter(V=>!fe.has(V.approvalId)),[Bp,P==null?void 0:P.delegatedApprovals,fe]),Fi=d.useMemo(()=>{for(let V=Yt.length-1;V>=0;V-=1){const he=Yt[V];if(he!=null&&he.substantial)return Wi(he)}return null},[Yt]),yr=(B?((S0=i1(Yt,B))==null?void 0:S0.id)??((C0=n1(Yt,B))==null?void 0:C0.id):null)??B,a0=xe.touch;d.useEffect(()=>{Ne!==0&&yr&&Yt.some(V=>V.id===yr)&&a0(yr)},[Ne,yr,a0]),d.useEffect(()=>{yr&&J(V=>{if(!V.has(yr))return V;const he=new Set(V);return he.delete(yr),he})},[yr]);const FL=d.useMemo(()=>{const V=(P==null?void 0:P.messages)??[];for(let he=V.length-1;he>=0;he-=1){const Oe=V[he];if((!Oe.speaker||Oe.speaker==="owner")&&YM(Oe))return Oe.at??null}return null},[P]),Md=d.useRef(null),Wp=((E0=Yt.filter(V=>(V.source!=="browser"||V.pinned===!0)&&V.id!==sy).at(-1))==null?void 0:E0.id)??((A0=Yt.filter(V=>V.id!==sy).at(-1))==null?void 0:A0.id)??null,Od=nr!==null&&!h,Hp=d.useCallback(V=>V!==void 0&&(!Od||V.source==="canvas"),[Od]);d.useEffect(()=>{if(Fi&&Fi!==Md.current){Md.current=Fi;const V=Yt.find(he=>Wi(he)===Fi);if(Hp(V)){ue(Fi);return}}B===null&&Wp&&ue(Wp)},[Fi,B,Wp,Yt,Hp]);const Dd=d.useRef({key:null,stamps:new Map}),Ld=P&&xe.ready?$??null:null;d.useEffect(()=>{const V=new Map(Yt.map(Ge=>[Ge.id,Wi(Ge)]));if(Ld===null||Dd.current.key!==Ld){Dd.current={key:Ld,stamps:V},J(Ge=>Ge.size===0?Ge:new Set);return}const he=Dd.current.stamps;Dd.current.stamps=V;const Oe=Yt.filter(Ge=>he.get(Ge.id)!==V.get(Ge.id)&&Ge.at!==null&&Ge.id!==yr&&!(Wi(Ge)===Fi&&Hp(Ge)));Oe.length!==0&&J(Ge=>new Set([...Ge,...Oe.map(Ye=>Ye.id)]))},[Yt,Ld]);const i0=d.useRef(Ps.live);d.useEffect(()=>{const V=i0.current;i0.current=Ps.live;const he=[...Ps.live].filter(Ye=>!V.has(Ye));if(he.length===0||Id||Od||B!==null&&B!==Md.current)return;const Ge=[...Yt].reverse().find(Ye=>Ye.source==="descriptor"&&Ye.renderer==="preview"&&Ye.props.target!==null&&he.includes(No(Ye.props.target)));Ge&&ue(Ge.id)},[Ps.live,Yt,Id,B,Od]);const l0=d.useRef(null);d.useEffect(()=>{xa!==l0.current&&(l0.current=xa,xa&&!Id&&ue(xa))},[xa,Id]);const o0=d.useRef(null),xc=b==="browser"?(Le==null?void 0:Le.id)??null:null;d.useEffect(()=>{!xc||o0.current===xc||(o0.current=xc,ue(xc))},[xc]);const Kp=(Le==null?void 0:Le.id)??null;d.useEffect(()=>{!Kp||!B||F1((P==null?void 0:P.messages)??[],B)!==null&&(Li(B),ue(Kp))},[Kp,B,P]);const c0=V=>{ie(he=>he.some(Oe=>Oe.artifactId===V.artifactId)?he:[...he,V]),G(Zh(V.artifactId)),h&&(m==null||m())},vc=!a&&Ee&&!Ee.available?qI(Ee):null,u0=a?t.jsx("span",{className:"wb-group-stack","aria-hidden":"true",children:a.members.slice(0,2).map(V=>{const he=Ot.find(Oe=>Oe.id===V);return t.jsx(pp,{className:"wb-group-chip",id:V,name:(he==null?void 0:he.name)??"?",face:he,initials:1},V)})}):null,_i=a&&Ot.length>0?HX(a,Ot):null,d0=(_i==null?void 0:_i.kind)==="coordinator",h0=uj(a?null:Ee),f0=Pd.length>0||!!(P!=null&&P.question),Vp=d.useRef(f0);Vp.current=f0,d.useEffect(()=>{if(Vp.current||G1())return;const V=window.requestAnimationFrame(()=>{var he;Vp.current||G1()||(he=ke.current)==null||he.focus()});return()=>window.cancelAnimationFrame(V)},[s,a==null?void 0:a.id,$,x]);const _L=Ee&&er===Ee.id?On:(Ee==null?void 0:Ee.thinking)??null,zL=V=>{if(!Ee)return;const he=Ee.id;tr(he),as(V),T.setAgentEngine(he,{thinking:V}).catch(Oe=>{tr(null),ot(Oe instanceof pe?Oe.message:String(Oe))})},Fd=(V,he,Oe=!1)=>{if(!s)return;const Ge=a?null:sZ(V,Ot,s);if(Ge){ot(null),nt.send(Ge.agent.id,{text:Ge.rest,attachmentIds:he.map(bt=>bt.artifactId)}).then(bt=>{window.location.hash=ht(Ge.agent.id,bt.conversationId)}).catch(bt=>ot(Ga(bt)));return}V=MU(V,a?null:ct);const Ye=he.map(bt=>bt.artifactId),dt=K,pt={id:`optimistic:${Date.now()}`,role:"user",at:new Date().toISOString(),blocks:[...V.trim()===""?[]:[{type:"text",text:V}],...he.map(bt=>({type:"attachment",artifactId:bt.artifactId,filename:bt.filename,mime:bt.mime,kind:bt.kind,sizeBytes:bt.sizeBytes}))],...dt?{speaker:e2}:{}};L(bt=>dt?[...bt,pt]:[pt]),ot(null),$t(null),X(!0),(a?nt.sendToGroup(a.id,{...$?{conversationId:$}:{},text:V,attachmentIds:Ye}):nt.send(s,{...$?{conversationId:$}:{},text:V,attachmentIds:Ye})).then(async bt=>{var Kr;st.current.agentId!==s||st.current.conversationId!==$||(!a&&ct&&(yS(s),_e(null)),$t(bt.rolledOver===!0?"(New thread — the room had grown long. Where it stopped carries over as a summary.)":null),bt.conversationId!==$?(Oe&&((Kr=ke.current)==null||Kr.carryDraftTo(bt.conversationId)),O(null),R(bt.conversationId)):await Qn(bt.conversationId),bt.queued===!0&&L(vs=>vs.filter(Ha=>Ha.id!==pt.id)),j==null||j(s,bt.conversationId))}).catch(bt=>{L(Kr=>Kr.filter(vs=>vs.id!==pt.id)),ot(Ga(bt)),X(!1)})},{openOffers:UL,takingOffer:BL,takeOffer:WL,answeringQuestion:m0,answerQuestion:Gp,skipQuestion:HL}=U2({conversation:P,conversationId:$??null,agentId:(Ee==null?void 0:Ee.id)??null,now:Et,refresh:Qn,onRunStarted:()=>{$t(null),X(!0)},onError:(V,he)=>{ot(V),he&&X(!1)},navigate:V=>{window.location.hash=V}}),KL=()=>{if(s){if(Ze){Ct(null);return}Pe(!0),T.agentProfile(s).then(V=>{Ct(V),G(ry(V.id)),h&&(m==null||m())}).catch(V=>ot(Ga(V))).finally(()=>Pe(!1))}},VL=V=>{Z({text:V.prompt,at:Date.now()}),l(V.agentId),h&&(p==null||p())},p0=()=>{$&&nt.cancel($).catch(V=>ot(Ga(V))).finally(()=>{X(!1),z([])})},GL=(V,he)=>{if(ot(null),V==="stop"){p0();return}if(V==="use"){const Oe=he.replace(/^@/,"").toLowerCase(),Ge=Ot.find(Ye=>Ye.handle.toLowerCase()===Oe||Ye.id===Oe);if(!Ge){$t(Oe?`No agent called @${Oe}.`:"Say who: /use @handle.");return}$t(null),l(Ge.id);return}if(V==="new"){const Oe=Ot.find(Ge=>Ge.roles.includes(Mr));if(!Oe){$t("There is no agent here that makes agents.");return}he.trim()&&pd(Oe.id,`I'd like a teammate for this: ${he.trim()}`),l(Oe.id);return}T.quiet(he).then(Oe=>$t(Oe.text)).catch(Oe=>ot(Ga(Oe)))},_d=d.useCallback(()=>{if(R(null),O(null),L([]),X(!1),ot(null),$t(null),z([]),me(new Map),oe(new Set),ue(null),ie([]),Li(null),Md.current=null,a){nt.startGroupConversation(a.id).then(({conversationId:V})=>{R(V),s&&(j==null||j(s,V))}).catch(V=>ot(Ga(V)));return}F(Dn),s&&(j==null||j(s,"new"))},[s,a,Dn,j]);d.useEffect(()=>{x&&x!==ye.current&&(ye.current=x,_d())},[x,_d]);const g0=V=>{$&&Qn($),T.overview().catch(()=>{}),V.state!=="pending"&&(me(he=>new Map([...he].filter(([,Oe])=>Oe!==V.id))),oe(he=>he.has(V.id)?he:new Set([...he,V.id])))},qL=(($0=Ot.find(V=>V.id===r))==null?void 0:$0.name)??null,x0=a?[]:J8(Ee,qL),v0=!(P&&P.conversationId===$)&&!(!$&&I!==null&&I===Dn),j0=v0?t.jsx("div",{className:"wb-chat-loading","data-testid":"chat-loading","aria-busy":"true"}):!a&&Ee?t.jsx(fP,{quiet:!0,still:!0,className:"wb-chat-field",children:t.jsxs("div",{className:"wb-chat-opening","data-testid":"chat-opening",children:[t.jsx(yn,{agents:Ot,id:Ee.id,size:"xl"}),t.jsx("h2",{className:"wb-chat-hello",children:`Hi, I'm ${Ee.name}.`}),t.jsx("p",{className:"wb-chat-intro",children:X8(Ee)}),x0.length>0?t.jsx("div",{className:"wb-starters",role:"group","aria-label":`Things to ask ${Ee.name}`,children:x0.map(V=>t.jsx("button",{type:"button",className:"wb-starter",onClick:()=>{var he;Z({text:V,at:Date.now()}),(he=ke.current)==null||he.focus()},children:V},V))}):null]})}):null,y0=V=>{const he=[];for(const Oe of V)if(Ze&&Oe===ry(Ze.id))Ct(null);else if(te.some(Ge=>Zh(Ge.artifactId)===Oe))ie(Ge=>Ge.filter(Ye=>Zh(Ye.artifactId)!==Oe));else{const Ge=Yt.find(Ye=>Ye.id===Oe);he.push(Ge?Wi(Ge):Oe)}he.length>0&&xe.close(he),B!==null&&(V.includes(B)||V.includes(yr??""))&&ue(null)},w0=t.jsx(EJ,{renderables:Yt,activeId:yr,onActivate:G,onClose:V=>y0([V]),onCloseMany:y0,touched:xe.touched,turnStartedAt:FL,unread:ae,timezone:e,onDecided:g0,onChangeAgent:VL,agents:Ot,browserPanel:Le?t.jsx(_Q,{status:Wn,error:vr.error,reload:vr.reload,live:nr!==null,agentName:(Ee==null?void 0:Ee.name)??"The agent",timezone:e,paused:an&&(qt!=null&&qt.stop)?qt.stop:null},Le.id):null,browserMenu:Le?t.jsx(BQ,{status:qt,timezone:e,reload:vr.reload}):null,descriptors:S,grantedTools:a?Je.flatMap(V=>V.tools??[]):(Ee==null?void 0:Ee.tools)??[],...Ee?{agentName:Ee.name}:{},loading:v0,...!a&&Ee?{face:t.jsx(yn,{agents:Ot,id:Ee.id,size:"xl"}),cardFace:t.jsx(yn,{agents:Ot,id:Ee.id,size:"sm"})}:{}}),b0=(R0=(T0=[...(P==null?void 0:P.messages)??[],...U].find(V=>V.role==="user"))==null?void 0:T0.blocks.find(V=>V.type==="text"))==null?void 0:R0.text.trim(),k0=b0?b0.split(`
|
|
131
|
+
`)[0]:"New conversation",Dl=BX({lifetime:(P==null?void 0:P.lifetime)??null,startedAt:(P==null?void 0:P.startedAt)??null,now:Et,timezone:e});return t.jsxs(t.Fragment,{children:[t.jsxs("section",{className:"wb-chat",ref:Me,style:{...h||nn===null?{}:{[ny]:`${nn}px`},"--chat-text-scale":y/13},"data-sized":!h&&nn!==null?"true":void 0,"data-testid":"chat-column","data-dropping":ge||void 0,onDragEnter:V=>{Ch(V)&&(V.preventDefault(),Se.current+=1,je(!0))},onDragOver:V=>{Ch(V)&&(V.preventDefault(),V.dataTransfer.dropEffect="copy")},onDragLeave:V=>{Ch(V)&&(Se.current=Math.max(0,Se.current-1),Se.current===0&&je(!1))},onDrop:V=>{var he;Ch(V)&&(V.preventDefault(),Se.current=0,je(!1),s&&((he=ke.current)==null||he.addFiles(V.dataTransfer.files)))},children:[ge?t.jsx("div",{className:"wb-drop","aria-hidden":"true",children:t.jsxs("div",{className:"wb-drop-card",children:[t.jsx(ZX,{}),t.jsx("strong",{children:"Drop to attach"}),t.jsx("span",{children:Ee?`It goes with your next message to ${Ee.name}`:"Pick an agent first"})]})}):null,t.jsxs("header",{className:"wb-chat-head","data-testid":"chat-head",...!a&&Ee?gl(ic(Ee)):{},children:[t.jsxs("div",{className:"wb-head-row",children:[a?t.jsx("span",{className:"wb-head-face","aria-hidden":"true",children:u0}):Ee?t.jsx("a",{className:"wb-head-face",href:Jt(Ee.id),"aria-label":`${Ee.name}'s page`,children:t.jsx(yn,{agents:Ot,id:Ee.id})}):null,t.jsxs("div",{className:"wb-head-text",children:[a?t.jsx("span",{className:"wb-head-title",children:a.name}):t.jsx("span",{className:"wb-head-title",title:k0,children:k0}),t.jsx("span",{className:"wb-head-meta","data-tone":Dl.tone,title:a?`${Je.map(V=>V.name).join(", ")}. Coordinator: ${(Ee==null?void 0:Ee.name)??a.coordinator}.`:Dl.title,children:a?`${Je.map(V=>V.name).join(", ")} · ${Dl.text}`:Ee?t.jsxs(t.Fragment,{children:[t.jsx("a",{className:"wb-head-name",href:Jt(Ee.id),title:`${Ee.name}'s page`,children:Ee.name})," ",t.jsxs("span",{className:"wb-head-handle",children:["@",Ee.handle]}),` · ${Dl.tone==="quiet"&&Dl.text==="New conversation"?`on ${v}`:Dl.text}`]}):"No agent"})]}),t.jsx("button",{className:"ui-icon-btn wb-head-more","data-size":"sm","aria-label":"New chat",title:"New chat",disabled:!s,onClick:()=>{rt(!1),_d()},children:t.jsx(se,{name:"plus",size:16})}),t.jsx("button",{className:"ui-icon-btn wb-head-more","aria-label":"History",title:"Earlier conversations","aria-expanded":Be,"data-open":Be?"true":void 0,disabled:!s,onClick:()=>rt(V=>!V),children:t.jsx(eZ,{})}),h?t.jsxs("button",{className:"ui-btn",onClick:m,disabled:Yt.length===0,children:["Canvas",Yt.length>0?` (${Yt.length})`:""]}):null,a?t.jsx(q1,{readingControls:w,disabled:!1,label:"More about this group",title:a.name,sub:W2(Je.map(V=>V.name)),face:u0,items:[{label:"Members",hint:`${a.members.length} agents · ${Ee?`${Ee.name} coordinates`:"no coordinator"}`,testId:"group-members",onSelect:()=>i==null?void 0:i("members")},{label:"Rename…",hint:"What this team is for",testId:"group-rename",onSelect:()=>i==null?void 0:i("rename")},"separator",{label:"Clear history…",hint:"Keeps the group and its members",testId:"group-clear",onSelect:()=>i==null?void 0:i("clear")},{label:"Delete group…",hint:"With its history; the agents stay",tone:"critical",testId:"group-delete",onSelect:()=>i==null?void 0:i("delete")}]}):t.jsx(q1,{readingControls:w,disabled:!s,label:"More about this agent",title:(Ee==null?void 0:Ee.name)??"Agent",...Ee?{sub:`@${Ee.handle}`,face:t.jsx(yn,{agents:Ot,id:Ee.id,size:"sm"})}:{},items:[{label:Ze?"Close properties":"Properties",hint:"What this agent can do, on the Canvas",testId:"agent-properties",disabled:mt,onSelect:KL},...Ee?[{label:"Set up",hint:"Identity, model and access",href:Jt(Ee.id,"setup")},{label:"Open agent page",hint:"Profile, activity and setup",href:Jt(Ee.id)}]:[]]})]}),u?t.jsx(rP,{agents:n,currentId:s,attention:c,onSelect:l,orientation:"horizontal",...Is?{working:new Set([Is])}:{}}):null]}),!a&&Ee?t.jsx(jX,{agentId:Ee.id},Ee.id):null,Be&&s?t.jsx(fX,{agentId:s,...a?{groupId:a.id}:{},currentId:$,timezone:e,onNew:()=>{rt(!1),_d()},onSelect:V=>{if(V===$){rt(!1);return}rt(!1),O(null),L([]),X(!1),ue(null),ot(null),$t(null),ie([]),R(V),j==null||j(s,V,!1)}}):null,s&&$?t.jsx(nX,{agentId:s,conversationId:$},`${s}:${$}`):null,wt?t.jsx("div",{className:"wb-chat-notice",children:t.jsx(re,{message:wt})}):null,tn?t.jsx("div",{className:"wb-chat-notice","data-testid":"chat-notice",children:tn}):null,P!=null&&P.carriedOver?t.jsx(WX,{text:P.carriedOver,onDelete:async()=>{const V=P.conversationId;await nt.deleteCarryOver(V),O(he=>{if(!he||he.conversationId!==V)return he;const{carriedOver:Oe,...Ge}=he;return Ge})}},P.conversationId):null,t.jsx(dk,{timezone:e,mediaTools:E,messages:[...(P==null?void 0:P.messages)??[],...U],live:M,now:Et,working:K,partial:D,agents:Ot,...P!=null&&P.runs?{runs:P.runs}:{},...s&&$?{onContinue:()=>Fd("continue",[])}:{},...a?{speakers:Ot,coordinatorId:a.coordinator}:{},...tt?{workingAs:((I0=Ot.find(V=>V.id===tt))==null?void 0:I0.name)??tt}:{},onOpenFile:c0,onReadAloud:(V,he)=>{xt(null),fm(he,$??void 0,V).then(Oe=>{Oe&&xt(Oe)})},onOpen:V=>{if(Le){const Oe=F1([...(P==null?void 0:P.messages)??[],...U],V);if(Oe){Li(Oe),G(Le.id),h&&(m==null||m());return}}const he=Rd.current.find(Oe=>Oe.id===V||(Oe.versions??[]).some(Ge=>Ge.id===V));xe.reopen(he?[V,Wi(he)]:[V]),G(V),h&&(m==null||m())},...Ee?{agentName:Ee.name,agentId:Ee.id}:{},...j0?{empty:j0}:{},emptyHint:a?`Give the team a task once; ${Ee?Ee.name:"the coordinator"} brings members in. @ addresses one of them.`:Ee?`Nothing here yet. Ask ${Ee.name} for something.`:"Loading agents…"}),t.jsx(B2,{offers:UL,disabled:BL!==null,onTake:WL}),_i?t.jsx("div",{className:"wb-composer-blocked","data-testid":"group-problem","data-kind":_i.kind,children:t.jsx(Q,{tone:d0?"warning":void 0,role:"status",children:t.jsxs("span",{children:[_i.text," ",t.jsx("button",{type:"button",className:"wb-link-btn",onClick:()=>i==null?void 0:i("members"),children:_i.action})]})})}):null,vc?t.jsx("div",{className:"wb-composer-blocked","data-testid":"composer-blocked",children:t.jsxs(Q,{tone:"warning",role:"status",children:[vc," ",t.jsx("a",{href:We(h0.section),children:h0.label})]})}):null,vc?null:P!=null&&P.question&&q?t.jsx(Nk,{question:P.question,card:q,phone:h,container:Me.current,page:Wn,disabled:K,onSettled:()=>{$&&Qn($),vr.reload()},onChoice:Gp},P.question.id):P!=null&&P.question&&Wa?t.jsx(F2,{card:Wa,disabled:m0||K,onAnswer:Gp,signIn:R1(P.question)?{question:P.question,card:R1(P.question),phone:h,container:Me.current,onSettled:()=>{$&&Qn($),vr.reload()}}:void 0,site:((P0=qt==null?void 0:qt.needsOwner)==null?void 0:P0.site)??((O0=(M0=qt==null?void 0:qt.page)==null?void 0:M0.url)==null?void 0:O0.replace(/^https?:\/\/(www\.)?([^/]+).*$/,"$2"))},P.question.id):P!=null&&P.question?t.jsx(_2,{question:P.question,disabled:m0||K,onAnswer:Gp,onSkip:HL},P.question.id):null,!vc&&Pd.length>0?t.jsx(P2,{approvals:Pd,timezone:e,now:Et,version:P,onDecided:g0,onSay:V=>Fd(V,[]),onOpenFull:V=>{G(V),h&&(m==null||m())},phone:h,onSecretSet:et,...(D0=Wn==null?void 0:Wn.page)!=null&&D0.title?{pageTitle:Wn.page.title}:{},onSignInMyself:()=>{var he;const V=(he=Wn==null?void 0:Wn.session)==null?void 0:he.id;V&&T.browserControl("takeover",V).catch(()=>{}).finally(vr.reload)}}):null,vc||d0?null:t.jsxs("div",{hidden:Pd.length>0&&!Ve||!!(P!=null&&P.question)&&!q,"data-testid":"composer-slot",children:[!a&&ct?t.jsxs("section",{className:"wb-chat-reference","aria-label":"Story reference",children:[t.jsxs("div",{className:"wb-chat-reference-head",children:[t.jsxs("div",{children:[t.jsx("small",{children:"Asking about"}),t.jsx("p",{children:t.jsx("strong",{children:ct.title})})]}),t.jsx("button",{type:"button",className:"ui-btn",onClick:()=>{s&&yS(s),_e(null)},children:"Remove reference"})]}),t.jsxs("details",{children:[t.jsx("summary",{children:"Context sent with your question"}),t.jsx("p",{children:ct.text})]}),t.jsx("div",{className:"wb-starters",role:"group","aria-label":"Questions about this story",children:ct.suggestions.map(V=>t.jsxs("button",{type:"button",className:"wb-starter",disabled:K||!s,title:"Send this question",onClick:()=>Fd(V,[],!0),children:[V," ",t.jsx(se,{name:"send",size:16})]},V))})]}):null,t.jsx(Ek,{ref:ke,disabled:!s,running:K,onSend:Fd,onStop:p0,agentName:a?a.name:(Ee==null?void 0:Ee.name)??"the agent",draft:Gt,history:LL,threadKey:$??(a?`group:${a.id}`:s),model:a?null:(Ee==null?void 0:Ee.model)??null,chrome:xs,setupHref:a?null:Ee?Jt(Ee.id,"setup","brain"):null,thinking:_L,...!a&&Ee&&PR(MR(Ee,Hr.data))?{onThinking:zL}:{},...a?{mentions:Je.map(V=>({id:V.id,handle:V.handle,name:V.name})),team:{agents:Ot,selfId:""}}:s?{team:{agents:Ot,selfId:s}}:{},onCommand:GL,onOpenFile:c0,conversationId:$??null,readAloud:ut,onReadAloud:It}),De?t.jsx("p",{className:"wb-voice-note",role:"status",children:De}):null]})]}),h?f?t.jsxs("div",{className:"wb-sheet",role:"dialog","aria-label":"Canvas",children:[t.jsxs("div",{className:"wb-sheet-head",children:[t.jsx("strong",{children:"Canvas"}),t.jsx("button",{className:"ui-btn",onClick:p,children:"Close"})]}),w0]}):null:t.jsxs(t.Fragment,{children:[t.jsx(qJ,{columnRef:Me,width:nn,onChange:ce}),w0]})]})}function XX(e,n){return Date.parse(n.lastMessageAt??n.startedAt??n.createdAt??"")-Date.parse(e.lastMessageAt??e.startedAt??e.createdAt??"")}function Hn(e){return typeof e=="string"&&e!==""?e:null}function Ga(e){return e instanceof pe||e instanceof Error?e.message:String(e)}function hx(e,n){var r;const s=(r=n.blocks.find(a=>a.type==="text"))==null?void 0:r.text.trim();if(!s)return!0;for(let a=e.messages.length-1;a>=0;a-=1){const i=e.messages[a];if(i.role!=="user")continue;const l=i.blocks.find(o=>o.type==="text");if(l)return l.text.trim()===s}return!1}function Ch(e){var s;const n=(s=e.dataTransfer)==null?void 0:s.types;return!!(n&&Array.from(n).includes("Files"))}function ZX(){return t.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 28 28","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("path",{d:"M14 4v13M8.5 11.5 14 17l5.5-5.5"}),t.jsx("path",{d:"M5 19.5v2a2.5 2.5 0 0 0 2.5 2.5h13a2.5 2.5 0 0 0 2.5-2.5v-2"})]})}function eZ(){return t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[t.jsx("path",{d:"M2.6 8a5.4 5.4 0 1 0 1.6-3.8"}),t.jsx("path",{d:"M2.4 2.6v2.6h2.6M8 5.2V8l2 1.3"})]})}function tZ(){return t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",fill:"currentColor",children:[t.jsx("circle",{cx:"8",cy:"3.4",r:"1.35"}),t.jsx("circle",{cx:"8",cy:"8",r:"1.35"}),t.jsx("circle",{cx:"8",cy:"12.6",r:"1.35"})]})}function q1({items:e,disabled:n,label:s,title:r,sub:a,face:i,readingControls:l}){const[o,c]=d.useState(!1),u=d.useRef(null);d.useEffect(()=>{if(!o)return;const f=p=>{u.current&&!u.current.contains(p.target)&&c(!1)},m=p=>{p.key==="Escape"&&c(!1)};return window.addEventListener("mousedown",f),window.addEventListener("keydown",m),()=>{window.removeEventListener("mousedown",f),window.removeEventListener("keydown",m)}},[o]);const h=f=>{const m=t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"ui-menu-item-text",children:f.label}),f.hint?t.jsx("span",{className:"ui-menu-item-hint",children:f.hint}):null]});return f.href?t.jsx("a",{className:"ui-menu-item",role:"menuitem",href:f.href,"data-tone":f.tone,onClick:()=>c(!1),children:m},f.label):t.jsx("button",{className:"ui-menu-item",role:"menuitem","data-testid":f.testId,"data-tone":f.tone,disabled:f.disabled,onClick:()=>{var p;c(!1),(p=f.onSelect)==null||p.call(f)},children:m},f.label)};return t.jsxs("div",{className:"wb-head-menu",ref:u,children:[t.jsx("button",{className:"ui-icon-btn wb-head-more","data-testid":"chat-menu","aria-label":s,"aria-haspopup":"menu","aria-expanded":o,"data-open":o?"true":void 0,disabled:n,onClick:()=>c(f=>!f),children:t.jsx(tZ,{})}),o?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"wb-head-menu-scrim","aria-hidden":"true",onClick:()=>c(!1)}),t.jsxs("div",{className:"ui-menu wb-head-menu-list",role:"menu","aria-label":r,children:[t.jsxs("div",{className:"wb-head-menu-head","aria-hidden":"true",children:[i,t.jsxs("span",{className:"wb-head-menu-heading",children:[t.jsx("span",{className:"wb-head-menu-title",children:r}),a?t.jsx("span",{className:"wb-head-menu-sub",children:a}):null]})]}),l,e.map((f,m)=>f==="separator"?t.jsx("div",{className:"ui-menu-sep",role:"separator"},`sep-${m}`):h(f)),t.jsx("button",{type:"button",className:"ui-btn wb-head-menu-cancel",onClick:()=>c(!1),children:"Cancel"})]})]}):null]})}let Y1=!1;const nZ=new Set(["missing","unconfigured","not-english"]);async function fm(e,n,s=null){const r=xP(s);try{const a=await nt.say({text:e,...n?{conversationId:n}:{}});return QS(r)&&await nH(a.audioUrl,a.mime,s),null}catch(a){QS(r)&&uc();const i=a instanceof pe&&a.detail&&typeof a.detail=="object"?a.detail.reason:void 0;return typeof i=="string"&&nZ.has(i)&&(s!==null||!Y1)?(Y1=!0,a.message):null}}function sZ(e,n,s){const r=IR(e);if(!r||r.rest==="")return null;const a=n.find(i=>i.roles.includes(Mr));return!a||a.id===s||a.handle.toLowerCase()!==r.handle?null:{agent:a,rest:r.rest}}let sr=null;function rZ(e){if(Xh(e)!==null)return!1;const n=tP(e);return n!==Un&&n!==$a}function aZ({agent:e,agents:n,open:s,onOpenChange:r,navigate:a,timezone:i}){const l=d.useRef(null),o=d.useRef(s),c=`Ask ${e.name}`,[u,h]=d.useState(!1),[f,m]=d.useState(null);return d.useEffect(()=>{const p=x=>{const g=x.detail;!g||typeof g.text!="string"||(g.handled=!0,m({text:g.text,at:Date.now()}),r(!0))};return window.addEventListener(Nj,p),()=>window.removeEventListener(Nj,p)},[r]),d.useEffect(()=>{if(s||!u||!sr)return;const p=fp({url:nt.streamUrl(sr.conversationId),lastEventId:sr.lastEventId??null,onEvent:x=>{x.name==="run.finished"&&h(!1)}});return()=>p.close()},[s,u]),d.useEffect(()=>{const p=x=>{!x.altKey||x.ctrlKey||x.metaKey||x.code!=="Slash"||(x.preventDefault(),r(!s))};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[s,r]),d.useEffect(()=>{var p;o.current&&!s&&((p=l.current)==null||p.focus()),o.current=s},[s]),s?t.jsx(lZ,{agent:e,agents:n,timezone:i,navigate:a,onClose:()=>r(!1),onBusy:h,prefill:f}):t.jsxs(Tu,{children:[t.jsx(Ru,{asChild:!0,children:t.jsx("button",{ref:l,type:"button",className:"wb-ask-fab","data-busy":u?"true":void 0,"aria-label":c,onClick:()=>r(!0),children:t.jsx(iZ,{busy:u})})}),t.jsx(Iu,{children:t.jsx(Pu,{className:"ui-tip",side:"left",sideOffset:8,children:c})})]})}function iZ({busy:e}){const[n,s]=d.useState(!1);return n?t.jsx(Hu,{size:"lg"}):t.jsx(yd,{state:e?"working":"idle",className:"wb-ask-fab-face",onStillError:()=>s(!0)})}function lZ({agent:e,agents:n,timezone:s,navigate:r,onClose:a,onBusy:i,prefill:l}){const o=d.useRef(null),[c,u]=d.useState(sr&&sr.agentId===e.id?sr.conversationId:null),[h,f]=d.useState(null),[m,p]=d.useState([]),[x,g]=d.useState([]),[b,j]=d.useState(null),[v,y]=d.useState(!1),[k,N]=d.useState(!1),[w,S]=d.useState(null),[C,E]=d.useState(l??null);d.useEffect(()=>{l&&E(l)},[l]);const[$,R]=d.useState(Date.now()),[P,O]=d.useState(pP),I=d.useRef(P);I.current=P;const[F,U]=d.useState(null),[L,M]=d.useState(new Map),z=d.useRef(null),D=d.useCallback(async Y=>{try{const te=await nt.conversation(Y);f(te),p(ie=>ie.filter(ge=>!oZ(te,ge)))}catch{}},[]);d.useEffect(()=>{c&&D(c)},[c,D]),d.useEffect(()=>{if(!c)return;const Y=fp({url:nt.streamUrl(c),onEvent:te=>{var ie,ge;switch(te.name){case"run.started":z.current=null,y(!0),j(null);break;case"live":{const je=Zn(te.data.runId)??"",Se=Number(te.data.turn??0),ke=te.data.kind==="thinking"?"thinking":"text",Be=Zn(te.data.text)??"",rt=Date.now();if(ke==="text"){const ye=z.current;z.current=ye&&ye.runId===je&&ye.turn===Se?{...ye,text:ye.text+Be}:{runId:je,turn:Se,text:Be}}j(ye=>{const Ue=ye&&ye.runId===je&&ye.turn===Se?ye:{runId:je,turn:Se,text:"",thinking:"",thinkingStartedAt:null,textStartedAt:null,settled:!1};return ke==="thinking"?{...Ue,thinking:Ue.thinking+Be,thinkingStartedAt:Ue.thinkingStartedAt??rt}:{...Ue,text:Ue.text+Be,textStartedAt:Ue.textStartedAt??rt}});break}case"live.snapshot":{const je=Zn(te.data.runId)??"",Se=Number(te.data.turn??0),ke=Zn(te.data.text)??"",Be=Zn(te.data.thinking)??"",rt=Number(te.data.startedAt??Date.now());z.current={runId:je,turn:Se,text:ke},y(!0),j({runId:je,turn:Se,text:ke,thinking:Be,thinkingStartedAt:Be?rt:null,textStartedAt:ke?rt:null,settled:!1});break}case"live.settle":{const je=Zn(te.data.runId)??"",Se=Number(te.data.turn??0);if(te.data.retracted===!0){((ie=z.current)==null?void 0:ie.runId)===je&&z.current.turn===Se&&(z.current=null),j(ke=>ke&&ke.runId===je&&ke.turn===Se?null:ke);break}j(ke=>ke&&ke.runId===je&&ke.turn===Se?{...ke,settled:!0}:ke);break}case"tool.called":{const je=Zn(te.data.toolUseId)??Zn(te.data.id),Se=Zn(te.data.name)??Zn(te.data.tool)??"tool";je&&g(ke=>[...ke.filter(Be=>Be.toolUseId!==je),{toolUseId:je,name:Se,startedAt:Date.now()}]);break}case"tool.result":{const je=Zn(te.data.toolUseId)??Zn(te.data.id);je&&g(Se=>Se.filter(ke=>ke.toolUseId!==je)),D(c);break}case"awaiting-approval":{const je=Zn(te.data.approvalId)??Zn(te.data.actionId),Se=Zn(te.data.toolUseId);je&&Se&&M(ke=>new Map(ke).set(Se,je)),Se&&g(ke=>ke.filter(Be=>Be.toolUseId!==Se)),D(c).then(()=>j(ke=>ke!=null&&ke.settled?null:ke));break}case"message.appended":D(c).then(()=>j(je=>je!=null&&je.settled?null:je));break;case"run.finished":{y(!1),g([]),j(null);const je=Zn(te.data.message);S(je??null);const Se=((ge=z.current)==null?void 0:ge.text.trim())??"";z.current=null,!je&&Se!==""&&I.current&&fm(Se,c).then(ke=>{ke&&U(ke)}),D(c);break}}}});return()=>{sr&&sr.conversationId===c&&(sr.lastEventId=Y.lastEventId()),Y.close()}},[c,D]),d.useEffect(()=>{i(v||k)},[v,k,i]),d.useEffect(()=>{if(x.length===0)return;const Y=window.setInterval(()=>R(Date.now()),1e3);return()=>window.clearInterval(Y)},[x.length]);const H=(Y,te)=>{N(!0),S(null);const ie={id:`local-${Date.now()}`,role:"user",at:new Date().toISOString(),blocks:[...Y.trim()===""?[]:[{type:"text",text:Y}],...te.map(ge=>({type:"attachment",artifactId:ge.artifactId,filename:ge.filename,mime:ge.mime,kind:ge.kind,sizeBytes:ge.sizeBytes}))]};p(ge=>[...ge,ie]),(async()=>{try{const ge=c??(await nt.startConversation(e.id)).conversationId;ge!==c&&(sr={agentId:e.id,conversationId:ge},u(ge));const je=await nt.send(e.id,{conversationId:ge,text:Y,...te.length>0?{attachmentIds:te.map(Se=>Se.artifactId)}:{}});je.conversationId!==ge&&(sr={agentId:e.id,conversationId:je.conversationId},u(je.conversationId)),y(!0),D(je.conversationId)}catch(ge){p(je=>je.filter(Se=>Se.id!==ie.id)),S(ge instanceof pe?ge.message:String(ge)),E({text:Y,at:Date.now()})}finally{N(!1)}})()},K=(Y,te)=>{if(S(null),Y==="stop"){X();return}if(Y==="use"){const ie=te.replace(/^@/,"").toLowerCase(),ge=n.find(je=>je.handle.toLowerCase()===ie||je.id===ie);if(!ge){U(ie?`No agent called @${ie}.`:"Say who: /use @handle.");return}r(ht(ge.id));return}if(Y==="new"){const ie=n.find(ge=>ge.roles.includes(Mr));if(!ie){U("There is no agent here that makes agents.");return}te.trim()&&pd(ie.id,`I'd like a teammate for this: ${te.trim()}`),r(ht(ie.id));return}T.quiet(te).then(ie=>U(ie.text)).catch(ie=>S(ie instanceof Error?ie.message:String(ie)))},X=()=>{c&&nt.cancel(c).catch(Y=>S(String(Y))).finally(()=>y(!1))},W=()=>{var Y;sr=null,u(null),f(null),p([]),g([]),j(null),y(!1),S(null),M(new Map),(Y=o.current)==null||Y.focus()},me=Y=>{O(Y),gP(Y),Y||uc()},fe=c?ht(e.id,c):ht(e.id),oe=[...(h==null?void 0:h.messages)??[],...m],{openOffers:B,takingOffer:ue,takeOffer:Ne,answeringQuestion:Ke,answerQuestion:G,skipQuestion:ae}=U2({conversation:h,conversationId:c,agentId:e.id,now:$,refresh:D,onRunStarted:()=>y(!0),onError:(Y,te)=>{S(Y),te&&y(!1)},navigate:r}),J=d.useMemo(()=>_X(h,n,L),[h,n,L]),xe=J.length===0?(h==null?void 0:h.question)??null:null,Ie=Y=>{c&&D(c),T.overview().catch(()=>{}),Y.state!=="pending"&&M(te=>new Map([...te].filter(([,ie])=>ie!==Y.id)))};return t.jsxs(_W,{title:e.name,label:`${e.name}, a quick chat`,onClose:a,onOpenAutoFocus:Y=>{var te;Y.preventDefault(),(te=o.current)==null||te.focus()},onCloseAutoFocus:Y=>Y.preventDefault(),actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:W,disabled:c===null&&m.length===0,children:"New"}),t.jsx(it,{size:"sm",variant:"ghost",href:fe,onClick:Y=>{Y.preventDefault(),r(fe)},children:"Open in Chat"})]}),children:[t.jsx("div",{className:"wb-ask-thread",children:t.jsx(dk,{messages:oe,live:x,now:$,working:v||k,partial:b,agents:n,agentName:e.name,agentId:e.id,onOpen:()=>r(fe),onReadAloud:(Y,te)=>{U(null),fm(te,c??void 0,Y).then(ie=>{ie&&U(ie)})},emptyHint:`Ask ${e.name} anything, without leaving this page.`})}),t.jsxs("div",{className:"wb-ask-compose",children:[w?t.jsx(re,{message:w}):null,t.jsx(B2,{offers:B,disabled:ue!==null,onTake:Ne}),J.length>0?t.jsx(P2,{approvals:J,timezone:s,now:$,version:h,onDecided:Ie,onSay:Y=>H(Y,[]),onOpenFull:()=>r(fe)}):xe&&rf(xe)?t.jsx(Nk,{question:xe,card:rf(xe),phone:!0,container:null,disabled:v,onSettled:()=>{c&&D(c)},onChoice:G},xe.id):xe&&ay(xe)?t.jsx(F2,{card:ay(xe),disabled:Ke||v,onAnswer:G},xe.id):xe?t.jsx(_2,{question:xe,disabled:Ke||v,onAnswer:G,onSkip:ae},xe.id):null,t.jsxs("div",{hidden:J.length>0||xe!==null&&!rf(xe),"data-testid":"composer-slot",children:[t.jsx(Ek,{ref:o,disabled:k||!e.available,running:v,onSend:H,onStop:X,agentName:e.name,placeholder:`Message ${e.name}…`,draft:C,threadKey:`dock.${c??e.id}`,conversationId:c,readAloud:P,onReadAloud:me,team:{agents:n,selfId:e.id},onCommand:K}),F?t.jsx("p",{className:"wb-voice-note",role:"status",children:F}):null]})]})]})}function Zn(e){return typeof e=="string"?e:null}function oZ(e,n){var r;const s=(r=n.blocks)==null?void 0:r.find(a=>a.type==="text");return!s||s.type!=="text"?!1:e.messages.some(a=>a.role==="user"&&(a.blocks??[]).some(i=>i.type==="text"&&i.text.includes(s.text)))}const V2=3;function cZ(e){if(e==="approval"||e==="question")return"accent";if(e==="watcher"||e==="reminder")return"warm";if(e==="failure")return"critical"}function uZ(e,n){return e?n?"above-dock":"above-button":"corner"}function dZ({placement:e,children:n}){return t.jsx("div",{className:"wb-toast-stack","data-placement":e,children:n})}function hZ(e){return e.state==="shown"&&e.seenAt===null}function fZ(e){const[n,s]=d.useState([]),r=d.useRef(new Set),a=d.useRef(new Set),i=d.useCallback(()=>{e&&T.notifications(20).then(({notifications:o})=>{const c=o.filter(u=>hZ(u)&&!r.current.has(u.id));s(u=>{const h=new Set(u.map(m=>m.id)),f=c.filter(m=>!h.has(m.id));return f.length===0?u:[...u,...f].sort((m,p)=>p.createdAt.localeCompare(m.createdAt))})}).catch(()=>{})},[e]);d.useEffect(()=>{for(const o of n.slice(0,V2))a.current.has(o.id)||(a.current.add(o.id),T.notificationSeen(o.id).catch(()=>{}))},[n]);const l=d.useCallback(o=>{r.current.add(o),s(c=>c.filter(u=>u.id!==o))},[]);return{queue:n,refresh:i,dismiss:l}}function mZ({queue:e,agents:n,navigate:s,onDismiss:r}){if(e.length===0)return null;const a=e.slice(0,V2),i=e.length-a.length;return t.jsxs("section",{className:"nt-toasts","aria-label":"Notifications",children:[a.map(l=>t.jsxs("div",{className:"ui-toast nt-toast","data-tone":cZ(l.kind),role:"status",children:[l.agentId?t.jsx(yn,{agents:n,id:l.agentId,size:"sm"}):null,t.jsxs("div",{className:"nt-toast-main",children:[t.jsx("div",{className:"ui-toast-title",children:Ou(l)}),l.text?t.jsx("div",{className:"ui-toast-body nt-toast-line",children:pZ(l.text)}):null,l.link?t.jsx("a",{className:"nt-toast-link",href:l.link,onClick:o=>{o.preventDefault(),r(l.id),s(l.link)},children:"See"}):null]}),t.jsx("button",{type:"button",className:"nt-toast-x","aria-label":`Dismiss ${Ou(l)}`,onClick:()=>r(l.id),children:"×"})]},l.id)),i>0?t.jsxs("p",{className:"nt-toasts-more",children:["and ",i," more"]}):null]})}function pZ(e){var n;return((n=e.split(`
|
|
132
|
+
`).find(s=>s.trim()!==""))==null?void 0:n.trim())??""}const gZ=3e4,xZ=1e3;function vZ(e,n,s){const r=d.useRef(n);r.current=n;const a=d.useRef(s);a.current=s,d.useEffect(()=>{if(!e)return;let i=!1,l=-1/0,o=null,c=null,u=!0;const h=()=>document.visibilityState!=="hidden",f=j=>{var v;l=Date.now(),T.presence(j).catch(y=>{var k;y instanceof pe&&y.status===401&&(i=!0,(k=a.current)==null||k.call(a))}),j==="active"&&((v=r.current)==null||v.call(r))},m=j=>{if(i||(o=j,c!==null))return;const v=l+xZ-Date.now();if(v<=0){o=null,f(j);return}c=window.setTimeout(()=>{if(c=null,i||o===null)return;const y=o;o=null,f(y)},v)},p=()=>{u=!0,h()&&m("active")},x=()=>{u=!1,m("away")},g=()=>m(h()?"active":"away");h()&&m("active");const b=window.setInterval(()=>{h()&&u&&m("active")},gZ);return window.addEventListener("focus",p),window.addEventListener("blur",x),document.addEventListener("visibilitychange",g),()=>{i=!0,window.clearInterval(b),c!==null&&window.clearTimeout(c),window.removeEventListener("focus",p),window.removeEventListener("blur",x),document.removeEventListener("visibilitychange",g)}},[e])}function jZ({agents:e,onClose:n,onCreated:s}){return GI(e)?t.jsx(yZ,{agents:Cb(e),onClose:n,...s?{onCreated:s}:{}}):t.jsx(Qe,{title:"A new group",onClose:n,children:t.jsxs(Q,{children:["A group needs two agents. Make another one with ",q8(e)," first."]})})}function yZ({agents:e,onClose:n,onCreated:s}){var j,v;const[r,a]=d.useState(""),[i,l]=d.useState([]),[o,c]=d.useState(((j=e.find(y=>y.roles.includes(wd)))==null?void 0:j.id)??((v=e[0])==null?void 0:v.id)??""),[u,h]=d.useState(!1),[f,m]=d.useState(null),p=[...new Set([o,...i])].filter(Boolean),x=r.trim()!==""&&o!==""&&p.length>=2,g=y=>l(k=>k.includes(y)?k.filter(N=>N!==y):[...k,y]),b=async()=>{h(!0),m(null);try{s==null||s(await nt.createGroup({name:r.trim(),coordinator:o,members:p.filter(y=>y!==o)}))}catch(y){m(y instanceof pe?y.message:String(y))}finally{h(!1)}};return t.jsx(Qe,{title:"A new group",onClose:n,children:t.jsxs(de,{children:[t.jsx(le,{label:"Name",hint:"What this team is for: Household finances, The move, Tax season.",children:t.jsx("input",{value:r,autoFocus:!0,maxLength:80,onChange:y=>a(y.target.value),placeholder:"Household finances"})}),t.jsx(le,{label:"Coordinator",hint:"Reads your request, brings members in, and answers for the group. Concierge by default.",children:t.jsx("select",{value:o,onChange:y=>c(y.target.value),children:e.map(y=>t.jsx("option",{value:y.id,children:y.name},y.id))})}),t.jsx(le,{label:"Members",hint:"The coordinator may ask the room's members in this room's conversations; each member keeps its own account, tools and approvals.",children:t.jsx("div",{className:"group-pick",role:"group","aria-label":"Members",children:e.filter(y=>y.id!==o).map(y=>t.jsxs("label",{className:"group-pick-row","data-on":i.includes(y.id)||void 0,children:[t.jsx("input",{type:"checkbox",checked:i.includes(y.id),onChange:()=>g(y.id)}),t.jsx(yn,{agents:e,id:y.id,size:"sm"}),t.jsxs("span",{className:"group-pick-text",children:[t.jsx("span",{className:"group-pick-name",children:y.name}),t.jsx("span",{className:"group-pick-desc",children:y.description})]})]},y.id))})}),t.jsx(Q,{children:"Members read what is said in this group and what they recall from shared and group memory. Nothing an agent knows privately is brought in on its own: what enters the room is seen by the room."}),f?t.jsx(Q,{tone:"critical",children:f}):null,t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:n,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!x||u,onClick:()=>void b(),children:u?"Creating…":"Create group"})]})]})})}const wZ=1e4;function Xu({title:e,body:n,duration:s,onUndo:r,onGone:a}){return t.jsxs(Lz,{className:"ui-toast wb-undo-toast",duration:s,onOpenChange:i=>{i||a()},"data-testid":"undo-toast",children:[t.jsx("span",{className:"ui-toast-mark","aria-hidden":"true"}),t.jsxs("div",{className:"ui-toast-main",children:[t.jsx(Fz,{className:"ui-toast-title",children:e}),n?t.jsx(_z,{className:"ui-toast-body",children:n}):null]}),r?t.jsx(zz,{altText:"Undo",asChild:!0,children:t.jsx("button",{type:"button",className:"ui-btn wb-undo-toast-action","data-variant":"ghost","data-size":"sm",onClick:r,children:"Undo"})}):null]})}const Q1=[{id:"",label:"All files"},{id:"produced",label:"Created by agents"},{id:"uploaded",label:"Uploaded by you"}],bZ=["","image","pdf","table","text","code","audio","video","archive","file"];function kZ({hash:e,timezone:n,navigate:s,agents:r}){var O;const a=sW(e),i=(a==null?void 0:a.artifactId)??null,l=(a==null?void 0:a.filters.origin)??"",o=(a==null?void 0:a.filters.family)??"",c=(a==null?void 0:a.filters.q)??"",[u,h]=d.useState(c);d.useEffect(()=>{h(c)},[c]);const f=(I,F=!1)=>s(oo(i,{q:c,origin:l,family:o,...I}),F);d.useEffect(()=>{if(u===c)return;const I=window.setTimeout(()=>f({q:u},!0),250);return()=>window.clearTimeout(I)},[u]);const[m,p]=d.useState(null),[x,g]=d.useState(null),[b,j]=d.useState(null),[v,y]=d.useState(!1),[k,N]=d.useState(!1),w=I=>{var F;return I?((F=r.find(U=>U.id===I))==null?void 0:F.name)??I:""},S=d.useRef(0);d.useEffect(()=>{const I=++S.current;p(null),g(null),y(!1),j(null),T.library({...c?{q:c}:{},...l?{origin:l}:{},...o?{family:o}:{}}).then(F=>{S.current===I&&(p(F.entries),g(F.next))}).catch(F=>{S.current===I&&j(F instanceof pe?F.message:String(F))})},[c,l,o]);const C=()=>{if(!x||v)return;y(!0);const I=S.current;T.library({...c?{q:c}:{},...l?{origin:l}:{},...o?{family:o}:{},cursor:x}).then(F=>{S.current===I&&(p(U=>{const L=new Set((U??[]).map(M=>M.id));return[...U??[],...F.entries.filter(M=>!L.has(M.id))]}),g(F.next))}).catch(F=>{S.current===I&&j(F instanceof pe?F.message:String(F))}).finally(()=>{S.current===I&&y(!1)})},E=(l?1:0)+(o?1:0),$=((O=Q1.find(I=>I.id===l))==null?void 0:O.label)??l,R=t.jsxs(t.Fragment,{children:[m===null?t.jsx(Ce,{children:"Loading…"}):m.length===0?t.jsx(Ce,{children:"No file matches that."}):t.jsx(yt,{children:m.map(I=>t.jsx(cP,{href:oo(I.id,{q:c,origin:l,family:o}),current:I.id===i,onClick:()=>s(oo(I.id,{q:c,origin:l,family:o})),lead:t.jsx("span",{className:"files-row-visual","data-family":I.family,children:I.family==="image"&&!I.deleted?t.jsx("img",{src:Lr(I.id),alt:"",loading:"lazy"}):t.jsx(Ob,{family:I.family})}),title:I.filename??"Untitled file",meta:t.jsx("span",{title:Nt(I.createdAt,n),children:Xe(I.createdAt)}),sub:`${I.caption&&I.origin==="produced"?`${I.caption} · `:""}${il[I.family]} · ${qn(I.sizeBytes)} · ${G2(I,w)}${NZ(I,w)}`},I.id))}),x?t.jsx("div",{className:"files-more",children:t.jsx(A,{size:"sm",onClick:C,disabled:v,children:v?"Loading…":"Show more"})}):null]}),P=m!==null&&m.length===0&&!c&&!l&&!o&&!u;return t.jsxs("div",{className:"ui-page files","data-selected":i?"true":void 0,children:[t.jsxs("header",{className:"ui-page-head",children:[t.jsx("h2",{className:"ui-page-title",children:"Files"}),t.jsx("p",{className:"ui-page-lede",children:"What your agents made or were given."})]}),P?t.jsx(ms,{icon:"files",title:"Nothing here yet",children:"Drop a file into any conversation and it shows up here too."}):t.jsxs(t.Fragment,{children:[t.jsx(hP,{label:"Files",onSubmit:()=>f({q:u},!0),main:t.jsx("input",{type:"search",value:u,placeholder:"Search by name or label","aria-label":"Search files by name or label",onChange:I=>h(I.target.value)}),filters:t.jsxs(Ks,{dense:!0,children:[t.jsx(le,{label:"Origin",children:t.jsx("select",{value:l,"aria-label":"Origin",onChange:I=>f({origin:I.target.value}),children:Q1.map(I=>t.jsx("option",{value:I.id,children:I.label},I.id))})}),t.jsx(le,{label:"Kind",children:t.jsx("select",{value:o,"aria-label":"Kind",onChange:I=>f({family:I.target.value}),children:bZ.map(I=>t.jsx("option",{value:I,children:I===""?"Any kind":il[I]},I))})})]}),filtersOpen:k,onToggleFilters:()=>N(I=>!I),active:E,chips:E>0?t.jsxs(t.Fragment,{children:[l?t.jsx(Gf,{label:"Origin",onRemove:()=>f({origin:""}),children:$}):null,o?t.jsx(Gf,{label:"Kind",onRemove:()=>f({family:""}),children:il[o]}):null]}):void 0}),t.jsx(re,{message:b}),t.jsx(uP,{className:"files-split",label:"Files",list:R,detail:i?t.jsx(SZ,{id:i,timezone:n,agents:r,navigate:s,onBack:()=>s(oo(null,{q:c,origin:l,family:o}))},i):void 0,empty:"Choose a file to see it here."})]})]})}function NZ(e,n){var a,i;const s=(a=e.context)!=null&&a.groupName?`in ${e.context.groupName}`:(i=e.context)!=null&&i.agentId&&e.context.agentId!==e.agentId?`with ${n(e.context.agentId)}`:"",r=e.contexts>1?`${e.contexts} conversations`:"";return[s,r].filter(Boolean).map(l=>` · ${l}`).join("")}function G2(e,n){return e.origin==="uploaded"?"You sent it":e.origin==="produced"?`Made by ${n(e.agentId)||"an agent"}`:e.agentId?`Saved by ${n(e.agentId)}`:"Origin unknown"}function SZ({id:e,timezone:n,agents:s,navigate:r,onBack:a}){const[i,l]=d.useState(null),[o,c]=d.useState(!1),[u,h]=d.useState(null);d.useEffect(()=>{let v=!1;return l(null),h(null),T.libraryEntry(e).then(y=>{v||l(y)}).catch(y=>{v||h(y instanceof pe&&y.status===404?"This file is no longer in the library.":y instanceof pe?y.message:String(y))}),()=>{v=!0}},[e]);const f=v=>{var y;return v?((y=s.find(k=>k.id===v))==null?void 0:y.name)??v:""};if(u)return t.jsxs("div",{className:"files-detail-body",children:[t.jsx(A,{size:"sm",onClick:a,className:"files-back",children:"Back to Files"}),t.jsx(Q,{tone:"critical",children:u})]});if(!i)return t.jsx("div",{className:"files-detail-body",children:t.jsx(Ce,{children:"Loading…"})});const{entry:m,contexts:p,contextsTotal:x,available:g}=i,b=m.filename??"Untitled file",j=()=>{c(!0),T.libraryEntry(e,p.length).then(v=>l(y=>y&&{...y,contexts:[...y.contexts,...v.contexts],contextsTotal:v.contextsTotal})).catch(()=>{}).finally(()=>c(!1))};return t.jsxs("div",{className:"files-detail-body",children:[t.jsx(A,{size:"sm",onClick:a,className:"files-back",children:"Back to Files"}),t.jsxs("header",{className:"files-detail-head",children:[t.jsx("span",{className:"files-detail-mark","data-family":m.family,"aria-hidden":"true",children:t.jsx(Ob,{family:m.family})}),t.jsxs("div",{className:"files-detail-text",children:[t.jsx("h3",{className:"files-detail-name",children:b}),t.jsxs("p",{className:"files-detail-meta",children:[il[m.family]," · ",qn(m.sizeBytes)," · ",Nt(m.createdAt,n)]})]}),g?t.jsx(BM,{artifactId:m.id,filename:m.filename,mime:m.mime}):null]}),g?null:t.jsx(Q,{tone:"warning",children:"The file's bytes are no longer on this machine. What is known about it stays here; the download will not work."}),t.jsx(UM,{artifactId:m.id,filename:m.filename,mime:m.mime,family:m.family,available:g}),t.jsx(un,{items:[{label:"Origin",value:G2(m,f)},...m.caption&&m.origin==="produced"?[{label:"Filed under",value:m.caption}]:[],...m.agentId&&m.origin==="produced"?[{label:"Made by",value:t.jsxs("span",{className:"files-agent",children:[t.jsx(yn,{agents:s,id:m.agentId,size:"sm"}),f(m.agentId)]})}]:[],{label:"Type",value:t.jsx("span",{className:"mono",children:m.mime})},{label:"Id",value:t.jsx("span",{className:"mono",children:m.id})}]}),t.jsxs("section",{className:"files-conversations",children:[t.jsx("h4",{className:"ui-section-title",children:"Conversations"}),p.length===0?t.jsx("p",{className:"muted",children:"No conversation is recorded for this file. It may date from before the library kept track."}):t.jsx("ul",{className:"files-ctx",role:"list",children:p.map(v=>{const y=v.groupId?Gi(v.groupId,v.conversationId):ht(v.conversationAgentId,v.conversationId),k=v.groupId?v.groupName??"a group":f(v.conversationAgentId);return t.jsxs("li",{className:"files-ctx-row",children:[t.jsxs("span",{className:"files-ctx-text",children:[t.jsx("span",{children:v.groupId?`Group: ${k}`:k}),t.jsxs("span",{className:"muted",children:[" · ",v.kind==="produced"?`made by ${f(v.agentId)||"an agent"}`:v.kind==="reused"?"sent again":"sent by you"," · ",Xe(v.at)]})]}),t.jsx("a",{className:"ui-btn","data-size":"sm",href:y,onClick:N=>{N.preventDefault(),r(y)},children:"Open conversation"})]},`${v.conversationId}:${v.kind}`)})}),p.length<x?t.jsx(ne,{align:"end",children:t.jsx(A,{size:"sm",onClick:j,disabled:o,children:o?"Loading…":`Show ${x-p.length} more`})}):null]})]})}function q2(){if(typeof window>"u")return;const e=window.__BUDDI_DESKTOP__;return e&&typeof e.removing=="function"?e:void 0}const Y2="buddi.keepClose";let zo=null;const oy=new Set;function cy(){for(const e of oy)e()}typeof window<"u"&&(window.addEventListener("beforeinstallprompt",e=>{e.preventDefault(),zo=e,cy()}),window.addEventListener("appinstalled",()=>{zo=null,$k(),cy()}));function Ip(){const[e,n]=d.useState(zo);return d.useEffect(()=>{const s=()=>n(zo);return oy.add(s),s(),()=>{oy.delete(s)}},[]),Q2()?null:e}async function Ak(e){try{await e.prompt();const n=await e.userChoice;zo===e&&(zo=null);const s=(n==null?void 0:n.outcome)==="accepted";return s&&$k(),cy(),s}catch{return!1}}function CZ(){try{return window.localStorage.getItem(Y2)!==null}catch{return!1}}function $k(){try{window.localStorage.setItem(Y2,"dismissed")}catch{}}function Q2(){var e;try{return((e=window.matchMedia)==null?void 0:e.call(window,"(display-mode: standalone)").matches)??!1}catch{return!1}}function EZ(e=window.location.hostname){const n=e.replace(/^\[|\]$/g,"").toLowerCase();return n==="127.0.0.1"||n==="::1"||n==="localhost"}function Tk(e=typeof navigator>"u"?"":navigator.userAgent){return/\bbuddi-mac\/\S+/.test(e)}function J2(e){return Tk(e)?null:/Edg\//.test(e)?"In Edge, choose Apps → Install buddi from the … menu.":/(Chrome|CriOS)\//.test(e)?"In Chrome, click the install icon in the address bar.":/Safari\//.test(e)&&/Mac/.test(e)?"In Safari, choose File → Add to Dock.":null}function AZ(e){return/Mac|iPhone|iPad/.test(e)}function $Z(){const e=Ip(),[n,s]=d.useState(CZ);if(n||!e)return null;const r=()=>{$k(),s(!0)};return t.jsxs("div",{className:"home-install",role:"region","aria-label":"Install buddi",children:[t.jsx("p",{className:"home-install-text",children:"Install buddi as an app, one click from your dock."}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:r,children:"Not now"}),t.jsx(A,{size:"sm",variant:"accent",onClick:()=>{Ak(e).then(a=>{a&&s(!0)})},children:"Install"})]})]})}function TZ(){const e=Ip(),[n,s]=d.useState(void 0),[r]=d.useState(Q2);if(d.useEffect(()=>{if(r)return;let o=!0;return T.session().then(c=>{o&&s(c.platform)},()=>{}),()=>{o=!1}},[r]),r||q2()!==void 0)return null;const a=typeof navigator>"u"?"":navigator.userAgent,i=EZ(),l=e?null:J2(a);return t.jsx(we,{title:"The dashboard as an app",panel:!0,foot:e?t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",onClick:()=>{Ak(e)},children:"Install the app"})}):void 0,children:t.jsxs(de,{children:[t.jsxs("p",{children:[e?"This browser can install buddi as an app: its own window, the Blob as its icon. ":l?`${l} `:null,"Or bookmark it with ",AZ(a)?"⌘D":"Ctrl+D",".",i?null:" This tailnet address installs as its own app, separate from the one on the machine buddi runs on."]}),i&&n==="darwin"?t.jsxs("p",{children:["On this Mac, ",t.jsx("span",{className:"mono",children:"buddi dashboard --install-app"})," puts a double-clickable app in ~/Applications that signs you in each time it opens (docs/cli.md, under Everyday)."]}):null]})})}const RZ={mail:"mail",money:"money",calendar:"calendar",people:"agents",file:"files",chart:"chart",bell:"bell",plug:"plug",key:"key",globe:"globe",sun:"sun",cloud:"cloud",news:"news"};function X2(e){return e&&RZ[e]||"plug"}const IZ=""+new URL("earth-2560-Ce3xs8Cb.webp",import.meta.url).href,PZ=""+new URL("earth-phone-BqC7cDhk.webp",import.meta.url).href,MZ="data:image/webp;base64,UklGRloGAABXRUJQVlA4IE4GAADQKgCdASrAAJAAPpVInUolpKmtqTe6EbASiUdvknkVpMHex+cfn6FpYp/9uZP+p3tPRfzQ/Vd/Sej/8/++pP8bkmkrujVcbfosAWVvo98GPJDgcpdpkar6crJ+OUcccXvyduwiVqZIt11sMX//3JP2wugWcHYMSjhNfw/YXfPBz7/+f4KsYSTyT6uayU6+fROo0TO6X4IyHrF+l6toP//txS0FMPUdRtJ6p+KCT2dP3gpLomT/wObriNY+VMOA0Zv+Tv48yM6/mEHjtXwfON8gBTL8RqQm7vROt+4EPvqHCsf6f1vUb+PxZm8Y0/H4GI68rdhftV4yy/CoatiRgTrzW8ekWPCSt9eJvusnrXMcJruQHwSz5/vX9vG8C1y5aeF5l34kChCD3TSgQUw9kBS9sQ1NbMi1pMKuJqUEgiZd/2y+wAjF/DOKI3FZHBa5Q2qCooTfUj9A0XCixL3kuiAA/vqtztWnhuK0AAUKVrOx4/8K6IntNvzYOatrdU3xfr4QYYAHyIAAE90qDuxwvNSaslOgj1XzeQ7o4CiG+WFb4zwdPY6lyVxnN49hB6ipRsqQgAGt1TM/WHRmZXsFqcgHgXvLRO/p+gY76bpHJq4QeDFM3Q6tVUsq12eA8xdt9XMl/j2W0PHmipASSSIaS5KLMTjz4jtZfUwqTOj0emDBJw60TFqwI7jSvw3mbEwxxbojRIHLx6DfSdsFdhjJvJMS7fn0N+lA61ZOdS0OwUdd69Dt/YuIccchkuSR0QX9woaHISeHgXHlRAF2XLwciGQqbLIy9BogJ/4g+AKroStuCVhcYugjGC2gxUtl2UrwpIDcHI1ccHnGLv68wJ5AAfOSAKcV1RtS2UUbfSRLCnU6xoa6KmV/rAxptF6OJf8GfEOtKNwm6VddtwyPoa9muhJGhR/j6ruJ/kFnMRNLH7WcXtQIhNlVo8xRvRaoH9RGwIfvhwAigF4zejYm1wAynQhgR7ecE/15lbKTsTBb8Y9fEc9zNmZZgMzlto8cNZj+0+k1TTQ0wmrRktZ299Sqko1Ov4yDQRP0iKSe/g8XpiHowGqR5N0lsvJeEojijafpSRp0k3G59maRyl+1LsIb5YW8WfgFHbtRtYszt39yl7EPwLfsYwXOWqPwg0IVemW8v5CMln54J4c9m95OIxJHYL7cQTzWyrY8qgaxhR5vtr+NJyiQTlKN31r1xeJhCmJZKtY9OIGzesGUOdmetfh1jmfh5YtwdxOG900hLMD4vv1jYXAng8YZpjDTRUcuUrlYiO+BtcbnuIUA9SVRzFAdwReo1Rry/Sm7lNWjORAVT0B4dXzkfjv/+SykUdSAYx2evoGEJeUFqXPQt16XiwAduftyvFBUlNVwP8bZv+Hg3wueDwbUZYgaHM2qC7CJdIdf4uB9elmZViV9gssG5C8+Vk1BCJoqMasH9cFJcYjqlpDSWtZ5XcTreCV+dBwxHKh/IfqUOmZWnvYIE6xQ0YlVMc2CZuriPdRDQEoKjgMZ67X1f7XsanRDwL3attVpj5zWBRiXYdoGzt/O4w9zk/qCWUbZyy7ik+prantqxCiKAbRE7jZhTXFGprni/fldU5v5vRozeswfGCVXQzQpmjEMJA5uV4eB1w0ooNYM+ZV9yo/rqYIfhQHnzn3N7N44UBzZl6EI7806lpMMDZMk2Vd7aTc7dapectSczJ1D9mZ0MKvd0Skg1Euq1uGwQNEu1ANTFFUYIOmREj8d3vYHkWlhmuiTLKbQxl4CgDYk4vH6kA9iGe43Mo5BF4WoiQ6OqRJTxel29R6Yc/FWmw/enfMaPdyWgKnVSn6TSLoPcgJ6lu1pd39McpTo92Aw0czVjUXTcdSL3c38q4YyOdJkv6sw+FeXr/DOXP3S3xXjo7SMXD2UED68pQEVkjf4SaSqWUarBkeacGOlssJDsoVFm46XleiI+Ug9j+hAVyLDPKsLDo+8qrFgcEexTGjmonZnow0nKD80SpF+KbZD78vfc4MJN2F5ZhWC+mDVgv6Bj8kTD6MGV+6YllFA/AdnvTw+idzBKLNTYe7PEcq2AWNOAog/43qtjJQbAdxGkS8KewzmlpTP4KIuDoynjBuqv9Y6PR+nv2IZpWyNvqTUkqiFJnCQI/XKogTppN/pcEAOJ+XFqAA=",uy={desk:IZ,phone:PZ,thumb:MZ},fx={author:"ActionVance",authorUrl:"https://unsplash.com/@actionvance",photoUrl:"https://unsplash.com/photos/outer-space-photography-of-earth-t7EL2iG3jMc"};function OZ(e){return e?uy.phone:uy.desk}const Z2="backgrounds/",DZ=`${Z2}manifest.json`,LZ=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,FZ=/^[\w.-]+\.jpg$/;function _Z(e){const n=e==null?void 0:e.pictures;if(!Array.isArray(n))return[];const s=[];for(const r of n){if(!r||typeof r!="object")continue;const a=r;if(typeof a.id!="string"||!LZ.test(a.id)||a.id.length>64||s.some(u=>u.id===a.id)||typeof a.title!="string"||!a.title.trim()||typeof a.credit!="string"||!a.credit.trim())continue;const i=u=>u===void 0?null:typeof u=="string"&&FZ.test(u)?`${Z2}${u}`:void 0,l=i(a.landscape),o=i(a.portrait),c=i(a.thumb);l===void 0||o===void 0||c===void 0||!l&&!o||s.push({id:a.id,title:a.title.trim(),credit:a.credit.trim(),landscape:l,portrait:o,thumb:c})}return s}let Mc=null;function zZ(){if(!Mc){const e=(async()=>{const n=await fetch(DZ,{credentials:"same-origin"});if(!n.ok)throw new Error(`manifest ${n.status}`);return _Z(await n.json())})();Mc=e,e.catch(()=>{Mc===e&&(Mc=null)})}return Mc}function eO(e=!0){const[n,s]=d.useState(null);return d.useEffect(()=>{if(!e)return;let r=!0;return zZ().then(a=>{r&&s(a)},()=>{r&&s([])}),()=>{r=!1}},[e]),n}const dy="picture:";function UZ(e){return`${dy}${e}`}function tO(e){return typeof e=="string"&&e.startsWith(dy)?e.slice(dy.length):null}function BZ(e,n){return n?{src:e.portrait??e.landscape,fit:"cover"}:e.landscape?{src:e.landscape,fit:"cover"}:{src:e.portrait,fit:"contain"}}function WZ(e,n,s){return s&&n?n:e}function nO(){const[e,n]=d.useState(()=>new Date);return d.useEffect(()=>{let s;const r=()=>{s=setTimeout(()=>{n(new Date),r()},6e4-Date.now()%6e4+50)};return r(),()=>clearTimeout(s)},[]),e}const HZ=3,sO=8e3,KZ={hiddenHere:new Set,restoredHere:new Set};function VZ(e,n){return n.hiddenHere.has(e.id)?!0:e.hidden&&!n.restoredHere.has(e.id)}function GZ(e,n=KZ){return(e??[]).filter(s=>!VZ(s,n)).slice(0,HZ)}function rO(e){const[n,s]=d.useState(new Set),[r,a]=d.useState(new Set),[i,l]=d.useState(null),o=d.useRef(e);o.current=e;const c=(m,p)=>new Set(m).add(p),u=(m,p)=>{const x=new Set(m);return x.delete(p),x};return d.useEffect(()=>{if(!i)return;const m=window.setTimeout(()=>l(null),sO);return()=>window.clearTimeout(m)},[i]),{hiddenHere:n,restoredHere:r,justHidden:i,hide:(m,p)=>{s(x=>c(x,m.id)),a(x=>u(x,m.id)),l({glance:m,spot:p}),T.setGlanceHidden(m.id,!0).then(()=>{var x;return(x=o.current)==null?void 0:x.call(o)},()=>{s(x=>u(x,m.id)),l(x=>(x==null?void 0:x.glance.id)===m.id?null:x)})},undo:()=>{if(!i)return;const{glance:m}=i;l(null),s(p=>u(p,m.id)),a(p=>c(p,m.id)),T.setGlanceHidden(m.id,!1).then(()=>{var p;return(p=o.current)==null?void 0:p.call(o)},()=>{a(p=>u(p,m.id)),s(p=>c(p,m.id))})}}}function qZ({hiding:e,spot:n}){const s=e.justHidden;return!s||s.spot!==n?null:t.jsxs("span",{className:"home-glance-undo",role:"status","aria-live":"polite","data-spot":n,children:[t.jsxs("span",{children:[s.glance.title," hidden"]}),t.jsx("span",{className:"home-glance-sep","aria-hidden":"true",children:"·"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:e.undo,children:"Undo"})]})}function YZ(e){return e.link?Lb(e.link.plugin,e.link.page,e.link.place):null}function QZ({glances:e,navigate:n,onChanged:s,except:r,hiding:a}){var u,h;const i=rO(s),l=a??i,o=GZ(e,l).filter(f=>!(r!=null&&r.has(f.id))),c=t.jsx(qZ,{hiding:l,spot:"line"});return o.length===0&&((u=l.justHidden)==null?void 0:u.spot)!=="line"?null:t.jsxs("span",{className:"home-glances",children:[((h=l.justHidden)==null?void 0:h.spot)==="line"?t.jsxs("span",{className:"home-glance",children:[t.jsx("span",{className:"home-glance-sep","aria-hidden":"true",children:"·"}),c]}):null,o.map(f=>{const m=YZ(f),p=t.jsxs(t.Fragment,{children:[t.jsx(se,{name:dc(f.icon),size:14}),t.jsx("span",{children:f.text})]});return t.jsxs("span",{className:"home-glance",children:[t.jsx("span",{className:"home-glance-sep","aria-hidden":"true",children:"·"}),m?t.jsx("a",{className:"home-glance-text",href:m,onClick:x=>{x.preventDefault(),n(m)},children:p}):t.jsx("span",{className:"home-glance-text",children:p}),t.jsx("button",{type:"button",className:"home-glance-hide","aria-label":`Hide ${f.title} from Home`,title:"Hide from Home",onClick:()=>l.hide(f,"line"),children:t.jsx(se,{name:"close",size:10})})]},f.id)})]})}function JZ(e){const a=Math.min(...e),l=Math.max(...e)-a||1,o=Math.max(e.length-1,1);return e.map((c,u)=>[u/o*100,2+(1-(c-a)/l)*(24-2*2)])}function XZ({points:e,className:n="wg-spark"}){const s=JZ(e).map(([r,a])=>`${r.toFixed(1)},${a.toFixed(1)}`);return t.jsxs("svg",{className:n,viewBox:"0 0 100 24",preserveAspectRatio:"none","aria-hidden":"true","data-testid":"spark",children:[t.jsx("path",{d:`M0,24 L${s.join(" L")} L100,24 Z`,fill:"currentColor",opacity:"0.12",stroke:"none"}),t.jsx("polyline",{points:s.join(" "),fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})]})}const Vl=Math.PI/180;function ZZ(e,n,s){const r=e.getTime()/864e5+24405875e-1-2451545,a=(357.529+.98560028*r)*Vl,l=(280.459+.98564736*r+1.915*Math.sin(a)+.02*Math.sin(2*a))*Vl,o=(23.439-36e-8*r)*Vl,c=Math.atan2(Math.cos(o)*Math.sin(l),Math.cos(l)),u=Math.asin(Math.sin(o)*Math.sin(l)),f=((18.697374558+24.06570982441908*r)*15+s)*Vl-c,m=n*Vl,p=Math.sin(m)*Math.sin(u)+Math.cos(m)*Math.cos(u)*Math.cos(f);return Math.asin(Math.max(-1,Math.min(1,p)))/Vl}function eee(e,n,s){return ZZ(e,n,s)>-.833}const tee={small:2,medium:4},J1=new Map;function nee(e){let n=J1.get(e);return n||(n=new Intl.DateTimeFormat("en-US",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}),J1.set(e,n)),n}function X1(e,n){const s=Object.fromEntries(nee(n).formatToParts(e).map(l=>[l.type,l.value])),r=Number(s.hour)%24,a=Number(s.minute),i=Date.UTC(Number(s.year),Number(s.month)-1,Number(s.day),r,a);return{date:`${s.year}-${s.month}-${s.day}`,h:r,m:a,s:Number(s.second),offset:Math.round((i-Math.floor(e.getTime()/6e4)*6e4)/6e4)}}function see(e){if(e===0)return"Same time";const n=Math.floor(Math.abs(e)/60),s=Math.abs(e)%60;return`${e>0?"+":"−"}${n===0?`${s} min`:s===0?`${n} h`:`${n} h ${s}`}`}function ree(e){if(e===0)return"same time";const n=Math.floor(Math.abs(e)/60),s=Math.abs(e)%60;return`${[n?`${n} hour${n===1?"":"s"}`:"",s?`${s} minute${s===1?"":"s"}`:""].filter(Boolean).join(" ")} ${e>0?"ahead":"behind"}`}function aee(e,n,s,r,a){const i=X1(e,n.zone),l=X1(e,s),o=i.date===l.date?"Today":i.date>l.date?"Tomorrow":"Yesterday",c=i.offset-l.offset,u=fd(a?{timeFormat:a}:{},()=>Lt(e,n.zone)),h=r?"your time":ree(c);return{...i,day:o,daytime:typeof n.latitude=="number"&&typeof n.longitude=="number"?eee(e,n.latitude,n.longitude):i.h>=6&&i.h<18,offsetText:r?"Here":see(c),time:u,label:`${n.label}, ${u}${o==="Today"?"":` ${o.toLowerCase()}`}, ${h}`}}function iee(e,n){const s=n?e.s:0;return{hour:(e.h%12+e.m/60+s/3600)*30,minute:(e.m+s/60)*6,second:n?e.s*6:null}}function lee(e){const[n,s]=d.useState(()=>new Date);return d.useEffect(()=>{const r=e?1e3:6e4;let a;const i=()=>{a=setTimeout(()=>{s(new Date),i()},r-Date.now()%r+5)};return s(new Date),i(),()=>clearTimeout(a)},[e]),n}function Z1({angle:e,length:n,width:s}){return t.jsxs("g",{className:"wg-clock-hand",transform:`rotate(${e} 50 50)`,children:[t.jsx("line",{x1:"50",y1:"50",x2:"50",y2:"42",strokeWidth:Math.min(s,1.8)}),t.jsx("line",{x1:"50",y1:"42",x2:"50",y2:50-n,strokeWidth:s})]})}const oee=Array.from({length:12},(e,n)=>n);function cee({time:e,seconds:n}){const s=iee(e,n);return t.jsxs("svg",{className:"wg-clock-face",viewBox:"0 0 100 100","aria-hidden":"true",focusable:"false",children:[t.jsx("circle",{className:"wg-clock-dial",cx:"50",cy:"50",r:"49.25"}),oee.map(r=>t.jsx("line",{className:"wg-clock-tick","data-major":r%3===0?"true":void 0,x1:"50",y1:r%3===0?6.5:7.5,x2:"50",y2:r%3===0?14:12,transform:`rotate(${r*30} 50 50)`},r)),t.jsx(Z1,{angle:s.hour,length:24,width:4.6}),t.jsx(Z1,{angle:s.minute,length:37,width:3.4}),s.second===null?null:t.jsx("g",{className:"wg-clock-second","data-testid":"second-hand",transform:`rotate(${s.second} 50 50)`,children:t.jsx("line",{x1:"50",y1:"59",x2:"50",y2:"9"})}),t.jsx("circle",{className:"wg-clock-pin",cx:"50",cy:"50",r:"2.8"}),s.second===null?null:t.jsx("circle",{className:"wg-clock-pin-second",cx:"50",cy:"50",r:"1.5"})]})}function uee({body:e,size:n}){const s=ts("(prefers-reduced-motion: reduce)"),r=lee(!s),a=e.clocks.slice(0,tee[n]);return t.jsx("div",{className:"wg-clocks","data-count":a.length,children:a.map((i,l)=>{let o;try{o=aee(r,i,e.home,l===0&&i.zone===e.home,e.time)}catch{return null}return t.jsxs("div",{className:"wg-clock","data-night":o.daytime?void 0:"true",role:"img","aria-label":o.label,title:`${i.label} · ${o.time}`,children:[t.jsx(cee,{time:o,seconds:!s}),t.jsxs("span",{className:"wg-clock-words","aria-hidden":"true",children:[t.jsx("span",{className:"wg-clock-city",children:i.label}),t.jsx("span",{className:"wg-clock-day","data-today":o.day==="Today"?"true":void 0,children:o.day}),t.jsx("span",{className:"wg-clock-off",children:o.offsetText})]})]},`${i.label}-${i.zone}`)})})}const mx=3,dee={small:4,medium:6};function px({icon:e,size:n}){return e?t.jsx("span",{className:"wg-icon",children:t.jsx(se,{name:dc(e),size:n})}):null}function Pp({body:e,size:n}){switch(e.kind){case"stat":return t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"wg-stat-now",children:[t.jsx(px,{icon:e.icon,size:24}),t.jsx("span",{className:"wg-value",children:e.value})]}),e.caption?t.jsx("span",{className:"wg-caption",children:e.caption}):null,t.jsx("span",{className:"wg-push"}),e.trend?t.jsxs("span",{className:"wg-trend",children:[t.jsx(XZ,{points:e.trend.points,className:"wg-spark"}),e.trend.label?t.jsx("span",{children:e.trend.label}):null]}):null,e.foot?t.jsx("span",{className:"wg-foot",children:e.foot}):null]});case"list":{const s=e.rows.slice(0,Math.min(e.max??mx,n==="medium"?5:mx));return t.jsxs(t.Fragment,{children:[t.jsx("ul",{className:"wg-list","data-dense":s.length>mx?"true":void 0,"data-wrap":e.wrap?"true":void 0,children:s.map((r,a)=>t.jsxs("li",{className:"wg-row","data-marked":r.image?"true":void 0,children:[r.image?t.jsx($l,{className:"wg-mark",src:AI(r.image.src)?r.image.src:null,label:r.image.label??r.title}):null,t.jsxs("span",{className:"wg-row-text",children:[t.jsx("span",{className:"wg-row-title",children:r.title}),r.sub&&n==="medium"?t.jsx("span",{className:"wg-row-sub",children:r.sub}):null]}),r.side?t.jsx("span",{className:"wg-row-side","data-tone":r.tone,children:r.side}):null]},`${r.title}-${a}`))}),t.jsx("span",{className:"wg-push"}),e.more?t.jsx("span",{className:"wg-foot",children:e.more}):null]})}case"strip":return t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"wg-strip-head",children:[t.jsx(px,{icon:e.icon,size:20}),e.value?t.jsx("span",{className:"wg-strip-value",children:e.value}):null,e.caption?t.jsx("span",{className:"wg-caption",children:e.caption}):null]}),t.jsx("span",{className:"wg-push"}),t.jsx("span",{className:"wg-strip",children:e.items.slice(0,dee[n]).map((s,r)=>t.jsxs("span",{className:"wg-tile",children:[t.jsx("span",{className:"wg-tile-label",children:s.label}),t.jsx(px,{icon:s.icon,size:18}),t.jsx("span",{className:"wg-tile-value",children:s.value})]},`${s.label}-${r}`))})]});case"progress":{const s=Math.round(Math.max(0,Math.min(1,e.ratio))*100);return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"wg-value",children:e.value}),e.caption?t.jsx("span",{className:"wg-caption",children:e.caption}):null,t.jsx("span",{className:"wg-push"}),t.jsx("span",{className:"ui-meter",role:"meter","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":s,"aria-label":e.caption??e.value,children:t.jsx("span",{className:"ui-meter-fill","data-tone":e.tone,style:{inlineSize:`${s}%`}})}),e.foot?t.jsx("span",{className:"wg-foot",children:e.foot}):null]})}case"clocks":return t.jsx(uee,{body:e,size:n});case"text":return t.jsxs("span",{className:"wg-text",children:[e.icon?t.jsx("span",{className:"wg-text-icon",children:t.jsx(se,{name:dc(e.icon),size:18})}):null,t.jsxs("span",{className:"wg-text-words",children:[t.jsx("span",{className:"wg-text-main",children:e.text}),e.sub?t.jsx("span",{className:"wg-row-sub",children:e.sub}):null]})]})}}function hy({label:e,options:n,multiple:s,value:r,onChange:a}){const i=Array.isArray(r)?r:[r],l=c=>i.includes(c),o=c=>{if(!s)return a(c);a(l(c)?i.filter(u=>u!==c):[...i,c])};return t.jsx("div",{className:"wg-options",role:s?"group":"radiogroup","aria-label":e,children:n.map(c=>t.jsxs("button",{type:"button",role:s?"checkbox":"radio","aria-checked":l(c.value),className:"wg-option","data-on":l(c.value)?"true":void 0,onClick:()=>o(c.value),children:[t.jsx("span",{className:"wg-option-mark","data-multiple":s?"true":void 0,"aria-hidden":"true",children:s&&l(c.value)?t.jsx(se,{name:"check",size:12}):null}),t.jsxs("span",{className:"wg-option-text",children:[t.jsx("span",{className:"wg-option-name",children:c.label}),c.sub?t.jsx("span",{className:"wg-option-sub",children:c.sub}):null]})]},c.value))})}function eE(e){return"place"in e?e.place:`town:${e.latitude.toFixed(3)},${e.longitude.toFixed(3)}`}function hee(e){var n;return{label:((n=e.name.split(",")[0])==null?void 0:n.trim())||e.name,name:e.name,latitude:e.latitude,longitude:e.longitude,timezone:e.timezone??null}}function fee({field:e,value:n,places:s,onChange:r}){const a=Array.isArray(n)?n:n?[n]:[],[i,l]=d.useState(""),[o,c]=d.useState([]),[u,h]=d.useState(!1),[f,m]=d.useState(null),p=new Map;for(const k of s)p.set(k.id,{value:{place:k.id},label:k.label,sub:k.name});for(const k of[...a,...o])"place"in k||p.set(eE(k),{value:k,label:k.label,sub:k.name});const x=[...p.entries()].map(([k,N])=>({value:k,label:N.label,sub:N.sub})),g=a.map(eE),b=s.find(k=>k.id==="home"||k.label.toLowerCase()==="home")??s[0],j=e.multiple?g:g[0]??(b==null?void 0:b.id)??"",v=k=>{const N=(Array.isArray(k)?k:[k]).map(w=>{var S;return(S=p.get(w))==null?void 0:S.value}).filter(w=>!!w);r(e.multiple?N.slice(-3):N[0]??null)},y=()=>{const k=i.trim();k.length<2||(h(!0),m(null),T.findPlace(k).then(({found:N})=>{const w=N.slice(0,3).map(hee);c(w),w.length===0?m(`Nothing found for “${k}”.`):e.multiple?r([...a,w[0]].slice(-3)):r(w[0])}).catch(()=>m("The place finder didn’t answer. Try again in a moment.")).finally(()=>h(!1)))};return t.jsxs("div",{className:"wg-field-stack",children:[x.length>0?t.jsx(hy,{label:e.label,options:x,multiple:e.multiple,value:j,onChange:v}):null,t.jsxs("div",{className:"wg-find",children:[t.jsx("input",{value:i,placeholder:"Find a town: Tokyo","aria-label":`Find a town for ${e.label}`,onChange:k=>l(k.target.value),onKeyDown:k=>{k.key==="Enter"&&(k.preventDefault(),y())}}),t.jsx(A,{size:"sm",disabled:u||i.trim().length<2,onClick:y,children:u?"Finding…":"Find"})]}),f?t.jsx("span",{className:"ui-field-hint",children:f}):null]})}function mee({field:e,value:n,sheet:s,onChange:r}){var i;let a;switch(e.kind){case"select":{const l=e.options??[],o=typeof n=="string"?n:e.default??((i=l[0])==null?void 0:i.value)??"",c=l.length>0&&l.length<=3&&l.every(u=>u.label.length<=14);a=l.length===0?t.jsx("span",{className:"ui-field-hint",children:"Nothing to choose from yet."}):c?t.jsx(dn,{label:e.label,options:l,value:o,onChange:r}):t.jsx(hy,{label:e.label,options:l,value:o,onChange:r});break}case"multiselect":{const l=e.options??[];a=l.length===0?t.jsx("span",{className:"ui-field-hint",children:"Nothing to choose from yet."}):t.jsx(hy,{label:e.label,options:l,multiple:!0,value:Array.isArray(n)?n:e.default??[],onChange:r});break}case"toggle":return t.jsxs("div",{className:"wg-field",children:[t.jsxs("label",{className:"wg-toggle",children:[t.jsx("input",{type:"checkbox",checked:typeof n=="boolean"?n:e.default??!1,onChange:l=>r(l.target.checked)}),t.jsx("span",{children:e.label})]}),e.hint?t.jsx("span",{className:"ui-field-hint",children:e.hint}):null]});case"text":a=t.jsx("input",{"aria-label":e.label,value:typeof n=="string"?n:e.default??"",maxLength:e.max??60,placeholder:e.placeholder,onChange:l=>r(l.target.value)});break;case"place":a=t.jsx(fee,{field:e,value:n,places:s.places,onChange:r});break;case"timeFormat":a=t.jsx(dn,{label:e.label,options:[{value:"profile",label:AR()},{value:"12h",label:"12-hour"},{value:"24h",label:"24-hour"}],value:n==="12h"||n==="24h"?n:"profile",onChange:r});break}return t.jsxs("div",{className:"wg-field",role:"group","aria-label":e.label,children:[t.jsx("span",{className:"wg-field-label",children:e.label}),a,e.hint?t.jsx("span",{className:"ui-field-hint",children:e.hint}):null]})}function pee({info:e,placement:n,surface:s,view:r,label:a}){var u;const i=s==="lock",l=((u=r==null?void 0:r.body)==null?void 0:u.kind)==="text",o=i&&(l||n.size==="small")?"small":n.size,c=r?r.body?e.sensitive?t.jsxs("span",{className:"wg-state",children:[t.jsx("span",{className:"wg-mask","aria-hidden":"true",children:"••••"}),t.jsx("span",{className:"wg-state-sub",children:"Hidden on this screen."})]}):t.jsx(Pp,{body:r.body,size:o}):t.jsx("span",{className:"wg-state",children:t.jsx("span",{className:"wg-state-sub",children:r.state==="error"?`Couldn't load this${r.error?`: ${r.error}`:""}.`:"Nothing to show right now."})}):t.jsxs("span",{className:"wg-skel-body","aria-hidden":"true",children:[t.jsx("span",{className:"wg-skel","data-w":"half"}),t.jsx("span",{className:"wg-skel","data-w":"third"}),t.jsx("span",{className:"wg-push"}),t.jsx("span",{className:"wg-skel"})]});return t.jsx("div",{className:"wg-preview","data-surface":s,"aria-label":`Preview of ${a}`,role:"img",children:t.jsxs("div",{className:"wg-frame","data-size":o,"data-variant":i?"compact":void 0,"data-kind":r!=null&&r.body&&!e.sensitive?r.body.kind:void 0,"aria-hidden":"true",children:[i?null:t.jsx("div",{className:"wg-head",children:t.jsx("span",{className:"wg-title",children:a})}),t.jsx("div",{className:"wg-body",children:c}),i?t.jsx("span",{className:"wg-compact-title",children:a}):null]})})}function aO({info:e,placement:n,surface:s,onSave:r,onRemove:a,onClose:i}){const l=ve(()=>T.widgetSettings(e.id),[e.id]),[o,c]=d.useState(n.settings??{}),[u,h]=d.useState(null),[f,m]=d.useState(n.label??e.title),[p,x]=d.useState(!1),[g,b]=d.useState(null),j=d.useRef(0),v=d.useMemo(()=>JSON.stringify(o),[o]);d.useEffect(()=>{const N=++j.current,w=window.setTimeout(()=>{T.previewWidget({widget:e.id,size:n.size,settings:o}).then(S=>{N===j.current&&(h(S.view),m(S.label))}).catch(()=>{N===j.current&&h({state:"error",error:"the preview could not be made"})})},u?250:0);return()=>window.clearTimeout(w)},[v,e.id,n.size]);const y=()=>{x(!0),b(null),r(o).then(N=>{x(!1),N||b("Couldn’t keep these settings. Try again.")})},k=s==="lock"?"the lock screen":"Home";return t.jsx(Qe,{title:f,onClose:i,foot:t.jsxs(ne,{children:[t.jsxs(A,{variant:"danger-ghost",onClick:a,children:["Remove from ",s==="lock"?"lock screen":"Home"]}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:i,children:"Cancel"}),t.jsx(A,{variant:"accent",onClick:y,disabled:p||!l.data,children:p?"Saving…":"Save"})]}),children:t.jsxs("div",{className:"wg-sheet",children:[t.jsx(pee,{info:e,placement:n,surface:s,view:u,label:f}),t.jsxs("p",{className:"wg-sheet-note",children:[e.builtIn?"Built in":`From the ${e.plugin} plugin`," · on ",k,". These settings are this one’s own",s==="lock"?"; Home keeps its own":"","."]}),t.jsx(re,{message:g??(l.error?"Couldn’t read this widget’s settings.":null)}),l.data?l.data.fields.map(N=>t.jsx(mee,{field:N,value:o[N.key],sheet:l.data,onChange:w=>c({...o,[N.key]:w})},N.key)):l.error?null:t.jsx("p",{className:"wg-sheet-note","aria-busy":"true",children:"Reading its choices…"})]})})}const gee=6e4,iO="buddi.clock",lO="buddi.home.widgets";function xee(){try{const e=Number(window.localStorage.getItem(lO));return Number.isInteger(e)&&e>0?Math.min(e,6):0}catch{return 0}}function vee(e){try{window.localStorage.setItem(lO,String(e))}catch{}}function oO(){const e=new Uint8Array(4);return crypto.getRandomValues(e),`w-${Array.from(e,n=>n.toString(16).padStart(2,"0")).join("")}`}function cO(e,n){const s=d.useRef(n);s.current=n,d.useEffect(()=>{if(!e)return;let r;const a=()=>{r=setTimeout(()=>{s.current(),a()},6e4-Date.now()%6e4+1e3)};return a(),()=>clearTimeout(r)},[e])}function jee(){const e=ve(()=>T.widgets("home"),[],gee),[n,s]=d.useState(void 0);return d.useEffect(()=>{e.data&&s(e.data)},[e.data]),d.useEffect(()=>{n&&vee(n.home.length)},[n]),cO((n==null?void 0:n.home.some(r=>{var a,i;return r.widget===iO&&((i=(a=n.views[r.key])==null?void 0:a.body)==null?void 0:i.kind)!=="clocks"}))??!1,e.reload),{answer:n,error:e.error,apply:s,reload:e.reload}}function yee(e){return new Set(((e==null?void 0:e.home)??[]).map(n=>n.widget))}function wee(e){const[n,s]=d.useState(!1);return d.useEffect(()=>{if(!e||!n)return;const r=()=>{(document.visibilityState==="hidden"||!document.hasFocus())&&s(!1)};return document.addEventListener("visibilitychange",r),window.addEventListener("blur",r),()=>{document.removeEventListener("visibilitychange",r),window.removeEventListener("blur",r)}},[e,n]),[n,s]}const uO=(e,n)=>e.label??(n==null?void 0:n.title)??e.widget;function bee({info:e,placement:n,view:s,index:r,count:a,editing:i,navigate:l,act:o,onRetry:c,retrying:u,drag:h}){var S;const[f,m]=wee(e.sensitive===!0),p=(s==null?void 0:s.state)??"error",x=e.sensitive===!0&&!f,g=e.link?Lb(e.link.plugin,e.link.page,e.link.place):null,b=g!==null&&!i&&p!=="error"&&!x,j=n.size==="small"?"medium":"small",v=uO(n,e),y=n.key,k=(((S=e.settings)==null?void 0:S.length)??0)>0;let N;!s&&i?N=t.jsx("span",{className:"wg-state",children:t.jsx("span",{className:"wg-state-sub",children:"Fills in when you press Done."})}):p==="error"||!s?N=t.jsxs("span",{className:"wg-state",children:[t.jsx("span",{className:"wg-state-title",children:"Couldn't load this."}),s!=null&&s.error?t.jsxs("span",{className:"wg-state-sub",children:[kee(s.error),"."]}):null,i?null:t.jsx(A,{size:"sm",onClick:c,disabled:u,children:u?"Trying…":"Try again"})]}):p==="empty"||!s.body?N=t.jsx("span",{className:"wg-state",children:t.jsx("span",{className:"wg-state-sub",children:"Nothing to show right now."})}):x?N=t.jsxs("span",{className:"wg-state",children:[t.jsx("span",{className:"wg-mask","aria-hidden":"true",children:"••••"}),t.jsx("span",{className:"wg-state-sub",children:"Hidden on this screen."}),i?null:t.jsx(A,{size:"sm",onClick:()=>m(!0),children:"Show"})]}):N=t.jsx(Pp,{body:s.body,size:n.size});const w=C=>{C.dataTransfer.effectAllowed="move",C.dataTransfer.setData("text/plain",y),h.start(y)};return t.jsxs("div",{className:"wg-frame",role:"group","aria-label":v,"data-id":e.id,"data-key":y,"data-size":n.size,"data-kind":s!=null&&s.body&&!x&&p!=="error"?s.body.kind:void 0,"data-state":p==="ok"?void 0:p,"data-linked":b?"true":void 0,"data-dragging":h.dragging===y?"true":void 0,"data-over":h.over===y&&h.dragging!==y?"true":void 0,draggable:i?!0:void 0,onDragStart:i?w:void 0,onDragOver:i?C=>{h.dragging&&(C.preventDefault(),h.enter(y))}:void 0,onDrop:i?C=>{C.preventDefault(),h.drop(y)}:void 0,onDragEnd:i?()=>h.end():void 0,children:[t.jsxs("div",{className:"wg-head",children:[i?t.jsx("button",{type:"button",className:"ui-icon-btn wg-grip","data-size":"sm","data-grip":y,"aria-label":`Move ${v}, position ${r+1} of ${a}: arrow keys`,title:"Drag, or use the arrow keys",onKeyDown:C=>{(C.key==="ArrowLeft"||C.key==="ArrowUp")&&(C.preventDefault(),o("earlier")),(C.key==="ArrowRight"||C.key==="ArrowDown")&&(C.preventDefault(),o("later"))},children:t.jsx(se,{name:"grip",size:14})}):null,t.jsx("span",{className:"wg-title",children:v}),p==="stale"?t.jsx("span",{className:"wg-stale",title:s!=null&&s.error?`Couldn't refresh: ${s.error}.`:void 0,children:s!=null&&s.updatedAt?`${Jw(s.updatedAt)} old`:"Not current"}):null,i&&k?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Settings for ${v}`,title:"Settings",onClick:()=>o("settings"),children:t.jsx(se,{name:"settings",size:14})}):null,i?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Take ${v} off Home`,title:"Take off Home",onClick:()=>o("hide"),children:t.jsx(se,{name:"close",size:12})}):t.jsx("span",{className:"wg-more",children:t.jsx(rs,{label:`More for ${v}`,note:s!=null&&s.updatedAt?`${e.builtIn?"Built in":e.plugin} · ${Xe(s.updatedAt)}`:e.builtIn?"Built in":e.plugin,items:[k?{label:"Settings…",onSelect:()=>o("settings")}:null,r>0?{label:"Move earlier",onSelect:()=>o("earlier")}:null,r<a-1?{label:"Move later",onSelect:()=>o("later")}:null,e.sizes.includes(j)?{label:`Make it ${j}`,onSelect:()=>o("size",j)}:null,{label:"Edit widgets",onSelect:()=>o("edit")},"separator",{label:"Hide from Home",onSelect:()=>o("hide")}]})})]}),b?t.jsx("a",{className:"wg-body",href:g,onClick:C=>{C.preventDefault(),l(g)},children:N}):t.jsx("div",{className:"wg-body",children:N}),i?t.jsxs("div",{className:"wg-edit-bar",children:[e.sizes.length>1?t.jsx("span",{className:"ui-segment",role:"radiogroup","aria-label":`Size of ${v}`,children:["small","medium"].filter(C=>e.sizes.includes(C)).map(C=>t.jsx("button",{type:"button",className:"ui-tab",role:"radio","aria-checked":n.size===C,onClick:()=>o("size",C),children:C==="small"?"Small":"Medium"},C))}):t.jsx("span",{className:"wg-edit-note",children:e.sizes[0]==="small"?"Small only":"Medium only"}),t.jsxs("span",{className:"wg-edit-move",children:[t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","data-move":`${y}:earlier`,"aria-label":`Move ${v} earlier`,title:"Move earlier",disabled:r===0,onClick:()=>o("earlier"),children:t.jsx(se,{name:"chevron-left"})}),t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","data-move":`${y}:later`,"aria-label":`Move ${v} later`,title:"Move later",disabled:r===a-1,onClick:()=>o("later"),children:t.jsx(se,{name:"chevron-right"})})]})]}):null]})}function kee(e){const n=e.replace(/\.$/,"");return n.charAt(0).toUpperCase()+n.slice(1)}function Nee({widgets:e,navigate:n}){const{answer:s,apply:r}=e,[a,i]=d.useState(!1),[l,o]=d.useState([]),[c,u]=d.useState(null),[h,f]=d.useState(""),[m,p]=d.useState(null),[x,g]=d.useState(!1),[b,j]=d.useState(null),[v,y]=d.useState(null),[k,N]=d.useState(null),[w,S]=d.useState(null),[C,E]=d.useState(new Set),[$]=d.useState(xee),R=d.useRef(null);if(d.useEffect(()=>{if(!c)return;const G=window.setTimeout(()=>u(null),sO);return()=>window.clearTimeout(G)},[c]),d.useEffect(()=>{var ae;const G=R.current;G&&(R.current=null,(ae=document.querySelector(`[data-grip="${CSS.escape(G)}"], [data-move="${CSS.escape(G)}"]`))==null||ae.focus())}),!s)return $===0?null:t.jsxs("section",{className:"ui-section wg-section","aria-label":"Widgets","aria-busy":"true",children:[t.jsx("div",{className:"ui-section-head",children:t.jsx("h3",{className:"ui-section-title",children:"Widgets"})}),t.jsx("div",{className:"wg-grid",children:Array.from({length:$},(G,ae)=>t.jsxs("div",{className:"wg-frame","data-state":"loading","aria-hidden":"true",children:[t.jsx("div",{className:"wg-head"}),t.jsxs("span",{className:"wg-skel-body",children:[t.jsx("span",{className:"wg-skel","data-w":"half"}),t.jsx("span",{className:"wg-skel","data-w":"third"}),t.jsx("span",{className:"wg-push"}),t.jsx("span",{className:"wg-skel"})]})]},ae))})]});if(s.available.every(G=>G.builtIn)&&s.home.length===0)return null;const P=new Map(s.available.map(G=>[G.id,G])),O=a?l:s.home,I=G=>uO(G,P.get(G.widget)),F=(G,ae)=>(p(null),r({...ae,home:G,arranged:{...ae.arranged,home:!0}}),T.saveWidgets("home",G).then(J=>(r(J),!0),J=>(r(ae),p(`Couldn't save your widgets: ${J instanceof Error?J.message:String(J)}`),!1))),U=(G,ae,J)=>{if(J<0||J>=G.length||ae===J)return null;const xe=G.slice(),[Ie]=xe.splice(ae,1);return xe.splice(J,0,Ie),f(`${I(Ie)}, position ${J+1} of ${xe.length}.`),xe},L=()=>{o(s.home),E(new Set),u(null),p(null),i(!0)},M=G=>(ae,J)=>{const xe=O[G];if(ae==="edit"){L();return}if(ae==="settings"){S(xe.key);return}if(a){if(ae==="earlier"||ae==="later"){const Ie=U(l,G,ae==="earlier"?G-1:G+1);if(Ie){const Y=document.activeElement;R.current=(Y==null?void 0:Y.dataset.grip)??(Y==null?void 0:Y.dataset.move)??null,o(Ie)}}ae==="size"&&J&&(o(l.map((Ie,Y)=>Y===G?{...Ie,size:J}:Ie)),E(new Set([...C,xe.key]))),ae==="hide"&&(o(l.filter((Ie,Y)=>Y!==G)),f(`${I(xe)} taken off.`));return}if(ae==="earlier"||ae==="later"){const Ie=U(s.home,G,ae==="earlier"?G-1:G+1);Ie&&F(Ie,s)}ae==="size"&&J&&F(s.home.map((Ie,Y)=>Y===G?{...Ie,size:J}:Ie),s),ae==="hide"&&F(s.home.filter((Ie,Y)=>Y!==G),s).then(Ie=>{Ie&&u({item:xe,at:G})})},z=()=>{if(!c)return;const G=s.home.filter(ae=>ae.key!==c.item.key);G.splice(Math.min(c.at,G.length),0,c.item),u(null),F(G,s)},D=()=>{g(!0),F(l,s).then(G=>{g(!1),G&&(i(!1),f("Widgets saved."))})},H=G=>{j(G),T.refreshWidget(G).then(r,()=>{}).finally(()=>j(null))},K=G=>{var xe;const ae={key:oO(),widget:G.id,size:G.sizes[0],settings:{}},J=l.some(Ie=>Ie.widget===G.id);o([...l,ae]),f(`${G.title} added.`),J&&(((xe=G.settings)==null?void 0:xe.length)??0)>0&&S(ae.key)},X=(G,ae)=>a?(o(l.map(J=>{if(J.key!==G)return J;const{label:xe,...Ie}=J;return{...Ie,settings:ae}})),E(new Set([...C,G])),S(null),Promise.resolve(!0)):F(s.home.map(J=>J.key===G?{...J,settings:ae}:J),s).then(J=>(J&&(S(null),f("Settings saved.")),J)),W=G=>{S(null);const ae=O.findIndex(J=>J.key===G);ae>=0&&M(ae)("hide")},me={dragging:v,over:k,start:G=>y(G),enter:G=>{k!==G&&N(G)},end:()=>{y(null),N(null)},drop:G=>{const ae=l.findIndex(Ie=>Ie.key===v),J=l.findIndex(Ie=>Ie.key===G),xe=ae>=0&&J>=0?U(l,ae,J):null;xe&&o(xe),y(null),N(null)}},fe=c?t.jsxs("div",{className:"wg-undo","data-size":c.item.size,role:"status","aria-live":"polite",children:[t.jsxs("span",{children:[I(c.item)," hidden"]}),t.jsx("span",{className:"home-glance-sep","aria-hidden":"true",children:"·"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:z,children:"Undo"})]},"undo"):null,oe=[];O.forEach((G,ae)=>{const J=P.get(G.widget);if(!J)return;c&&!a&&c.at===ae&&oe.push(fe);const xe=a&&(C.has(G.key)||!s.home.some(Ie=>Ie.key===G.key));oe.push(t.jsx(bee,{info:J,placement:G,view:xe?void 0:s.views[G.key],index:ae,count:O.length,editing:a,navigate:n,act:M(ae),onRetry:()=>H(G.key),retrying:b===G.key,drag:me},G.key))}),c&&!a&&c.at>=O.length&&oe.push(fe);const B=s.available.filter(G=>!G.builtIn),ue=B.length-2,Ne=w?O.find(G=>G.key===w):void 0,Ke=Ne?P.get(Ne.widget):void 0;return t.jsxs("section",{className:"ui-section wg-section","aria-label":"Widgets",children:[t.jsxs("div",{className:"ui-section-head",children:[t.jsx("h3",{className:"ui-section-title",children:"Widgets"}),a?t.jsxs("div",{className:"ui-toolbar","data-align":"end",children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>{i(!1),o([])},disabled:x,children:"Cancel"}),t.jsx(A,{size:"sm",variant:"accent",onClick:D,disabled:x,children:x?"Saving…":"Done"})]}):O.length>0?t.jsx("div",{className:"ui-toolbar","data-align":"end",children:t.jsx(A,{size:"sm",variant:"ghost",onClick:L,children:"Edit"})}):null]}),t.jsx("p",{className:"sr-only","aria-live":"polite",children:h}),m?t.jsx(Q,{tone:"critical",role:"alert",children:m}):null,O.length===0&&!a&&!c?t.jsxs("div",{className:"wg-empty",children:[t.jsxs("div",{className:"wg-empty-text",children:[t.jsx("p",{className:"wg-empty-title",children:"Add widgets to Home"}),t.jsxs("p",{className:"wg-empty-sub",children:["Small live panels from your plugins:"," ",(B.length>0?B:s.available).slice(0,2).map(G=>G.title).join(", "),ue>0?` and ${ue} more`:"","."]})]}),t.jsx(A,{size:"sm",variant:"accent",onClick:L,children:"Add widgets"})]}):oe.length>0?t.jsx("div",{className:"wg-grid","data-editing":a?"true":void 0,children:oe}):null,a?t.jsxs("div",{className:"wg-gallery",role:"region","aria-label":"Add widgets",children:[t.jsxs("div",{className:"wg-gallery-head",children:[t.jsx("p",{className:"wg-gallery-title",children:"Add widgets"}),t.jsx("a",{className:"wg-gallery-aside",href:We("lock"),onClick:G=>{G.preventDefault(),n(We("lock"))},children:"The lock screen has its own pick"})]}),t.jsx("ul",{className:"wg-gallery-list",children:s.available.map(G=>{var te;const ae=l.filter(ie=>ie.widget===G.id).length,J=(((te=G.settings)==null?void 0:te.length)??0)>0,xe=G.builtIn?"Built in":`${G.plugin} plugin`,Ie=G.sizes.length>1?"small or medium":`${G.sizes[0]} only`,Y=ae>1?` · ${ae} on Home`:ae===1&&J?" · on Home":"";return t.jsxs("li",{className:"wg-add",children:[t.jsxs("span",{className:"wg-add-text",children:[t.jsx("span",{className:"wg-add-title",children:G.title}),t.jsxs("span",{className:"wg-add-sub",children:[xe," · ",Ie,G.sensitive?" · hidden until you show it":"",Y]})]}),ae>0&&!J?t.jsx("span",{className:"wg-add-note",children:"On Home"}):t.jsxs(A,{size:"sm","aria-label":`${ae>0?"Add another":"Add"} ${G.title}`,onClick:()=>K(G),children:[t.jsx(se,{name:"plus",size:12})," ",ae>0?"Add another":"Add"]})]},G.id)})}),t.jsxs("a",{className:"wg-gallery-more",href:fj("widgets"),onClick:G=>{G.preventDefault(),n(fj("widgets"))},children:[t.jsx(se,{name:"plug",size:14}),t.jsx("span",{children:"Get more widgets"}),t.jsx("span",{className:"wg-gallery-more-sub",children:"from plugins on withbuddi.com"})]})]}):null,Ne&&Ke?t.jsx(aO,{info:Ke,placement:Ne,surface:"home",onClose:()=>S(null),onSave:G=>X(Ne.key,G),onRemove:()=>W(Ne.key)}):null]})}function Rk(e,n){return!e||e==="image"&&!n?"earth":e}const See="(max-width: 720px)",Cee="(orientation: portrait)",Eee=3e4,Aee=5e3,$ee={1:"a minute",5:"5 minutes",15:"15 minutes",60:"an hour"};function gx(e,n){return{time:Lt(e,n),day:Hs(e,n,{weekday:!0})}}function Mp(e,n){return e?fd({timeFormat:e.time,...e.date==="off"?{}:{dateFormat:e.date}},n):n()}function Tee(e,n,s=new Date,r){return Mp(r,()=>Ree(e,n,s))}function Ree(e,n,s){if(!e.lockedAt)return"Locked";const r=new Date(e.lockedAt),i=gx(r,n).day===gx(s,n).day?gx(r,n).time:Zm(r,n);return e.reason==="idle"?`Locked after ${e.delayMinutes?$ee[e.delayMinutes]??`${e.delayMinutes} minutes`:"a while"} away, at ${i}`:e.reason==="start"?`Locked since this session began, at ${i}`:`Locked by you at ${i}`}function Iee(e){const n=()=>e?Math.max(0,Math.ceil((Date.parse(e)-Date.now())/1e3)):0,[s,r]=d.useState(n);return d.useEffect(()=>{if(r(n()),!e)return;const a=window.setInterval(()=>r(n()),500);return()=>window.clearInterval(a)},[e]),s}const Pee=e=>`${Math.floor(e/60)}:${String(e%60).padStart(2,"0")}`;function tE({size:e=16}){return t.jsx(se,{name:"lock",size:e})}function dO({size:e=16}){return t.jsx("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:t.jsx("path",{d:"M3 8h9.6M8.6 4l4 4-4 4"})})}function Mee(){return t.jsxs("svg",{width:18,height:18,viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[t.jsx("path",{d:"M7.6 5h8a1.4 1.4 0 0 1 1.4 1.4v7.2A1.4 1.4 0 0 1 15.6 15h-8L3 10z"}),t.jsx("path",{d:"M9.6 8l4 4M13.6 8l-4 4"})]})}function nE({text:e}){const[n,s]=d.useState(!1),r=()=>{var a;(a=navigator.clipboard)==null||a.writeText(e).then(()=>{s(!0),window.setTimeout(()=>s(!1),1600)}).catch(()=>{})};return t.jsxs("div",{className:"so-cmd",children:[t.jsx("code",{className:"so-cmd-text",children:e}),t.jsx(A,{size:"sm",onClick:r,children:n?"Copied":"Copy"})]})}function Oee({onClose:e}){return t.jsx(Vt,{title:"Forgot your PIN?",onClose:e,foot:t.jsx(A,{variant:"accent",onClick:e,children:"Done"}),children:t.jsxs("div",{className:"lk-forgot",children:[t.jsx("p",{className:"lk-forgot-text",children:"The PIN covers this dashboard; it doesn’t sign you in. On the computer buddi runs on, run one of these:"}),t.jsxs("div",{className:"lk-forgot-way",children:[t.jsx(nE,{text:"buddi dashboard --unlock"}),t.jsx("p",{className:"lk-forgot-hint",children:"Opens buddi without the PIN, once. It prints a link for your other devices too, good for five minutes."})]}),t.jsxs("div",{className:"lk-forgot-way",children:[t.jsx(nE,{text:"buddi dashboard --remove-pin"}),t.jsx("p",{className:"lk-forgot-hint",children:"Removes the PIN on every device. Set a new one in Settings → Lock screen."})]})]})})}function Dee({approvals:e,needs:n,after:s,onPick:r}){const a=[];return e>0&&a.push({key:"approvals",n:e,text:e===1?"approval waiting":"approvals waiting"}),n>0&&a.push({key:"needs",n,text:e>0?n===1?"more needs you":"more need you":n===1?"thing needs you":"things need you"}),a.length===0?null:t.jsx("ul",{className:"lk-badges","aria-label":"Waiting for you",children:a.map(i=>t.jsx("li",{children:t.jsxs("button",{type:"button",className:"lk-chip","data-kind":i.key,"aria-pressed":s===i.key,disabled:!r,title:r?i.key==="needs"?"Open Needs you once unlocked":"Open your approvals once unlocked":void 0,onClick:()=>r==null?void 0:r(s===i.key?null:i.key),children:[t.jsx("span",{className:"ui-badge","aria-hidden":"true",children:i.n>99?"99+":i.n}),t.jsxs("span",{children:[t.jsxs("span",{className:"lk-sr",children:[i.n," "]}),i.text]})]})},i.key))})}function Lee(e,n){const s=n?2:4;let r=0,a=0;for(const i of e){const l=Math.min(i==="medium"?2:1,s);a+l>s&&(a=0),a+=l,r=Math.max(r,a)}return r}function Fee(e){return e.filter(n=>!(n.view.body.kind==="text"&&!n.view.body.sub))}function sE(e,n){const s=Object.fromEntries(new Intl.DateTimeFormat("en-CA",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e).map(r=>[r.type,r.value]));return Math.round(Date.UTC(Number(s.year),Number(s.month)-1,Number(s.day))/864e5)}function _ee(e,n,s,r=new Date){if(e.state!=="stale"||!e.updatedAt)return null;const a=new Date(e.updatedAt);return Number.isNaN(a.getTime())?null:`from ${Mp(s,()=>{const i=Lt(a,n),l=sE(r,n)-sE(a,n);return l<=0?i:l===1?`yesterday ${i}`:l<7?`${new Intl.DateTimeFormat("en-US",{timeZone:n,weekday:"short"}).format(a)} ${i}`:`${Hs(a,n,{compact:!0})} ${i}`})}`}function zee({widgets:e,phone:n,timezone:s,clockView:r,now:a}){const i=Fee(e);if(i.length===0)return null;const l=i.map(c=>({w:c,size:n||c.view.body.kind==="text"?"small":c.size})),o=Lee(l.map(({size:c})=>c),n);return t.jsx("div",{className:"lk-widgets",children:t.jsx("div",{className:"lk-grid","data-phone":n?"true":void 0,"data-cols":o,children:l.map(({w:c,size:u})=>{const h=_ee(c.view,s,r,a);return t.jsxs("div",{className:"wg-frame","data-variant":"compact","data-size":u,"data-kind":c.view.body.kind,"data-stale":h?"true":void 0,role:"group","aria-label":c.title,children:[t.jsx("div",{className:"wg-body",children:t.jsx(Pp,{body:c.view.body,size:u})}),t.jsxs("span",{className:"wg-compact-title",children:[c.title,h?t.jsxs("span",{className:"wg-compact-from",children:[" · ",h]}):null]})]},c.key??c.id)})})})}function Uee({text:e}){const n=/^(.*?)[\s\u202f]?([AaPp]\.?[Mm]\.?)$/.exec(e);return t.jsx("p",{className:"lk-time","aria-label":e,children:n?t.jsxs(t.Fragment,{children:[n[1],t.jsx("span",{className:"lk-ampm","aria-hidden":"true",children:n[2]})]}):e})}function rE(e,n){const s=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:n,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(e).map(a=>[a.type,a.value])),r=Date.UTC(Number(s.year),Number(s.month)-1,Number(s.day),Number(s.hour)%24,Number(s.minute));return Math.round((r-Math.floor(e.getTime()/6e4)*6e4)/6e4)}function Bee(e,n,s){try{const r=rE(e,n)-rE(e,s);if(r===0)return"Same time";const a=u=>new Intl.DateTimeFormat("en-CA",{timeZone:u,year:"numeric",month:"2-digit",day:"2-digit"}).format(e),i=a(n)!==a(s)?r>0?", tomorrow":", yesterday":"",l=Math.floor(Math.abs(r)/60),o=Math.abs(r)%60;return`${o===0?`${l} h`:l===0?`${o} min`:`${l} h ${o}`} ${r>0?"ahead":"behind"}${i}`}catch{return""}}function Wee(e,n,s){const r=s??{date:null,zone:null};return Mp(s,()=>({time:Lt(e,n),day:r.date==="off"?null:Hs(e,n,{weekday:!0}),zone:r.zone?{label:r.zone.label,time:Lt(e,r.zone.timezone),offset:Bee(e,r.zone.timezone,n)}:null}))}function Hee({background:e,image:n,imagePortrait:s,phone:r,portrait:a}){const i=tO(e),l=eO(i!==null);if(e==="earth"||i!==null&&l!==null&&!l.some(c=>c.id===i))return t.jsxs("div",{className:"lk-ground","aria-hidden":"true",children:[t.jsx("img",{className:"lk-photo","data-earth":"true",src:OZ(r),alt:"",decoding:"async"}),t.jsx("div",{className:"lk-scrim"})]});if(e==="image"&&n)return t.jsxs("div",{className:"lk-ground","aria-hidden":"true",children:[t.jsx("img",{className:"lk-photo",src:WZ(n,s,a),alt:""}),t.jsx("div",{className:"lk-scrim"})]});const o=i!==null?l==null?void 0:l.find(c=>c.id===i):void 0;if(o){const{src:c,fit:u}=BZ(o,a);return t.jsxs("div",{className:u==="contain"?"ui-fieldbg lk-ground":"lk-ground","data-fit":u,"aria-hidden":"true",children:[t.jsx("img",{className:"lk-photo","data-fit":u,"data-picture":o.id,src:c,alt:"",decoding:"async"}),t.jsx("div",{className:"lk-scrim"})]})}return t.jsx("div",{className:"ui-fieldbg lk-ground","aria-hidden":"true"})}function hO({data:e,now:n,phone:s,portrait:r=s,pad:a=!1,after:i,onPick:l}){const o=(e==null?void 0:e.timezone)??Intl.DateTimeFormat().resolvedOptions().timeZone,c=Wee(n,o,e==null?void 0:e.clockView),u=Rk(e==null?void 0:e.background,e==null?void 0:e.image),h=(e==null?void 0:e.focus)??null,f=h?Mp(e==null?void 0:e.clockView,()=>s?qee(Zu(h,o,n)):`${Zi[h.mode]} ${Zu(h,o,n)}`):"";return t.jsxs(t.Fragment,{children:[t.jsx(Hee,{background:u,image:e==null?void 0:e.image,imagePortrait:e==null?void 0:e.imagePortrait,phone:s,portrait:r}),t.jsxs("header",{className:"lk-top",children:[t.jsxs("span",{className:"lk-brand",children:[t.jsx(Hu,{size:"sm"}),t.jsx("span",{children:"buddi"})]}),t.jsx("span",{className:"lk-top-spacer"}),h?t.jsxs("span",{className:"lk-chip","data-kind":"focus",children:[t.jsx(se,{name:"moon",size:13}),t.jsx("span",{children:f})]}):null]}),t.jsxs("div",{className:"lk-main",children:[c.day?t.jsx("p",{className:"lk-date",children:c.day}):null,t.jsx(Uee,{text:c.time}),c.zone?t.jsxs("p",{className:"lk-zone",children:[t.jsx("span",{className:"lk-zone-name",children:c.zone.label}),t.jsx("span",{className:"lk-zone-time",children:c.zone.time}),c.zone.offset?t.jsx("span",{className:"lk-zone-off",children:c.zone.offset}):null]}):null,a||!e?null:t.jsx(Dee,{approvals:e.approvals,needs:e.needs??0,after:i??null,...l?{onPick:l}:{}}),a||!e?null:t.jsx(zee,{widgets:e.widgets,phone:s,timezone:o,clockView:e.clockView,now:n})]})]})}function Kee({value:e,disabled:n,onDigit:s,onBack:r,onSubmit:a}){return t.jsxs("div",{className:"lk-pad",role:"group","aria-label":"PIN pad",children:[["1","2","3","4","5","6","7","8","9"].map(i=>t.jsx("button",{type:"button",className:"lk-key",disabled:n,onClick:()=>s(i),children:i},i)),t.jsx("button",{type:"button",className:"lk-key","data-kind":"quiet","aria-label":"Delete",disabled:n||e.length===0,onClick:r,children:t.jsx(Mee,{})}),t.jsx("button",{type:"button",className:"lk-key",disabled:n,onClick:()=>s("0"),children:"0"}),t.jsx("button",{type:"button",className:"lk-key","data-kind":"go","aria-label":"Unlock",disabled:n||e.length<4,onClick:a,children:t.jsx(dO,{size:18})})]})}function Vee({initial:e,onUnlocked:n}){const s=ts(See),r=ts(Cee)||s,a=nO(),[i,l]=d.useState(null),o=i??e,[c,u]=d.useState(""),[h,f]=d.useState(null),[m,p]=d.useState((e==null?void 0:e.waitUntil)??null),[x,g]=d.useState(!1),[b,j]=d.useState(!1),[v,y]=d.useState(!1),[k,N]=d.useState(!1),[w,S]=d.useState(!1),[C,E]=d.useState(null),$=d.useRef(null),R=Iee(m),P=R>0,O=d.useRef(n),I=d.useRef(C);I.current=C,O.current=oe=>{I.current&&(window.location.hash=Oo),n(oe)};const F=oe=>{var B;E(oe),s&&oe?N(!0):(B=$.current)==null||B.focus()},U=d.useRef(0),L=d.useRef(0),M=d.useRef(0),z=d.useCallback(()=>{const oe=++U.current;M.current=Date.now(),T.lockScreen().then(B=>{oe<L.current||(L.current=oe,j(!1),l(B),p(B.waitUntil),B.locked||O.current(B))}).catch(B=>{B instanceof pe&&B.status===401?window.location.reload():Uf(B)&&j(!0)})},[]);d.useEffect(()=>{z();const oe=window.setInterval(z,Eee),B=()=>{document.visibilityState==="visible"&&z()},ue=()=>{Date.now()-M.current>=Aee&&z()};return document.addEventListener("visibilitychange",B),document.addEventListener("resume",ue),window.addEventListener("focus",ue),window.addEventListener("pageshow",ue),window.addEventListener("online",z),()=>{window.clearInterval(oe),document.removeEventListener("visibilitychange",B),document.removeEventListener("resume",ue),window.removeEventListener("focus",ue),window.removeEventListener("pageshow",ue),window.removeEventListener("online",z)}},[z]),cO((i==null?void 0:i.widgets.some(oe=>oe.id===iO&&oe.view.body.kind!=="clocks"))??!1,z),d.useEffect(()=>{var oe;!s&&!v&&!P&&((oe=$.current)==null||oe.focus())},[s,v,P,x]),d.useEffect(()=>{!P&&m&&f(null)},[P,m]);const D=oe=>{oe==null||oe.preventDefault(),!(x||P||c.length<4)&&(g(!0),T.unlock(c).then(B=>{var Ne;if(u(""),B.locked){g(!1);return}if((Ne=window.matchMedia)==null?void 0:Ne.call(window,"(prefers-reduced-motion: reduce)").matches){O.current(B);return}S(!0),window.setTimeout(()=>O.current(B),240)}).catch(B=>{if(g(!1),u(""),!(B instanceof pe))return f("Something went wrong. Try again.");const ue=B.detail??{};if(B.status===403||B.status===429){ue.waitUntil&&p(ue.waitUntil);const Ne=ue.triesLeft??0;f(ue.waitUntil?"That PIN isn’t right.":`That PIN isn’t right. ${Ne} ${Ne===1?"try":"tries"} left.`)}else Uf(B)?f("buddi isn’t answering. Try again in a moment."):f(B.message)}))},H=(i==null?void 0:i.timezone)??Intl.DateTimeFormat().resolvedOptions().timeZone,K=Rk(o==null?void 0:o.background,o==null?void 0:o.image),X=(i==null?void 0:i.owner)??null,W=b?{tone:"critical",text:"buddi isn’t answering. The lock stays until it does."}:P?{tone:"critical",text:`Too many tries. Try again in ${Pee(R)}.`}:h?{tone:"critical",text:h}:C?{tone:void 0,text:C==="needs"?"Unlock to open what needs you.":"Unlock to open your approvals."}:{tone:void 0,text:o?Tee(o,H,a,i==null?void 0:i.clockView):"Locked"},me=oe=>oe.replace(/\D/g,"").slice(0,8),fe=t.jsxs("div",{className:"lk-who",children:[t.jsx("span",{className:"lk-face","aria-hidden":"true",children:(X??"You").slice(0,1).toUpperCase()}),X?t.jsx("span",{className:"lk-owner",children:X}):null]});return t.jsxs("div",{className:"lk","data-bg":K,"data-phone":s?"true":void 0,"data-view":k?"pad":"glance","data-opening":w?"true":void 0,role:"dialog","aria-modal":"true","aria-label":"buddi is locked","data-testid":"lock-screen",children:[t.jsx(hO,{data:i??(o?{...Yee(o)}:null),now:a,phone:s,portrait:r,pad:k,after:C,onPick:F}),t.jsx("footer",{className:"lk-unlock",children:s&&!k?t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"lk-chip lk-enter",onClick:()=>N(!0),children:[t.jsx(tE,{size:14}),t.jsx("span",{children:"Enter PIN"})]}),t.jsx("p",{className:"lk-note","data-tone":W.tone,role:"status","aria-live":"polite",children:W.text})]}):s?t.jsxs(t.Fragment,{children:[fe,t.jsx("div",{className:"lk-dots","aria-hidden":"true","data-state":h?"wrong":void 0,children:c.length===0?t.jsx("span",{className:"lk-dots-empty",children:"Enter your PIN"}):Array.from(c).map((oe,B)=>t.jsx("span",{className:"lk-dot"},B))}),t.jsx("span",{className:"lk-sr","aria-live":"polite",children:c.length===1?"1 digit entered":`${c.length} digits entered`}),t.jsx("p",{className:"lk-note","data-tone":W.tone,role:"status","aria-live":"polite",children:W.text}),t.jsx(Kee,{value:c,disabled:P||x,onDigit:oe=>{f(null),u(me(c+oe))},onBack:()=>u(c.slice(0,-1)),onSubmit:()=>D()}),t.jsxs("div",{className:"lk-pad-foot",children:[t.jsx("button",{type:"button",className:"lk-link",onClick:()=>y(!0),children:"Forgot PIN?"}),t.jsx("button",{type:"button",className:"lk-link",onClick:()=>{N(!1),u(""),f(null)},children:"Cancel"})]})]}):t.jsxs(t.Fragment,{children:[fe,t.jsxs("form",{className:"lk-pin","data-state":h&&!P?"wrong":P?"wait":void 0,onSubmit:D,children:[t.jsx(tE,{size:15}),t.jsx("input",{ref:$,type:"password",inputMode:"numeric",autoComplete:"off",maxLength:8,"aria-label":"PIN","aria-describedby":"lk-note",placeholder:P?"Wait a moment":"Enter your PIN",disabled:P,value:c,onChange:oe=>{f(null),u(me(oe.target.value))}}),t.jsx("button",{type:"submit",className:"lk-go","aria-label":"Unlock",disabled:x||P||c.length<4,children:t.jsx(dO,{})})]}),t.jsx("p",{className:"lk-note",id:"lk-note","data-tone":W.tone,role:"status","aria-live":"polite",children:W.text}),t.jsx("button",{type:"button",className:"lk-link",onClick:()=>y(!0),children:"Forgot PIN?"})]})}),i!=null&&i.version?t.jsx("p",{className:"lk-version",children:Gee(i.version)}):null,v?t.jsx(Oee,{onClose:()=>y(!1)}):null]})}function Gee(e){return`buddi ${e.current}${e.updateAvailable?" · update ready":""}`}function qee(e){return e.slice(0,1).toUpperCase()+e.slice(1)}function Yee(e){return{timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,background:e.background,image:e.image,imagePortrait:e.imagePortrait??null,focus:null,approvals:0,needs:0,widgets:[]}}const Qee=3e4,Jee=5e3,Xee="buddi-lock",fy="buddi-locked",Zee=We("lock");function fO(){var n;const e=navigator;return/mac|iphone|ipad|ipod/i.test(((n=e.userAgentData)==null?void 0:n.platform)||navigator.platform||navigator.userAgent)}function ete(e=fO()){return e?"⌃⌘L":"Ctrl+Alt+L"}function tte(e,n=fO()){return!(e.code==="KeyL"||e.key.toLowerCase()==="l")||!e.ctrlKey||e.shiftKey?!1:n?e.metaKey&&!e.altKey:e.altKey&&!e.metaKey}const mO=d.createContext({pin:!1,state:null,lockNow:()=>{},update:()=>{},shortcut:"⌃⌘L"});function Op(){return d.useContext(mO)}function Eh(e){try{e?localStorage.setItem(fy,"1"):localStorage.removeItem(fy)}catch{}}function nte(){try{return localStorage.getItem(fy)==="1"}catch{return!1}}function ste(){try{return typeof BroadcastChannel>"u"?null:new BroadcastChannel(Xee)}catch{return null}}function rte({children:e}){const[n,s]=d.useState("checking"),[r,a]=d.useState(null),i=d.useRef(null),l=d.useRef(Date.now()),o=d.useRef(0),c=d.useRef(0),u=d.useRef(0),h=d.useCallback((g,b)=>{g&&a(g),s(b?"locked":"open"),Eh(b),b||(l.current=Date.now())},[]),f=d.useCallback(()=>{T.lockState().then(g=>h(g,g.locked)).catch(g=>{if(g instanceof pe&&g.status===401)return s("open");h(null,nte())})},[h]);d.useEffect(()=>{f()},[f]);const m=d.useCallback((g="owner")=>{var b;if(!(r!=null&&r.pin)){window.location.hash=Zee;return}s("locked"),Eh(!0),g==="owner"&&((b=i.current)==null||b.postMessage({type:"locked"})),(g==="idle"?T.lockNow("idle",Date.now()-l.current):T.lockNow(g)).then(j=>{var v;g==="idle"&&j.locked&&((v=i.current)==null||v.postMessage({type:"locked"})),h(j,j.locked)}).catch(()=>f())},[r==null?void 0:r.pin,h,f]);d.useEffect(()=>{const g=()=>{s("locked"),Eh(!0),f()};return window.addEventListener(Kv,g),()=>window.removeEventListener(Kv,g)},[f]),d.useEffect(()=>{const g=ste();if(i.current=g,!!g)return g.onmessage=b=>{const j=b.data;(j==null?void 0:j.type)==="locked"?(s("locked"),Eh(!0)):(j==null?void 0:j.type)==="unlocked"?f():(j==null?void 0:j.type)==="activity"&&typeof j.at=="number"&&(l.current=Math.max(l.current,j.at))},()=>{g.close(),i.current=null}},[f]),d.useEffect(()=>{const g=b=>{tte(b)&&(b.preventDefault(),n==="open"&&m("owner"))};return window.addEventListener("keydown",g,!0),()=>window.removeEventListener("keydown",g,!0)},[n,m]);const p=r!=null&&r.pin?r.delayMinutes:null;d.useEffect(()=>{if(n!=="open"||!(r!=null&&r.pin))return;c.current=l.current;const g=()=>{var w;const N=Date.now();l.current=N,N-u.current>1e4&&(u.current=N,(w=i.current)==null||w.postMessage({type:"activity",at:N}))},b=()=>{const N=Date.now();l.current<=c.current||N-o.current<Qee||(o.current=N,c.current=l.current,T.lockActivity().catch(()=>{}))},j=()=>{if(p!==null&&Date.now()-l.current>=p*6e4){m("idle");return}b()},v=["pointerdown","pointermove","keydown","wheel","touchstart"];for(const N of v)window.addEventListener(N,g,{passive:!0,capture:!0});const y=window.setInterval(j,Jee),k=()=>{document.visibilityState==="visible"&&j()};return document.addEventListener("visibilitychange",k),()=>{for(const N of v)window.removeEventListener(N,g,{capture:!0});window.clearInterval(y),document.removeEventListener("visibilitychange",k)}},[n,r==null?void 0:r.pin,p,m]);const x=d.useMemo(()=>({pin:(r==null?void 0:r.pin)===!0,state:r,lockNow:()=>m("owner"),update:g=>h(g,g.locked),shortcut:ete()}),[r,m,h]);return n==="checking"?null:n==="locked"?t.jsx(Vee,{initial:r,onUnlocked:g=>{var b;(b=i.current)==null||b.postMessage({type:"unlocked"}),h(g,!1)}}):t.jsx(mO.Provider,{value:x,children:e})}const pO="a connection needs you";function ate({attention:e,place:n,onNavigate:s,theme:r,onTheme:a,plugins:i=[],updateAvailable:l=!1,settingsDot:o,version:c,stale:u=!1,reload:h,timezone:f,status:m}){return t.jsxs("nav",{className:"rail","aria-label":"Places",children:[t.jsx("a",{className:"rail-mark",href:Un,onClick:p=>{p.preventDefault(),s(Un)},"aria-label":"buddi home",children:t.jsx(Hu,{})}),bW.filter(p=>p.route!==Nn).map(p=>t.jsx(xx,{label:p.label,href:p.route,active:n===p.route,badge:p.route===Un?e:0,onClick:()=>s(p.route),children:aE[p.route]},p.route)),i.map(p=>{const x=Or(p.plugin,p.id);return t.jsx(xx,{label:p.title,href:x,active:n===x,badge:0,onClick:()=>s(x),children:t.jsx(se,{name:X2(p.icon)})},x)}),t.jsx("div",{className:"rail-spacer"}),t.jsx(xx,{label:"Settings",href:Nn,active:n===Nn,badge:0,dot:l?"a newer buddi is ready":o,onClick:()=>s(Nn),children:aE[Nn]}),m,t.jsx(lte,{theme:r,onTheme:a,onNavigate:s,version:c,stale:u,reload:h,timezone:f})]})}const ite=[{value:"light",label:"Light"},{value:"dark",label:"Dark"},{value:"system",label:"System"}];function lte({theme:e,onTheme:n,onNavigate:s,version:r,stale:a,reload:i=()=>window.location.reload(),timezone:l}){var N,w,S;const o=ve(()=>T.owner(),[]),c=hc(),u=Op(),h=ve(()=>T.focus(),[],6e4),f=((N=h.data)==null?void 0:N.focus)??null,m=(C,E)=>{T.setFocus(C,E).finally(()=>h.reload())},p=((S=(w=o.data)==null?void 0:w.preferredName)==null?void 0:S.trim())||null,x=(p??"You").slice(0,1).toUpperCase(),[g]=d.useState(()=>v8()||Tk()),[b]=d.useState(ute),j=Ip(),v=p?`You: ${p}`:"You",y=f?`${Zi[f.mode]} ${Zu(f,l)}`:null,k=[v,y,a?"reload to update":null].filter(Boolean).join(", ");return t.jsx("div",{className:"rail-owner",children:t.jsxs(xd,{modal:!1,children:[t.jsx(vd,{asChild:!0,children:t.jsxs("button",{type:"button",className:"rail-owner-btn","aria-label":k,children:[t.jsx("span",{className:"rail-owner-face","aria-hidden":"true",children:x}),a?t.jsx("span",{className:"ui-badge rail-dot","data-kind":"dot","data-testid":"owner-dot","aria-hidden":"true"}):null,f?t.jsx("span",{className:"rail-focus","data-testid":"owner-focus","aria-hidden":"true",children:t.jsx(se,{name:"moon",size:10})}):null]})}),t.jsx(rc,{children:t.jsxs(jd,{className:"ui-menu rail-owner-menu",side:"right",align:"end",sideOffset:10,children:[t.jsxs("div",{className:"rail-owner-head",children:[t.jsx("span",{className:"rail-owner-face","data-size":"lg","aria-hidden":"true",children:x}),t.jsxs("span",{className:"rail-owner-who",children:[t.jsx("span",{className:"rail-owner-name",children:p??"You"}),t.jsxs("span",{className:"rail-owner-sub",children:["On ",c]})]})]}),t.jsx(ea,{className:"ui-menu-sep"}),t.jsx(cte,{focus:f,timezone:l,onSwitch:m}),t.jsx(ea,{className:"ui-menu-sep"}),t.jsx(pl,{className:"ui-menu-label",children:"Theme"}),t.jsx("div",{className:"rail-owner-theme",children:t.jsx(dn,{label:"Theme",options:ite,value:e,onChange:n})}),t.jsx(ea,{className:"ui-menu-sep"}),u.pin?t.jsxs(ws,{className:"ui-menu-item rail-owner-reload",onSelect:()=>u.lockNow(),children:[t.jsx("span",{children:"Lock now"}),t.jsx("kbd",{className:"rail-owner-kbd",children:u.shortcut})]}):t.jsx(ws,{className:"ui-menu-item",onSelect:()=>s(We("lock")),children:"Set up a lock screen…"}),t.jsx(ws,{className:"ui-menu-item",onSelect:()=>s(We("appearance")),children:"Change appearance"}),j?t.jsx(ws,{className:"ui-menu-item",onSelect:()=>{Ak(j)},children:"Install the app"}):null,g||a?t.jsxs(ws,{className:"ui-menu-item rail-owner-reload","data-update":a?"true":void 0,onSelect:()=>i(),children:[t.jsx("span",{children:a?"Reload to update":"Reload"}),b?t.jsx("kbd",{className:"rail-owner-kbd",children:b}):null]}):null,r?t.jsxs(t.Fragment,{children:[t.jsx(ea,{className:"ui-menu-sep"}),t.jsxs(ws,{className:"ui-menu-item rail-owner-version","data-update":r.updateAvailable?"true":void 0,onSelect:()=>s(We("system")),children:[t.jsxs("span",{className:"mono",children:["buddi ",r.current]}),r.updateAvailable&&r.latest?t.jsxs("span",{className:"rail-owner-update",children:["A newer buddi is ready: ",r.latest]}):null]})]}):null]})})]})})}const Zi={normal:"Off","urgent-only":"Urgent only","do-not-disturb":"Do not disturb"},ote=[{value:"1h",label:"For 1 hour"},{value:"3h",label:"For 3 hours"},{value:"tomorrow",label:"Until tomorrow morning"},{value:"indefinite",label:"Until I turn it off"}];function Zu(e,n,s=new Date){if(!e.until)return"until you turn it off";const r=new Date(e.until),a=n??Intl.DateTimeFormat().resolvedOptions().timeZone,i=c=>new Intl.DateTimeFormat("en-CA",{timeZone:a,dateStyle:"short"}).format(c),l=Lt(r,a);return i(r)===i(s)?`until ${l}`:`until ${new Intl.DateTimeFormat("en-US",{timeZone:a,weekday:"short"}).format(r)} ${l}`}function cte({focus:e,timezone:n,onSwitch:s}){return t.jsxs(d5,{children:[t.jsxs(h5,{className:"ui-menu-item rail-owner-focus",children:[t.jsx("span",{children:"Focus"}),t.jsx("span",{className:"rail-owner-kbd",children:e?Zi[e.mode]:"Off"})]}),t.jsx(rc,{children:t.jsxs(f5,{className:"ui-menu rail-owner-menu",sideOffset:6,children:[t.jsx("p",{className:"ui-menu-empty",role:"status",children:e?`${Zi[e.mode]} ${Zu(e,n)}${e.by==="schedule"?", from a schedule":""}.`:"No focus is on."}),["do-not-disturb","urgent-only"].map(r=>t.jsxs(hb,{children:[t.jsx(ea,{className:"ui-menu-sep"}),t.jsx(pl,{className:"ui-menu-label",children:Zi[r]}),ote.map(a=>t.jsx(ws,{className:"ui-menu-item","aria-label":`${Zi[r]} ${a.label.toLowerCase()}`,onSelect:()=>s(r,a.value),children:a.label},a.value))]},r)),e?t.jsxs(t.Fragment,{children:[t.jsx(ea,{className:"ui-menu-sep"}),t.jsx(ws,{className:"ui-menu-item",onSelect:()=>s("normal"),children:"Turn off"})]}):null]})})]})}function ute(){const e=window.navigator.userAgent;return/iPhone|iPad|Android|Mobile/.test(e)?null:/Mac/.test(e)?"⌘R":"Ctrl+R"}function xx({label:e,href:n,active:s,badge:r,dot:a,onClick:i,children:l}){return t.jsxs("a",{className:"rail-link",href:n,"data-active":s?"true":void 0,"aria-current":s?"page":void 0,"aria-label":r>0?`${e}, ${r} waiting`:a?`${e}, ${a}`:e,onClick:o=>{o.preventDefault(),i()},children:[t.jsxs("span",{className:"rail-icon",children:[l,r>0?t.jsx("span",{className:"rail-badge","aria-hidden":"true",children:r>99?"99+":r}):null,r===0&&a?t.jsx("span",{className:"ui-badge rail-dot","data-kind":"dot","data-testid":"rail-dot","aria-hidden":"true"}):null]}),t.jsx("span",{className:"rail-label",children:e})]})}const aE={[La]:t.jsx(se,{name:"files"}),[Un]:t.jsx(se,{name:"home"}),[$a]:t.jsx(se,{name:"chat"}),[Mt]:t.jsx(se,{name:"agents"}),[cn]:t.jsx(se,{name:"activity"}),[Nn]:t.jsx(se,{name:"settings"})},ed=e=>`${e.plugin}:${e.id}`,dte=new Set;let Ik=dte,iE=!1;const my=new Set;function py(e){Ik=e;for(const n of my)n()}function hte(e){return my.add(e),()=>my.delete(e)}const lE=()=>Ik;function fte(){iE||(iE=!0,Promise.resolve().then(()=>T.rail()).then(e=>py(new Set(Array.isArray(e==null?void 0:e.hidden)?e.hidden.filter(n=>typeof n=="string"):[]))).catch(()=>{}))}async function mte(e,n){const s=Ik,r=new Set(s);n?r.add(ed(e)):r.delete(ed(e)),py(r);try{await T.setRailHidden(e.plugin,e.id,n)}catch(a){throw py(s),a}}function gO(){return d.useEffect(fte,[]),d.useSyncExternalStore(hte,lE,lE)}function pte(e,n){return e.filter(s=>!n.has(ed(s)))}function gte(e){return e instanceof HTMLElement?e.isContentEditable?!0:e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT":!1}function xte(e,n=!0,s){d.useEffect(()=>{if(!n)return;const r=a=>{if(a.key!=="/"||a.defaultPrevented||a.ctrlKey||a.metaKey||a.altKey||gte(a.target))return;a.preventDefault();const i=document.getElementById(ly);if(i instanceof HTMLTextAreaElement){!i.disabled&&!i.hidden&&i.focus();return}s?s():e(Un)};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[e,n,s])}const xO="buddi.theme";function vte(e=vO()){try{const n=e==null?void 0:e.getItem(xO);return n==="light"||n==="dark"||n==="system"?n:"system"}catch{return"system"}}function jte(e,n=vO()){try{n==null||n.setItem(xO,e)}catch{}}function yte(e,n=document.documentElement){n&&(e==="system"?n.removeAttribute("data-theme"):n.setAttribute("data-theme",e))}function vO(){try{return window.localStorage}catch{return}}const jO="buddi.ground",yO="buddi.pageWidth";function wte(e=kO()){const n=a=>{try{return(e==null?void 0:e.getItem(a))??null}catch{return null}},s=n(jO),r=n(yO);return{theme:vte(e),ground:s==="sand"?"sand":"blue",width:r==="narrow"||r==="full"?r:"wide"}}function wO(e,n=document.documentElement){n&&(yte(e.theme,n),e.ground==="sand"?n.setAttribute("data-ground","sand"):n.removeAttribute("data-ground"),e.width==="wide"?n.removeAttribute("data-width"):n.setAttribute("data-width",e.width))}function bte(e,n=kO()){jte(e.theme,n);try{n==null||n.setItem(jO,e.ground),n==null||n.setItem(yO,e.width)}catch{}}let So=null;const gy=new Set;function xy(){return So||(So=wte()),So}function kte(e){return gy.add(e),()=>gy.delete(e)}function Nte(e){So={...xy(),...e},wO(So),bte(So);for(const n of gy)n()}function bO(){return[d.useSyncExternalStore(kte,xy,xy),Nte]}function kO(){try{return window.localStorage}catch{return}}const oE=7,Ste=1e4;function Cte({timezone:e,embedded:n,agents:s=[],navigate:r}){const{data:a,error:i,reload:l}=ve(()=>T.sentinels(),[],3e4),[o,c]=d.useState(null),[u,h]=d.useState(null),[f,m]=d.useState(null),[p,x]=d.useState(null),[g,b]=d.useState(!1),[j,v]=d.useState(null),y=a==null?void 0:a.alerts,k=(y==null?void 0:y.open)??[],N=L=>{r?r(L):window.location.hash=L},w=L=>{var M;return L?((M=s.find(z=>z.id===L))==null?void 0:M.name)??null:null},S=async L=>{c(null);try{await L()}catch(M){c(M instanceof pe||M instanceof Error?M.message:String(M))}finally{l()}},C=L=>h({...L,id:Date.now()}),E=(L,M,z)=>S(async()=>{const{keys:D}=await T.snoozeAlerts(L,!0,z);C({title:M,undo:()=>T.snoozeAlerts(D,!1)})}),$=L=>S(async()=>{const{id:M}=await T.muteAlert(L.keys[0],L.stop.scope);C({title:"You won’t hear about this again",body:"Turn it back on in Settings → Watchers.",undo:()=>T.unmuteAlert(M)})}),R=L=>S(async()=>{const{agentId:M,conversationId:z}=await T.askAboutAlerts(L.keys);N(ht(M,z))}),P=L=>S(async()=>{const[M]=(await T.actOnAlerts([{key:L.key,action:L.index}])).results;if(M!=null&&M.error)throw new Error(M.error);M!=null&&M.approvalId?C({title:"Waiting for your approval",body:"Decide it in Needs you on Home."}):C({title:`${L.label}: done`})}),O=(L,M)=>{M.kind==="open"?N(M.place==="files"?La:M.plugin&&M.page?Or(M.plugin,M.page,M.item):La):M.kind==="ask"?R(L):M.kind==="dismiss"?E(L.keys,"Set aside until it changes"):M.kind==="fill"?m(M):M.confirm?x(M):P(M)},I=()=>{const L=k.flatMap(M=>M.keys);E(L,`Cleared ${k.length} for a week`,oE)},F=y==null?void 0:y.recap,U=Ete((F==null?void 0:F.nextAt)??null,e);return t.jsxs(Rs,{embedded:n,title:"Alerts",lede:"What needs a decision from you.",children:[t.jsx(re,{message:i??o}),t.jsxs(lt,{flush:!0,title:"Needs a decision",tool:k.length>0?String(k.length):void 0,actions:k.length>1?t.jsx(A,{size:"sm",variant:"ghost",onClick:I,children:"Clear all"}):void 0,children:[a?k.length===0?t.jsxs("div",{className:"al-empty",children:[t.jsx(se,{name:"check"}),t.jsxs("div",{children:[t.jsx("p",{className:"al-empty-title",children:"Nothing needs a decision."}),t.jsxs("p",{className:"al-empty-line",children:["Your watchers are quiet. What they notice in passing waits for ",U,"."]})]})]}):t.jsx("ul",{className:"al-list",children:k.map(L=>t.jsx(cE,{group:L,agentName:w(L.agentId),onAct:O,onStop:$,onNotNow:M=>void E(M.keys,"Snoozed for a week",oE)},L.id))}):null,F&&F.count>0?t.jsxs("p",{className:"al-recap","data-testid":"recap-line",children:[t.jsxs("span",{children:[F.count," ",F.count===1?"note":"notes"," saved for ",U]}),t.jsx("span",{"aria-hidden":"true",children:"·"}),t.jsx("button",{type:"button",className:"wb-link",onClick:()=>b(!0),children:"Preview"})]}):null]}),y&&(y.snoozed.length>0||y.resolved.length>0)?t.jsxs("p",{className:"al-quiet",children:[y.snoozed.length>0?t.jsxs("button",{type:"button",className:"wb-link","aria-expanded":j==="snoozed",onClick:()=>v(j==="snoozed"?null:"snoozed"),children:[y.snoozed.length," snoozed"]}):null,y.snoozed.length>0&&y.resolved.length>0?t.jsx("span",{"aria-hidden":"true",children:"·"}):null,y.resolved.length>0?t.jsxs("button",{type:"button",className:"wb-link","aria-expanded":j==="resolved",onClick:()=>v(j==="resolved"?null:"resolved"),children:[y.resolved.length," resolved this week"]}):null]}):null,j==="snoozed"&&y?t.jsx(lt,{flush:!0,title:"Snoozed",children:t.jsx("ul",{className:"al-list",children:y.snoozed.map(L=>t.jsxs("li",{className:"al-row",children:[t.jsxs("div",{className:"al-main",children:[t.jsx("p",{className:"al-title",children:L.title}),t.jsx("p",{className:"al-sub",children:L.snoozedUntil?`Back ${Xe(L.snoozedUntil)}`:"Until it changes"})]}),t.jsx("div",{className:"al-actions",children:t.jsx(A,{size:"sm",onClick:()=>void S(async()=>{await T.snoozeAlerts(L.keys,!1)}),children:"Bring back"})})]},L.id))})}):null,j==="resolved"&&y?t.jsx(lt,{flush:!0,title:"Resolved this week",children:t.jsx("ul",{className:"al-list",children:y.resolved.map(L=>t.jsx("li",{className:"al-row",children:t.jsxs("div",{className:"al-main",children:[t.jsx("p",{className:"al-title",children:L.title}),t.jsx("p",{className:"al-sub",children:L.resolvedAt?`Resolved ${Xe(L.resolvedAt)}`:null})]})},L.id))})}):null,g&&F?t.jsxs(Qe,{title:Ate(U),onClose:()=>b(!1),children:[t.jsxs("p",{className:"al-form-note",children:["What the watchers noted. buddi reads them out in ",U,"; nothing here needs you now, but you can act on one early."]}),t.jsx("ul",{className:"al-list al-list-sheet",children:F.groups.map(L=>t.jsx(cE,{group:L,agentName:w(L.agentId),recap:!0,onAct:(M,z)=>{z.kind!=="fill"&&b(!1),O(M,z)},onStop:M=>{$(M)}},L.id))})]}):null,f?t.jsx($te,{action:f,onClose:()=>m(null),onSaved:L=>{m(null),b(!1),C({title:`Saved ${L}`}),l()}}):null,p?t.jsx(Vt,{title:p.label,onClose:()=>x(null),foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>x(null),children:"Cancel"}),t.jsx(A,{variant:p.tone==="danger"?"danger":"accent",onClick:()=>{const L=p;x(null),P(L)},children:p.label})]}),children:t.jsx("p",{children:p.confirm})}):null,u?t.jsx(Xu,{title:u.title,...u.body?{body:u.body}:{},duration:Ste,...u.undo?{onUndo:()=>{const L=u.undo;S(async()=>{await L()})}}:{},onGone:()=>h(null)},u.id):null]})}function Ete(e,n,s=Date.now()){if(!e)return"the weekly recap";const r=new Date(e);return Number.isNaN(r.getTime())||r.getTime()-s>7*864e5?"the weekly recap":`${new Intl.DateTimeFormat("en",{weekday:"long",timeZone:n}).format(r)}’s recap`}function Ate(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Ah(e,n){return e.kind==="ask"?e.label??(n?`Ask ${n}`:"Ask about it"):e.label}function cE({group:e,agentName:n,recap:s,onAct:r,onNotNow:a,onStop:i}){const[l,o]=d.useState(!1),[c,u,...h]=e.actions,f=e.actions.some(p=>p.kind==="ask"),m=e.items.length>1;return t.jsxs("li",{className:"al-row","data-urgent":e.urgent&&!s?"true":void 0,children:[t.jsxs("div",{className:"al-main",children:[t.jsx("p",{className:"al-title",children:e.title}),e.line?t.jsx("p",{className:"al-line",children:e.line}):null,t.jsxs("p",{className:"al-sub",children:[n?t.jsx("span",{children:n}):null,n&&!s?t.jsx("span",{"aria-hidden":"true",children:"·"}):null,s?null:t.jsxs("span",{children:["noticed ",Xe(e.since)]}),m?t.jsxs(t.Fragment,{children:[n||!s?t.jsx("span",{"aria-hidden":"true",children:"·"}):null,t.jsx("button",{type:"button",className:"wb-link al-toggle","aria-expanded":l,onClick:()=>o(p=>!p),children:l?"Hide":`Show the ${e.items.length}`})]}):null]}),l&&m?t.jsx("ul",{className:"al-items",children:e.items.map(p=>t.jsxs("li",{className:"al-item",children:[p.subject?t.jsx("span",{className:"al-item-who",children:p.subject.label}):null,t.jsx("span",{className:"al-item-note",children:p.subject?p.note:p.line}),p.actions&&p.actions.length>0?t.jsx("span",{className:"al-item-actions",children:p.actions.map((x,g)=>t.jsx(A,{size:"sm",variant:x.kind==="run"&&x.tone==="danger"?"danger-ghost":"ghost",onClick:()=>r(e,x),children:Ah(x,n)},g))}):null]},p.key))}):null]}),t.jsxs("div",{className:"al-actions",children:[c?t.jsx(A,{size:"sm",variant:"accent",onClick:()=>r(e,c),children:Ah(c,n)}):null,u?t.jsx(A,{size:"sm",variant:u.kind==="run"&&u.tone==="danger"?"danger-ghost":void 0,onClick:()=>r(e,u),children:Ah(u,n)}):null,a?t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>a(e),children:"Not now"}):null,t.jsx("span",{className:"al-more",children:t.jsx(rs,{label:`More for ${e.title}`,sheet:{title:e.title},items:[...h.map(p=>({label:Ah(p,n),...p.kind==="run"&&p.tone==="danger"?{tone:"critical"}:{},onSelect:()=>r(e,p)})),!f&&{label:n?`Ask ${n}`:"Ask about it",onSelect:()=>r(e,{kind:"ask",label:null})},"separator",{label:"Stop telling me this",hint:"Undo in Settings → Watchers",onSelect:()=>i(e)}]})})]})]})}function $te({action:e,onClose:n,onSaved:s}){const r=e.fields.length===1,[a,i]=d.useState(()=>Object.fromEntries(e.fields.map(p=>[p.key,r&&p.value!==null?String(p.value):""]))),[l,o]=d.useState({}),[c,u]=d.useState(!1),[h,f]=d.useState(null),m=async()=>{const p=e.fields.filter(x=>(a[x.key]??"").trim()!=="").map(x=>({key:x.key,action:x.index,value:(a[x.key]??"").trim()}));if(p.length===0){n();return}u(!0),f(null);try{const{results:x}=await T.actOnAlerts(p),g=Object.fromEntries(x.filter(b=>b.error).map(b=>[b.key,b.error]));o(g),Object.keys(g).length===0&&s(p.length)}catch(x){f(x instanceof Error?x.message:String(x))}finally{u(!1)}};return t.jsx(Qe,{title:e.title,onClose:n,foot:t.jsxs("div",{className:"al-form-foot",children:[t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:c,onClick:()=>void m(),children:c?"Saving…":"Save"})]}),children:t.jsxs("div",{className:"al-form",children:[t.jsx(re,{message:h}),t.jsx("p",{className:"al-form-note",children:r?"Check it and save.":"Type what each is today. Leave the ones you don’t know; they stay as they are."}),t.jsx("div",{className:"al-form-rows",children:e.fields.map(p=>t.jsxs("label",{className:"al-form-row",children:[t.jsxs("span",{className:"al-form-label",children:[t.jsx("span",{children:p.label}),p.hint?t.jsx("span",{className:"al-form-hint",children:p.hint}):null]}),t.jsx("input",{type:p.type==="date"?"date":"text",inputMode:p.type==="number"?"decimal":void 0,value:a[p.key]??"",placeholder:"—","aria-label":p.label,onChange:x=>i(g=>({...g,[p.key]:x.target.value}))}),l[p.key]?t.jsx("span",{className:"al-form-error",children:l[p.key]}):null]},p.key))})]})})}function Tte({mutes:e,onChanged:n}){const[s,r]=d.useState(null);return e.length===0?null:t.jsxs(lt,{flush:!0,title:"Silenced",tool:String(e.length),children:[t.jsx(re,{message:s}),t.jsx("ul",{className:"al-list",children:e.map(a=>t.jsxs("li",{className:"al-row",children:[t.jsxs("div",{className:"al-main",children:[t.jsx("p",{className:"al-title al-silenced-label",children:a.label}),t.jsxs("p",{className:"al-sub",children:["You said “Stop telling me this” ",Xe(a.createdAt)]})]}),t.jsx("div",{className:"al-actions",children:t.jsx(A,{size:"sm",onClick:()=>{r(null),T.unmuteAlert(a.id).then(n,i=>r(i instanceof Error?i.message:String(i)))},children:"Tell me again"})})]},a.id))})]})}const uE=5e3,dE=50;function Rte({timezone:e,embedded:n}){var j;const[s,r]=d.useState(""),[a,i]=d.useState(""),[l,o]=d.useState(null),c=ve(()=>T.eventKinds(),[]),{data:u,error:h}=ve(()=>T.events({kind:s||void 0,q:a||void 0,limit:dE}),[s,a],uE),[f,m]=d.useState({events:[],cursor:null,busy:!1,error:null});d.useEffect(()=>{m({events:[],cursor:null,busy:!1,error:null})},[s,a]);const p=f.events.length>0?f.cursor:(u==null?void 0:u.nextCursor)??null,x=async()=>{if(p){m(v=>({...v,busy:!0,error:null}));try{const v=await T.events({kind:s||void 0,q:a||void 0,before:p,limit:dE});m(y=>({events:[...y.events,...v.events],cursor:v.nextCursor,busy:!1,error:null}))}catch(v){m(y=>({...y,busy:!1,error:v instanceof Error?v.message:String(v)}))}}},g=new Set(((u==null?void 0:u.events)??[]).map(v=>v.id)),b=[...(u==null?void 0:u.events)??[],...f.events.filter(v=>!g.has(v.id))];return t.jsxs(Rs,{embedded:n,title:"Events",lede:"The append-only log. Everything the installation did, including what you do here.",children:[t.jsxs(ne,{children:[t.jsxs("select",{"aria-label":"Event kind",value:s,onChange:v=>r(v.target.value),children:[t.jsx("option",{value:"",children:"every kind"}),(((j=c.data)==null?void 0:j.kinds)??[]).map(v=>t.jsxs("option",{value:v.kind,children:[v.kind," (",v.count,")"]},v.kind))]}),t.jsx("input",{"aria-label":"Payload contains",placeholder:"payload contains…",value:a,onChange:v=>i(v.target.value),size:28}),s||a?t.jsx(A,{onClick:()=>{r(""),i("")},children:"Clear"}):null,t.jsxs("span",{className:"muted",children:["refreshes every ",uE/1e3,"s"]})]}),t.jsx(re,{message:h}),t.jsx(lt,{flush:!0,children:!u||b.length===0?t.jsx(Ce,{children:"No events match."}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"#"}),t.jsx("th",{children:"When"}),t.jsx("th",{children:"Kind"}),t.jsx("th",{children:"Payload"})]})}),t.jsx("tbody",{children:b.map(v=>t.jsxs("tr",{"data-clickable":"true",onClick:()=>o(v),children:[t.jsx("td",{className:"mono muted",children:v.id}),t.jsxs("td",{className:"nowrap",children:[Nt(v.createdAt,e),t.jsx("div",{className:"sub",children:Xe(v.createdAt)})]}),t.jsx("td",{className:"mono nowrap",children:v.kind}),t.jsx("td",{className:"mono muted",children:pr(fs(v.payload).replace(/\s+/g," "),120)})]},v.id))})]})}),p||f.error?t.jsxs(ne,{children:[t.jsxs("span",{className:"muted",children:[b.length," shown",p?", older ones are kept":"","."]}),t.jsx("span",{className:"ui-toolbar-spacer"}),f.error?t.jsx("span",{className:"critical",children:f.error}):null,p?t.jsx(A,{disabled:f.busy,onClick:()=>void x(),children:f.busy?"Loading…":"Load older"}):null]}):null,l?t.jsxs(Qe,{title:l.kind,onClose:()=>o(null),children:[t.jsxs("p",{className:"muted",children:["Event ",l.id," · ",Nt(l.createdAt,e),l.conversationId?t.jsxs(t.Fragment,{children:[" · ",t.jsx("a",{href:`#/conversations/${l.conversationId}`,children:"conversation"})]}):null]}),t.jsx(en,{children:fs(l.payload)})]}):null]})}const hE=["pending","leased","suspended","failed","succeeded","cancelled"],Oc=50,Ite=1e4,Pte=(e,n,s=`${n}s`)=>e===1?n:s;function Mte({timezone:e,embedded:n,initialState:s}){var D,H;const[r,a]=d.useState(s??""),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState(null),[f,m]=d.useState(!1),p=r==="failed",{data:x,error:g,reload:b}=ve(()=>T.jobs({...r?{state:r}:{},...r?{}:{dismissed:"0"},limit:String(Oc)}),[r],1e4),j=ve(()=>T.jobFailures(),[],1e4),[v,y]=d.useState({jobs:[],done:!1,busy:!1});d.useEffect(()=>{y({jobs:[],done:!1,busy:!1})},[r]);const k=async()=>{y(K=>({...K,busy:!0}));try{const K=await T.jobs({...r?{state:r}:{dismissed:"0"},limit:String(Oc),offset:String(Oc+v.jobs.length)});y(X=>({jobs:[...X.jobs,...K.jobs],done:K.jobs.length<Oc,busy:!1}))}catch(K){c(K instanceof Error?K.message:String(K)),y(X=>({...X,busy:!1}))}},N=new Set(((x==null?void 0:x.jobs)??[]).map(K=>K.id)),w=[...(x==null?void 0:x.jobs)??[],...v.jobs.filter(K=>!N.has(K.id))],S=(x==null?void 0:x.counts)??{},C=r?S[r]??0:hE.reduce((K,X)=>K+(S[X]??0),0),E=!v.done&&w.length<C&&((x==null?void 0:x.jobs.length)??0)>=Oc,$=((D=j.data)==null?void 0:D.open)??[],R=((H=j.data)==null?void 0:H.dismissed)??[],P=$.reduce((K,X)=>K+X.count,0),O=R.reduce((K,X)=>K+X.count,0),I=()=>{b(),j.reload()},F=K=>h({...K,id:Date.now()}),U=async K=>{c(null);try{await K()}catch(X){c(X instanceof Error?X.message:String(X))}finally{I()}},L=async K=>{await U(async()=>{await K,l(null)})},M=K=>U(async()=>{const{ids:X}=await T.dismissJobs(K==="all"?{all:!0}:{ids:K});X.length!==0&&F({title:`Dismissed ${X.length===1?"it":X.length}`,body:"Kept under Dismissed, below.",undo:()=>T.undismissJobs(X)})}),z=(K,X)=>U(async()=>{const{jobs:W}=await T.retryJobs({ids:K});if(W.length===0)return;const me=W.length===1;F({title:`Retrying ${me?"it":W.length}`,body:X?`${me?"It runs":"They run"} as soon as a worker is free.`:`If what broke ${me?"it":"them"} hasn’t changed, ${me?"it":"they"} will fail the same way.`})});return t.jsxs(Rs,{embedded:n,title:"Jobs",lede:`${x!=null&&x.paused?"Paused: nothing is being claimed. ":""}Bounded retries with backoff; past the budget a job waits for you.`,actions:n?void 0:t.jsx(A,{size:"sm",variant:x!=null&&x.paused?"accent":void 0,onClick:()=>L(T.setPaused(!((x==null?void 0:x.paused)??!1))),children:x!=null&&x.paused?"Resume the queue":"Pause the queue"}),children:[t.jsx(re,{message:g??j.error??o}),$.length>0?t.jsxs(lt,{flush:!0,title:"Gave up",tool:String(P),actions:P>1?t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>void M("all"),children:"Dismiss all"}):void 0,children:[t.jsx("ul",{className:"al-list",children:$.map(K=>t.jsx(mE,{group:K,timezone:e,onOpen:l,onRetry:X=>void z(X,K.likelyFixed),onDismiss:X=>void M(X)},K.key))}),t.jsx("p",{className:"al-recap",children:t.jsx("span",{children:"These will not run again on their own. Dismissed jobs stay on record; any failed job older than 14 days is dismissed for you."})})]}):p&&j.data?t.jsx(lt,{flush:!0,children:t.jsxs("div",{className:"al-empty",children:[t.jsx(se,{name:"check"}),t.jsxs("div",{children:[t.jsx("p",{className:"al-empty-title",children:"No failed job needs you."}),t.jsx("p",{className:"al-empty-line",children:O>0?"The ones you dismissed stay on record, below.":"Every job either ran or is still on its way."})]})]})}):null,O>0||p?t.jsxs("p",{className:"al-quiet jb-quiet",children:[O>0?t.jsxs("button",{type:"button",className:"wb-link","aria-expanded":f,onClick:()=>m(K=>!K),children:[O," dismissed"]}):null,O>0&&p?t.jsx("span",{"aria-hidden":"true",children:"·"}):null,p?t.jsx("button",{type:"button",className:"wb-link",onClick:()=>a(""),children:"Show the whole queue"}):null]}):null,f&&R.length>0?t.jsx(lt,{flush:!0,title:"Dismissed",children:t.jsx("ul",{className:"al-list",children:R.map(K=>t.jsx(mE,{group:K,timezone:e,dismissed:!0,onOpen:l,onRetry:X=>void z(X,K.likelyFixed)},K.key))})}):null,p?null:t.jsx(lt,{flush:!0,title:"Queue",actions:t.jsxs("select",{"aria-label":"Job state",value:r,onChange:K=>a(K.target.value),children:[t.jsx("option",{value:"",children:"every state"}),hE.map(K=>t.jsxs("option",{value:K,children:[K," (",S[K]??0,")"]},K))]}),children:!x||w.length===0?t.jsx(Ce,{children:"No jobs match."}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Kind"}),t.jsx("th",{children:"State"}),t.jsx("th",{className:"num",children:"Attempts"}),t.jsx("th",{children:"Last error"}),t.jsx("th",{children:"Updated"}),t.jsx("th",{})]})}),t.jsx("tbody",{children:w.map(K=>t.jsxs("tr",{children:[t.jsxs("td",{className:"clickable",onClick:()=>l(K),children:[K.kind,t.jsx("div",{className:"sub mono",children:Mu(K.id)})]}),t.jsxs("td",{children:[t.jsx(kd,{state:K.state}),K.suspendedReason?t.jsx("div",{className:"sub",children:pr(K.suspendedReason,40)}):null,K.acknowledgedAt?t.jsx("div",{className:"sub",children:"dismissed"}):null]}),t.jsxs("td",{className:"num",children:[K.attempts,"/",K.maxAttempts]}),t.jsx("td",{className:K.lastError?"critical":"muted",children:K.lastError?pr(K.lastError,80):"—"}),t.jsxs("td",{className:"nowrap",children:[Nt(K.updatedAt,e),t.jsx("div",{className:"sub",children:Xe(K.updatedAt)})]}),t.jsx("td",{children:t.jsxs(ne,{align:"end",children:[["failed","cancelled","suspended"].includes(K.state)?t.jsx(A,{size:"sm",onClick:()=>L(T.retryJob(K.id)),children:"Retry"}):null,["pending","leased","suspended","failed"].includes(K.state)?t.jsx(A,{size:"sm",variant:"danger",onClick:()=>L(T.cancelJob(K.id)),children:"Cancel"}):null]})})]},K.id))})]})}),E&&!p?t.jsxs(ne,{children:[t.jsxs("span",{className:"muted",children:[w.length," of ",C," shown."]}),t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsx(A,{disabled:v.busy,onClick:()=>void k(),children:v.busy?"Loading…":"Load older"})]}):null,i?t.jsxs(Qe,{title:i.kind,onClose:()=>l(null),children:[t.jsx("p",{className:"muted mono",children:i.id}),i.lastError?t.jsx(we,{title:"Last error",children:t.jsx(en,{children:i.lastError})}):null,t.jsx(we,{title:"Payload",children:t.jsx(en,{children:fs(i.payload)})}),t.jsx(we,{title:"Result",children:t.jsx(en,{children:fs(i.result)})}),i.conversationId?t.jsx("p",{children:t.jsx("a",{href:`#/conversations/${i.conversationId}`,children:"open the transcript"})}):null]}):null,u?t.jsx(Xu,{title:u.title,...u.body?{body:u.body}:{},duration:Ite,...u.undo?{onUndo:()=>{const K=u.undo;U(async()=>{await K()})}}:{},onGone:()=>h(null)},u.id):null]})}function fE(e){var s;if(e.missionName)return e.missionName;const n=(s=e.job.payload)==null?void 0:s.prompt;return typeof n=="string"&&n.trim()!==""?pr(n.trim().split(`
|
|
133
|
+
`)[0],48):e.job.kind==="agent-run"?"Agent run":e.job.kind}function mE({group:e,timezone:n,dismissed:s,onOpen:r,onRetry:a,onDismiss:i}){var x;const[l,o]=d.useState(!1),c=e.jobs.length>1,u=e.jobs.map(g=>g.job.id),h=e.agents.map(g=>g.name??g.id),f=e.jobs[0],m=e.jobs.every(g=>g.job.acknowledgedBy==="auto"),p=s?m?"dismissed on its own after 14 days":`dismissed ${Xe(((x=e.jobs[0])==null?void 0:x.job.acknowledgedAt)??e.lastAt)}`:`gave up ${Xe(e.lastAt)}`;return t.jsxs("li",{className:"al-row","data-urgent":s?void 0:"true",children:[t.jsxs("div",{className:"al-main",children:[t.jsx("p",{className:"al-title",children:c?`${e.label} · ${e.count}`:e.label}),s?null:t.jsx("p",{className:"al-line",children:e.reason}),t.jsxs("p",{className:"al-sub",children:[h.length>0?t.jsxs(t.Fragment,{children:[t.jsx("span",{children:h.join(", ")}),t.jsx("span",{"aria-hidden":"true",children:"·"})]}):null,!c&&f?t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:"wb-link",onClick:()=>r(f.job),children:fE(f)}),t.jsx("span",{"aria-hidden":"true",children:"·"})]}):null,t.jsx("span",{title:Nt(e.lastAt,n),children:p}),c?t.jsxs(t.Fragment,{children:[t.jsx("span",{"aria-hidden":"true",children:"·"}),t.jsx("button",{type:"button",className:"wb-link al-toggle","aria-expanded":l,onClick:()=>o(g=>!g),children:l?"Hide":`Show the ${e.count}`})]}):null]}),l&&c?t.jsx("ul",{className:"al-items",children:e.jobs.map(g=>t.jsxs("li",{className:"al-item jb-item",children:[g.agentName||g.agentId?t.jsx("span",{className:"al-item-who",children:g.agentName??g.agentId}):null,t.jsxs("span",{className:"al-item-note",children:[t.jsx("button",{type:"button",className:"wb-link",onClick:()=>r(g.job),children:fE(g)})," · ",Zm(new Date(g.job.updatedAt),n)," · tried ",g.job.attempts," ",Pte(g.job.attempts,"time")]}),t.jsxs("span",{className:"jb-item-acts",children:[t.jsx("button",{type:"button",className:"wb-link",onClick:()=>a([g.job.id]),children:"Retry"}),i?t.jsxs(t.Fragment,{children:[t.jsx("span",{"aria-hidden":"true",children:"·"}),t.jsx("button",{type:"button",className:"wb-link",onClick:()=>i([g.job.id]),children:"Dismiss"})]}):null]})]},g.job.id))}):null]}),t.jsxs("div",{className:"al-actions",children:[t.jsx(A,{size:"sm",variant:e.likelyFixed&&!s?"accent":void 0,onClick:()=>a(u),children:c?"Retry all":"Retry"}),i?t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>i(u),children:"Dismiss"}):null]})]})}const Ote=[{id:"conversations",label:"Conversations"},{id:"jobs",label:"Jobs"},{id:"approvals",label:"Approvals"},{id:"alerts",label:"Alerts"},{id:"events",label:"Events"}];function Dte({hash:e,timezone:n,navigate:s,agents:r}){var u,h;const a=/^#\/activity\/conversations\/(.+)$/.exec(e),i=f=>{var m;return((m=r.find(p=>p.id===f))==null?void 0:m.name)??f};if(a){let f=a[1];try{f=decodeURIComponent(f)}catch{}return t.jsx(_te,{id:f,timezone:n,navigate:s,nameOf:i})}const l=((u=/^#\/activity\/([a-z]+)/.exec(e))==null?void 0:u[1])??"conversations",o=(h=/[?&]state=([a-z]+)/.exec(e))==null?void 0:h[1],c=f=>m=>{m.preventDefault(),s(f)};return t.jsxs("div",{className:"ui-page",children:[t.jsx(al,{title:"Activity",lede:"Everything your agents ran, newest first.",actions:t.jsx(Bte,{})}),t.jsx(Wte,{}),t.jsx(cc,{children:Ote.map(f=>{const m=f.id==="conversations"?cn:`${cn}/${f.id}`;return t.jsx(xl,{href:m,active:l===f.id,onClick:c(m),children:f.label},f.id)})}),l==="conversations"?t.jsx(Lte,{timezone:n,navigate:s,nameOf:i,agents:r}):null,l==="jobs"?t.jsx(Mte,{timezone:n,embedded:!0,initialState:o},o??""):null,l==="approvals"?t.jsx(Fte,{timezone:n,nameOf:i}):null,l==="alerts"?t.jsx(Cte,{timezone:n,embedded:!0,agents:r,navigate:s}):null,l==="events"?t.jsx(Rte,{timezone:n,embedded:!0}):null]})}function Lte({timezone:e,navigate:n,nameOf:s,agents:r}){const{data:a,error:i}=ve(()=>T.conversations(),[],3e4);return t.jsxs(t.Fragment,{children:[t.jsx(re,{message:i}),t.jsx(lt,{flush:!0,children:a?a.conversations.length===0?t.jsx(ms,{icon:"activity",title:"Nothing has run yet",children:"Conversations and runs show up here as your agents work."}):t.jsx(yt,{children:a.conversations.map(l=>t.jsx(gt,{href:zu(l.id),onClick:()=>n(zu(l.id)),lead:t.jsx(yn,{agents:r,id:l.agentId,size:"sm"}),title:l.opening?pr(l.opening,100):"Untitled conversation",sub:`${s(l.agentId)}, ${l.messageCount} message${l.messageCount===1?"":"s"}, ${l.runs} run${l.runs===1?"":"s"}, ${CU(l.usage)}`,side:t.jsx("span",{title:Nt(l.lastMessageAt??l.createdAt,e),children:Xe(l.lastMessageAt??l.createdAt)})},l.id))}):t.jsx(Ce,{children:"Loading…"})})]})}function Fte({timezone:e,nameOf:n}){const{data:s,error:r}=ve(()=>T.approvals(),[],1e4),a=[...(s==null?void 0:s.pending)??[],...(s==null?void 0:s.recent)??[]];return t.jsxs(t.Fragment,{children:[t.jsx(re,{message:r}),t.jsx(lt,{flush:!0,children:s?a.length===0?t.jsx(ms,{icon:"bell",title:"No approvals yet",children:"When an agent asks before acting, the request and your answer are kept here."}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Tool"}),t.jsx("th",{children:"State"}),t.jsx("th",{children:"Asked by"}),t.jsx("th",{children:"Decided"}),t.jsx("th",{children:"Created"})]})}),t.jsx("tbody",{children:a.map(i=>t.jsxs("tr",{children:[t.jsxs("td",{children:[i.tool,t.jsx("div",{className:"sub mono",children:Mu(i.id)})]}),t.jsx("td",{children:t.jsx(kd,{state:i.state})}),t.jsx("td",{children:n(i.agentId)}),t.jsx("td",{className:"nowrap",children:i.decidedAt?t.jsxs(t.Fragment,{children:[Nt(i.decidedAt,e),t.jsxs("div",{className:"sub",children:["via ",i.decidedVia??"—"]})]}):t.jsx("span",{className:"muted",children:"—"})}),t.jsxs("td",{className:"nowrap",children:[Nt(i.createdAt,e),t.jsx("div",{className:"sub",children:Xe(i.createdAt)})]})]},i.id))})]}):t.jsx(Ce,{children:"Loading…"})})]})}function _te({id:e,timezone:n,navigate:s,nameOf:r}){const[a,i]=d.useState(null),[l,o]=d.useState(null);d.useEffect(()=>{let u=!1;return T.conversation(e).then(h=>{u||i(h)}).catch(h=>{u||o(h instanceof Error?h.message:String(h))}),()=>{u=!0}},[e]);const c=u=>h=>{h.preventDefault(),s(u)};return t.jsxs("div",{className:"ui-page",children:[t.jsx("p",{className:"page-crumbs",children:t.jsx("a",{href:cn,onClick:c(cn),children:"Activity"})}),t.jsxs("header",{className:"ui-page-head",children:[t.jsxs("div",{className:"ui-page-head-row",children:[t.jsxs("h2",{className:"ui-page-title",children:[t.jsx(A,{size:"sm",onClick:()=>s(cn),children:"← Back"}),t.jsx("span",{children:"Transcript"})]}),a?t.jsx("div",{className:"ui-page-actions",children:t.jsx(it,{size:"sm",href:ht(a.agentId,e),onClick:c(ht(a.agentId,e)),children:"Open in chat"})}):null]}),t.jsx("p",{className:"ui-page-lede mono",children:e})]}),t.jsx(re,{message:l}),a?t.jsxs(t.Fragment,{children:[t.jsxs(gp,{children:[t.jsx(ta,{label:"Agent",value:r(a.agentId),size:"sm"}),t.jsx(ta,{label:"Runs",value:a.runs.length}),t.jsx(ta,{label:"Tokens",value:`${Cn(a.usage.input)} / ${Cn(a.usage.output)}`,note:Hv(a.usage)?`input / output, ${Hv(a.usage)}`:"input / output"}),t.jsx(ta,{label:"Started",value:Nt(a.createdAt,n),size:"sm"})]}),a.runs.length>0?t.jsx(lt,{title:"Runs",flush:!0,children:t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Started"}),t.jsx("th",{children:"Finished"}),t.jsx("th",{className:"num",children:"Turns"}),t.jsx("th",{children:"Stopped"}),t.jsx("th",{className:"num",children:"Tokens"}),t.jsx("th",{className:"num",children:"Cached"})]})}),t.jsx("tbody",{children:a.runs.map((u,h)=>t.jsxs("tr",{children:[t.jsxs("td",{className:"nowrap",children:[Nt(u.startedAt,n)," ",u.resumed?t.jsx(Ae,{children:"resumed"}):null]}),t.jsx("td",{className:"nowrap",children:Nt(u.finishedAt,n)}),t.jsx("td",{className:"num",children:u.turns??"—"}),t.jsxs("td",{children:[u.stopped??"—",u.actionId?t.jsxs("div",{className:"sub mono",children:["action ",Mu(u.actionId)]}):null]}),t.jsxs("td",{className:"num muted nowrap",children:[Cn(u.usage.input)," / ",Cn(u.usage.output)]}),t.jsx("td",{className:"num muted nowrap",children:u.usage.cacheRead||u.usage.cacheWrite?Cn((u.usage.cacheRead??0)+(u.usage.cacheWrite??0)):"—"})]},h))})]})}):null,t.jsx(we,{title:"Messages",children:t.jsx(de,{children:a.messages.map(u=>t.jsxs("article",{className:"transcript-msg",children:[t.jsxs("header",{className:"transcript-who",children:[u.speaker===pE?"approved action, result":u.role,", ",Nt(u.createdAt,n)]}),t.jsxs("div",{className:"transcript-body",children:[u.blocks.length===0?t.jsx("span",{className:"muted",children:"(empty)"}):null,u.speaker===pE?u.blocks.map((h,f)=>t.jsx(zte,{block:h},f)):u.blocks.map((h,f)=>t.jsx(Ute,{block:h},f))]})]},u.id))})})]}):t.jsx(Ce,{children:"Loading…"})]})}const pE="approval:resume";function zte({block:e}){return t.jsxs("div",{className:"transcript-tool",children:[t.jsx("div",{className:"transcript-tool-name mono",children:"← approved action"}),t.jsx(en,{children:e.type==="text"?e.text??"":fs(e)})]})}function Ute({block:e}){return e.type==="text"?t.jsx("div",{className:"transcript-text",children:t.jsx(gr,{text:e.text??""})}):e.type==="thinking"?t.jsxs("details",{className:"transcript-thinking",children:[t.jsx("summary",{children:"Thoughts"}),t.jsx("div",{className:"transcript-thinking-text",children:t.jsx(gr,{text:e.text??""})})]}):e.type==="thinking_hidden"?t.jsx("div",{className:"transcript-thinking-hidden",children:"Thinking (hidden)"}):e.ref===void 0&&e.type==="provider_native"?t.jsx(t.Fragment,{}):e.type==="tool_use"?t.jsxs("div",{className:"transcript-tool",children:[t.jsxs("div",{className:"transcript-tool-name mono",children:["→ ",e.name]}),t.jsx(en,{children:fs(e.input)})]}):e.type==="tool_result"?t.jsxs("div",{className:"transcript-tool","data-tone":e.isError?"critical":void 0,children:[t.jsxs("div",{className:"transcript-tool-name mono",children:["← ",e.isError?"error":"result"]}),t.jsx(en,{children:e.content??""})]}):t.jsxs("div",{className:"transcript-tool",children:[t.jsx("div",{className:"transcript-tool-name mono",children:e.type}),t.jsx(en,{children:fs(e.ref)})]})}function Bte(){const{data:e,reload:n}=ve(()=>T.overview(),[],1e4),[s,r]=d.useState(!1);if(!e)return null;const a=()=>{r(!0),T.setPaused(!e.paused).then(n,n).finally(()=>r(!1))};return t.jsx(A,{size:"sm",variant:e.paused?"accent":void 0,disabled:s,onClick:a,children:e.paused?"Resume all":"Pause all"})}function Wte(){const{data:e,reload:n}=ve(()=>T.overview(),[],1e4);if(d.useEffect(()=>(window.addEventListener(Xi,n),()=>window.removeEventListener(Xi,n)),[n]),!e)return null;const s=a=>e.jobs[a]??0,r=s("leased");return t.jsxs(gp,{children:[t.jsx(ta,{label:"Jobs done",value:Cn(s("succeeded"))}),t.jsx(ta,{label:"Failed",value:Cn(s("failed")),...s("failed")>0?{tone:"critical"}:{}}),t.jsx(ta,{label:"Queued",value:Cn(s("pending")),note:`${r} running`}),t.jsx(ta,{label:"Approvals",value:Cn(e.approvals.pending),note:"waiting for you"})]})}const Hte=["replay-all","coalesce","latest-only","skip-after-deadline"],Kte=3e3;function Pk(e){const n=e.occurrences[0];return(n==null?void 0:n.state)==="pending"||(n==null?void 0:n.state)==="claimed"}function Vte(e){if(Pk(e))return"Running…";const n=e.occurrences[0];if((n==null?void 0:n.state)==="failed")return`Last run failed${n.finishedAt?` ${Xe(n.finishedAt)}`:""}${n.error?` — ${pr(n.error,120)}`:""}`;const s=e.lastNotification;return s?`Last run ${s.kind==="mission.delivered"?"reported":"stayed silent"} ${Xe(s.at)}${s.reason?` — ${s.reason}`:""}`:"Last run: none"}function NO({timezone:e,embedded:n,agentId:s}){const[r,a]=d.useState(()=>new Set),[i,l]=d.useState(!1),{data:o,error:c,reload:u}=ve(()=>T.missions(),[],i||r.size>0?Kte:3e4),h=((o==null?void 0:o.missions)??[]).filter(b=>!s||b.agentId===s),[f,m]=d.useState(null),p=h.some(Pk);d.useEffect(()=>l(p),[p]);const x=async b=>{m(null);try{await b,u()}catch(j){m(j instanceof Error?j.message:String(j))}},g=async b=>{a(j=>new Set(j).add(b)),await x(T.runMission(b)),a(j=>{const v=new Set(j);return v.delete(b),v})};return t.jsxs(Rs,{embedded:n,title:"Missions",lede:"Standing schedules. A disabled mission materializes nothing.",children:[t.jsx(re,{message:c??f}),!o||h.length===0?t.jsxs(ms,{icon:"calendar",title:"No missions yet",children:["Run ",t.jsx("code",{children:"buddi missions add-defaults"})," for the standard set."]}):t.jsx(de,{children:h.map(b=>t.jsx(Gte,{mission:b,timezone:e,onRun:x,starting:r.has(b.id),onRunNow:()=>void g(b.id)},b.id))})]})}function Gte({mission:e,timezone:n,onRun:s,starting:r,onRunNow:a}){var h;const[i,l]=d.useState(!1),o=da(Mi()),c=e.enabled&&!e.pausedReason,u=r||Pk(e);return t.jsxs(Wr,{tone:e.enabled&&!e.pausedReason?"good":"muted",title:t.jsxs(t.Fragment,{children:[e.name," ",t.jsx("span",{className:"mono muted",children:e.id})]}),meta:t.jsxs(t.Fragment,{children:[t.jsx(Ae,{mono:!0,children:e.agentId}),e.alwaysDeliver?t.jsx(Ae,{children:"always delivers"}):null,e.enabled?null:t.jsx(Ae,{tone:"warning",children:e.endedAt?"ended":"disabled"}),e.pausedReason?t.jsx(Ae,{tone:"warning",children:e.pausedReason}):null]}),actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>l(f=>!f),"aria-expanded":i,children:i?"Less":"More"}),t.jsx(A,{size:"sm",onClick:()=>s(T.setMissionEnabled(e.id,!e.enabled)),children:e.enabled?"Disable":"Enable"}),c?t.jsx(A,{size:"sm",variant:"accent",disabled:u,onClick:a,children:"Run now"}):null]}),children:[e.stillUsefulAskedAt?t.jsx(Q,{tone:"warning",title:"Still useful?",action:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",onClick:()=>s(T.answerStillUseful(e.id,"stop")),children:"Stop"}),t.jsx(A,{size:"sm",variant:"accent",onClick:()=>s(T.keepMission(e.id)),children:"Keep"})]}),children:`It has run ${e.quietRuns??"many"} times in a row without anything to tell you.`}):null,e.browser?t.jsxs(ne,{children:[t.jsxs("span",{children:[t.jsx("strong",{children:e.browser==="owner"?`Uses ${o}`:"Own browser"}),t.jsx("span",{className:"muted",children:e.browser==="owner"?` · it may open pages in ${o}, signed in, while you are away`:` · it opens pages only in buddi’s browser, never ${o}`})]}),t.jsx(ft,{}),t.jsx(oc,{checked:e.browser==="owner",label:`Let ${e.name} use ${o}`,onChange:f=>s(T.setMissionChrome(e.id,f))})]}):null,e.stopWhen||e.endsAt?t.jsxs("p",{className:"ui-card-meta",children:[e.stopWhen?`Stops itself when ${e.stopWhen}. `:"",e.endedAt?`Ended ${Nt(e.endedAt,n)}.`:e.endsAt?`Ends ${Nt(e.endsAt,n)}.`:""]}):null,t.jsxs("p",{className:"ui-card-meta",children:[e.schedule?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mono",children:e.schedule.cron})," ",e.schedule.timezoneExplicit===!1?t.jsx("span",{title:e.schedule.timezone,children:"follows your timezone"}):e.schedule.timezone," ","· rev"," ",e.schedule.revision," · next"," ",e.nextRun?`${Nt(e.nextRun,n)} (${Xe(e.nextRun)})`:"—"]}):"no schedule — enqueued by hand or by a sentinel",t.jsx("br",{}),t.jsx("span",{role:"status",className:!u&&((h=e.occurrences[0])==null?void 0:h.state)==="failed"?"critical":void 0,children:u?"Running…":Vte(e)})]}),i?t.jsxs("div",{className:"ui-card-foot",children:[e.schedule?t.jsxs(ne,{children:[t.jsx(le,{inline:!0,label:"Misfire policy",children:t.jsx("select",{value:e.schedule.misfirePolicy,onChange:f=>s(T.setMisfirePolicy(e.id,f.target.value)),children:Hte.map(f=>t.jsx("option",{value:f,children:f},f))})}),t.jsx("span",{className:"muted",children:"What a week asleep does: replay every instant, coalesce into one, keep only the latest, or skip past a deadline."})]}):null,t.jsx(we,{title:"Prompt",children:t.jsx(en,{children:e.prompt})}),t.jsx(we,{title:"Recent occurrences",children:t.jsx(lt,{flush:!0,children:e.occurrences.length===0?t.jsx(Ce,{children:"Never run."}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Scheduled"}),t.jsx("th",{children:"State"}),t.jsx("th",{children:"Finished"}),t.jsx("th",{children:"Detail"})]})}),t.jsx("tbody",{children:e.occurrences.map(f=>t.jsxs("tr",{children:[t.jsxs("td",{className:"nowrap",children:[Nt(f.scheduledAt,n)," ",f.manual?t.jsx(Ae,{children:"run now"}):null]}),t.jsx("td",{children:t.jsx(kd,{state:f.state})}),t.jsx("td",{className:"nowrap",children:Nt(f.finishedAt,n)}),t.jsxs("td",{className:f.error?"critical":"muted",children:[f.error?pr(f.error,120):null,f.runConversationId?t.jsx("a",{href:`#/conversations/${f.runConversationId}`,children:"transcript"}):null]})]},f.id))})]})})})]}):null]})}function qte(e,n){const s=`${e} offer${e===1?"":"s"}`,r=n?` from ${n}`:"";return`Dismiss ${s}${r}? They stop appearing everywhere. Nothing runs, and you can still see them under "Dismissed and lapsed" for a week.`}function SO({ids:e,agentName:n,onDone:s}){const r=e.length,[a,i]=d.useState(!1),[l,o]=d.useState(!1);return r<=0?null:a?t.jsxs("span",{className:"ui-row",children:[t.jsx("span",{className:"muted",children:qte(r,n)}),t.jsx(A,{size:"sm",variant:"danger",disabled:l,onClick:()=>{o(!0),T.dismissOffers(e).then(()=>{i(!1),s()}).finally(()=>o(!1))},children:`Dismiss ${r}`}),t.jsx(A,{size:"sm",variant:"ghost",disabled:l,onClick:()=>i(!1),children:"Keep them"})]}):t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>i(!0),children:"Dismiss all"})}function CO({embedded:e,agentId:n,agentName:s}){const{data:r,error:a,reload:i}=ve(()=>T.offers(),[],2e4),l=j=>!n||j.agentId===n,o=((r==null?void 0:r.offers)??[]).filter(l),c=((r==null?void 0:r.closed)??[]).filter(l),[u,h]=d.useState(null),[f,m]=d.useState(null),[p,x]=d.useState(null),g=async(j,v)=>{h(null),m(j);try{const y=await T.takeOffer(j);x(y.jobId?`On it — ${v}. Started as job ${y.jobId}.`:`Taken — ${v}. No worker is running here, so nothing has started yet.`),i()}catch(y){h(y instanceof Error?y.message:String(y))}finally{m(null)}},b=async(j,v)=>{h(null),m(j);try{await T.dismissOffer(j),x(`Dismissed — ${v}. It will not come back.`),i()}catch(y){h(y instanceof Error?y.message:String(y))}finally{m(null)}};return t.jsxs(Rs,{embedded:e,title:"Offers",lede:"Things an agent already worked out that you might want done. Taking one asks that agent the sentence it wrote. It authorizes nothing, and anything that would leave this machine still comes back to you as an approval.",children:[t.jsx(re,{message:a??u}),p?t.jsx(Q,{tone:"good",role:"status",children:p}):null,o.length>0?t.jsxs(ne,{children:[t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsx(SO,{ids:o.map(j=>j.id),agentName:s,onDone:()=>{x(null),i()}})]}):null,!r||o.length===0?t.jsx(ms,{icon:"bulb",title:"Nothing on offer",children:"When an agent works out something you might want done, it waits here."}):t.jsx(de,{children:o.map(j=>t.jsx(Wr,{tone:"accent",title:j.label,meta:t.jsxs(t.Fragment,{children:[t.jsx(Ae,{mono:!0,children:j.agentId}),t.jsxs("span",{className:"muted",children:["expires ",Xe(j.expiresAt)]})]}),actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{size:"sm",variant:"ghost",disabled:f===j.id,onClick:()=>void b(j.id,j.label),children:"Not now"}),t.jsx(A,{variant:"accent",size:"sm",disabled:f===j.id,onClick:()=>void g(j.id,j.label),children:"Take"})]}),children:t.jsx("p",{className:"ui-card-meta",children:j.prompt})},j.id))}),c.length>0?t.jsxs(Kt,{summary:`Dismissed and lapsed (${c.length})`,boxed:!0,children:[t.jsx(lt,{flush:!0,children:t.jsx(yt,{children:c.map(j=>t.jsx(gt,{title:j.label,sub:`${j.agentId} — ${TU(j)}`,side:Xe(j.dismissedAt??j.lapsedAt??j.createdAt)},j.id))})}),t.jsx("p",{className:"muted",children:"These stop being shown a week after they closed."})]}):null]})}function Yte(e){var r,a;const n=ve(()=>T.agents(),[e]),s=(a=(r=n.data)==null?void 0:r.catalogue)==null?void 0:a[e];return{entry:s?{...s,agentId:e}:void 0,reload:n.reload}}function Qte({entry:e,navigate:n,onUpdated:s}){const[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState(!1),u=e.delisted?null:e.drift==="update"?"update":e.drift==="edited-update"?"edited":null,h=()=>{c(!0),l(null),T.catalogue().then(f=>{const m=f.agents.find(p=>p.name===e.package);m?a(m):l(f.unavailable??`The catalogue no longer lists ${e.title}.`)}).catch(f=>l(f instanceof pe?f.message:String(f))).finally(()=>c(!1))};return t.jsxs(t.Fragment,{children:[t.jsxs("p",{className:"agent-catalogue-line","data-testid":"agent-catalogue-line","data-delisted":e.delisted?"true":void 0,children:[e.delisted?t.jsx("span",{children:"No longer in the catalogue"}):t.jsx("a",{href:En(e.package),onClick:f=>{f.preventDefault(),n(En(e.package))},children:"From the catalogue"}),t.jsx("span",{"aria-hidden":"true",children:" · "}),t.jsxs("span",{children:[e.title," ",e.via?`(was ${e.via.split("/")[1]??e.via})`:Lo(e.version)]}),e.delisted?t.jsx("span",{className:"muted",children:" · it keeps working; no updates will come"}):null,u?t.jsx(A,{size:"sm",variant:u==="update"?"accent":void 0,disabled:o,onClick:h,children:u==="update"&&e.latest?`Update to ${Lo(e.latest)}`:u==="update"?"Update":"See what changed"}):null]}),i?t.jsx(re,{message:i}):null,r?t.jsx(UP,{entry:r,agentId:e.agentId,onClose:()=>a(null),onUpdated:s}):null]})}function Jte(e){return typeof e=="string"?e:e.name??e.id??"a mission"}function Xte({agentId:e,name:n,navigate:s}){const[r,a]=d.useState(!1),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState(!1),[f,m]=d.useState(null),p=()=>{a(!1),m(null),s(Mt)},x=k=>k instanceof pe?k.message:String(k),g=()=>{a(!0),c(null),l(null),T.agentRemovePreview(e).then(l).catch(k=>c(x(k)))},b=()=>{h(!0),c(null),T.removeAgent(e).then(k=>{var w;window.dispatchEvent(new Event(Ts));const N=(w=k.result)==null?void 0:w.delegateListsNotUpdated;if(Array.isArray(N)&&N.length>0){m(N.map(S=>String((S==null?void 0:S.handle)??(S==null?void 0:S.id)??"")));return}a(!1),s(Mt)}).catch(k=>c(x(k))).finally(()=>h(!1))},j=(i==null?void 0:i.pausesMissions.map(Jte))??[],v=(i==null?void 0:i.unusedPlugins)??[],y=((i==null?void 0:i.handedWorkBy)??[]).map(k=>`@${k}`);return t.jsxs(lt,{children:[t.jsxs(ne,{children:[t.jsxs("div",{className:"agent-remove-text",children:[t.jsx("strong",{children:"Remove from team"}),t.jsx("span",{className:"muted",children:"Its file goes to the trash folder; what it remembers and its conversations stay."})]}),t.jsxs(A,{variant:"danger-ghost",onClick:g,children:["Remove ",n,"…"]})]}),r&&f?t.jsx(Vt,{title:`${n} is off your team`,onClose:p,foot:t.jsx(A,{variant:"accent",onClick:p,children:"Done"}),children:t.jsxs(Q,{tone:"warning",title:"Cleanup is incomplete",role:"status",children:["The delegate list of ",wn(f.map(k=>`@${k}`))," could not be updated and still names it. That entry reaches nobody; edit the list to remove it."]})}):r?t.jsxs(Vt,{title:`Remove ${n} from your team?`,onClose:()=>a(!1),foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>a(!1),children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:u||!i,onClick:b,children:"Remove from team"})]}),children:[t.jsx(re,{message:o}),i?t.jsxs("div",{className:"ui-stack","data-testid":"remove-preview",children:[t.jsxs("p",{children:["@",i.handle,"’s folder moves to the trash folder, so it can be brought back by hand."]}),j.length>0?t.jsxs("p",{children:["Its ",j.length===1?"mission":"missions"," ",wn(j)," ",j.length===1?"is":"are"," paused."]}):null,y.length>0?t.jsxs("p",{children:[wn(y)," will stop handing work to it."]}):null,v.length>0?t.jsxs("p",{children:["No other agent uses ",wn(v.map(Np)),"; it stays installed."," ",t.jsxs("a",{href:We("plugins"),onClick:k=>{k.preventDefault(),a(!1),s(We("plugins"))},children:["Remove ",v.length===1?"it":"them"," in Settings → Plugins"]}),"."]}):null]}):o?null:t.jsx("p",{className:"muted",children:"Reading what it would change…"})]}):null]})}const EO=["January","February","March","April","May","June","July","August","September","October","November","December"],mm=e=>e?{day:String(e.day),month:String(e.month),year:e.year?String(e.year):""}:{day:"",month:"",year:""};function pm(e){if(e.day===""&&e.month===""&&e.year.trim()==="")return null;if(e.day===""||e.month==="")return"incomplete";const s=e.year.trim();return s!==""&&!/^\d{4}$/.test(s)?"incomplete":{day:Number(e.day),month:Number(e.month),year:s===""?null:Number(s)}}const Zte=(e,n)=>(e??null)===(n??null)||!!e&&!!n&&e.day===n.day&&e.month===n.month&&(e.year??null)===(n.year??null),AO=(e,n=!0)=>`${e.day} ${EO[e.month-1]}${n&&e.year?` ${e.year}`:""}`;function vy({label:e,hint:n,value:s,onChange:r}){const a=pm(s)==="incomplete";return t.jsx(le,{group:!0,label:e,hint:a?"A day and a month; the year is optional, four digits.":n,children:t.jsxs("div",{className:"day-month",children:[t.jsxs("select",{"aria-label":`${e}: day`,value:s.day,onChange:i=>r({...s,day:i.target.value}),children:[t.jsx("option",{value:"",children:"Day"}),Array.from({length:31},(i,l)=>t.jsx("option",{value:String(l+1),children:l+1},l+1))]}),t.jsxs("select",{"aria-label":`${e}: month`,value:s.month,onChange:i=>r({...s,month:i.target.value}),children:[t.jsx("option",{value:"",children:"Month"}),EO.map((i,l)=>t.jsx("option",{value:String(l+1),children:i},i))]}),t.jsx("input",{"aria-label":`${e}: year (optional)`,inputMode:"numeric",placeholder:"Year",maxLength:4,value:s.year,onChange:i=>r({...s,year:i.target.value.replace(/\D/g,"")})})]})})}const ene=8e3;function tne(e){return e.kind==="policy"&&e.state==="open"&&String(e.payload.plugin??"")==="memory"&&e.ruleKind==="person"}function nne(e){if(!e.next)return null;const n=e.next.what==="birthday"?"Birthday":"Anniversary",s=e.next.turning===null?"":e.next.what==="birthday"?` · turns ${e.next.turning}`:` · ${e.next.turning} years`;if(e.next.inDays===0)return`${n} today${s}`;if(e.next.inDays===1)return`${n} tomorrow${s}`;if(e.next.inDays<=14)return`${n} in ${e.next.inDays} days${s}`;if(e.next.inDays<=31)return`${n} in ${Math.round(e.next.inDays/7)} weeks`;const r=e[e.next.what];return r?`${n} ${AO(r,!1)}`:null}function gE({name:e,small:n}){return t.jsx("span",{className:"person-face","data-size":n?"sm":void 0,"aria-hidden":"true",children:e.trim().charAt(0).toUpperCase()})}function sne(){var b,j;const e=ve(()=>T.people(),[],6e4),n=ve(()=>T.proposals(),[],6e4),[s,r]=d.useState(null),[a,i]=d.useState(null),[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(null),m=async(v,y)=>{f(v),u(null);try{return await y(),e.reload(),n.reload(),!0}catch(k){return u(k instanceof pe?k.message:String(k)),!1}finally{f(null)}},p=(((b=n.data)==null?void 0:b.open)??[]).filter(tne),x=((j=e.data)==null?void 0:j.people)??[],g=v=>[v.relationship,v.birthday?`born ${AO(v.birthday)}`:null].filter(Boolean).join(" · ")||"No details yet";return t.jsxs(de,{gap:"lg",children:[c?t.jsx(Q,{tone:"critical",children:c}):null,p.length>0?t.jsxs(Q,{tone:"accent",title:p.length===1?"One person to keep?":`${p.length} people to keep?`,children:[t.jsx("p",{children:"Your agents and your notes name them. Keep them as people and every agent knows who they are; nothing is added until you say so."}),t.jsx(lt,{flush:!0,children:t.jsx(yt,{children:p.map(v=>{var y;return t.jsx(gt,{lead:t.jsx(gE,{name:String(((y=v.payload.matcher)==null?void 0:y.person)??"?"),small:!0}),title:String(v.payload.action??""),sub:t.jsx("span",{className:"person-from",children:v.why}),side:t.jsxs("span",{className:"person-side",children:[t.jsx(A,{variant:"ghost",size:"sm",disabled:h!==null,onClick:()=>void m(`discard:${v.id}`,()=>T.discardProposal(v.id,"Not a person")),children:"Not a person"}),t.jsx(A,{size:"sm",disabled:h!==null,onClick:()=>void m(`keep:${v.id}`,()=>T.keepProposal(v.id)),children:"Keep"})]})},v.id)})})}),p.length>1?t.jsx(ne,{align:"end",children:t.jsxs(A,{variant:"accent",size:"sm",disabled:h!==null,onClick:()=>void m("keep-all",()=>T.keepAllProposals(p.map(v=>v.id))),children:["Keep all (",p.length,")"]})}):null]}):null,t.jsxs(we,{title:"People",aside:"every agent knows who they are",panel:!0,flush:!0,actions:t.jsx(A,{variant:"accent",size:"sm",onClick:()=>r("new"),children:"Add a person"}),children:[e.data?x.length===0?t.jsx(Ce,{children:"Nobody yet. Tell any agent “Marion is my wife, her birthday is 14 March”, or add someone here. Agents ask before they add anyone you did not tell them about."}):t.jsx(yt,{children:x.map(v=>{const y=nne(v);return t.jsx(gt,{label:`${v.name}: edit`,onClick:()=>r(v),lead:t.jsx(gE,{name:v.name}),title:v.name,sub:g(v),side:t.jsxs("span",{className:"person-side",children:[y?t.jsx(Ae,{tone:v.next&&v.next.inDays<=7?"accent":void 0,children:y}):null,v.reminders?t.jsx("span",{className:"person-bell",title:"Reminders on","aria-label":"Reminders on",children:t.jsx(se,{name:"bell",size:14})}):null]})},v.id)})}):t.jsx(Ce,{children:e.error??"Loading…"}),t.jsx("p",{className:"person-note",children:"Agents read each person in one line: name, who they are to you, how to address them, their dates. Notes are read only when an agent looks the person up."})]}),s?t.jsx(rne,{person:s==="new"?null:s,onClose:()=>r(null),onSaved:()=>{r(null),e.reload()},onForget:v=>{r(null),i(v)}}):null,a?t.jsx(Qe,{title:`Forget ${a.name}?`,onClose:()=>i(null),foot:t.jsxs(ne,{children:[t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:()=>i(null),children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:h!==null,onClick:()=>{const v=a;m(`forget:${v.id}`,()=>T.forgetPerson(v.id)).then(y=>{i(null),y&&o({id:Date.now(),person:v})})},children:"Forget"})]}),children:t.jsxs("p",{children:["Every agent stops knowing who ",a.name," is",a.reminders!==null?", and the reminders for their dates are removed":"",". Notes that mention them stay in Notes."]})}):null,l?t.jsx(Xu,{title:`Forgot ${l.person.name}.`,duration:ene,onUndo:()=>{const v=l.person;m(`restore:${v.id}`,()=>T.restorePerson(v.id))},onGone:()=>o(null)},l.id):null]})}function rne({person:e,onClose:n,onSaved:s,onForget:r}){const[a,i]=d.useState((e==null?void 0:e.name)??""),[l,o]=d.useState((e==null?void 0:e.relationship)??""),[c,u]=d.useState((e==null?void 0:e.addressAs)??""),[h,f]=d.useState(mm(e==null?void 0:e.birthday)),[m,p]=d.useState(mm(e==null?void 0:e.anniversary)),[x,g]=d.useState((e==null?void 0:e.notes)??""),[b,j]=d.useState((e==null?void 0:e.reminders)===!0),[v,y]=d.useState(!1),[k,N]=d.useState(null),w=pm(h),S=pm(m),C=w==="incomplete"||S==="incomplete",E=w!==null&&w!=="incomplete"||S!==null&&S!=="incomplete",$=async()=>{if(!C){y(!0),N(null);try{const R=P=>P.trim()===""?null:P.trim();await T.savePerson({...e?{id:e.id}:{},name:a.trim(),relationship:R(l),addressAs:R(c),birthday:w,anniversary:S,notes:R(x),reminders:E&&b}),s()}catch(R){N(R instanceof pe?R.message:String(R))}finally{y(!1)}}};return t.jsx(Qe,{title:e?e.name:"Add a person",onClose:n,foot:t.jsxs(ne,{children:[e?t.jsx(A,{variant:"danger-ghost",disabled:v,onClick:()=>r(e),children:"Forget…"}):null,t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:v||a.trim()===""||C,onClick:()=>void $(),children:v?"Saving…":"Save"})]}),children:t.jsxs(de,{gap:"lg",children:[t.jsxs(Ks,{children:[t.jsx(le,{label:"Name",children:t.jsx("input",{value:a,maxLength:80,placeholder:"Marion",autoFocus:!e,onChange:R=>i(R.target.value)})}),t.jsx(le,{label:"Who they are to you",children:t.jsx("input",{value:l,maxLength:60,placeholder:"wife, brother, accountant…",onChange:R=>o(R.target.value)})})]}),t.jsx(le,{label:"How to address them",hint:"What agents call them when they write to you about them, or to them for you.",children:t.jsx("input",{value:c,maxLength:80,placeholder:a.trim()||"Mum, Dr Lee…",onChange:R=>u(R.target.value)})}),t.jsx(vy,{label:"Birthday",hint:"The year is optional.",value:h,onChange:f}),t.jsx(vy,{label:"Anniversary",hint:"A wedding, the day you met: the year is optional.",value:m,onChange:p}),t.jsx(le,{label:"Notes",hint:"Gift ideas, allergies, what they are into. Read when an agent looks them up.",children:t.jsx("textarea",{rows:3,maxLength:1e3,value:x,onChange:R=>g(R.target.value)})}),t.jsxs("div",{className:"person-remind","data-off":E?void 0:"true",children:[t.jsxs("div",{className:"person-remind-text",children:[t.jsx("div",{className:"person-remind-title",children:"Remind me of their dates"}),t.jsx("div",{className:"ui-field-hint",children:E?"A week before and on the day, from the front desk, with an offer to find something.":"Add a birthday or an anniversary first."})]}),t.jsx(oc,{checked:E&&b,disabled:!E,onChange:j,label:"Remind me of their dates"})]}),k?t.jsx(Q,{tone:"critical",children:k}):null]})})}const ane=["fact","observation","todo"];function $O({embedded:e,agents:n,timezone:s,agentId:r,initialTab:a="people"}){const{data:i,error:l,reload:o}=ve(()=>T.memory(r),[r],3e4),[c,u]=d.useState(null),[h,f]=d.useState(null),[m,p]=d.useState(null),[x,g]=d.useState(a),b=S=>{var C;return S==="shared"?"Everyone":((C=n.find(E=>E.id===S))==null?void 0:C.name)??S},j=async S=>{p(null);try{await S,o()}catch(C){p(C instanceof pe?C.message:String(C))}},v={nameOf:b,timezone:s,onChangePreference:S=>u({key:S.key,scope:S.scope}),onForgetPreference:S=>void j(T.forgetPreference({key:S.key,scope:S.scope})),onEditNote:S=>f(S),onForgetNote:S=>void j(T.forgetNote(S.id))},y=r?b(r):"",k=r&&i?{preferences:i.preferences.filter(S=>S.scope===r),notes:i.notes.filter(S=>S.scope===r)}:null,N=r&&i?{preferences:i.preferences.filter(S=>S.scope==="shared"),notes:i.notes.filter(S=>S.scope==="shared")}:null,w=t.jsx(A,{variant:"accent",size:"sm",onClick:()=>u({key:"",scope:r??"shared"}),children:"Add a preference"});return t.jsxs(Rs,{embedded:e,title:"Memory",lede:"What your agents have kept about you. Correct anything here; they see the change on their next turn.",children:[t.jsx(re,{message:l??m}),k&&N?t.jsxs(de,{gap:"lg",children:[t.jsx(we,{title:"Preferences",aside:`what you told ${y} alone`,actions:w,panel:!0,flush:!0,children:t.jsx(vx,{preferences:k.preferences,empty:`Nothing stated to ${y} alone yet.`,...v})}),t.jsx(we,{title:"Notes",aside:`what ${y} wrote down for itself`,panel:!0,flush:!0,children:t.jsx(jx,{notes:k.notes,empty:`${y} has kept no private notes yet.`,...v})}),t.jsx(Kt,{summary:`Shared with every agent, which ${y} also reads · ${N.preferences.length} preferences, ${N.notes.length} notes`,children:t.jsxs(de,{gap:"lg",children:[t.jsx(we,{title:"Shared preferences",panel:!0,flush:!0,children:t.jsx(vx,{preferences:N.preferences,empty:"No shared preferences.",...v})}),t.jsx(we,{title:"Shared notes",panel:!0,flush:!0,children:t.jsx(jx,{notes:N.notes,empty:"No shared notes.",...v})})]})})]}):t.jsxs(de,{gap:"lg",children:[t.jsx(cc,{label:"Memory",children:[["people","People"],["preferences","Preferences",i==null?void 0:i.preferences.length],["notes","Notes",i==null?void 0:i.notes.length]].map(([S,C,E])=>t.jsx(xl,{href:`${We("memory")}?tab=${S}`,active:x===S,...E?{count:E}:{},onClick:$=>{$.preventDefault(),g(S)},children:C},S))}),x==="people"?t.jsx(sne,{}):null,x==="preferences"?t.jsx(we,{title:"Preferences",aside:"what you said you want, one current value each",actions:w,panel:!0,flush:!0,children:i?t.jsx(vx,{preferences:i.preferences,empty:'Nothing stated yet. Tell any agent "from now on…" or add one here.',...v}):t.jsx(Ce,{children:"Loading…"})}):null,x==="notes"?t.jsx(we,{title:"Notes",aside:"what an agent wrote down, with who wrote it",panel:!0,flush:!0,children:i?t.jsx(jx,{notes:i.notes,empty:"No notes yet. An agent writes one when you state something durable about your life.",...v}):t.jsx(Ce,{children:"Loading…"})}):null]}),c?t.jsx(ine,{agents:n,existing:(i==null?void 0:i.preferences)??[],initial:c,onClose:()=>u(null),onSave:async S=>{await j((async()=>{await T.setPreference(S),c.key===S.key&&c.scope!==S.scope&&await T.forgetPreference({key:c.key,scope:c.scope})})()),u(null)}}):null,h?t.jsx(lne,{note:h,agents:n,onClose:()=>f(null),onSave:S=>j(T.updateNote(h.id,S)).then(()=>f(null))}):null]})}function vx({preferences:e,empty:n,nameOf:s,onChangePreference:r,onForgetPreference:a}){return e.length===0?t.jsx(Ce,{children:n}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Preference"}),t.jsx("th",{children:"Value"}),t.jsx("th",{children:"Who sees it"}),t.jsx("th",{className:"num",children:"Since"}),t.jsx("th",{})]})}),t.jsx("tbody",{children:e.map(i=>t.jsxs("tr",{children:[t.jsx("td",{className:"mono",children:i.key}),t.jsx("td",{children:i.value}),t.jsx("td",{children:t.jsx(TO,{scope:i.scope,name:s(i.scope)})}),t.jsxs("td",{className:"num muted",title:i.updatedAt??"",children:[i.updatedAt?Xe(i.updatedAt,Date.now()):"",i.revision>1?` · rev ${i.revision}`:""]}),t.jsx("td",{className:"num",children:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",onClick:()=>r(i),title:"Store a new value for this key",children:"Change"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>a(i),children:"Forget"})]})})]},`${i.scope}:${i.key}`))})]})}function jx({notes:e,empty:n,nameOf:s,timezone:r,onEditNote:a,onForgetNote:i}){return e.length===0?t.jsx(Ce,{children:n}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Note"}),t.jsx("th",{children:"Kind"}),t.jsx("th",{children:"Who sees it"}),t.jsx("th",{children:"Written by"}),t.jsx("th",{className:"num",children:"When"}),t.jsx("th",{})]})}),t.jsx("tbody",{children:e.map(l=>t.jsxs("tr",{children:[t.jsx("td",{className:"memory-note",children:l.content}),t.jsx("td",{children:t.jsx(Ae,{tone:l.kind==="todo"?"warning":l.kind==="fact"?"good":void 0,children:l.kind})}),t.jsx("td",{children:t.jsx(TO,{scope:l.scope,name:s(l.scope)})}),t.jsx("td",{className:"muted",children:l.createdByAgent?s(l.createdByAgent):""}),t.jsxs("td",{className:"num muted",title:l.createdAt??"",children:[l.createdAt?Xe(l.createdAt,Date.now()):"",l.expiresAt?t.jsxs("span",{className:"memory-expires",children:[" · until ",Hs(new Date(l.expiresAt),r,{year:!0,compact:!0})]}):null]}),t.jsx("td",{className:"num",children:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",onClick:()=>a(l),children:"Edit"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>i(l),children:"Forget"})]})})]},l.id))})]})}function TO({scope:e,name:n}){return t.jsx(Ae,{tone:e==="shared"?"accent":void 0,title:e==="shared"?"Every agent reads this":`Only ${n} reads this`,children:n})}function RO({value:e,agents:n,onChange:s}){return t.jsxs("select",{value:e,onChange:r=>s(r.target.value),children:[t.jsx("option",{value:"shared",children:"Everyone"}),n.map(r=>t.jsxs("option",{value:r.id,children:["Only ",r.name]},r.id))]})}function ine({agents:e,existing:n,initial:s,onClose:r,onSave:a}){const i=n.find(v=>v.key===s.key&&v.scope===s.scope),[l,o]=d.useState(s.key),[c,u]=d.useState((i==null?void 0:i.value)??""),[h,f]=d.useState(s.scope),[m,p]=d.useState(!1),x=l.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,""),g=n.find(v=>v.key===x&&v.scope===h),b=!i||x!==i.key||c.trim()!==i.value||h!==i.scope,j=x!==""&&c.trim()!==""&&b;return t.jsx(Qe,{title:"A preference",onClose:r,children:t.jsxs(de,{children:[t.jsx(Q,{children:'A preference is a standing choice, in your words: "paid biweekly on Thursdays", "answers short, numbers first". Storing the same key again records a correction and keeps the old value in the history.'}),t.jsx(le,{label:"Key",hint:x&&x!==l?`Stored as ${x}`:"Short and stable, like reporting_currency or tone.",children:t.jsx("input",{value:l,autoFocus:s.key==="",onChange:v=>o(v.target.value),placeholder:"reporting_currency"})}),t.jsx(le,{label:"Value",children:t.jsx("textarea",{rows:3,value:c,maxLength:2e3,autoFocus:s.key!=="",onChange:v=>u(v.target.value),placeholder:"EUR"})}),t.jsx(le,{label:"Who should know",hint:"Shared reaches every agent. Private stays with one.",children:t.jsx(RO,{value:h,agents:e,onChange:f})}),g&&g!==i?t.jsxs(Q,{tone:"warning",children:['This replaces the value already stored for this key here, "',g.value,'" (revision ',g.revision,")."]}):null,i&&h!==i.scope?t.jsxs(Q,{children:["It moves: the copy for ",i.scope==="shared"?"everyone":"that agent"," is retired and this one takes over."]}):null,t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:r,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!j||m,onClick:()=>{p(!0),a({key:x,value:c.trim(),scope:h}).finally(()=>p(!1))},children:i?"Save change":"Save"})]})]})})}function lne({note:e,agents:n,onClose:s,onSave:r}){var p;const[a,i]=d.useState(e.content),[l,o]=d.useState(e.scope),[c,u]=d.useState(e.kind),[h,f]=d.useState(!1),m=a.trim()!==e.content||l!==e.scope||c!==e.kind;return t.jsx(Qe,{title:"A note",onClose:s,children:t.jsxs(de,{children:[t.jsx(le,{label:"What it says",hint:"One sentence that makes sense months from now, on its own.",children:t.jsx("textarea",{rows:4,value:a,maxLength:2e3,autoFocus:!0,onChange:x=>i(x.target.value)})}),t.jsxs(Ks,{children:[t.jsx(le,{label:"Kind",children:t.jsx("select",{value:c,onChange:x=>u(x.target.value),children:ane.map(x=>t.jsx("option",{value:x,children:x},x))})}),t.jsx(le,{label:"Who sees it",children:t.jsx(RO,{value:l,agents:n,onChange:o})})]}),e.createdByAgent?t.jsxs("p",{className:"muted",children:["Written by ",((p=n.find(x=>x.id===e.createdByAgent))==null?void 0:p.name)??e.createdByAgent,e.createdAt?`, ${Xe(e.createdAt,Date.now())}`:"",". Editing keeps that record."]}):null,t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:s,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!m||a.trim()===""||h,onClick:()=>{f(!0);const x={};a.trim()!==e.content&&(x.content=a.trim()),l!==e.scope&&(x.scope=l),c!==e.kind&&(x.kind=c),r(x).finally(()=>f(!1))},children:"Save"})]})]})})}const gm="host.exec",one={bundle:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M3.4 6.4 10 3.2l6.6 3.2v7.2L10 16.8l-6.6-3.2Z"}),t.jsx("path",{d:"M3.4 6.4 10 9.6l6.6-3.2M10 9.6v7.2"})]})],folder:[16,1.5,t.jsx("path",{d:"M2.2 4.4a1 1 0 0 1 1-1h3l1.4 1.6h5.2a1 1 0 0 1 1 1v6.6a1 1 0 0 1-1 1H3.2a1 1 0 0 1-1-1Z"})],doc:[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M4.4 1.9h4.8l3 3v8.2a1 1 0 0 1-1 1H4.4a1 1 0 0 1-1-1V2.9a1 1 0 0 1 1-1Z"}),t.jsx("path",{d:"M9 2v3h3"})]})],script:[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"1.9",y:"2.6",width:"12.2",height:"10.8",rx:"1.4"}),t.jsx("path",{d:"m4.6 6.4 2 1.6-2 1.6M8.4 10h3"})]})],font:[16,1.5,t.jsx("path",{d:"M3.4 13 8 3l4.6 10M5 9.6h6"})],image:[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("rect",{x:"2",y:"2.6",width:"12",height:"10.8",rx:"1.4"}),t.jsx("circle",{cx:"5.8",cy:"6.2",r:"1.2"}),t.jsx("path",{d:"m2.4 12 3.8-3.6 2.6 2.4 2-1.8 3 2.6"})]})],upload:[20,1.6,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M10 13.2V3.6M6.2 7.2 10 3.4l3.8 3.8"}),t.jsx("path",{d:"M3.6 12.6v2.6a1.4 1.4 0 0 0 1.4 1.4h10a1.4 1.4 0 0 0 1.4-1.4v-2.6"})]})],shield:[16,1.5,t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M8 1.8 13 3.6v4c0 3-2.1 5.4-5 6.6-2.9-1.2-5-3.6-5-6.6v-4Z"}),t.jsx("path",{d:"m5.8 8 1.6 1.6 2.8-3"})]})]};function fi({name:e,size:n}){const[s,r,a]=one[e];return t.jsx("svg",{width:n??s,height:n??s,viewBox:`0 0 ${s} ${s}`,"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:r,strokeLinecap:"round",strokeLinejoin:"round",children:a})}function Mk({size:e}){return t.jsx("span",{className:"ui-app-icon","data-size":e,"aria-hidden":"true",children:t.jsx(fi,{name:"bundle",size:e?22:18})})}const cne={skill:"doc",script:"script",font:"font",image:"image",data:"doc",template:"doc",other:"doc"},une={skill:"The skill",script:"Script",font:"Font",image:"Picture",data:"Data",template:"Template",other:"File"};function dne(e){const n=[],s=new Set,r=[...e].sort((a,i)=>a.path==="SKILL.md"?-1:i.path==="SKILL.md"?1:a.path.localeCompare(i.path));for(const a of r){const i=a.path.split("/");i.slice(0,-1).forEach((l,o)=>{const c=i.slice(0,o+1).join("/");s.has(c)||(s.add(c),n.push({dir:c,name:`${i[o]}/`,depth:o}))}),n.push({file:a,name:i[i.length-1],depth:i.length-1})}return n}function IO({files:e,selected:n,onSelect:s}){return t.jsx("ul",{className:"skb-tree",role:s?"listbox":void 0,"aria-label":"Files in the bundle",children:dne(e).map(r=>"dir"in r?t.jsxs("li",{className:"skb-node","data-dir":"true","data-depth":Math.min(r.depth,6),children:[t.jsx(fi,{name:"folder",size:14}),t.jsx("span",{className:"skb-name",children:r.name})]},`d:${r.dir}`):t.jsxs("li",{className:"skb-node","data-depth":Math.min(r.depth,6),"data-kind":r.file.kind,"data-selected":n===r.file.path?"true":void 0,role:s?"option":void 0,"aria-selected":s?n===r.file.path:void 0,tabIndex:s?0:void 0,onClick:s?()=>s(r.file.path):void 0,onKeyDown:s?a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),s(r.file.path))}:void 0,children:[t.jsx(fi,{name:cne[r.file.kind],size:14}),t.jsx("span",{className:"skb-name",title:r.file.path,children:r.name}),r.file.kind==="script"?t.jsx("span",{className:"skb-flag",children:r.file.setup?"setup":"script"}):null,t.jsx("span",{className:"skb-size",children:aa(r.file.size)})]},r.file.path))})}function hne(e,n){const s=e.setup?"A setup script. It didn’t run when you uploaded the bundle and never runs on its own. ":"";return n.untrusted?`${s}It can’t run until you mark the bundle as yours. Then it runs only when an agent you allow runs it with ${gm}, and asks you first.`:n.run.length?`${s}It runs only when ${ki(n.run)} ${n.run.length>1?"run":"runs"} it with ${gm}, and asks you first. It can read this bundle’s files, not change them.`:n.held?`${s}Nobody holding this skill can run scripts, so it never runs.`:`${s}It runs only when an agent you allow runs it, and asks you first. It can read the bundle’s files, not change them.`}function PO({file:e,skillView:n,read:s,imageUrl:r,reach:a}){const[i,l]=d.useState(null);if(d.useEffect(()=>{if(e.kind==="skill")return;let c=!0;return l({path:e.path}),s(e.path).then(u=>{c&&l({path:e.path,file:u.file})},u=>{c&&l({path:e.path,error:u instanceof pe?u.message:String(u)})}),()=>{c=!1}},[e.path,e.kind]),e.kind==="skill")return t.jsx("div",{className:"skb-view",children:n});const o=(i==null?void 0:i.path)===e.path?i.file:void 0;return t.jsxs("div",{className:"skb-view",children:[t.jsxs("div",{className:"skills-text-bar",children:[t.jsxs("span",{className:"skb-view-kind",children:[une[e.kind]," · ",aa(e.size)]}),t.jsx("span",{className:"skills-file mono",children:e.path})]}),e.kind==="script"?t.jsxs("p",{className:"skb-script-note",children:[t.jsx(fi,{name:"shield",size:14}),t.jsx("span",{children:hne(e,a)})]}):null,i!=null&&i.error?t.jsx(re,{message:i.error}):e.kind==="font"?t.jsxs("div",{className:"skb-blank",children:[t.jsx(fi,{name:"font",size:20}),t.jsx("span",{children:"A font. The skill’s scripts or documents set text with it; there’s nothing to read here."})]}):e.kind==="image"&&(o!=null&&o.image)?t.jsx("div",{className:"skb-picture",children:t.jsx("img",{src:r(e.path),alt:e.path})}):o?o.binary||o.text===void 0?t.jsxs("div",{className:"skb-blank",children:[t.jsx(fi,{name:"doc",size:20}),t.jsxs("span",{children:["Not text, so there’s nothing to read here. ",aa(e.size),"."]})]}):t.jsx(en,{label:e.path,children:o.text}):t.jsx("p",{className:"skills-note",children:"Reading the file…"})]})}function MO({children:e}){return t.jsx("div",{className:"skb-files",children:e})}function OO({children:e}){return t.jsxs("p",{className:"skb-promise",children:[t.jsx(fi,{name:"shield",size:16}),t.jsx("span",{children:e})]})}const fne="Up to 20 MB and 500 files. Nothing in it runs when you upload it.";function mne({initialRefusal:e,onClose:n,onMd:s,onStaged:r}){var g;const[a,i]=d.useState(!1),[l,o]=d.useState(e??null),[c,u]=d.useState(null),[h,f]=d.useState(null),m=d.useRef(null),p=b=>{if(!(!b||c)){if(f(null),/\.md$/i.test(b.name)){s(b);return}if(!/\.zip$/i.test(b.name)){o({kind:"notzip",filename:b.name});return}if(b.size>Jq){o({kind:"big",filename:b.name,size:b.size});return}u(b.name),gn.uploadBundle(b).then(j=>r(j),j=>{u(null),j instanceof s2?o(j.refusal):f(j instanceof pe?j.message:String(j))})}},x=l?iY(l):null;return t.jsxs(Qe,{title:"Upload a skill",onClose:n,children:[t.jsx("input",{ref:m,type:"file",accept:".zip,.md,application/zip,text/markdown",hidden:!0,"data-testid":"skill-drop-file",onChange:b=>{var j;p((j=b.target.files)==null?void 0:j[0]),b.target.value=""}}),t.jsxs("div",{className:"skills-sheet skb-drop-sheet",children:[x?t.jsx(Q,{tone:"critical",title:x.title,role:"alert",children:t.jsxs("div",{className:"skb-refusal",children:[x.body,(g=x.items)!=null&&g.length?t.jsx("ul",{className:"skb-refused",children:x.items.map(b=>t.jsxs("li",{children:[t.jsx("span",{className:"mono",children:b.path})," ",b.rest]},b.path))}):null]})}):null,t.jsx(re,{message:h}),t.jsxs("div",{className:"skb-drop","data-over":a?"true":void 0,"data-testid":"skill-drop",onDragOver:b=>{b.preventDefault(),i(!0)},onDragLeave:()=>i(!1),onDrop:b=>{var j;b.preventDefault(),i(!1),p((j=b.dataTransfer.files)==null?void 0:j[0])},children:[t.jsx("span",{className:"skb-drop-glyph",children:t.jsx(fi,{name:"upload",size:24})}),t.jsx("span",{className:"skb-drop-title",children:c?`Reading “${c}”…`:a?"Drop to read it":x?"Drop another file here":"Drop a .zip or a .md here"}),t.jsx(A,{variant:x?void 0:"accent",disabled:c!==null,onClick:()=>{var b;return(b=m.current)==null?void 0:b.click()},children:x?"Choose another file":"Choose a file"}),t.jsx("span",{className:"skb-drop-limits",children:fne})]}),t.jsxs("section",{className:"skills-sec skb-shape","aria-label":"What a bundle looks like",children:[t.jsx("h3",{className:"skills-sec-title",children:"What a bundle looks like"}),t.jsxs("dl",{className:"skb-shape-tree",children:[t.jsx("dt",{className:"mono",children:"cover-art-kit/"}),t.jsx("dd",{}),t.jsx("dt",{className:"mono","data-in":"true",children:"SKILL.md"}),t.jsx("dd",{children:"the skill: a name, when it’s used, the steps"}),t.jsx("dt",{className:"mono","data-in":"true",children:"scripts/"}),t.jsx("dd",{children:"run only by an agent you allow, asking first"}),t.jsx("dt",{className:"mono","data-in":"true",children:"assets/"}),t.jsx("dd",{children:"fonts, templates, pictures it reads"})]})]})]})]})}function pne({checked:e,onChange:n,lead:s,title:r,sub:a}){return t.jsxs("label",{className:"skills-pick-row",children:[t.jsx("input",{type:"checkbox",checked:e,onChange:i=>n(i.target.checked)}),s,t.jsxs("span",{className:"skills-pick-text",children:[t.jsx("span",{className:"skills-pick-title",children:r}),a?t.jsx("span",{className:"skills-pick-sub",children:a}):null]})]})}function gne({staged:e,agents:n,faces:s,onClose:r,onBack:a,onAdded:i}){var w,S;const l=e.files.filter(C=>C.kind==="script"),[o,c]=d.useState(((w=l.find(C=>C.setup))==null?void 0:w.path)??((S=l[0])==null?void 0:S.path)??"SKILL.md"),[u,h]=d.useState([]),[f,m]=d.useState(!1),[p,x]=d.useState(!1),[g,b]=d.useState(null),j=n.filter(C=>C.canRunScripts).map(C=>C.name),v=e.files.find(C=>C.path===o)??e.files[0],y=C=>{gn.discardBundle(e.id).catch(()=>{}),C()},k=async()=>{x(!0),b(null);try{const{skill:C}=await gn.acceptBundle(e.id,{agents:u,mine:f});i(C)}catch(C){b(C instanceof pe?C.message:String(C)),x(!1)}},N=l.some(C=>C.setup);return t.jsxs(Qe,{size:"wide",title:t.jsxs("span",{className:"skills-sheet-title",children:[t.jsx(Mk,{size:"lg"}),t.jsxs("span",{className:"skills-sheet-name",children:[t.jsx("span",{children:e.filename}),t.jsxs("span",{className:"skills-sheet-by",children:[e.files.length," files · ",aa(e.size)," unpacked · read, not saved yet"]})]})]}),onClose:()=>y(r),foot:t.jsxs(ne,{children:[t.jsx(A,{variant:"ghost",onClick:()=>y(a),children:"Choose another file"}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:()=>y(r),children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:p,onClick:()=>void k(),children:"Add the skill"})]}),children:[l.length?t.jsxs(Q,{title:`${l.length} script${l.length>1?"s":""} inside. None of them ran.`,children:["They run later only when an agent you allow runs them, after you mark the bundle as yours, and each run asks you first",N?" — setup scripts too.":"."]}):null,t.jsx(re,{message:g}),t.jsxs("div",{className:"skills-sheet",children:[t.jsxs("section",{className:"skills-sec","aria-label":"From its SKILL.md",children:[t.jsx("header",{className:"skills-sec-head",children:t.jsx("h3",{className:"skills-sec-title",children:"From its SKILL.md"})}),t.jsx(un,{items:[{label:"Name",value:e.skill.title},{label:"When it’s used",value:e.skill.description},{label:"First lines",value:t.jsxs("span",{className:"skb-first",children:[e.skill.firstLines,e.skill.firstLines.length>=160?"…":""]})}]})]}),t.jsxs("section",{className:"skills-sec","aria-label":"What’s inside",children:[t.jsxs("header",{className:"skills-sec-head",children:[t.jsx("h3",{className:"skills-sec-title",children:"What’s inside"}),t.jsxs("span",{className:"skills-sec-aside skills-note",children:[aa(e.size)," unpacked · ",aa(e.packed)," as a .zip"]})]}),t.jsxs(MO,{children:[t.jsx(IO,{files:e.files,selected:v.path,onSelect:c}),t.jsx(PO,{file:v,read:C=>gn.stagedFile(e.id,C),imageUrl:C=>gn.stagedImageUrl(e.id,C),reach:{run:[],held:!1,untrusted:!1},skillView:t.jsx(xne,{staged:e})})]}),t.jsx("p",{className:"skills-note",children:"Checked: every file stays inside the bundle, no links, nothing over the limits. Pick a file to read it before you add it."})]}),t.jsxs("section",{className:"skills-sec","aria-label":"Who uses it",children:[t.jsx("header",{className:"skills-sec-head",children:t.jsx("h3",{className:"skills-sec-title",children:"Who uses it"})}),t.jsx("div",{className:"skills-who",children:n.filter(C=>C.writable).map(C=>t.jsx(pne,{checked:u.includes(C.id),onChange:E=>h(E?[...u,C.id]:u.filter($=>$!==C.id)),lead:t.jsx(Bn,{id:C.id,name:C.name,size:"sm",face:s.find(E=>E.id===C.id)}),title:C.name,sub:C.canRunScripts&&l.length?"can run scripts":void 0},C.id))}),t.jsx("p",{className:"skills-note",children:l.length?j.length?`Only ${ki(j)} ${j.length>1?"have":"has"} a tool that runs scripts; the others read the text. You can change this later.`:"No agent has a tool that runs scripts, so they all read the text only. You can change this later.":"You can change this later. With nobody ticked it’s kept and does nothing."})]}),t.jsx("section",{className:"skills-sec",children:t.jsxs("label",{className:"plugins-check",children:[t.jsx("input",{type:"checkbox",checked:f,onChange:C=>m(C.target.checked)}),t.jsxs("span",{children:[t.jsx("span",{className:"plugins-check-title",children:"Mark as mine"}),t.jsx("span",{className:"plugins-check-hint",children:l.length?"I wrote it, or I’ve read it and its scripts and trust them. Otherwise agents read its text as outside text and its scripts can’t run.":"I wrote it, or I’ve read it and trust it. Otherwise agents read its text as outside text."})]})]})})]})]})}function xne({staged:e}){const[n,s]=d.useState(null);return d.useEffect(()=>{let r=!0;return gn.stagedFile(e.id,"SKILL.md").then(a=>{r&&s(a.file.text??"")},()=>{r&&s("")}),()=>{r=!1}},[e.id]),t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"skills-text-bar",children:[t.jsx("span",{className:"skb-view-kind",children:"The skill"}),t.jsx("span",{className:"skills-file mono",children:"SKILL.md"})]}),n===null?t.jsx("p",{className:"skills-note",children:"Reading the file…"}):t.jsx(en,{label:"SKILL.md",children:n})]})}const vne=5e4,yl=e=>e instanceof pe?e.message:String(e),jne=e=>n=>{n.stopPropagation(),e==null||e()};function yne({faces:e,navigate:n,command:s,openSkill:r,openFile:a}){const i=ve(()=>gn.list(),[]),[l,o]=d.useState(r?{id:r,...a?{file:a}:{}}:null),[c,u]=d.useState(null),[h,f]=d.useState(null),[m,p]=d.useState(null),[x,g]=d.useState(null),b=d.useRef(null);d.useEffect(()=>{r&&o({id:r,...a?{file:a}:{}})},[r,a]),d.useEffect(()=>{s&&u(s.kind==="write"?{kind:"write"}:{kind:"drop"})},[s]);const j=N=>{var S;const w=(S=N.target.files)==null?void 0:S[0];N.target.value="",w&&v(w)},v=N=>{if(!/\.md$/i.test(N.name)){f(`“${N.name}” isn’t a .md file. A skill is one Markdown file.`);return}if(N.size>vne){f(`“${N.name}” is over 50 KB. A skill is a short text.`);return}const w=new FileReader;w.onload=()=>{f(null),u({kind:"upload",file:{name:N.name,size:N.size,...cY(N.name,String(w.result))}})},w.readAsText(N)},y=N=>{p(null),N!==void 0&&g(N),i.reload()};return t.jsxs(t.Fragment,{children:[t.jsx("input",{ref:b,type:"file",accept:".md,text/markdown",hidden:!0,"data-testid":"skill-file",onChange:j}),h?t.jsx(Q,{tone:"warning",action:t.jsx(A,{size:"sm",onClick:()=>{f(null),u({kind:"drop"})},children:"Pick another file"}),children:h}):null,t.jsx(re,{message:m}),x?t.jsx(Q,{tone:"good",role:"status",children:x}):null,t.jsx(wne,{view:i,onOpen:N=>o({id:N.id}),onAct:(N,w)=>k(N,w)}),t.jsx(DO,{view:i.data,faces:e,open:l,setOpen:o,dialog:c,setDialog:u,navigate:n,onChanged:y,onFailed:p}),(c==null?void 0:c.kind)==="write"&&i.data?t.jsx(vE,{agents:i.data.agents,faces:e,onClose:()=>u(null),onSaved:N=>{u(null),y(`Saved “${N.title}”.`)}}):null,(c==null?void 0:c.kind)==="drop"?t.jsx(mne,{onClose:()=>u(null),onMd:N=>{u(null),v(N)},onStaged:N=>u({kind:"zip",staged:N})}):null,(c==null?void 0:c.kind)==="zip"&&i.data?t.jsx(gne,{staged:c.staged,agents:i.data.agents,faces:e,onClose:()=>u(null),onBack:()=>u({kind:"drop"}),onAdded:N=>{u(null),y(`Added “${N.title}”.`),o({id:N.id})}}):null,(c==null?void 0:c.kind)==="upload"&&i.data?t.jsx(vE,{agents:i.data.agents,faces:e,upload:c.file,onClose:()=>u(null),onSaved:N=>{u(null),y(`Saved “${N.title}”.`)}}):null]});function k(N,w){g(null),w==="trust"?gn.trust(N.id).then(()=>y(),S=>p(yl(S))):w==="download"?a2(N.id):w==="plugin"?n(We("plugins")):w==="edit"?(u(null),o({id:N.id,edit:!0})):u({kind:w,id:N.id})}}function wne({view:e,onOpen:n,onAct:s}){if(!e.data&&e.error)return t.jsx(Ce,{warm:!0,title:"Couldn’t load your skills",action:t.jsx(A,{variant:"accent",size:"sm",onClick:e.reload,children:"Try again"}),children:"buddi didn’t answer. Your skill files are untouched."});if(!e.data)return t.jsx(kne,{});const{skills:r,agents:a}=e.data;return r.length===0?t.jsx(Ce,{warm:!0,title:"No skills yet",children:"A skill teaches an agent one kind of task, in plain words. Write one here, or upload a .md file you already have."}):t.jsx(lt,{flush:!0,children:fk.map(i=>{const l=r.filter(o=>o.group===i.id);return l.length?t.jsxs("section",{className:"skills-group","aria-label":i.title,children:[t.jsxs("header",{className:"skills-group-head",children:[t.jsx("h3",{className:"skills-group-title",children:i.title}),t.jsx("span",{className:"skills-group-aside",children:i.aside})]}),t.jsx(yt,{children:l.map(o=>t.jsx(bne,{row:o,agents:a,onOpen:n,onAct:s},o.id))})]},i.id):null})})}function bne({row:e,agents:n,onOpen:s,onAct:r}){var o,c,u;const a=e.untrusted?["trust","Mark as mine"]:sY(e)?["picker","Choose agents"]:null,i=nY(e,n),l=aY(e,n);return t.jsx(gt,{onClick:()=>s(e),label:`${e.title}: details`,lead:e.bundle?t.jsx(Mk,{}):t.jsx(ss,{icon:"files"}),title:e.bundle?t.jsxs("span",{className:"skb-title",children:[e.title,t.jsx(Do,{children:"bundle"})]}):e.title,sub:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"skills-line",children:e.description}),t.jsxs("span",{className:"skills-line skills-meta",children:[i," · ",au(e,n,!0)]}),l?t.jsx("span",{className:"skills-line skb-scripts",children:l}):null,e.untrusted?t.jsx("span",{className:"skills-status","data-tone":"warning",children:gk(e,n)}):null]}),side:t.jsxs("span",{className:"skills-side",children:[a?t.jsx(A,{size:"sm",onClick:jne(()=>r(e,a[0])),children:a[1]}):null,t.jsx(rs,{label:`More for ${e.title}`,sheet:{title:e.title,sub:i},items:[{label:"Choose agents…",hint:"Give it or take it away",onSelect:()=>r(e,"picker")},e.editable?{label:e.bundle?"Edit SKILL.md":"Edit text",onSelect:()=>r(e,"edit")}:null,{label:"Download",hint:e.bundle?".zip with its files":".md file",onSelect:()=>r(e,"download")},((o=e.from)==null?void 0:o.kind)==="plugin"?{label:`Open ${mk(e.from.plugin)}`,onSelect:()=>r(e,"plugin")}:null,e.deletable&&((c=e.from)==null?void 0:c.kind)!=="plugin"?"separator":null,e.deletable&&((u=e.from)==null?void 0:u.kind)!=="plugin"?{label:"Delete…",tone:"critical",onSelect:()=>r(e,"delete")}:null]})]})})}function kne(){return t.jsx(lt,{flush:!0,children:t.jsxs("div",{className:"skills-group skills-loading","aria-busy":"true","aria-label":"Loading skills",children:[t.jsx("header",{className:"skills-group-head",children:t.jsx("i",{className:"cat-skel-line","data-w":"20"})}),t.jsx(yt,{children:[0,1,2].map(e=>t.jsxs("div",{className:"ui-list-row",children:[t.jsx("span",{className:"ui-app-icon"}),t.jsxs("span",{className:"ui-list-main skills-skel",children:[t.jsx("i",{className:"cat-skel-line","data-w":"40"}),t.jsx("i",{className:"cat-skel-line","data-w":"70"})]})]},e))})]})})}function DO({view:e,faces:n,open:s,setOpen:r,dialog:a,setDialog:i,navigate:l,onChanged:o,onFailed:c}){if(!e)return null;const u=m=>e.skills.find(p=>p.id===m),h=s?u(s.id):void 0,f=a&&"id"in a?u(a.id):void 0;return t.jsxs(t.Fragment,{children:[h?t.jsx(Nne,{row:h,agents:e.agents,faces:n,initialEdit:!!(s!=null&&s.edit),...s!=null&&s.file?{initialFile:s.file}:{},onClose:()=>r(null),onPicker:()=>i({kind:"picker",id:h.id}),onDelete:()=>i({kind:"delete",id:h.id}),onChanged:o,onFailed:c,navigate:l},`${h.id}-${s!=null&&s.edit?"edit":"read"}`):null,(a==null?void 0:a.kind)==="picker"&&f?t.jsx(Sne,{row:f,agents:e.agents,faces:n,onCancel:()=>i(null),onSaved:()=>{i(null),o()}}):null,(a==null?void 0:a.kind)==="delete"&&f?t.jsx(Ene,{row:f,agents:e.agents,onCancel:()=>i(null),onDeleted:m=>{i(null),r(null),o(m)}}):null]})}function LO({title:e,sub:n}){return t.jsxs("span",{className:"skills-sheet-title",children:[t.jsx(ss,{icon:"files",size:"lg"}),t.jsxs("span",{className:"skills-sheet-name",children:[t.jsx("span",{children:e}),t.jsx("span",{className:"skills-sheet-by",children:n})]})]})}function Hc({title:e,aside:n,children:s}){return t.jsxs("section",{className:"skills-sec","aria-label":e,children:[t.jsxs("header",{className:"skills-sec-head",children:[t.jsx("h3",{className:"skills-sec-title",children:e}),n?t.jsx("span",{className:"skills-sec-aside",children:n}):null]}),s]})}function xE({file:e,body:n,text:s}){const[r,a]=d.useState("read");return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"skills-text-bar",children:[t.jsx(dn,{label:"Show the text as",value:r,onChange:a,options:[{value:"read",label:"Read"},{value:"source",label:"Source"}]}),t.jsx("span",{className:"skills-file mono",children:e})]}),r==="read"?t.jsx(gr,{className:"wb-md skills-md",text:n}):t.jsx(en,{label:e,children:s})]})}function Nne({row:e,agents:n,faces:s,initialEdit:r,initialFile:a,onClose:i,onPicker:l,onDelete:o,onChanged:c,onFailed:u,navigate:h}){var W,me,fe,oe;const f=ve(()=>gn.detail(e.id),[e.id,e.updatedAt,e.untrusted,(W=e.learned)==null?void 0:W.version]),[m,p]=d.useState(!!r&&e.editable),[x,g]=d.useState(null),[b,j]=d.useState(!1),[v,y]=d.useState(null),[k,N]=d.useState(r?"SKILL.md":a??"SKILL.md"),w=((me=f.data)==null?void 0:me.text)??"",S=l2(au(e,n)),C=lY(e,n),E=((fe=e.from)==null?void 0:fe.kind)==="plugin"?mk(e.from.plugin):null,$=B=>s.find(ue=>ue.id===B),R=e.bundle??null,P=((oe=f.data)==null?void 0:oe.bundle)??null,O=(R==null?void 0:R.scripts.length)??0,I=B=>{var ue;return((ue=n.find(Ne=>Ne.id===B))==null?void 0:ue.canRunScripts)===!0},F=o2(e,n).filter(I).map(B=>hr(n,B)),U=async(B,ue)=>{j(!0),y(null);try{await B(),ue==null||ue(),c()}catch(Ne){y(yl(Ne)),u(yl(Ne))}finally{j(!1)}},L=B=>{U(()=>gn.grant(e.id,{agents:xk(e).filter(ue=>ue!==B)}))},M=()=>{U(()=>gn.saveText(e.id,x??w),()=>{p(!1),g(null)})},z=()=>{N("SKILL.md"),p(!0)},D=(B,ue)=>{var Ne,Ke;if(R)return O?I(B)?t.jsxs("span",{className:"skb-can",children:["Can run its scripts with ",t.jsx("span",{className:"mono",children:gm}),", asking each time"]}):"Reads the text only: it has no tool that runs scripts":"Uses the text and its files";if(((Ne=e.learned)==null?void 0:Ne.by)===B)return"Proposed it";if(((Ke=e.from)==null?void 0:Ke.kind)==="catalogue"&&e.from.agent===B)return"Came with it";if(ue==="home")return"In its own folder"},H=t.jsx("textarea",{className:"skills-editor",value:x??w,onChange:B=>g(B.target.value),"aria-label":`Text of ${e.title}`,spellCheck:!1,autoFocus:!0}),K=R&&P?`Bundle · ${P.files.length} files · ${aa(P.size)} · ${au(e,n)}`:R?`Bundle · ${R.files+1} files · ${aa(R.size)} · ${au(e,n)}`:S,X=(P==null?void 0:P.files.find(B=>B.path===k))??(P==null?void 0:P.files[0]);return t.jsxs(Qe,{size:"wide",title:R?t.jsxs("span",{className:"skills-sheet-title",children:[t.jsx(Mk,{size:"lg"}),t.jsxs("span",{className:"skills-sheet-name",children:[t.jsx("span",{children:e.title}),t.jsx("span",{className:"skills-sheet-by",children:K})]})]}):t.jsx(LO,{title:e.title,sub:S}),onClose:i,foot:m?t.jsxs(ne,{align:"end",children:[t.jsx(A,{variant:"ghost",disabled:b,onClick:()=>{p(!1),g(null)},children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:b||!f.data,onClick:M,children:R?"Save SKILL.md":"Save"})]}):t.jsxs(ne,{children:[e.deletable&&!E?t.jsx(A,{variant:"danger-ghost",onClick:o,children:"Delete…"}):null,t.jsx(ft,{}),t.jsx(A,{onClick:()=>a2(e.id),children:R?"Download .zip":"Download"}),e.editable?t.jsx(A,{variant:e.untrusted?void 0:"accent",onClick:z,children:R?"Edit SKILL.md":"Edit text"}):null]}),children:[e.untrusted?t.jsxs(Q,{tone:"warning",action:t.jsx(A,{size:"sm",variant:"accent",disabled:b,onClick:()=>void U(()=>gn.trust(e.id)),children:"Mark as mine"}),children:[gk(e,n)," Mark it as yours once you’ve read it",O?" and its scripts":"","."]}):null,t.jsx(re,{message:v}),t.jsxs("div",{className:"skills-sheet",children:[t.jsx(Hc,{title:"When it’s used",children:t.jsx("p",{className:"skills-desc",children:e.description})}),t.jsxs(Hc,{title:"Used by",aside:t.jsx(A,{size:"sm",onClick:l,children:"Change…"}),children:[O?t.jsx(OO,{children:e.untrusted?"Its scripts can’t run until you mark it as yours. Then they run only when an agent you allow runs them, and ask first. Nothing ran when it was uploaded.":"Scripts run only when an agent you allow runs them, and ask first. Nothing ran when it was uploaded."}):null,e.every?t.jsx(yt,{children:t.jsx(gt,{lead:t.jsx(ss,{icon:"agents"}),title:pk(e,n),sub:O?F.length?`Now, and any you add later. ${ki(F)} can run its scripts, asking each time.`:"Now, and any you add later. None of them can run its scripts.":"Now, and any you add later."})}):e.holders.length?t.jsx("div",{className:R?"skb-holders":void 0,children:t.jsx(yt,{children:e.holders.map(B=>{const ue=n.find(Ne=>Ne.id===B.agent);return t.jsx(gt,{lead:t.jsx(Bn,{id:B.agent,name:(ue==null?void 0:ue.name)??B.agent,size:"sm",face:$(B.agent)}),title:t.jsxs(t.Fragment,{children:[(ue==null?void 0:ue.name)??B.agent," ",t.jsxs("span",{className:"skills-handle",children:["@",(ue==null?void 0:ue.handle)??B.agent]})]}),sub:D(B.agent,B.how),side:B.how==="home"?void 0:t.jsx(A,{size:"sm",variant:"ghost",disabled:b,onClick:()=>L(B.agent),"aria-label":`Take away from ${(ue==null?void 0:ue.name)??B.agent}`,children:"Take away"})},B.agent)})})}):t.jsx("p",{className:"skills-note",children:"No agent uses it yet, so it does nothing. Choose who should."})]}),R?t.jsxs(Hc,{title:"Files",aside:P?t.jsxs("span",{className:"skills-note",children:[P.files.length," files · ",aa(P.size)]}):void 0,children:[!f.data||!P||!X?f.error?t.jsx(re,{message:f.error}):t.jsx(Ce,{children:"Reading the bundle…"}):t.jsxs(MO,{children:[t.jsx(IO,{files:P.files,selected:X.path,onSelect:m?null:N}),t.jsx(PO,{file:X,read:B=>gn.file(e.id,B),imageUrl:B=>gn.imageUrl(e.id,B),reach:{run:F,held:e.every||e.holders.length>0,untrusted:e.untrusted!==null},skillView:m?H:t.jsx(xE,{file:m1(e),body:f.data.body,text:w})})]}),t.jsx("p",{className:"skills-note",children:"Read only, except SKILL.md. To change any other file, upload the bundle again."})]}):t.jsxs(Hc,{title:"The text",children:[f.data?m?H:t.jsx(xE,{file:m1(e),body:f.data.body,text:w}):f.error?t.jsx(re,{message:f.error}):t.jsx(Ce,{children:"Reading the file…"}),m&&C?t.jsx("p",{className:"skills-note",children:C}):null,E?t.jsxs("p",{className:"skills-note",children:["Comes with ",E,", so it’s changed there. To stop an agent using it, take it away above."," ",t.jsx("a",{href:We("plugins"),onClick:B=>{B.preventDefault(),h(We("plugins"))},children:"Open Plugins"})]}):null]})]})]})}function xm({checked:e,disabled:n,onChange:s,lead:r,title:a,sub:i}){return t.jsxs("label",{className:"skills-pick-row","data-disabled":n?"true":void 0,children:[t.jsx("input",{type:"checkbox",checked:e,disabled:n,onChange:l=>s(l.target.checked)}),r,t.jsxs("span",{className:"skills-pick-text",children:[t.jsx("span",{className:"skills-pick-title",children:a}),i?t.jsx("span",{className:"skills-pick-sub",children:i}):null]})]})}function FO({label:e,value:n,onChange:s}){return t.jsxs("div",{className:"cat-search",children:[t.jsx(se,{name:"search",size:16}),t.jsx(xp,{label:e,value:n,placeholder:e,onChange:s})]})}function Sne({row:e,agents:n,faces:s,onCancel:r,onSaved:a}){var N;const[i,l]=d.useState(e.every),[o,c]=d.useState(xk(e)),[u,h]=d.useState(""),[f,m]=d.useState(!1),[p,x]=d.useState(null),g=u.trim().toLowerCase(),b=n.filter(w=>!g||`${w.name} ${w.handle}`.toLowerCase().includes(g)),j=(w,S)=>c(S?[...o,w]:o.filter(C=>C!==w)),v=((N=e.bundle)==null?void 0:N.scripts.length)??0,y=v?[["Can run its scripts",b.filter(w=>w.canRunScripts)],["Text only",b.filter(w=>!w.canRunScripts)]]:[[null,b]],k=async()=>{m(!0),x(null);try{await gn.grant(e.id,i?{every:!0,agents:[]}:{agents:o}),a()}catch(w){x(yl(w))}finally{m(!1)}};return t.jsx(Vt,{title:`Who uses “${e.title}”?`,onClose:r,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:r,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:f,onClick:()=>void k(),children:"Save"})]}),children:t.jsxs("div",{className:"skills-pick",children:[v?t.jsxs(OO,{children:[v," script",v>1?"s":""," come",v>1?"":"s"," with it. Only an agent with a tool that runs commands can run them, and it asks you each time",e.untrusted?", once you’ve marked it as yours":"","."]}):null,t.jsx(FO,{label:"Find an agent",value:u,onChange:h}),t.jsx(re,{message:p}),t.jsxs("div",{className:"skills-pick-list",children:[g||!e.shareable?null:t.jsx(xm,{checked:i,onChange:l,lead:t.jsx(ss,{icon:"agents"}),title:"Every agent",sub:v?"Now and later. Scripts still ask each time.":"Now, and any you add later."}),y.map(([w,S])=>S.length?t.jsxs("div",{className:"skills-pick-group",role:w?"group":void 0,"aria-label":w??void 0,children:[w?t.jsxs("div",{className:"skills-pick-group-title",children:[w,w==="Text only"?" · no tool that runs scripts":" · asking you each time"]}):null,S.map(C=>{const E=e.home===C.id,$=(e.shadowedBy??[]).includes(C.id),R=E||$||!C.writable;return t.jsx(xm,{checked:!$&&(i||E||o.includes(C.id)),disabled:i||R,onChange:P=>j(C.id,P),lead:t.jsx(Bn,{id:C.id,name:C.name,size:"sm",face:s.find(P=>P.id===C.id)}),title:t.jsxs(t.Fragment,{children:[C.name," ",t.jsxs("span",{className:"skills-handle",children:["@",C.handle]})]}),sub:E?"Its own skill, in its folder":$?"Has its own skill of this name, and uses that":C.writable?v&&C.canRunScripts?t.jsxs("span",{className:"skb-can",children:["With ",t.jsx("span",{className:"mono",children:gm})]}):void 0:"Ships with buddi, so its file doesn’t change"},C.id)})]},w??"all"):null),b.length?null:t.jsxs("p",{className:"skills-note skills-pick-none",children:["No agent called “",u.trim(),"”."]})]}),t.jsx("p",{className:"skills-note",children:"Saved in each agent’s file, so the file stays the record."})]})})}function Cne({agent:e,view:n,onCancel:s,onSaved:r}){const a=v=>i2(v,e.id),[i,l]=d.useState(n.skills.filter(a).map(v=>v.id)),[o,c]=d.useState(""),[u,h]=d.useState(!1),[f,m]=d.useState(null),p=o.trim().toLowerCase(),x=v=>!p||`${v.title} ${v.description}`.toLowerCase().includes(p),g=v=>v.every||v.home===e.id||!e.writable,b=async()=>{h(!0),m(null);try{for(const v of n.skills){if(g(v))continue;const y=i.includes(v.id);if(y===a(v))continue;const k=xk(v);await gn.grant(v.id,{agents:y?[...k,e.id]:k.filter(N=>N!==e.id)})}r()}catch(v){m(yl(v))}finally{h(!1)}},j=n.skills.some(x);return t.jsx(Vt,{title:`Skills ${e.name} uses`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:u||!e.writable,onClick:()=>void b(),children:"Save"})]}),children:t.jsxs("div",{className:"skills-pick",children:[t.jsx(FO,{label:"Find a skill",value:o,onChange:c}),t.jsx(re,{message:f}),e.writable?null:t.jsxs("p",{className:"skills-note",children:[e.name," ships with buddi, so its file doesn’t change. Ask Agent Father to make it yours first."]}),t.jsxs("div",{className:"skills-pick-list",children:[fk.map(v=>{const y=n.skills.filter(k=>k.group===v.id&&x(k));return y.length?t.jsxs("div",{className:"skills-pick-group",role:"group","aria-label":v.title,children:[t.jsx("div",{className:"skills-pick-group-title",children:v.title}),y.map(k=>t.jsx(xm,{checked:i.includes(k.id),disabled:g(k),onChange:N=>l(N?[...i,k.id]:i.filter(w=>w!==k.id)),title:k.title,sub:k.every?a(k)?"Every agent uses it":pk(k,n.agents):k.home===e.id?"Its own skill, in its folder":k.description},k.id))]},v.id):null}),j?null:t.jsxs("p",{className:"skills-note skills-pick-none",children:["No skill matches “",o.trim(),"”."]})]})]})})}function vE({agents:e,faces:n,upload:s,onClose:r,onSaved:a}){const[i,l]=d.useState((s==null?void 0:s.title)??""),[o,c]=d.useState((s==null?void 0:s.description)??""),[u,h]=d.useState((s==null?void 0:s.body)??""),[f,m]=d.useState([]),[p,x]=d.useState(!1),[g,b]=d.useState(!1),[j,v]=d.useState(null),y=i.trim()!==""&&o.trim()!==""&&u.trim()!=="",k=s?`${Math.max(1,Math.round(s.size/1024))} KB`:"",N=async()=>{b(!0),v(null);try{const{skill:w}=await gn.create({title:i.trim(),description:o.trim(),body:u,agents:f,...s?{upload:{filename:s.name,mine:p}}:{}});a(w)}catch(w){v(yl(w))}finally{b(!1)}};return t.jsxs(Qe,{size:"wide",title:s?t.jsx(LO,{title:s.name,sub:`${k} · read, not saved yet`}):"Write a skill",onClose:r,foot:t.jsxs(ne,{align:"end",children:[t.jsx(A,{variant:"ghost",onClick:r,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!y||g,onClick:()=>void N(),children:"Save skill"})]}),children:[t.jsx(re,{message:j}),t.jsxs("div",{className:"skills-sheet",children:[t.jsxs("section",{className:"skills-sec skills-form",children:[t.jsx(le,{label:"Name",hint:"Short, like a task: “Weekly money recap”.",children:t.jsx("input",{value:i,onChange:w=>l(w.target.value),autoFocus:!s})}),t.jsx(le,{label:"When it’s used",hint:"One line. Agents read it to decide when the skill applies.",children:t.jsx("input",{value:o,onChange:w=>c(w.target.value),placeholder:"When I ask about the week’s spending"})}),t.jsx(le,{label:"The text",hint:"Plain Markdown: steps, rules, what a good answer looks like.",children:t.jsx("textarea",{className:"skills-editor",value:u,onChange:w=>h(w.target.value),spellCheck:!1,placeholder:`1. Total spent this week.
|
|
134
|
+
2. The three biggest charges.
|
|
135
|
+
3. Anything odd.`})})]}),t.jsxs(Hc,{title:"Who uses it",children:[t.jsx("div",{className:"skills-who",children:e.map(w=>t.jsx(xm,{checked:f.includes(w.id),disabled:!w.writable,onChange:S=>m(S?[...f,w.id]:f.filter(C=>C!==w.id)),lead:t.jsx(Bn,{id:w.id,name:w.name,size:"sm",face:n.find(S=>S.id===w.id)}),title:w.name},w.id))}),t.jsx("p",{className:"skills-note",children:"You can change this later. With nobody ticked it’s kept and does nothing."})]}),s?t.jsx("section",{className:"skills-sec",children:t.jsxs("label",{className:"plugins-check",children:[t.jsx("input",{type:"checkbox",checked:p,onChange:w=>x(w.target.checked)}),t.jsxs("span",{children:[t.jsx("span",{className:"plugins-check-title",children:"Mark as mine"}),t.jsx("span",{className:"plugins-check-hint",children:"I wrote it, or I’ve read it and trust it. Otherwise agents read it as outside text."})]})]})}):null]})]})}function Ene({row:e,agents:n,onCancel:s,onDeleted:r}){const a=ve(()=>gn.detail(e.id),[e.id]),[i,l]=d.useState(!1),[o,c]=d.useState(null),u=d.useMemo(()=>a.data?oY(e,a.data.onDelete,n):null,[a.data,e,n]),h=async()=>{l(!0),c(null);try{const f=await gn.remove(e.id);r(`Deleted “${e.title}”.${f.movedTo?" The file is in the trash folder.":f.versionsKept?" Its earlier versions are kept.":""}`)}catch(f){c(yl(f)),l(!1)}};return t.jsxs(Vt,{title:`Delete “${e.title}”?`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:i||!a.data,onClick:()=>void h(),children:"Delete"})]}),children:[t.jsx(re,{message:o??a.error}),t.jsx("p",{className:"skills-dialog-text",children:u??"Checking who uses it…"})]})}function Ane(e){var n;return((n=fk.find(s=>s.id===e.group))==null?void 0:n.title)??""}function $ne({agentId:e,agentName:n,faces:s=[],navigate:r}){const a=ve(()=>gn.list(),[e]),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState(!1),[f,m]=d.useState(null),[p,x]=d.useState(null),g=N=>{m(null),x(N??null),a.reload()},b=N=>{gn.trust(N.id).then(()=>g(),w=>m(w instanceof Error?w.message:String(w)))};if(!a.data)return a.error?t.jsx(Ce,{warm:!0,title:"Couldn’t load the skills",action:t.jsx(A,{variant:"accent",size:"sm",onClick:a.reload,children:"Try again"}),children:"buddi didn’t answer. The skill files are untouched."}):t.jsx(Ce,{children:"Loading…"});const j=a.data,v=j.agents.find(N=>N.id===e)??{id:e,handle:e,name:n,writable:!1},y=j.skills.filter(N=>i2(N,e)),k=r2();return t.jsxs(t.Fragment,{children:[t.jsx(re,{message:f}),p?t.jsx(Q,{tone:"good",role:"status",children:p}):null,t.jsx(lt,{flush:!0,title:"Skills",actions:t.jsxs(t.Fragment,{children:[t.jsxs("a",{className:"skills-all",href:k,onClick:N=>{N.preventDefault(),r(k)},children:["All skills",t.jsx(se,{name:"chevron-right",size:12})]}),t.jsx(A,{size:"sm",onClick:()=>h(!0),children:"Choose skills…"})]}),children:y.length?t.jsx("div",{className:"skills-group",children:t.jsx(yt,{children:y.map(N=>t.jsx(gt,{onClick:()=>l({id:N.id}),label:`${N.title}: details`,lead:t.jsx(ss,{icon:"files"}),title:N.title,sub:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"skills-line",children:N.description}),t.jsxs("span",{className:"skills-line skills-meta",children:[Ane(N)," · ",N.every?"every agent uses it":au(N,j.agents,!0)]}),N.untrusted?t.jsx("span",{className:"skills-status","data-tone":"warning",children:gk(N,j.agents)}):null]}),side:t.jsx("span",{className:"skills-side",children:N.untrusted?t.jsx(A,{size:"sm",onClick:w=>{w.stopPropagation(),b(N)},children:"Mark as mine"}):t.jsx("span",{className:"skills-chevron","aria-hidden":"true",children:t.jsx(se,{name:"chevron-right",size:14})})})},N.id))})}):t.jsxs(Ce,{children:[n," uses no skills yet. Choose some, or write one on the Skills page."]})}),t.jsx(DO,{view:j,faces:s,open:i,setOpen:l,dialog:o,setDialog:c,navigate:r,onChanged:g,onFailed:m}),u?t.jsx(Cne,{agent:v,view:j,onCancel:()=>h(!1),onSaved:()=>{h(!1),g()}}):null]})}function _O({timezone:e,embedded:n,agentId:s}){const{data:r,error:a,reload:i}=ve(()=>T.reminders(),[],3e4),l=((r==null?void 0:r.reminders)??[]).filter(h=>!s||h.agentId===s),[o,c]=d.useState(null),u=async h=>{c(null);try{await T.cancelReminder(h),i()}catch(f){c(f instanceof Error?f.message:String(f))}};return t.jsxs(Rs,{embedded:n,title:"Reminders",lede:"A reminder wakes an agent with a note and the instruction to check before it speaks, never a message queued for delivery.",children:[t.jsx(re,{message:a??o}),t.jsx(lt,{flush:!0,children:r?l.length===0?t.jsx(ms,{icon:"bell",title:"No reminders",children:"Ask any agent to remind you of something, and it shows up here."}):t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Due"}),t.jsx("th",{children:"Agent"}),t.jsx("th",{children:"Note"}),t.jsx("th",{children:"State"}),t.jsx("th",{})]})}),t.jsx("tbody",{children:l.map(h=>t.jsxs("tr",{children:[t.jsxs("td",{className:"nowrap",children:[Nt(h.dueAt,e),t.jsx("div",{className:"sub",children:Xe(h.dueAt)})]}),t.jsx("td",{className:"mono",children:h.agentId}),t.jsxs("td",{children:[h.text,h.context?t.jsx(Kt,{summary:"context",children:t.jsx(en,{children:fs(h.context)})}):null]}),t.jsxs("td",{children:[t.jsx(kd,{state:h.state}),h.cancelReason?t.jsx("div",{className:"sub",children:h.cancelReason}):null]}),t.jsx("td",{children:h.state==="pending"?t.jsx(A,{size:"sm",variant:"danger",onClick:()=>u(h.id),children:"Cancel"}):null})]},h.id))})]}):t.jsx(Ce,{children:"Loading…"})})]})}const Tne=/(flux|klein|schnell|qwen[-_]?image|image)/i;function zO(e){return e.kind==="image"||e.kind===void 0&&Tne.test(e.id)}function Rne(e){const n=((e==null?void 0:e.models)??[]).filter(s=>!zO(s));return[...n.filter(s=>s.loaded),...n.filter(s=>!s.loaded)].map(s=>s.id)}function jy(e){return Rne(e)[0]}function Ok(e){return(e==null?void 0:e.detectedContextWindowSource)==="mlxh"}function Ine(e){return(e??0)<40960?"mlxh’s max_prompt_tokens; raise it with `mlxh config max_prompt_tokens 40960` for long conversations":"mlxh’s max_prompt_tokens"}function UO(e){let n=e;try{n=new URL(e).host}catch{}return`mlxh is not answering on ${n}. Start it with \`mlxh serve\`, or \`mlxh service install\` to keep it running.`}const BO="an image model; pick it in the Image plugin, not here";function Dk({accountId:e,label:n,value:s,onChange:r,disabled:a=!1,origin:i="from the provider",suggest:l,onSuggest:o}){const[c,u]=d.useState(null),[h,f]=d.useState(!1),[m,p]=d.useState(""),[x,g]=d.useState(!1),b=d.useRef(0),j=async S=>{if(!e)return;const C=++b.current;f(!0),p("");try{const E=await T.accountModels(e,S);if(C===b.current){u(E);const $=(l==null?void 0:l(E))??null;$&&(o==null||o($))}}catch(E){C===b.current&&p(E instanceof Error?E.message:"Could not load models. Custom entry is still available.")}finally{C===b.current&&f(!1)}};if(d.useEffect(()=>(u(null),g(!1),p(""),j(!1),()=>{b.current++}),[e]),!e)return t.jsxs(t.Fragment,{children:[t.jsx(le,{label:n,children:t.jsx("input",{required:!0,maxLength:150,value:s,disabled:a,onChange:S=>r(S.target.value)})}),t.jsx("p",{className:"ui-toolbar-note",children:"Save and connect the account to load its model list. You can enter a model manually now."})]});const v=(c==null?void 0:c.models)??[],y=c&&l?l(c):null,k=!!s&&!v.some(S=>S.id===s),N=[c&&!v.length?"This account returned no models. You can enter a custom model.":null,c!=null&&c.truncated?"Showing the first part of this provider’s list. Custom model entry is available.":null,c?"Uses saved account settings. Listed models may not support every agent tool. Your selection is unchanged until you save.":null].filter(Boolean),w=(c==null?void 0:c.source)==="built-in"?"built-in list":(c==null?void 0:c.source)==="provider"?[i,c.fetchedAt?`refreshed ${TR(c.fetchedAt)}`:""].filter(Boolean).join(" · "):"";return t.jsxs(t.Fragment,{children:[t.jsx(le,{label:n,children:t.jsxs("select",{value:x?"__buddi_custom__":s,disabled:a,onChange:S=>{S.target.value==="__buddi_custom__"?g(!0):(g(!1),r(S.target.value))},children:[t.jsx("option",{value:"",disabled:!0,children:"Choose a model"}),k&&t.jsxs("option",{value:s,children:[s," (current",c?", not listed":"",")"]}),v.map(S=>t.jsxs("option",{value:S.id,children:[S.name===S.id?S.id:`${S.name} — ${S.id}`,S.id===y?" (suggested)":S.isDefault?" (provider default)":"",S.image?` — ${BO}`:""]},S.id)),t.jsx("option",{value:"__buddi_custom__",children:"Custom model…"})]})}),t.jsx(A,{disabled:a||h,onClick:()=>void j(!0),children:h?"Loading models…":"Refresh models"}),x&&t.jsx(le,{label:`Custom ${n.toLowerCase()}`,children:t.jsx("input",{required:!0,maxLength:150,value:s,disabled:a,onChange:S=>r(S.target.value)})}),m&&t.jsx("p",{role:"alert",className:"ui-toolbar-note critical",children:m}),N.length>0&&t.jsx("p",{className:"ui-toolbar-note",children:N.join(" ")}),w&&t.jsx("p",{className:"ui-toolbar-note muted","data-testid":"model-list-source",children:w})]})}function Pne(e,n){const s=new Set(n),r=[],a=new Set;for(const i of e){for(const o of i.tools)a.add(o.name);const l=i.tools.filter(o=>s.has(o.name));l.length!==0&&(i.glob&&l.length===i.tools.length?r.push(i.glob):r.push(...l.map(o=>o.name)))}return r.push(...n.filter(i=>!a.has(i))),r}function Mne(e,n){return[...e].sort().join(",")===[...n].sort().join(",")}const One="This agent will not remember anything between conversations.";function Dne({view:e,chosen:n,onChange:s,disabled:r}){var N;const[a,i]=d.useState(""),[l,o]=d.useState(null),[c,u]=d.useState(()=>new Set),h=w=>u(S=>{const C=new Set(S);return C.has(w)?C.delete(w):C.add(w),C}),f=w=>{i(w),u(new Set)},m=d.useId(),p=new Set(n),x=new Set(e.groups.flatMap(w=>w.tools.filter(S=>S.core).map(S=>S.name))),g=(w,S)=>{const C=S.filter(E=>p.has(E));if(C.length!==0){if(C.some(E=>x.has(E))){o({plugin:w,names:C});return}s(n.filter(E=>!C.includes(E)))}},b=w=>{s([...n,...w.filter(S=>!p.has(S))])},j=a.trim().toLowerCase(),v=(w,S)=>j===""||w.toLowerCase().includes(j)||S.toLowerCase().includes(j),y=e.groups.map(w=>({group:w,tools:w.tools.filter(S=>v(S.name,S.description))})).filter(w=>w.tools.length>0),k=(((N=e.suggested)==null?void 0:N.tools)??[]).filter(w=>!p.has(w.name));return t.jsxs("div",{className:"tool-picker",children:[e.suggested&&k.length>0?t.jsxs("div",{className:"tool-picker-group",role:"group","aria-labelledby":`${m}-suggested`,children:[t.jsx("div",{className:"tool-picker-head",children:t.jsx("span",{id:`${m}-suggested`,className:"tool-picker-plugin",children:e.suggested.label})}),t.jsx("ul",{className:"ui-list tool-picker-list","aria-label":e.suggested.label,children:k.map(w=>t.jsxs("li",{className:"ui-list-row",children:[t.jsxs("span",{className:"ui-list-main",children:[t.jsx("span",{className:"ui-list-title mono",children:w.name}),t.jsx("span",{className:"ui-list-sub",children:w.description})]}),t.jsx(A,{size:"sm",disabled:r,"aria-label":`Add ${w.name}`,onClick:()=>b([w.name]),children:"Add"})]},w.name))})]}):null,t.jsxs("label",{className:"tool-picker-search",children:[t.jsx("span",{className:"ui-field-label",children:"Find a tool"}),t.jsx("input",{type:"search",value:a,placeholder:"Name or what it does",onChange:w=>f(w.target.value)})]}),y.length===0?t.jsxs(Ce,{children:["No installed tool matches “",a.trim(),"”."]}):null,y.map(({group:w,tools:S})=>{const C=w.tools.filter(I=>I.grantable).map(I=>I.name),E=w.tools.filter(I=>p.has(I.name)).length,$=!!w.glob&&E===w.tools.length,R=`${m}-${w.plugin}`,P=`${m}-${w.plugin}-list`,O=j!==""?!c.has(w.plugin):c.has(w.plugin);return t.jsxs("div",{className:"tool-picker-group",role:"group","aria-labelledby":R,"data-open":O?"true":void 0,children:[t.jsxs("div",{className:"tool-picker-head",children:[t.jsxs("button",{type:"button",className:"tool-picker-toggle","aria-expanded":O,"aria-controls":P,onClick:()=>h(w.plugin),children:[t.jsx(Lne,{}),t.jsx("span",{id:R,className:"tool-picker-plugin",children:w.plugin}),t.jsx("span",{className:"muted",children:$?`all ${w.tools.length}`:`${E} of ${w.tools.length} granted`})]}),t.jsx(A,{size:"sm",variant:"ghost","aria-label":`All ${w.plugin} tools`,disabled:r||C.every(I=>p.has(I)),onClick:()=>b(C),children:"all"}),t.jsx(A,{size:"sm",variant:"ghost","aria-label":`No ${w.plugin} tools`,disabled:r||!C.some(I=>p.has(I)),onClick:()=>g(w.plugin,C),children:"none"})]}),(l==null?void 0:l.plugin)===w.plugin?t.jsx(Q,{tone:"warning",role:"alert",children:t.jsxs("div",{className:"tool-picker-confirm",children:[t.jsx("span",{children:One}),t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsx(A,{size:"sm",onClick:()=>o(null),children:"Keep"}),t.jsx(A,{size:"sm",variant:"danger",onClick:()=>{s(n.filter(I=>!l.names.includes(I))),o(null)},children:"Remove"})]})}):null,t.jsx("ul",{id:P,className:"ui-list tool-picker-list",hidden:!O,children:S.map(I=>{const F=`${m}-${I.name}`;return t.jsxs("li",{className:"ui-list-row",children:[t.jsx("input",{type:"checkbox",id:F,checked:p.has(I.name),disabled:r||!I.grantable,onChange:U=>U.target.checked?b([I.name]):g(w.plugin,[I.name])}),t.jsxs("label",{htmlFor:F,className:"ui-list-main",children:[t.jsxs("span",{className:"ui-list-title",children:[t.jsx("span",{className:"mono",children:I.name}),I.core?t.jsx(Ae,{tone:"accent",children:"core"}):null,I.gated?t.jsx(Ae,{tone:"warning",children:"asks you"}):null]}),t.jsx("span",{className:"ui-list-sub",children:I.grantable?I.description:`${I.description} Granted only by editing the file by hand.`})]})]},I.name)})})]},w.plugin)})]})}function Lne(){return t.jsx("svg",{className:"tool-picker-chevron",viewBox:"0 0 11 11","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"M2.8 4.2 5.5 6.9l2.7-2.7"})})}const ar={json:"That is not JSON. Paste the whole block, braces included.",empty:"There is no server in it.",command:'It starts a program on this computer rather than naming an address. Use "A program on this computer" instead.',sse:"buddi speaks Streamable HTTP; this server is SSE-only.",url:"It has no url. buddi connects to a server by its https:// address."},ti=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function WO(e){let n;try{n=JSON.parse(e.trim())}catch{throw new Error(ar.json)}if(!ti(n))throw new Error(ar.json);let s,r=n;if("mcpServers"in n){const u=n.mcpServers;if(!ti(u))throw new Error(ar.empty);const h=Object.keys(u);if(h.length===0)throw new Error(ar.empty);if(h.length>1)throw new Error(`It names ${h.length} servers (${h.join(", ")}). Paste one at a time.`);s=h[0];const f=u[s];if(!ti(f))throw new Error(ar.url);r=f}if("command"in r)throw new Error(ar.command);if(typeof r.type=="string"&&r.type.toLowerCase()==="sse")throw new Error(ar.sse);const a=typeof r.url=="string"?r.url.trim():"";if(a==="")throw new Error(ar.url);const i=ti(r.headers)?Object.entries(r.headers).filter(u=>typeof u[1]=="string"&&u[0].trim()!==""):[],l=i.find(([u])=>u.toLowerCase()==="authorization")??i[0];let o,c=!1;if(l){const[u,h]=l,f=/^(Bearer|Basic)\s+/i.exec(h.trim()),m=f?`${f[1].charAt(0).toUpperCase()}${f[1].slice(1).toLowerCase()} `:"";let p=f?h.trim().slice(f[0].length).trim():h.trim();/\$\{[^}]*\}|^\$[A-Z_][A-Z0-9_]*$|^<[^>]+>$/i.test(p)&&(c=!0,p=""),o={name:u.trim(),prefix:m,value:p}}return{url:a,...s?{name:s}:{},...o?{header:o}:{},dropped:i.filter(u=>u!==l).map(([u])=>u),placeholder:c}}const lu={command:"It names no command to run.",claude:"That claude mcp add line names no server and no command. It looks like: claude mcp add <name> -- <command> <args…>",quote:"A quote in that line is never closed.",env:"An environment variable is written NAME=value."};function HO(e){return/TOKEN|KEY|SECRET|PASSWORD|PASSWD|CREDENTIAL|AUTH/i.test(e)}const KO=/^[A-Za-z_][A-Za-z0-9_]*$/;function Fne(e){return/\$\{[^}]*\}|^\$[A-Z_][A-Z0-9_]*$|^<[^>]+>$|^your[_-]/i.test(e.trim())}function VO(e,n){const s=Fne(n);return{name:e,value:s?"":n,secret:HO(e),placeholder:s}}function GO(e){const n=[];let s="",r=!1,a=null;for(let i=0;i<e.length;i+=1){const l=e[i];if(a==="'"){l==="'"?a=null:s+=l;continue}if(a==='"'){if(l==='"')a=null;else if(l==="\\"&&i+1<e.length&&'"\\$`\n'.includes(e[i+1])){const o=e[++i];o!==`
|
|
136
|
+
`&&(s+=o)}else s+=l;continue}if(l==="\\"){const o=e[i+1];if(o===void 0)continue;if(i+=1,o===`
|
|
137
|
+
`||o==="\r"&&e[i+1]===`
|
|
138
|
+
`){o==="\r"&&(i+=1);continue}s+=o,r=!0;continue}if(l==="'"||l==='"'){a=l,r=!0;continue}if(/\s/.test(l)){r&&(n.push(s),s="",r=!1);continue}s+=l,r=!0}if(a)throw new Error(lu.quote);return r&&n.push(s),n}function _ne(e){const n=GO(e.trim());let s=0;n[s]==="claude"&&(s+=1),n[s]==="mcp"&&(s+=1),n[s]==="add"&&(s+=1);const r=[],a=[];let i="stdio",l,o;const c=h=>{const f=h.indexOf("="),m=f>0?h.slice(0,f).trim():"";if(!KO.test(m))throw new Error(lu.env);r.push(VO(m,h.slice(f+1)))},u=[];for(;s<n.length;s+=1){const h=n[s];if(h==="--"){o=n.slice(s+1);break}const[f,m]=h.startsWith("--")&&h.includes("=")?[h.slice(0,h.indexOf("=")),h.slice(h.indexOf("=")+1)]:[h,void 0];if(f==="-e"||f==="--env"){if(m!==void 0){c(m);continue}let p=!1;for(;s+1<n.length&&/^[A-Za-z_][A-Za-z0-9_]*=/.test(n[s+1]);)c(n[++s]),p=!0;if(!p)throw new Error(lu.env);continue}if(f==="-s"||f==="--scope"){m===void 0&&(s+=1);continue}if(f==="-t"||f==="--transport"){i=(m??n[++s]??"stdio").toLowerCase();continue}if(f==="-H"||f==="--header"){const p=m??n[++s];p&&a.push(p);continue}if(!(f.startsWith("-")&&l===void 0)){if(l===void 0){l=h;continue}u.push(h)}}if(o===void 0?o=u:u.length>0&&(o=[...u,...o]),i==="http"||i==="sse"||o.length===1&&/^https?:\/\//i.test(o[0])){const h=o[0];if(!h)throw new Error(ar.url);const f={};for(const m of a){const p=m.indexOf(":");p>0&&(f[m.slice(0,p).trim()]=m.slice(p+1).trim())}return{kind:"remote",config:WO(JSON.stringify({mcpServers:{[l??"server"]:{type:i,url:h,headers:f}}}))}}if(!l||o.length===0)throw new Error(lu.claude);return{kind:"program",program:{name:l,command:o[0],args:o.slice(1),env:r}}}function zne(e){const n=e.trim();if(/^claude\s+mcp\s+add\b/.test(n))return _ne(n);let s;try{s=JSON.parse(n)}catch{throw new Error(ar.json)}if(!ti(s))throw new Error(ar.json);let r,a=s;if("mcpServers"in s){const c=s.mcpServers;if(!ti(c))throw new Error(ar.empty);const u=Object.keys(c);u.length===1&&ti(c[u[0]])&&(r=u[0],a=c[r])}if(!("command"in a))return{kind:"remote",config:WO(n)};const i=typeof a.command=="string"?a.command.trim():"";if(i==="")throw new Error(lu.command);const l=Array.isArray(a.args)?a.args.map(c=>String(c)):[],o=ti(a.env)?Object.entries(a.env).filter(([c])=>KO.test(c)).map(([c,u])=>VO(c,String(u??""))):[];return{kind:"program",program:{...r?{name:r}:{},command:i,args:l,env:o}}}function Lk({code:e,label:n="Your code",large:s=!1}){const[r,a]=d.useState(!1),i=async()=>{var l;try{await((l=navigator.clipboard)==null?void 0:l.writeText(e)),a(!0)}catch{}};return t.jsxs(ne,{valign:"end",children:[t.jsx(le,{label:n,grow:!0,children:t.jsx("input",{readOnly:!0,value:e,"data-code":s?"large":void 0,spellCheck:!1,onFocus:l=>l.currentTarget.select()})}),t.jsx(A,{onClick:()=>void i(),children:r?"Copied":"Copy"})]})}function qO(e){if(e.phase==="starting")return{label:"Starting",tone:"accent"};switch(e.state){case"connected":return{label:"Connected",tone:"good",dot:!0};case"needs-reconnect":return{label:"Sign in again",tone:"warning"};case"needs-review":return{label:"Needs review",tone:"warning"};case"unreachable":return{label:e.transport==="stdio"?"Failed":"Unreachable",tone:"critical"};default:return{label:"Not finished",tone:"muted"}}}const Une="It can delete or destroy something, so it asks you every time and is never remembered.";function Bne(e){return e.tier==="auto"?{label:"Runs on its own",tone:"good"}:e.destructive?{label:"Asks you every time",tone:"critical"}:{label:"Asks you first",tone:"warning"}}const YO="buddi-connections",Wne="/connections/callback",Hne="This service does not let buddi register itself. Create an app in its developer settings with the redirect address below, and paste its client id here. A token is usually simpler.",QO="Services and programs your team can use, and the tools each one brings.",Fk=(e,n,s)=>`${e} ${e===1?n:s}`;function jE(e,n){return e.transport==="stdio"?void 0:n.find(s=>zk(s.url,e.url))}function _k({connection:e,card:n,size:s}){return n?t.jsx(ss,{letter:n.name.slice(0,1).toUpperCase(),size:s}):t.jsx(ss,{icon:(e==null?void 0:e.transport)==="stdio"?"terminal":"globe",size:s})}function JO({connection:e}){const n=qO(e);return t.jsx(Ae,{tone:n.tone,dot:n.dot,children:n.label})}const yx=e=>n=>{n.stopPropagation(),e()},of=[{value:"address",label:"An address",text:"Any server on the web, by its https:// address. buddi opens it and reads what it offers, and nothing else until you have read its tools.",button:"Give its address"},{value:"program",label:"A program",text:"A server buddi starts itself on this computer, like npx or uvx, with its arguments and variables.",button:"Describe it"},{value:"paste",label:"A config",text:"The mcpServers block another app uses for it, or the claude mcp add line its docs print.",button:"Paste it"}],XO="buddi.connections.add-way";function Kne(){try{const e=window.localStorage.getItem(XO);return of.some(n=>n.value===e)?e:"address"}catch{return"address"}}function Vne({embedded:e,timezone:n,connection:s}={}){const r=ve(()=>T.connections(),[],3e4),[a,i]=d.useState(null),[l,o]=d.useState(s??null);d.useEffect(()=>{s&&o(s)},[s]);const[c,u]=d.useState(null),[h,f]=d.useState(null),m=r.data,p=w=>{var S;return((S=m==null?void 0:m.agents.find(C=>C.id===w))==null?void 0:S.name)??w},x=n??Intl.DateTimeFormat().resolvedOptions().timeZone,g=(m==null?void 0:m.connections)??[],b=(m==null?void 0:m.catalog)??[],j=b.filter(w=>!g.some(S=>S.transport!=="stdio"&&zk(w.url,S.url))),v=l?g.find(w=>w.id===l):void 0,y=c?g.find(w=>w.id===c):void 0,k=h?g.find(w=>w.id===h):void 0,N=w=>{o(null),i(w)};return t.jsxs(Rs,{embedded:e,title:"Connections",lede:QO,children:[t.jsxs(de,{gap:"lg",children:[t.jsxs("p",{className:"plugins-quiet connections-quiet",children:[t.jsx(se,{name:"plug",size:14}),t.jsxs("span",{children:["A connection is a service or program buddi talks to; a plugin is code buddi installs and runs."," ",t.jsx("a",{href:We("plugins"),children:"Plugins"})]})]}),!m&&!r.error?t.jsx(Ce,{children:"Reading your connections…"}):null,t.jsx(re,{message:r.error}),m&&!m.vault?t.jsx(Q,{tone:"warning",children:"This installation has no vault, so a service that asks for a sign-in cannot be connected. Turn the vault on first."}):null,m?t.jsx(lt,{flush:!0,title:"Your connections",tool:g.length>0?Fk(g.length,"connection","connections"):void 0,children:g.length===0?t.jsx(Ce,{title:"Nothing connected yet",children:"Pick a service below, or add your own: an address, a program on this computer, or a config you already have."}):t.jsx("div",{className:"connections-rows",children:t.jsx(yt,{children:g.map(w=>t.jsx(Gne,{connection:w,card:jE(w,b),twin:w.slug!==null&&g.some(S=>S.id!==w.id&&S.name===w.name),onOpen:()=>o(w.id),onFlow:N},w.id))})})}):null,m&&j.length>0?t.jsx(lt,{title:"Connect a service",children:t.jsx("div",{className:"connections-tiles",children:j.map(w=>t.jsxs("div",{className:"connections-tile",children:[t.jsx(_k,{card:w}),t.jsxs("span",{className:"connections-tile-main",children:[t.jsx("span",{className:"connections-tile-name",children:w.name}),t.jsx("span",{className:"connections-tile-blurb",children:w.blurb})]}),t.jsx(A,{size:"sm",onClick:()=>N({step:"address",card:w}),"aria-label":`Connect ${w.name}`,children:"Connect"})]},w.id))})}):null,m?t.jsx(Xne,{onFlow:w=>N({step:w})}):null]}),v?t.jsx(Yne,{connection:v,card:jE(v,b),agentName:p,timezone:x,onClose:()=>o(null),onFlow:N,onDisconnect:()=>u(v.id),onHolders:()=>f(v.id)}):null,k&&m?t.jsx(Qne,{connection:k,agents:m.agents,onCancel:()=>f(null),onDone:()=>{f(null),r.reload()}},k.id):null,y?t.jsx(Jne,{connection:y,agentName:p,onCancel:()=>u(null),onDone:()=>{u(null),o(null),r.reload()}},y.id):null,a&&m?t.jsx(Zne,{start:a,agents:m.agents,catalog:m.catalog,tokens:m.tokens??m.vault,onClose:()=>{i(null),r.reload()}}):null]})}function Gne({connection:e,card:n,twin:s,onOpen:r,onFlow:a}){const i=e.state==="pending-review",l=s?`${e.name} (${e.slug})`:e.name,o=e.transport==="stdio"?e.program:void 0,c=o?o.line:e.host,u=i?"its tools are not reviewed yet":Fk(e.toolCount,"tool","tools");return t.jsx(gt,{onClick:r,label:`${l}: details`,lead:t.jsx(_k,{connection:e,card:n}),title:l,sub:t.jsx("span",{className:"connections-sub","data-kind":o?"program":void 0,children:`${c} · ${u}`}),side:t.jsxs("span",{className:"plugins-side",children:[i?t.jsx("span",{className:"connections-act",children:t.jsx(A,{size:"sm",variant:"accent",onClick:yx(()=>a({step:e.signedIn?"review":"consent",connection:e})),children:"Finish"})}):e.state==="needs-reconnect"&&e.authKind!=="none"?t.jsx("span",{className:"connections-act",children:t.jsx(A,{size:"sm",onClick:yx(()=>a({step:"consent",connection:e,keepGrants:!0})),children:"Sign in"})}):e.state==="needs-review"?t.jsx("span",{className:"connections-act",children:t.jsx(A,{size:"sm",onClick:yx(()=>a({step:"review",connection:e,keepGrants:!0})),children:"Review"})}):null,t.jsx(JO,{connection:e}),t.jsx(se,{name:"chevron-right",size:14})]})})}const qne={oauth:"Its own sign-in page. buddi keeps the sign-in in its vault.",token:"A token you pasted, kept in buddi’s vault and sent only here.",none:"Nothing; it asks for no sign-in."};function Yne({connection:e,card:n,agentName:s,timezone:r,onClose:a,onFlow:i,onHolders:l,onDisconnect:o}){const c=e.state==="pending-review",u=e.transport==="stdio"?e.program:void 0,h=()=>i({step:"consent",connection:e,keepGrants:!0}),f=()=>i({step:"review",connection:e,keepGrants:!0}),m=()=>i({step:e.signedIn?"review":"consent",connection:e});return t.jsxs(Qe,{title:t.jsxs("span",{className:"plugins-sheet-title",children:[t.jsx(_k,{connection:e,card:n,size:"lg"}),t.jsxs("span",{className:"plugins-sheet-name",children:[t.jsx("span",{children:e.name}),t.jsxs("span",{className:"plugins-sheet-by",children:[u?"A program on this computer":"A service at an address"," · ",t.jsx(JO,{connection:e})]})]})]}),onClose:a,foot:t.jsxs(ne,{children:[t.jsx(A,{variant:"danger-ghost",onClick:o,children:"Disconnect…"}),t.jsx(ft,{}),u?t.jsx(A,{onClick:()=>i({step:"program",connection:e,keepGrants:!0}),children:"Change"}):null,e.authKind!=="none"&&!c?t.jsx(A,{variant:e.state==="needs-reconnect"?"accent":void 0,onClick:h,children:"Reconnect"}):null,c?t.jsx(A,{variant:"accent",onClick:m,children:"Finish"}):t.jsx(A,{variant:e.state==="needs-review"?"accent":void 0,onClick:f,children:"Review again"})]}),children:[c?t.jsx(Q,{children:"Not finished: its tools are not reviewed yet, so no agent can use them."}):null,e.state==="needs-reconnect"?t.jsx(Q,{tone:"warning",action:e.authKind!=="none"?t.jsx(A,{size:"sm",variant:"accent",onClick:h,children:"Sign in again"}):void 0,children:"Its sign-in ran out or was refused. Until you reconnect, each of its tools answers with one sentence instead of running."}):null,e.state==="needs-review"?t.jsxs(Q,{tone:"warning",action:t.jsx(A,{size:"sm",variant:"accent",onClick:f,children:"Review it"}),children:["It changed its tools since you reviewed them. The new and changed ones wait until you review it again",e.heldTools?` (${e.heldTools} of the ones you kept ${e.heldTools===1?"waits":"wait"})`:"","; the others keep working."]}):null,e.state==="unreachable"&&e.unreachableSince?t.jsx(Q,{tone:"critical",children:u?`It stopped answering at ${Nt(e.unreachableSince,r)}; the next call starts it again.`:`Unreachable since ${Nt(e.unreachableSince,r)}, retrying.`}):null,u!=null&&u.changedSinceReview?t.jsx(Q,{tone:"warning",children:"Its command changed since you reviewed it, so its tools wait until you review it again."}):null,e.phase==="starting"?t.jsx(Q,{tone:"accent",role:"status",children:"Starting it… The first start can take a minute or two while it downloads."}):null,t.jsx("div",{className:"plugins-facts",children:t.jsx(un,{items:[u?{label:"Command",value:t.jsx("span",{className:"connections-line",children:u.line})}:{label:"Address",value:t.jsx("span",{className:"connections-line",children:e.url})},...u?[{label:"Runs",value:"On this computer as you, with your PATH and only the variables you named. It stops after ten quiet minutes."}]:[],...u&&u.env.length>0?[{label:"Variables",value:t.jsx("span",{className:"mono",children:u.env.map(p=>`${p.name}${p.secret?" (secret)":""}`).join(", ")})}]:[],...u?[]:[{label:"Signs in with",value:qne[e.authKind]}],{label:"Tools",value:c?"Not reviewed yet":`${Fk(e.toolCount,"tool","tools")}${e.reviewedAt?` · reviewed ${Xe(e.reviewedAt)}`:""}`},...c?[]:[{label:"Held by",value:t.jsxs("span",{className:"connections-holders",children:[t.jsx("span",{children:e.agents.length===0?"No agent holds these tools yet.":e.agents.map(s).join(", ")}),t.jsx(A,{size:"sm",onClick:l,"aria-label":"Change who holds it",children:e.agents.length===0?"Give them":"Change"})]})}]]})}),e.stderr&&e.stderr.length>0?t.jsx(we,{title:"What the program last said",children:t.jsx(en,{label:"Its last lines on stderr",children:e.stderr.join(`
|
|
139
|
+
`)})}):null,n&&!c?t.jsxs("div",{className:"connections-another",children:[t.jsxs("p",{children:["Another ",n.name," account or workspace? It connects beside this one, with its own sign-in and its own name. In the browser, sign in as that other account."]}),t.jsx(A,{size:"sm",onClick:()=>i({step:"address",card:n}),children:"Add another account"})]}):null]})}function Qne({connection:e,agents:n,onCancel:s,onDone:r}){const[a,i]=d.useState(()=>new Set(e.agents)),[l,o]=d.useState(!1),[c,u]=d.useState(null),h=(p,x)=>i(g=>{const b=new Set(g);return x?b.add(p):b.delete(p),b}),f=a.size===e.agents.length&&e.agents.every(p=>a.has(p)),m=async()=>{o(!0),u(null);try{const p=await T.grantConnection(e.id,[...a],!0);p.failed.length>0?u(p.failed.map(x=>`${x.agent}: ${x.message}`).join("; ")):r()}catch(p){u(zr(p))}finally{o(!1)}};return t.jsxs(Vt,{title:`Who holds ${e.name}`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",disabled:l,onClick:s,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:l||f,onClick:()=>void m(),children:"Save"})]}),children:[t.jsx("p",{className:"plugins-dialog-text",children:"Each agent you tick can use its tools; untick one to take them away. Approvals still ask as before."}),t.jsx("div",{className:"ui-stack","data-gap":"sm",role:"group","aria-label":"Agents",children:n.map(p=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:a.has(p.id),onChange:x=>h(p.id,x.target.checked)}),t.jsxs("span",{children:[p.name,p.frontDesk?" (front desk)":""]})]},p.id))}),t.jsx(re,{message:c})]})}function Jne({connection:e,agentName:n,onCancel:s,onDone:r}){const[a,i]=d.useState(!1),[l,o]=d.useState(null),c=e.agents.map(n),u=async()=>{i(!0),o(null);try{await T.disconnect(e.id),r()}catch(h){o(zr(h))}finally{i(!1)}};return t.jsxs(Vt,{title:`Disconnect ${e.name}?`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",disabled:a,onClick:s,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:a,onClick:()=>void u(),children:"Disconnect"})]}),children:[t.jsxs("p",{className:"plugins-dialog-text",children:["buddi forgets its sign-in and its tools."," ",c.length>0?`${c.join(" and ")} ${c.length===1?"loses":"lose"} them.`:"No agent holds its tools."]}),t.jsx(re,{message:l})]})}function Xne({onFlow:e}){const[n,s]=d.useState(Kne),r=of.find(i=>i.value===n)??of[0],a=i=>{s(i);try{window.localStorage.setItem(XO,i)}catch{}};return t.jsx(lt,{title:"Add your own",actions:t.jsx(dn,{label:"How to add it",options:of.map(({value:i,label:l})=>({value:i,label:l})),value:n,onChange:a}),children:t.jsxs("div",{className:"connections-add",children:[t.jsx("p",{className:"connections-add-text",children:r.text}),t.jsx(A,{variant:"accent",onClick:()=>e(n),children:r.button})]})})}function Zne({start:e,agents:n,catalog:s=[],tokens:r=!0,onClose:a,pollMs:i=2e3}){const[l,o]=d.useState(e.step),[c,u]=d.useState(e.connection),[h,f]=d.useState("unknown"),[m,p]=d.useState(null),[x,g]=d.useState(null),b=(m==null?void 0:m.url)??(c==null?void 0:c.url),j=e.card??s.find(k=>b!==void 0&&zk(k.url,b)),v=(c==null?void 0:c.name)??(j==null?void 0:j.name)??(m==null?void 0:m.name)??"the service",y=l==="paste"?"Paste a config":l==="address"?"Connect a service":l==="program"?c?`Change ${c.name}`:"A program on this computer":l==="consent"?`Sign in to ${v}`:l==="review"?`What ${v} brings`:"Who gets these tools";return t.jsxs(Qe,{title:y,onClose:a,size:"wide",children:[l==="paste"?t.jsx(ese,{onRead:k=>{k.kind==="program"?(g(k.program),o("program")):(p(k.config),o("address"))}}):null,l==="address"?t.jsx(tse,{card:j,pasted:m,onDone:(k,N)=>{u(k),N==="none"?o("review"):(f(N),o("consent"))}}):null,l==="program"?t.jsx(cse,{connection:c,pasted:x,tokens:r,onDone:k=>{var N;g(null),u(k),e.keepGrants&&!((N=k.program)!=null&&N.changedSinceReview)&&k.state!=="pending-review"?a():o("review")}}):null,l==="consent"&&c?t.jsx(rse,{connection:c,signIn:h,card:j,pasted:m==null?void 0:m.header,placeholder:(m==null?void 0:m.placeholder)??!1,tokens:r,pollMs:i,onSignedIn:k=>{p(null),u(k),e.keepGrants?a():o("review")}}):null,l==="review"&&c?t.jsx(use,{connection:c,onKept:k=>{u(k),e.keepGrants?a():o("grant")}}):null,l==="grant"&&c?t.jsx(dse,{connection:c,agents:n,onDone:a}):null]})}function zk(e,n){const s=r=>r.trim().replace(/\/+$/,"").toLowerCase();return s(e)===s(n)}function zr(e){return e instanceof Error?e.message:String(e)}function ese({onRead:e}){const[n,s]=d.useState(""),[r,a]=d.useState(null),i=()=>{try{const l=zne(n);s(""),a(null),e(l)}catch(l){a(zr(l))}};return t.jsxs("form",{className:"ui-stack",onSubmit:l=>{l.preventDefault(),i()},children:[t.jsxs("p",{children:["Paste the block another app uses for this server, the one with ",t.jsx("span",{className:"mono",children:"mcpServers"}),", or the"," ",t.jsx("span",{className:"mono",children:"claude mcp add"})," line its docs print. A remote server gives its address, name and one header; a program its command, arguments and variables. Nothing is kept before you have read it on the next screen."]}),t.jsx(le,{label:"Config",hint:"A url for a remote server, or a command for a program on this computer.",children:t.jsx("textarea",{className:"mono",rows:8,required:!0,autoFocus:!0,spellCheck:!1,autoComplete:"off",value:n,placeholder:'{ "mcpServers": { "github": { "url": "…", "headers": { "Authorization": "Bearer …" } } } }',onChange:l=>s(l.target.value)})}),t.jsx(re,{message:r}),t.jsx(ne,{align:"end",children:t.jsx(A,{type:"submit",variant:"accent",disabled:n.trim()==="",children:"Read it"})})]})}function tse({card:e,pasted:n,onDone:s}){var m,p;const[r,a]=d.useState((n==null?void 0:n.url)??(e==null?void 0:e.url)??""),[i,l]=d.useState(!1),[o,c]=d.useState(null),u=async()=>{l(!0),c(null);try{const x=await T.addConnection(r.trim(),(e==null?void 0:e.name)??(n==null?void 0:n.name));s(x.connection,x.signIn)}catch(x){c(zr(x))}finally{l(!1)}},h=((m=e==null?void 0:e.auth)==null?void 0:m.recommended)==="token",f=((p=e==null?void 0:e.auth)==null?void 0:p.recommended)==="device"&&e.auth.device!==void 0;return t.jsxs("form",{className:"ui-stack",onSubmit:x=>{x.preventDefault(),u()},children:[e?t.jsxs("p",{children:["buddi opens ",e.name,"’s server, reads its name and what it offers, and asks whether it wants you to sign in. Nothing else is sent."]}):t.jsx("p",{children:"Where is the server? buddi opens it, reads its name and what it offers, and nothing else until you have read its tools."}),t.jsx(le,{label:"Address",hint:"An https:// address. A server you start with npx, uvx or a local command is “A program on this computer” instead.",children:t.jsx("input",{required:!0,autoFocus:!e&&!n,spellCheck:!1,value:r,placeholder:"https://",onChange:x=>a(x.target.value)})}),e&&!e.verified?t.jsxs("p",{className:"ui-card-meta",children:["This address is the one ",e.name," published; buddi has not checked it since."]}):null,f?t.jsxs("p",{className:"ui-card-meta",children:[e.name," signs in with a code you type on its site. The next screen shows it."]}):h?t.jsxs("p",{className:"ui-card-meta",children:[e.name," signs in with a token you make on its site. The next screen links to the page."]}):e!=null&&e.clientIdRequired?t.jsxs("p",{className:"ui-card-meta",children:[e.name," does not let buddi register itself: signing in needs a token, or a client id from its developer settings."]}):null,n!=null&&n.header?t.jsx("p",{className:"ui-card-meta",children:n.placeholder?`Your config has a placeholder where the ${n.header.name} header's token goes. You paste the token itself on the next screen.`:`The ${n.header.name} header from your config waits for the sign-in screen. buddi tries it before it keeps it.`}):null,n&&n.dropped.length>0?t.jsxs("p",{className:"ui-card-meta",children:["buddi sends one header, so ",n.dropped.join(", ")," ",n.dropped.length===1?"was":"were"," left out."]}):null,t.jsx(re,{message:o}),t.jsx(ne,{align:"end",children:t.jsx(A,{type:"submit",variant:"accent",disabled:i||r.trim()==="",children:i?"Opening…":"Continue"})})]})}const nse={device:"Device",oauth:"Sign in",token:"Token",client:"Client id"};function sse(e,n,s="none"){const r=e==="manual"?["token","client"]:["oauth","token"],a=n?r:r.filter(i=>i!=="token");return s==="first"?["device",...a]:s==="offered"?[...a.filter(i=>i!=="client"),"device",...a.filter(i=>i==="client")]:a}function rse({connection:e,signIn:n,card:s,pasted:r,placeholder:a,tokens:i,pollMs:l,onSignedIn:o}){var z,D;const[c,u]=d.useState(n),h=(z=s==null?void 0:s.auth)!=null&&z.device?s.auth.recommended==="device"?"first":"offered":"none",f=sse(c,i,h),m=r!==void 0||h!=="first"&&(e.authKind==="token"||((D=s==null?void 0:s.auth)==null?void 0:D.recommended)==="token"),[p,x]=d.useState(()=>m&&f.includes("token")?"token":f[0]),g=f.includes(p)?p:f[0],[b,j]=d.useState(Hne),[v,y]=d.useState(""),[k,N]=d.useState(null),[w,S]=d.useState(!1),[C,E]=d.useState(null),[$,R]=d.useState(!1),[P,O]=d.useState(null),I=`${location.origin}${Wne}`,F=d.useRef(o);F.current=o,d.useEffect(()=>{if(!$)return;let H=!1;const K=async()=>{if(!H){H=!0;try{F.current(await T.connection(e.id))}catch(oe){E(zr(oe))}}},X=typeof BroadcastChannel=="function"?new BroadcastChannel(YO):null;X&&(X.onmessage=oe=>{var B;((B=oe.data)==null?void 0:B.id)===e.id&&K()});let W;const me=Date.now(),fe=async()=>{if(!H){try{const oe=await T.connection(e.id);if((!e.signedIn||e.authKind==="token")&&oe.signedIn&&oe.authKind==="oauth"){K();return}}catch{}if(Date.now()-me>10*6e4){R(!1),E("The sign-in did not come back within ten minutes. Start it again.");return}W=window.setTimeout(()=>void fe(),l)}};return W=window.setTimeout(()=>void fe(),l),()=>{H=!0,X==null||X.close(),window.clearTimeout(W)}},[$,e,l]);const U=async H=>{var K;S(!0),E(null);try{const{authorizeUrl:X}=await T.connectionConsent(e.id,H);N(X)}catch(X){X instanceof pe&&((K=X.detail)==null?void 0:K.code)==="client-id"?(j(X.message),u("manual"),x("client")):E(zr(X))}finally{S(!1)}};d.useEffect(()=>{g!=="oauth"||k!==null||U()},[g]);const L=H=>{const K=window.open(H,"_blank");K?(K.opener=null,O(null)):O(H),R(!0)},M=H=>{x(H),N(null),E(null),R(!1),O(null)};return t.jsxs("div",{className:"ui-stack",children:[f.length>1?t.jsx(dn,{label:"How to sign in",options:f.map(H=>({value:H,label:nse[H]})),value:g,onChange:M}):null,g==="oauth"?t.jsxs(t.Fragment,{children:[t.jsxs("p",{children:["buddi opens ",e.name,"’s own sign-in page in a new tab. You say yes there, the tab comes back here, and buddi keeps the sign-in in its vault. No agent ever sees it."]}),w?t.jsxs(Ce,{children:["Getting ",e.name,"’s sign-in page…"]}):null]}):null,g==="client"?t.jsxs(t.Fragment,{children:[t.jsx(Q,{tone:"warning",children:b}),t.jsx(le,{label:"Client id",children:t.jsx("input",{required:!0,spellCheck:!1,value:v,onChange:H=>{y(H.target.value),N(null),R(!1)}})}),t.jsxs("p",{className:"ui-card-meta",children:["Its redirect address: ",t.jsx("span",{className:"mono",children:I})]})]}):null,g==="token"?t.jsx(lse,{connection:e,card:s,pasted:r,placeholder:a,onSignedIn:o}):null,g==="device"?t.jsx(ise,{connection:e,service:(s==null?void 0:s.name)??e.name,pollMs:l,onSignedIn:o}):null,(g==="oauth"||g==="client")&&$?t.jsxs(Q,{tone:"accent",role:"status",children:["Waiting for you to say yes on ",e.name,"’s page…"]}):null,(g==="oauth"||g==="client")&&P?t.jsx("p",{children:t.jsxs("a",{href:P,target:"_blank",rel:"noopener noreferrer",children:["Open ",e.name,"’s sign-in page"]})}):null,g==="oauth"||g==="client"?t.jsx(re,{message:C}):null,g==="oauth"?t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",onClick:()=>{k&&L(k)},disabled:k===null,children:$?"Open it again":`Sign in to ${e.name}`})}):null,g==="client"?t.jsx(ne,{align:"end",children:k===null?t.jsx(A,{variant:"accent",onClick:()=>void U(v.trim()),disabled:w||v.trim()==="",children:w?"Checking…":"Continue"}):t.jsx(A,{variant:"accent",onClick:()=>L(k),children:$?"Open it again":`Open ${e.name}’s sign-in page`})}):null]})}function ase(e){try{const n=new URL(e);return`${n.host}${n.pathname==="/"?"":n.pathname.replace(/\/$/,"")}`}catch{return e}}function ise({connection:e,service:n,pollMs:s,onSignedIn:r}){const[a,i]=d.useState(null),[l,o]=d.useState(null),[c,u]=d.useState(0),[h,f]=d.useState(null),[m,p]=d.useState(!1),x=d.useRef(r);x.current=r,d.useEffect(()=>{let j=!1,v;i(null),o(null),f(null),p(!1);const y=async()=>{var k,N;if(!j){try{const w=await T.connection(e.id);if(j)return;if(((k=w.device)==null?void 0:k.state)==="done"){x.current(w);return}if(((N=w.device)==null?void 0:N.state)==="failed"){o(w.device.reason??"The sign-in did not finish. Start again.");return}}catch{}v=window.setTimeout(()=>void y(),s)}};return(async()=>{try{const k=await T.connectionDevice(e.id);if(j)return;i({userCode:k.userCode,verificationUri:k.verificationUri}),v=window.setTimeout(()=>void y(),s)}catch(k){j||o(zr(k))}})(),()=>{j=!0,window.clearTimeout(v)}},[e.id,s,c]);const g=j=>{const v=window.open(j,"_blank");p(!0),v?(v.opener=null,f(null)):f(j)},b=a?ase(a.verificationUri):"";return t.jsxs(t.Fragment,{children:[t.jsxs("p",{children:[a?`Open ${b}, type this code there and say yes.`:`Type a code on ${n}’s site and say yes there.`," buddi keeps the sign-in in its vault and sends it only to"," ",t.jsx("span",{className:"mono",children:e.host}),". No agent ever sees it."]}),a===null&&l===null?t.jsxs(Ce,{children:["Asking ",n," for a code…"]}):null,a&&l===null?t.jsxs(t.Fragment,{children:[t.jsx(Lk,{code:a.userCode,label:`Your code for ${n}`,large:!0}),m?t.jsxs(Q,{tone:"accent",role:"status",children:["Waiting for you to approve on ",n,"…"]}):null,h?t.jsx("p",{children:t.jsxs("a",{href:h,target:"_blank",rel:"noopener noreferrer",children:["Open ",b]})}):null,t.jsx(ne,{align:"end",children:t.jsxs(A,{variant:"accent",onClick:()=>g(a.verificationUri),children:["Open ",b]})})]}):null,l!==null?t.jsxs(t.Fragment,{children:[t.jsx(re,{message:l}),t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",onClick:()=>u(j=>j+1),children:"Start again"})})]}):null]})}function lse({connection:e,card:n,pasted:s,placeholder:r,onSignedIn:a}){var j,v;const[i,l]=d.useState((s==null?void 0:s.value)??""),[o,c]=d.useState((s==null?void 0:s.name)??"Authorization"),[u,h]=d.useState((s==null?void 0:s.prefix)??(s?"":"Bearer ")),[f,m]=d.useState(!1),[p,x]=d.useState(null),g=async()=>{m(!0),x(null);try{const y=await T.connectionToken(e.id,{token:i.trim(),header:o.trim(),prefix:u});l(""),a(y.connection)}catch(y){x(zr(y))}finally{m(!1)}},b=(j=n==null?void 0:n.auth)==null?void 0:j.tokenPage;return t.jsxs("form",{className:"ui-stack",onSubmit:y=>{y.preventDefault(),g()},children:[t.jsxs("p",{children:[b?`Make a token on ${e.name}’s site and paste it here.`:`Paste a token ${e.name} gave you.`," buddi tries it on"," ",t.jsx("span",{className:"mono",children:e.host})," first, keeps it in its vault, and sends it only there. No agent ever sees it."]}),b?t.jsx("p",{children:t.jsxs("a",{href:b,target:"_blank",rel:"noopener noreferrer",children:["Make a token on ",e.name]})}):null,r?t.jsx(Q,{tone:"accent",children:"Your config had a placeholder where the token goes. Paste the token itself."}):null,t.jsx(le,{label:"Token",hint:(v=n==null?void 0:n.auth)==null?void 0:v.tokenHint,children:t.jsx("input",{type:"password",required:!0,autoFocus:!(s!=null&&s.value),autoComplete:"off",spellCheck:!1,value:i,onChange:y=>l(y.target.value)})}),t.jsxs(Ks,{columns:2,dense:!0,children:[t.jsx(le,{label:"Header",hint:"Most services want Authorization.",children:t.jsx("input",{required:!0,spellCheck:!1,value:o,onChange:y=>c(y.target.value)})}),t.jsx(le,{label:"Before the token",hint:"Usually “Bearer ”, with its space. Empty for none.",children:t.jsx("input",{spellCheck:!1,value:u,onChange:y=>h(y.target.value)})})]}),t.jsx(re,{message:p}),t.jsx(ne,{align:"end",children:t.jsx(A,{type:"submit",variant:"accent",disabled:f||i.trim()===""||o.trim()==="",children:f?"Trying it…":"Try it and keep it"})})]})}function ose(e){return e!==""&&/^[A-Za-z0-9_@%+=:,./-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function cse({connection:e,pasted:n,tokens:s=!0,onDone:r}){const a=e==null?void 0:e.program,i=d.useRef(0),l=()=>(i.current+=1,i.current),[o,c]=d.useState((e==null?void 0:e.name)??(n==null?void 0:n.name)??""),[u,h]=d.useState((a==null?void 0:a.command)??(n==null?void 0:n.command)??""),[f,m]=d.useState(()=>((a==null?void 0:a.args)??(n==null?void 0:n.args)??[]).map(I=>({key:l(),value:I}))),[p,x]=d.useState(()=>a?a.env.map(I=>({key:l(),name:I.name,value:I.value??"",secret:I.secret,kept:I.secret})):((n==null?void 0:n.env)??[]).map(I=>({key:l(),name:I.name,value:I.value,secret:I.secret,kept:!1}))),[g,b]=d.useState(!1),[j,v]=d.useState(null),y=/\s/.test(u.trim())?GO(u.trim()):[u.trim()],k=y[0]??"",N=[...y.slice(1),...f.map(I=>I.value)],w=[k,...N].filter((I,F)=>F>0||I!==""),S=()=>{y.length<2||(h(k),m(I=>[...y.slice(1).map(F=>({key:l(),value:F})),...I]))},C=w.map(ose).join(" "),E=p.filter(I=>I.secret&&I.value===""&&!I.kept).map(I=>I.name||"a variable"),$=((n==null?void 0:n.env)??[]).filter(I=>I.placeholder).map(I=>I.name),R=(I,F)=>m(U=>U.map(L=>L.key===I?{...L,value:F}:L)),P=(I,F)=>x(U=>U.map(L=>L.key===I?{...L,...F}:L)),O=async()=>{b(!0),v(null);const I={name:o.trim(),command:k,args:N,env:p.filter(F=>F.name.trim()!=="").map(F=>({name:F.name.trim(),value:F.value,secret:F.secret}))};try{r(e?await T.updateProgram(e.id,I):(await T.addProgram(I)).connection),x(F=>F.map(U=>U.secret?{...U,value:""}:U))}catch(F){v(zr(F))}finally{b(!1)}};return t.jsxs("form",{className:"ui-stack",onSubmit:I=>{I.preventDefault(),O()},children:[t.jsx("p",{children:"A server buddi starts itself on this computer, as you, when an agent needs it, and stops after ten quiet minutes. It runs with your PATH and only the variables you name here. The review screen is the first time it runs, only to list its tools."}),t.jsxs(Ks,{columns:2,children:[t.jsx(le,{label:"Name",children:t.jsx("input",{required:!0,autoFocus:!n&&!e,maxLength:80,spellCheck:!1,value:o,onChange:I=>c(I.target.value)})}),t.jsx(le,{label:"Command",hint:"The program that starts the server: npx, uvx, node, or a full path. A whole line is split into it and its arguments.",children:t.jsx("input",{required:!0,spellCheck:!1,autoComplete:"off",className:"mono",value:u,placeholder:"npx",onChange:I=>h(I.target.value),onBlur:S})})]}),t.jsx(le,{label:"Arguments",group:!0,hint:"One per row, exactly as the server's docs give them. No shell: quotes and $VARIABLES are passed as they are.",children:t.jsxs("div",{className:"ui-stack","data-gap":"sm",children:[f.map((I,F)=>t.jsxs("div",{className:"connections-row",children:[t.jsx("input",{"aria-label":`Argument ${F+1}`,className:"mono",spellCheck:!1,autoComplete:"off",value:I.value,onChange:U=>R(I.key,U.target.value)}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>m(U=>U.filter(L=>L.key!==I.key)),"aria-label":`Remove argument ${F+1}`,children:"Remove"})]},I.key)),t.jsx(ne,{children:t.jsx(A,{size:"sm",onClick:()=>m(I=>[...I,{key:l(),value:""}]),children:"Add an argument"})})]})}),t.jsx(le,{label:"Environment variables",group:!0,hint:"A secret is kept in buddi's vault and handed to the program only when it starts. Names with TOKEN, KEY, SECRET or PASSWORD start as secrets.",children:t.jsxs("div",{className:"ui-stack","data-gap":"sm",children:[p.map((I,F)=>t.jsxs("div",{className:"connections-row","data-kind":"env",children:[t.jsx("input",{"aria-label":`Variable ${F+1} name`,className:"mono",spellCheck:!1,autoComplete:"off",placeholder:"NAME",value:I.name,onChange:U=>{const L=U.target.value;P(I.key,I.value===""&&!I.kept?{name:L,secret:HO(L)}:{name:L})}}),t.jsx("input",{"aria-label":`Variable ${F+1} value`,type:I.secret?"password":"text",spellCheck:!1,autoComplete:"off",placeholder:I.kept&&I.value===""?"Kept. Type to replace it.":"value",value:I.value,onChange:U=>P(I.key,{value:U.target.value})}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:I.secret,onChange:U=>P(I.key,{secret:U.target.checked,kept:U.target.checked&&I.kept})}),t.jsx("span",{children:"Secret"})]}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>x(U=>U.filter(L=>L.key!==I.key)),"aria-label":`Remove variable ${F+1}`,children:"Remove"})]},I.key)),t.jsx(ne,{children:t.jsx(A,{size:"sm",onClick:()=>x(I=>[...I,{key:l(),name:"",value:"",secret:!1,kept:!1}]),children:"Add a variable"})})]})}),$.length>0?t.jsxs(Q,{tone:"accent",children:["Your config had a placeholder for ",$.join(", "),". Type the value itself."]}):null,!s&&p.some(I=>I.secret)?t.jsx(Q,{tone:"warning",children:"This installation has no vault, so a secret cannot be kept. Turn the vault on first, or switch Secret off."}):null,t.jsx("p",{className:"ui-card-meta",children:"A server that signs you in through a browser opens it on this computer, so it needs a screen. On a machine without one, give it a token as a secret variable instead."}),t.jsxs("div",{className:"ui-stack","data-gap":"sm",children:[t.jsx("span",{className:"ui-field-label",children:"It will run"}),t.jsx(en,{label:"The command line",children:C||"…"})]}),t.jsx(re,{message:j}),t.jsx(ne,{align:"end",children:t.jsx(A,{type:"submit",variant:"accent",disabled:g||o.trim()===""||u.trim()===""||E.length>0,title:E.length>0?`Give ${E.join(", ")} a value.`:void 0,children:g?"Saving…":e?"Save":"Continue"})})]})}function use({connection:e,onKept:n}){const s=ve(()=>T.connectionReview(e.id),[e.id]),[r,a]=d.useState(null),[i,l]=d.useState(!1),[o,c]=d.useState(null),u=s.data,h=r??(u==null?void 0:u.slug)??"",f=async()=>{var p;if(u){l(!0),c(null);try{n(await T.saveConnectionReview(e.id,{hash:u.hash,...u.slugEditable?{slug:h}:{}}))}catch(x){x instanceof pe&&((p=x.detail)==null?void 0:p.code)==="changed"&&s.reload(),c(zr(x))}finally{l(!1)}}};if(!u)return s.error?t.jsx(re,{message:s.error}):e.transport==="stdio"?t.jsxs(Ce,{children:["Starting ",e.name,"… The first start can take a minute or two while it downloads."]}):t.jsxs(Ce,{children:["Reading what ",e.name," offers…"]});const m=u.tools.filter(p=>p.problem===null).length;return t.jsxs("div",{className:"ui-stack",children:[t.jsxs("p",{children:["Read what ",e.name," brings before it brings it. Each tool gets a buddi name and a tier from what the server says it does; anything that changes something asks you first, on the same approval card as every other tool."]}),u.program?t.jsx(Q,{tone:"warning",title:"This runs on this computer as you",children:t.jsxs(de,{gap:"sm",children:[t.jsx(en,{label:"The command",children:u.program.line}),t.jsx("p",{children:"It can read and change what you can, and reach the network. buddi starts it with only the variables below, stops it after ten quiet minutes, and asks you again if its command changes."}),u.program.env.length>0?t.jsxs("p",{className:"ui-card-meta",children:["Variables: ",u.program.env.map(p=>`${p.name}${p.secret?" (secret)":""}`).join(", ")]}):null]})}):t.jsxs("p",{className:"ui-card-meta",children:["buddi talks to ",t.jsx("span",{className:"mono",children:u.host})," for these tools, and nowhere else."]}),u.annotatedNothing?t.jsxs(Q,{tone:"warning",children:[e.name," says nothing about what its tools do, so every one of them asks you first."]}):null,u.changes&&u.changes.added.length+u.changes.changed.length+u.changes.removed.length>0?t.jsxs(Q,{tone:"warning",title:`${e.name} changed its tools since your last review.`,children:[t.jsxs("ul",{className:"connections-changes","aria-label":"What changed",children:[u.changes.added.length>0?t.jsxs("li",{children:["New: ",t.jsx("span",{className:"mono",children:u.changes.added.join(", ")})]}):null,u.changes.changed.length>0?t.jsxs("li",{children:["Changed: ",t.jsx("span",{className:"mono",children:u.changes.changed.join(", ")})]}):null,u.changes.removed.length>0?t.jsxs("li",{children:["Gone: ",t.jsx("span",{className:"mono",children:u.changes.removed.join(", ")})]}):null]}),t.jsx("p",{children:"Until you keep this list, the new and changed tools wait; the others keep working."})]}):null,u.slugEditable?t.jsx(le,{label:"Its name in buddi",hint:`Tools are called mcp.${h||"…"}.<tool>. Lower case, letters, digits, _ and -.`,children:t.jsx("input",{required:!0,spellCheck:!1,maxLength:24,value:h,onChange:p=>a(p.target.value.toLowerCase())})}):null,u.tools.length===0?t.jsxs(Ce,{children:[e.name," lists no tools."]}):t.jsx("div",{className:"ui-list","aria-label":"Tools",children:u.tools.map(p=>{const x=Bne(p),g=u.slugEditable?p.fullName.replace(/^mcp\.[^.]+\./,`mcp.${h||u.slug}.`):p.fullName;return t.jsx("div",{className:"ui-list-row connections-tool",children:t.jsxs("div",{className:"ui-stack","data-gap":"sm",children:[t.jsxs("div",{className:"ui-card-head",children:[t.jsx("span",{className:"mono",children:g}),p.problem?t.jsx(Ae,{tone:"muted",children:"Cannot be used"}):t.jsx(Ae,{tone:x.tone,children:x.label}),p.change==="added"?t.jsx(Do,{children:"New"}):p.change==="changed"?t.jsx(Do,{children:"Changed"}):null]}),p.description?t.jsx("p",{className:"ui-card-meta",children:p.description}):null,!p.problem&&p.tier==="gated"?t.jsx("p",{className:"ui-card-meta",children:p.destructive?Une:"You can remember its approval for an agent when you give it the tools, or later on the agent’s Tools tab."}):null,p.problem?t.jsxs("p",{className:"ui-card-meta",children:["Left out: ",p.problem,"."]}):null]})},p.name)})}),t.jsx(re,{message:o}),t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",onClick:()=>void f(),disabled:i||u.slugEditable&&h.trim()==="",children:m===1?"Keep this tool":`Keep these ${m} tools`})})]})}function dse({connection:e,agents:n,onDone:s}){var b;const r=n.find(j=>j.frontDesk)??n[0],[a,i]=d.useState(()=>new Set(r?[r.id]:[])),o=(((b=ve(()=>T.connectionTools(e.id),[e.id]).data)==null?void 0:b.tools)??[]).filter(j=>j.tier==="gated"),[c,u]=d.useState(()=>new Set),[h,f]=d.useState(!1),[m,p]=d.useState(null),x=(j,v)=>{i(y=>{const k=new Set(y);return v?k.add(j):k.delete(j),k})},g=async()=>{f(!0),p(null);try{const j=await T.grantConnection(e.id,[...a]);if(j.failed.length>0){p(j.failed.map(v=>`${v.agent}: ${v.message}`).join(" "));return}for(const v of j.granted)for(const y of c)await T.setRememberedApproval(v,y,!0);s()}catch(j){p(zr(j))}finally{f(!1)}};return t.jsxs("div",{className:"ui-stack",children:[t.jsxs("p",{children:[r?`Give these tools to ${r.name}?`:"Which agents get these tools?"," Each one you tick gets ",t.jsx("span",{className:"mono",children:e.grant})," on its tools line."]}),t.jsx("div",{className:"ui-stack","data-gap":"sm",role:"group","aria-label":"Agents",children:n.map(j=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:a.has(j.id),onChange:v=>x(j.id,v.target.checked)}),t.jsxs("span",{children:[j.name,j.frontDesk?" (front desk)":""]})]},j.id))}),t.jsx("p",{className:"ui-card-meta",children:"No one is fine too: the connection waits here until you give it to someone."}),o.length>0?t.jsxs("div",{className:"ui-stack","data-gap":"sm",role:"group","aria-label":"Remembered approval",children:[t.jsx("p",{children:"These ask you first. Tick one to remember your approval for the agents above, so it asks only once."}),o.map(j=>t.jsxs(de,{gap:"sm",children:[t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",disabled:!j.rememberable,checked:c.has(j.tool),onChange:v=>u(y=>{const k=new Set(y);return v.target.checked?k.add(j.tool):k.delete(j.tool),k})}),t.jsx("span",{className:"mono",children:j.tool})]}),j.why?t.jsx("p",{className:"ui-card-meta",children:j.why}):null]},j.tool))]}):null,t.jsx(re,{message:m}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:s,disabled:h,children:"Not now"}),t.jsx(A,{variant:"accent",onClick:()=>void g(),disabled:h||a.size===0,children:"Give them"})]})]})}const hse=(e,n,s)=>`${e} ${e===1?n:s}`;function fse(e){return e.state==="pending-review"||!e.slug?"Not finished: its tools are not reviewed yet.":e.state==="needs-review"?"Its tools changed and need your review.":e.state==="needs-reconnect"?"Its sign-in ended; sign in again first.":null}function mse({agentId:e,agentName:n,readOnly:s,version:r,onSaved:a}){const[i,l]=d.useState({}),o=ve(()=>T.connections().then(y=>(l({}),y)),[r]),[c,u]=d.useState(null),[h,f]=d.useState(null),m=We("connections"),p=async(y,k)=>{u(y.id),f(null);try{const N=await T.setConnectionHolder(y.id,e,k);l(w=>({...w,[y.id]:N.held})),a==null||a()}catch(N){f(N instanceof Error?N.message:String(N))}finally{u(null)}},x=o.data,g=(x==null?void 0:x.connections)??[],b=y=>i[y.id]??y.agents.includes(e),j=x?x.agents.some(y=>y.id===e):!0,v=g.filter(b).length;return t.jsxs(we,{title:"Connections",aside:x&&g.length>0?`holds ${v} of ${g.length} · saved as you change them`:void 0,panel:!0,children:[t.jsx(re,{message:o.error??h}),x?g.length===0?t.jsxs("p",{className:"ui-card-meta",children:["Nothing is connected yet. ",t.jsx("a",{href:m,children:"Connect a service in Connections"})]}):j?t.jsxs(t.Fragment,{children:[s?t.jsx(Q,{tone:"warning",children:"This agent ships with buddi, so its connections are read-only here. Ask Agent Father to make it yours, then it can change."}):null,t.jsx("ul",{className:"ui-list delegate-list","aria-label":`Connections ${n} holds`,children:g.map(y=>{const k=b(y),N=fse(y),w=y.transport==="stdio"?"on this computer":y.host,S=y.slug?hse(y.toolCount,"tool","tools"):"tools not reviewed",C=`holds-${e}-${y.id}`;return t.jsxs("li",{className:"ui-list-row",children:[t.jsx("input",{type:"checkbox",role:"switch",id:C,checked:k,"aria-checked":k,disabled:s||c!==null||N!==null&&!k,onChange:E=>void p(y,E.target.checked)}),t.jsxs("label",{htmlFor:C,className:"ui-list-main",children:[t.jsxs("span",{className:"ui-list-title",children:[y.name,N?t.jsxs(t.Fragment,{children:[" ",t.jsx(Ae,{tone:"warning",children:qO(y).label})]}):null]}),t.jsx("span",{className:"ui-list-sub",children:`${w} · ${S}`}),N?t.jsxs("span",{className:"ui-list-sub",children:[N," ",t.jsx("a",{href:m,children:"Open Connections"})]}):null]})]},y.id)})})]}):t.jsxs("p",{className:"ui-card-meta",children:[n," makes and changes agents, so it holds no connections."]}):o.error?null:t.jsx(Ce,{children:"Loading the connections…"})]})}const pse=(e,n)=>!!e&&!!n&&e.kind===n.kind&&(e.kind==="mascot"?e.role===n.role:e.kind==="emoji"?e.value===n.value:!0);async function ZO(e){const n=await fetch(Ti(e));if(!n.ok)throw new Error(`The picture could not be read (${n.status}).`);const s=await n.blob();return new File([s],`buddi-blob-${e}.png`,{type:"image/png"})}function gse({face:e,onPick:n,label:s=_.assistant.face,kept:r,disabled:a,disableEmoji:i,children:l}){return t.jsxs("div",{className:"meet-faces",role:"group","aria-label":s,children:[t.jsxs("div",{className:"meet-face-row",children:[r?t.jsx("button",{type:"button",className:"meet-face","data-kind":"image","data-chosen":(e==null?void 0:e.kind)==="kept"?"true":void 0,"aria-pressed":(e==null?void 0:e.kind)==="kept","aria-label":"The current picture",disabled:a,onClick:()=>n({kind:"kept",url:r}),children:t.jsx("img",{src:r,alt:""})}):null,V5.map(o=>{const c={kind:"mascot",role:o},u=pse(e,c);return t.jsx("button",{type:"button",className:"meet-face","data-kind":"image","data-chosen":u?"true":void 0,"aria-pressed":u,"aria-label":_.assistant.mascot(o),disabled:a,onClick:()=>n(c),children:t.jsx("img",{src:Ti(o),alt:""})},o)})]}),t.jsx("div",{className:"meet-face-row",children:q5.map(o=>{const c=(e==null?void 0:e.kind)==="emoji"&&e.value===o;return t.jsx("button",{type:"button",className:"meet-face","data-chosen":c?"true":void 0,"aria-pressed":c,disabled:a||i,onClick:()=>n({kind:"emoji",value:o}),children:o},o)})}),l]})}const xse=["mirror","en","fr"],vse=[{value:"3h",label:"3 hours"},{value:"1d",label:"A day"},{value:"1w",label:"A week"},{value:"never",label:"Never"}],wx=10,bx=500,eD=[{id:"identity",label:"Identity"},{id:"brain",label:"Brain"},{id:"tools",label:"Tools"},{id:"team",label:"Team"}],yE=e=>{var n;return e==="access"?"tools":((n=eD.find(s=>s.id===e))==null?void 0:n.id)??"identity"};function jse({agentId:e,section:n,navigate:s}){var g,b,j;const{data:r,error:a,reload:i}=ve(()=>T.agents(),[]),[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(yE(n));d.useEffect(()=>f(yE(n)),[n]);const m=v=>{f(v),s==null||s(Jt(e,"setup",v))},p=async v=>{o(null),u(null);try{const y=await v;u(y.changed.length===0?`No file change needed. ${y.note}.`:`Changed ${y.changed.join(", ")}. ${y.note}.`),i()}catch(y){o(y instanceof Error?y.message:String(y))}},x=r==null?void 0:r.agents.find(v=>v.id===e);return t.jsxs(de,{gap:"lg",children:[t.jsx(cc,{level:"secondary",label:"Setup",children:eD.map(v=>t.jsx(xl,{href:Jt(e,"setup",v.id),active:h===v.id,onClick:y=>{y.preventDefault(),m(v.id)},children:v.label},v.id))}),t.jsx(re,{message:a??l}),c?t.jsx(Q,{tone:"good",role:"status",children:c}):null,r?x?t.jsx(yse,{agent:x,all:r.agents,engine:r.engines.find(v=>v.id===x.id),providers:r.providers,accounts:r.providerAccounts,shown:h,onShow:m,onRun:p,onSaved:i},`${x.id}:${(g=r.engines.find(v=>v.id===x.id))==null?void 0:g.model}:${(j=(b=r.providerAccounts)==null?void 0:b.bindings.find(v=>v.agentId===x.id))==null?void 0:j.accountId}`):t.jsx(Ce,{children:"This agent is not installed as a file."}):t.jsx(Ce,{children:"Loading…"})]})}function yse({agent:e,all:n,engine:s,providers:r,accounts:a,shown:i,onShow:l,onRun:o,onSaved:c}){const u=(s==null?void 0:s.provider)??e.provider.kind,h=r.find(w=>w.kind===u),f=(s==null?void 0:s.model)??e.model,[m,p]=d.useState(String((s==null?void 0:s.maxTurns)??e.maxTurns)),[x,g]=d.useState(null),b=w=>{o(T.setAgentEngine(e.id,w))},j=w=>{const S=r.find(C=>C.kind===w);b({provider:w,model:(S==null?void 0:S.defaultModel)??f})},v=(h==null?void 0:h.models.map(w=>w.id))??[],y=v.includes(f)?v:[f,...v],k=s?s.available:!0,N=(s==null?void 0:s.unavailableReason)??"no credential";return t.jsxs(t.Fragment,{children:[t.jsx("div",{hidden:i!=="identity",children:t.jsxs(de,{gap:"lg",children:[k?null:t.jsxs(Q,{tone:"warning",children:["This agent cannot run right now."," ",t.jsx("a",{href:Jt(e.id,"setup","brain"),onClick:w=>{w.preventDefault(),l("brain")},children:"See Brain."})]}),t.jsx(wse,{agent:e,onSaved:c})]})}),t.jsx("div",{hidden:i!=="brain",children:t.jsxs(de,{gap:"lg",children:[k?null:t.jsxs(Q,{tone:"warning",children:["This agent cannot run right now: ",N,"."]}),t.jsx(we,{panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsxs(we,{title:"Runs on",children:[a?t.jsx(Ase,{agentId:e.id,accounts:a,onRun:o}):t.jsxs(Ks,{children:[t.jsx(le,{label:"Provider",children:t.jsx("select",{value:u,onChange:w=>j(w.target.value),children:r.map(w=>t.jsxs("option",{value:w.kind,children:[w.kind,w.usable?"":" (no credential)"]},w.kind))})}),t.jsxs(le,{label:"Model",children:[t.jsx("input",{list:`models-${e.id}`,defaultValue:f,onBlur:w=>{w.target.value.trim()!==""&&w.target.value.trim()!==f&&b({model:w.target.value.trim()})}}),t.jsx("datalist",{id:`models-${e.id}`,children:y.map(w=>t.jsx("option",{value:w},w))})]})]}),a?null:t.jsxs("p",{className:"ui-card-meta",children:[(s==null?void 0:s.credentialKind)??e.provider.credentialKind," from"," ",t.jsx("span",{className:"mono",children:(s==null?void 0:s.credentialEnv)??e.provider.credentialEnv}),h&&!h.usable?` · default model ${h.defaultModel} (${h.defaultFrom})`:""]}),s!=null&&s.restartRequired?t.jsx("p",{className:"warning",children:"This file has changed since the service loaded it. Run `buddi service restart`."}):null]}),t.jsx(we,{title:"Behaviour",aside:"saved as you change them",children:t.jsxs(Ks,{children:[t.jsx(le,{label:"Steps per reply",hint:`${s!=null&&s.maxTurnsIsDefault?`Default ${s.defaultMaxTurns??40}. `:""}Each tool call is a step; a reply that uses them all stops and offers Continue.`,after:x?t.jsx("span",{className:"critical save-error",role:"alert",children:x}):null,children:t.jsx("input",{type:"number",min:wx,max:bx,value:m,onChange:w=>{p(w.target.value),g(null)},onBlur:()=>{const w=Number(m);if(!Number.isInteger(w)||w<wx||w>bx){g(`Between ${wx} and ${bx}.`);return}w!==((s==null?void 0:s.maxTurns)??e.maxTurns)&&b({maxTurns:w})}})}),t.jsx(le,{label:"Language",hint:"Mirror answers in whatever language you write.",children:t.jsx("select",{value:(s==null?void 0:s.language)??e.language,onChange:w=>b({language:w.target.value}),children:xse.map(w=>t.jsx("option",{value:w,children:w},w))})}),s?t.jsx(le,{label:"New chat after",hint:"Idle time before your next message starts a fresh conversation, with a carried-over note. A transcript that grows too long starts one either way.",children:t.jsx("select",{"aria-label":"New chat after",value:s.idleRollover??"3h",onChange:w=>b({idleRollover:w.target.value==="3h"?null:w.target.value}),children:vse.map(w=>t.jsx("option",{value:w.value,children:w.label},w.value))})}):null,PR(MR(s??{id:e.id,provider:u},a))?t.jsx(le,{label:"Thinking",hint:"Reasoning before the answer. Off is faster and cheaper.",children:t.jsxs("select",{"aria-label":"Thinking",value:(s==null?void 0:s.thinking)??"default",onChange:w=>b({thinking:w.target.value==="default"?null:w.target.value}),children:[t.jsx("option",{value:"default",children:"Model default"}),t.jsx("option",{value:"on",children:"On"}),t.jsx("option",{value:"off",children:"Off"})]})}):t.jsx(le,{label:"Thinking",hint:QU,children:t.jsx("span",{className:"ui-card-meta",children:"Up to the model"})})]})})]})}),t.jsx(Kt,{summary:"Built-in context",boxed:!0,children:t.jsx("p",{className:"ui-card-meta",children:"Every agent receives current time, owner timezone and server-host information. system.time and system.info are always available, without grants or approval. Host and browser access still require their own permissions."})})]})}),t.jsx("div",{hidden:i!=="tools",children:t.jsxs(de,{gap:"lg",children:[t.jsx(bse,{agent:e,all:n,onSaved:c}),s&&e.tools.some(w=>w==="browser.*"||w.startsWith("browser."))?t.jsx(we,{title:"Where it may look",aside:"saved as you change it",panel:!0,children:t.jsxs("div",{className:"br-adv-row",children:[t.jsxs("span",{className:"br-adv-head",children:[t.jsxs("span",{className:"br-adv-title",children:["Pages for ",e.name]}),t.jsxs("span",{className:"br-adv-hint",children:["A conversation’s Use my browser comes first, then this, then ",t.jsx("a",{href:pW,children:"Browser & apps"}),". A rule never allows what is off there."]})]}),t.jsx(Gj,{value:s.browser??"auto",label:`Where ${e.name} may look`,apps:!1,onChange:w=>b({browser:w})})]})}):null,t.jsx(mse,{agentId:e.id,agentName:e.name,readOnly:e.isExample===!0,version:e.tools.join(","),onSaved:c})]})}),t.jsx("div",{hidden:i!=="team",children:t.jsx(de,{gap:"lg",children:t.jsx(Ise,{agent:e,all:n,onSaved:c})})})]})}function tD({dirty:e,busy:n,failure:s,label:r,onSave:a}){return t.jsxs(t.Fragment,{children:[s?t.jsx("span",{className:"critical save-error",role:"alert",children:s}):t.jsx("span",{className:e?"warning":"muted",children:e?"Not saved yet.":"Saved. Applies to new runs."}),t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsx(A,{variant:"accent",disabled:!e||n,onClick:a,children:r})]})}const nD=t.jsx(Q,{tone:"warning",children:"This agent ships with buddi, so its file is read-only here. Ask Agent Father to make it yours, then these fields can change."});function wse({agent:e,onSaved:n}){var O;const[s,r]=d.useState(e.name),[a,i]=d.useState(e.handle),[l,o]=d.useState(e.description),[c,u]=d.useState(e.avatar??""),[h,f]=d.useState(!1),m=ve(()=>T.agentFile(e.id),[e.id]),[p,x]=d.useState(null),g=((O=m.data)==null?void 0:O.persona.trim())??"",b=p??g,j=m.data!==void 0&&p!==null&&p.trim()!==g,[v,y]=d.useState(!1),[k,N]=d.useState(null),[w,S]=d.useState(null),C=s.trim()!==e.name||a.trim().replace(/^@/,"")!==e.handle||l.trim()!==e.description||c.trim()!==(e.avatar??"")||j,E=c.trim()!==""&&(c.trim()!==(e.avatar??"")||!e.picture),$=yy(E?{...e,avatar:c.trim()}:e),R={...$?{avatar:$}:{},...e.accent?{accent:e.accent}:{},roles:e.roles,tools:e.tools,...!E&&e.picture?{picture:e.picture}:{}},P=async()=>{y(!0),N(null),S(null);try{const I=await T.updateAgentFile(e.id,{name:s.trim(),handle:a.trim().replace(/^@/,""),description:l.trim(),...c.trim()===""?{}:{avatar:c.trim()},...j&&b.trim()!==""?{persona:b.trim()}:{}});e.picture&&c.trim()!==""&&c.trim()!==(e.avatar??"")&&(await T.removeAgentPicture(e.id),window.dispatchEvent(new Event(Ts))),x(null),m.reload(),S(I.message),n()}catch(I){N(I instanceof Error?I.message:String(I))}finally{y(!1)}};return t.jsx(we,{title:"Who it is",aside:t.jsx("span",{className:"mono",children:e.id}),panel:!0,foot:e.isExample?void 0:t.jsx(tD,{dirty:C,busy:v,failure:k,label:"Save who it is",onSave:()=>void P()}),children:t.jsxs(de,{children:[e.isExample?nD:null,w?t.jsx(Q,{tone:"good",role:"status",children:w}):null,t.jsxs(Ks,{children:[t.jsx(le,{label:"Name",hint:"What it is called, everywhere.",children:t.jsx("input",{value:s,disabled:v||e.isExample,onChange:I=>r(I.target.value)})}),t.jsx(le,{label:"Handle",hint:"What you type to reach it. One handle, one agent.",children:t.jsx("input",{value:a,disabled:v||e.isExample,onChange:I=>i(I.target.value)})})]}),t.jsxs(ne,{children:[t.jsx(Bn,{id:e.id,name:s.trim()||e.name,size:"xl",face:R}),t.jsx(A,{"aria-expanded":h,onClick:()=>f(I=>!I),children:h?"Hide faces":"Change face"})]}),h?t.jsx(Cse,{agent:e,avatar:c,onEmoji:u,onChanged:n,disabled:v}):null,t.jsx(le,{label:"Description",hint:"One or two sentences. Its colleagues read this.",children:t.jsx("textarea",{rows:2,value:l,disabled:v||e.isExample,onChange:I=>o(I.target.value)})}),t.jsx(le,{label:"Persona",hint:t.jsxs(t.Fragment,{children:["Who it is and how it works, in its own file. It reads this before every conversation; ",t.jsx("code",{children:"{{today}}"})," is filled in with the date at run time."]}),wide:!0,children:m.error?t.jsx(re,{message:m.error}):m.data?t.jsx("textarea",{className:"setup-persona",value:b,rows:Math.max(6,b.split(`
|
|
140
|
+
`).length+1),disabled:v||e.isExample,onChange:I=>x(I.target.value)}):t.jsx(Ce,{children:"Reading its file…"})})]})})}function bse({agent:e,all:n,onSaved:s}){var E;const r=ve(()=>T.agentTools(e.id),[e.id,e.tools.join(",")]),[a,i]=d.useState(null),[l,o]=d.useState(()=>new Set((e.roles??[]).filter(OS))),[c,u]=d.useState((e.roles??[]).filter($=>!OS($)).join(", ")),[h,f]=d.useState(!1),[m,p]=d.useState(null),[x,g]=d.useState(null),b=($,R)=>$.split(R).map(P=>P.trim()).filter(P=>P!==""),j=((E=r.data)==null?void 0:E.granted)??e.tools,v=a??j,y=r.data!==void 0&&!Mne(v,j),k=DS(l,b(c,/[\n,]/)),N=$=>o(R=>{const P=new Set(R);return P.has($)?P.delete($):P.add($),P}),S=y||!(($,R)=>$.join(",")===R.join(","))(k,DS(new Set(e.roles??[]),e.roles??[])),C=async()=>{f(!0),p(null),g(null);try{const $=await T.updateAgentFile(e.id,{...y&&r.data?{tools:Pne(r.data.groups,v)}:{},roles:k});g($.message),i(null),r.reload(),s()}catch($){p($ instanceof Error?$.message:String($))}finally{f(!1)}};return t.jsx(we,{title:"Roles and tools",panel:!0,foot:e.isExample?void 0:t.jsx(tD,{dirty:S,busy:h,failure:m,label:"Save roles and tools",onSave:()=>void C()}),children:t.jsxs(de,{children:[e.isExample?nD:null,x?t.jsx(Q,{tone:"good",role:"status",children:x}):null,t.jsxs("div",{className:"ui-field",children:[t.jsx("span",{className:"ui-field-label",id:`roles-${e.id}`,children:"Roles"}),t.jsx("div",{className:"role-chips",role:"group","aria-labelledby":`roles-${e.id}`,children:yb.map($=>{const R=c8(n,$.id),P=R&&R.id!==e.id?R:void 0;return t.jsxs("button",{type:"button",className:"role-chip","aria-pressed":l.has($.id),"data-on":l.has($.id)?"true":void 0,disabled:h||e.isExample,onClick:()=>N($.id),children:[t.jsx("span",{className:"role-chip-label",children:$.label}),t.jsx("span",{className:"role-chip-meaning",children:$.meaning}),P?t.jsxs("span",{className:"role-chip-holder",children:["Held by ",P.name,". If both claim it, the one listed first keeps it."]}):null]},$.id)})}),t.jsx("span",{className:"ui-field-hint",children:"Where buddi sends things when you do not say who. Tools are granted below."})]}),t.jsx(le,{label:"Other roles",hint:"Only a plugin that asks for a role by name reads these. Comma separated.",children:t.jsx("input",{value:c,disabled:h||e.isExample,onChange:$=>u($.target.value)})}),t.jsxs("div",{className:"ui-field",children:[t.jsxs("span",{className:"ui-field-label",children:["Tools · ",j.length," granted"]}),r.error?t.jsx(re,{message:r.error}):r.data?t.jsx(Dne,{view:r.data,chosen:v,onChange:i,disabled:h||e.isExample}):t.jsx(Ce,{children:"Loading the installed tools…"})]}),t.jsx(kse,{agentId:e.id,version:j.join(","),disabled:h||e.isExample}),Nse(j)?t.jsx(Sse,{agentId:e.id}):null]})})}function kse({agentId:e,version:n,disabled:s}){var x;const r=ve(()=>Promise.resolve().then(()=>T.rememberedApprovals(e)),[e,n]),a=ve(()=>Promise.resolve().then(()=>T.connections()).catch(()=>null),[]),[i,l]=d.useState(null),[o,c]=d.useState(null),u=((x=r.data)==null?void 0:x.tools)??[];if(u.length===0)return null;const h=async(g,b)=>{l(g),c(null);try{await T.setRememberedApproval(e,g,b),r.reload()}catch(j){c(j instanceof Error?j.message:String(j))}finally{l(null)}},f=new Map;for(const g of u)f.set(g.connection,[...f.get(g.connection)??[],g]);const m=g=>{var b,j;return((j=(b=a.data)==null?void 0:b.connections.find(v=>v.slug===g))==null?void 0:j.name)??g},p=g=>g.tool.split(".").slice(2).join(".")||g.tool;return t.jsxs("div",{className:"ui-field",children:[t.jsx("span",{className:"ui-field-label",children:"Connection tools that ask first"}),t.jsx("div",{className:"ui-stack","data-gap":"sm",role:"group","aria-label":"Remembered approvals",children:[...f].map(([g,b])=>{const j=b.filter(N=>N.rememberable),v=b.filter(N=>!N.rememberable),y=j.filter(N=>N.remembered),k=t.jsxs("span",{className:"remembered-summary",children:[t.jsx("span",{className:"remembered-name",children:m(g)}),t.jsxs("span",{className:"ui-card-meta",children:[` · ${b.length} ask first`,y.length>0?` · ${y.length} remembered: ${y.map(p).join(", ")}`:""]})]});return t.jsxs(Kt,{summary:k,boxed:!0,children:[t.jsx("div",{className:"ui-stack","data-gap":"sm",role:"group","aria-label":`${m(g)}: remember my approval`,children:j.map(N=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:N.remembered,disabled:s||i!==null,onChange:w=>void h(N.tool,w.target.checked),"aria-label":`Remember my approval for ${N.tool}`}),t.jsx("span",{className:"mono",children:p(N)})]},N.tool))}),v.length>0?t.jsxs("p",{className:"ui-card-meta remembered-always",children:["These can delete or destroy something, so they always ask and are never remembered:"," ",t.jsx("span",{className:"mono",children:v.map(p).join(", ")})]}):null]},g)})}),t.jsx(re,{message:o}),t.jsx("span",{className:"ui-field-hint",children:"Tick a tool to remember your approval: it asks once, then runs for this agent."})]})}function Nse(e){return e.some(n=>n==="owner.notify"||n==="owner.*"||n==="owner.notify?"||n==="owner.*?")}function Sse({agentId:e}){var h,f;const n=ve(()=>T.notificationSettings(),[]),[s,r]=d.useState(null),[a,i]=d.useState(!1),[l,o]=d.useState(null),c=s??((f=(h=n.data)==null?void 0:h.settings.agents)==null?void 0:f.muted.includes(e))??!1,u=m=>{i(!0),o(null),r(m),T.setAgentMuted(e,m).then(p=>r(p.agents.muted.includes(e))).catch(p=>{r(!m),o(p instanceof Error?p.message:String(p))}).finally(()=>i(!1))};return t.jsxs("div",{className:"ui-field",children:[t.jsx("span",{className:"ui-field-label",children:"Messages to you"}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:c,disabled:a||!n.data,onChange:m=>u(m.target.checked),"aria-label":"Mute this agent's messages"}),t.jsx("span",{children:"Mute its messages"})]}),t.jsx(re,{message:n.error??l}),t.jsx("span",{className:"ui-field-hint",children:"With owner.notify it can message you itself; muted, it is refused and told so."})]})}function yy(e){if(e.avatar)return/^[A-Za-z0-9_-]+\.(png|jpe?g|gif|webp)$/i.test(e.avatar)?{kind:"image",url:`/api/agents/${encodeURIComponent(e.id)}/avatar`}:{kind:"emoji",value:e.avatar.slice(0,8)}}function Cse({agent:e,avatar:n,onEmoji:s,onChanged:r,disabled:a}){const[i,l]=d.useState(null),[o,c]=d.useState(!1),[u,h]=d.useState(null),f=n.trim()!==""&&(n.trim()!==(e.avatar??"")||!e.picture),m=i??(f?{kind:"emoji",value:n.trim()}:e.picture?{kind:"kept",url:e.picture}:null),p=async x=>{if(h(null),x.kind==="emoji"){s(x.value);return}if(x.kind==="kept"){s(e.avatar??"");return}l(x),c(!0);try{await T.uploadAgentPicture(e.id,await ZO(x.role)),s(e.avatar??""),r(),window.dispatchEvent(new Event(Ts))}catch(g){h(g instanceof Error?g.message:String(g))}finally{l(null),c(!1)}};return t.jsxs("div",{className:"ui-field",children:[t.jsx("span",{className:"ui-field-label",children:"Face"}),t.jsx(gse,{face:m,label:"Face",kept:e.picture,disabled:a||o,disableEmoji:e.isExample,onPick:x=>void p(x),children:t.jsx(Ese,{agent:e,onChanged:r})}),u?t.jsx("span",{className:"critical save-error",role:"alert",children:u}):null]})}function Ese({agent:e,onChanged:n}){const[s,r]=d.useState(null),[a,i]=d.useState(null),[l,o]=d.useState(!1),[c,u]=d.useState(null),[h,f]=d.useState(null),[m,p]=d.useState(0);d.useEffect(()=>{if(!s)return i(null);const S=URL.createObjectURL(s);return i(S),()=>URL.revokeObjectURL(S)},[s]);const x=S=>{r(null),p(C=>C+1),f(S),n(),window.dispatchEvent(new Event(Ts))},g=async S=>{o(!0),u(null),f(null);try{x(await S())}catch(C){u(C instanceof Error?C.message:String(C))}finally{o(!1)}},b=()=>g(async()=>(await T.uploadAgentPicture(e.id,s)).note??null),j=()=>g(async()=>(await T.removeAgentPicture(e.id),null)),v={avatar:yy(e),...e.accent?{accent:e.accent}:{},roles:e.roles,tools:e.tools,...a??e.picture?{picture:a??e.picture}:{}},[y,k]=d.useState(!1),N=d.useRef(null),w=S=>{u(null),f(null),r(S??null)};return t.jsxs("div",{className:"setup-upload","data-dragging":y?"true":void 0,onDragOver:S=>{S.preventDefault(),l||k(!0)},onDragLeave:()=>k(!1),onDrop:S=>{var C;S.preventDefault(),k(!1),l||w((C=S.dataTransfer.files)==null?void 0:C[0])},children:[t.jsxs(ne,{children:[t.jsx(Bn,{id:e.id,name:e.name,size:"xl",face:v}),t.jsx("input",{ref:N,className:"sr-only",type:"file","aria-label":"Choose a picture",accept:"image/png,image/gif,image/svg+xml,.png,.gif,.svg",disabled:l,onChange:S=>{var C;return w((C=S.target.files)==null?void 0:C[0])}},m),t.jsx(A,{disabled:l,onClick:()=>{var S;return(S=N.current)==null?void 0:S.click()},children:"Upload a picture"}),t.jsx("span",{className:"setup-upload-name",children:s?s.name:"or drop one here"}),t.jsx("span",{className:"ui-toolbar-spacer"}),e.picture&&!s?t.jsx(A,{variant:"ghost",disabled:l,onClick:()=>void j(),children:"Remove picture"}):null,t.jsx(A,{variant:"accent",disabled:!s||l,onClick:()=>void b(),children:"Save picture"})]}),c?t.jsx("span",{className:"critical save-error",role:"alert",children:c}):t.jsx("span",{className:"ui-field-hint",children:h??"Your own picture: a PNG, GIF or SVG up to 1 MB, kept as a square PNG; a GIF keeps its first frame."})]})}function Ase({agentId:e,accounts:n,onRun:s}){const r=n.bindings.find(p=>p.agentId===e),[a,i]=d.useState((r==null?void 0:r.accountId)??""),[l,o]=d.useState((r==null?void 0:r.model)??""),[c,u]=d.useState(!1),h=n.accounts.find(p=>p.id===a),f=a!==((r==null?void 0:r.accountId)??"")||l!==((r==null?void 0:r.model)??""),m=n.accounts.find(p=>p.id===(r==null?void 0:r.accountId));return t.jsxs("div",{className:"ui-stack",children:[t.jsxs(ne,{valign:"end",children:[t.jsx(le,{label:"Account",children:t.jsxs("select",{value:a,disabled:c,onChange:p=>{var x;i(p.target.value),o(((x=n.accounts.find(g=>g.id===p.target.value))==null?void 0:x.defaultModel)??"")},children:[t.jsx("option",{value:"",children:"Choose an account"}),n.accounts.map(p=>t.jsxs("option",{value:p.id,disabled:!p.enabled,children:[p.label,p.enabled?p.configured?"":" (needs credential)":" (disabled)"]},p.id))]})}),t.jsx(Dk,{accountId:h!=null&&h.configured?a:void 0,label:"Model",value:l,onChange:o,disabled:c},`${a}:${h==null?void 0:h.revision}`)]}),t.jsxs(ne,{children:[f&&a&&l.trim()?t.jsxs("span",{className:"warning",children:["Not saved yet. New runs still use ",m?`${m.label}, ${(r==null?void 0:r.model)??""}`:"nothing","."]}):t.jsx("span",{className:"muted",children:m?`Running on ${m.label} with ${(r==null?void 0:r.model)??"no model"}.`:"No account chosen yet: this agent cannot run until you save one."}),t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsx(A,{variant:"accent",disabled:c||!a||!l.trim()||!f,onClick:()=>{u(!0),s(T.assignProviderAccount(e,a,l).finally(()=>u(!1)))},children:"Save account selection"})]})]})}const $se=["platform.create_agent","platform.update_agent","platform.write_skill","platform.delete_agent","platform.accept_plugin_agent","platform.accept_plugin_skill"],kx=e=>e.tools.some(n=>$se.includes(n)),Tse=["front-desk","maker"],Rse={"front-desk":"Can ask: everyone, as the front desk",maker:"Can ask: everyone, as the maker",list:"Can ask: everyone"};function Ise({agent:e,all:n,onSaved:s}){const[r,a]=d.useState(e.delegates),[i,l]=d.useState(!1),[o,c]=d.useState(null),[u,h]=d.useState(!1),[f,m]=d.useState(e.delegates),[p,x]=d.useState(e.asksEveryone),[g,b]=d.useState(!1),j=n.filter($=>$.id!==e.id),v=Tse.find($=>{var R;return(R=e.roles)==null?void 0:R.includes($)}),y=p===void 0||g,k=g||[...r].sort().join(",")!==[...f].sort().join(","),N=n.filter($=>$.id!==e.id&&($.delegates.includes(e.id)||$.asksEveryone!==void 0&&!kx(e))),w=$=>a(R=>R.includes($)?R.filter(P=>P!==$):[...R,$]),S=async $=>{l(!0),c(null),h(!1);try{const R=await T.setDelegates(e.id,$);m(R.delegates),a(R.delegates),x(R.asksEveryone),b(!1),h(!0),s()}catch(R){c(R instanceof Error?R.message:String(R))}finally{l(!1)}},C=()=>{a(j.filter($=>!kx($)).map($=>$.id)),b(!0),h(!1)},E=k?"Not saved yet.":u?"Saved. Applies to the next run.":y?r.length===0?"Asks nobody.":`May ask ${r.length} agent${r.length===1?"":"s"}.`:"Asks everyone.";return t.jsx(we,{title:"Delegation",aside:e.tools.includes("agent.delegate")?"holds agent.delegate":"no agent.delegate tool: it cannot ask anyone until granted",panel:!0,foot:e.isExample?void 0:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:k?"warning":"muted",children:E}),t.jsx("span",{className:"ui-toolbar-spacer"}),y&&v!==void 0?t.jsx(A,{disabled:i,onClick:()=>void S(["*"]),children:"Let it ask everyone"}):null,y?t.jsx(A,{variant:"accent",disabled:!k||i,onClick:()=>void S(r),children:"Save who it can ask"}):t.jsx(A,{variant:"accent",disabled:i,onClick:C,children:"Limit to…"})]}),children:t.jsxs(de,{divided:!0,children:[t.jsxs(we,{title:"Can ask",children:[e.isExample?t.jsx(Q,{tone:"warning",children:"This agent ships with buddi, so its allowlist is read-only here. Ask Agent Father to make it yours, then it can change."}):null,t.jsx(re,{message:o}),y?j.length===0?t.jsx(Ce,{children:"Nobody else is installed."}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"ui-card-meta",children:"Only the agents ticked here. New teammates must be added here before it can ask them."}),t.jsx("ul",{className:"ui-list delegate-list","aria-label":"Agents this one may ask",children:j.map($=>{const R=kx($);return t.jsxs("li",{className:"ui-list-row",children:[t.jsx("input",{type:"checkbox",id:`can-ask-${e.id}-${$.id}`,checked:r.includes($.id),disabled:R||e.isExample||i,onChange:()=>w($.id)}),t.jsxs("label",{htmlFor:`can-ask-${e.id}-${$.id}`,className:"ui-list-main",children:[t.jsxs("span",{className:"ui-list-title",children:[$.name," ",t.jsxs("span",{className:"mono muted",children:["@",$.handle]})]}),t.jsx("span",{className:"ui-list-sub",children:R?"Makes and changes agents. Never reachable by delegation.":$.description})]})]},$.id)})})]}):t.jsxs("p",{className:"ui-card-meta",children:[Rse[p??"list"],". New agents are included without being added here; agents that make and change agents are never reachable by delegation."]})]}),t.jsx(we,{title:"Asked by",children:N.length===0?t.jsxs("p",{className:"ui-card-meta",children:["No other agent may hand work to ",e.name,"."]}):t.jsx(OW,{children:N.map($=>t.jsx(Ae,{children:$.name},$.id))})})]})})}const Pse=[{id:"team",label:"Team"},{id:"missions",label:"Missions"},{id:"offers",label:"Offers"},{id:"reminders",label:"Reminders"},{id:"skills",label:"Skills"}],Mse=[{id:"conversations",label:"Conversations"},{id:"missions",label:"Missions"},{id:"offers",label:"Offers"},{id:"reminders",label:"Reminders"},{id:"memory",label:"Memory"},{id:"skills",label:"Skills"},{id:"setup",label:"Setup"}];function Ose(e){const n=oW(e.hash);return n?t.jsx(IK,{name:n.name,agents:e.agents,navigate:e.navigate,pluginPages:e.pluginPages}):t.jsx(Dse,{...e})}function Dse({hash:e,timezone:n,navigate:s,agents:r,attention:a,defaultAgentId:i}){var j,v,y,k,N;const l=aW(e),o=((j=/[?&]tab=([a-z]+)/.exec(e))==null?void 0:j[1])??"team",c=w=>S=>{S.preventDefault(),s(w)},u=ve(()=>T.agents(),[]),h=hc(),f=ve(()=>T.offers(),[],2e4),m=FP(),p=(((v=f.data)==null?void 0:v.offers.length)??0)+m.offers.length,x=((k=(y=u.data)==null?void 0:y.default)==null?void 0:k.defaultAgentId)??i??null,[g,b]=d.useState(null);return t.jsxs("div",{className:"ui-page",children:[t.jsx(al,{title:"Agents",lede:o==="skills"?`Skills are short texts an agent follows for one kind of task. Each is a file on ${h}, or a folder when scripts and files come with it.`:`Your team. Each one is a file on ${h} — what it can reach is listed on its page.`,actions:o==="skills"?t.jsxs(t.Fragment,{children:[t.jsx(A,{onClick:()=>b({kind:"upload",at:Date.now()}),children:"Upload"}),t.jsx(A,{variant:"accent",onClick:()=>b({kind:"write",at:Date.now()}),children:"Write a skill"})]}):t.jsx(it,{variant:"accent",href:En(),onClick:c(En()),children:"Add a teammate"})}),t.jsx(cc,{children:Pse.map(w=>t.jsx(xl,{href:w.id==="team"?Mt:`${Mt}?tab=${w.id}`,active:o===w.id,count:w.id==="offers"?p:void 0,onClick:c(w.id==="team"?Mt:`${Mt}?tab=${w.id}`),children:w.label},w.id))}),o==="missions"?t.jsx(NO,{timezone:n,embedded:!0}):null,o==="offers"?t.jsx(_P,{offers:m.offers,reload:m.reload}):null,o==="offers"?t.jsx(CO,{embedded:!0}):null,o==="reminders"?t.jsx(_O,{timezone:n,embedded:!0}):null,o==="skills"?t.jsx(yne,{faces:r,navigate:s,command:g,openSkill:tY(e),openFile:eY(e)}):null,o==="team"?t.jsx(Lse,{data:u.data,error:u.error,reload:u.reload}):null,o==="team"?r.length===0?t.jsx(ms,{icon:"agents",title:"No agents yet",children:"Each agent is a file in the installation's agents folder."}):t.jsx("div",{className:"agents-grid",children:VI(r,x).map(w=>{const S=bd(a.get(w.id));return t.jsxs("div",{className:"ui-card agent-card","data-interactive":"true",...gl(ic(w)),"data-unavailable":w.available?void 0:"true",children:[t.jsx("div",{className:"agent-card-top"}),t.jsx("div",{className:"agent-card-face",children:t.jsx(Bn,{id:w.id,name:w.name,size:"xl",unavailable:!w.available,face:w})}),t.jsxs("div",{children:[t.jsxs("div",{className:"ui-card-title",children:[t.jsx("a",{className:"agent-card-link",href:Jt(w.id,"conversations"),onClick:c(Jt(w.id,"conversations")),children:w.name}),t.jsxs("span",{className:"agent-card-handle mono faint",children:["@",w.handle]})]}),t.jsx("p",{className:"ui-card-meta agent-card-desc",children:w.description})]}),t.jsxs("div",{className:"ui-row",children:[w.id===x?t.jsx(Do,{children:"front desk"}):null,S?t.jsx(Ae,{tone:"critical",dot:!0,children:"waiting for you"}):w.available?t.jsx(Ae,{tone:"good",dot:!0,children:"ready"}):t.jsx(Ae,{tone:"warning",children:pr(w.unavailableReason??"cannot run",60)}),t.jsx(Ae,{mono:!0,children:w.model}),t.jsx(it,{className:"agent-card-talk",size:"sm",href:ht(w.id),onClick:c(ht(w.id)),"aria-label":`Talk to ${w.name}`,children:"Talk"})]})]},w.id)})}):null,l?t.jsx(Qe,{title:((N=r.find(w=>w.id===l.agentId))==null?void 0:N.name)??l.agentId,size:"wide",onClose:()=>s(Mt),children:t.jsx(Fse,{agentId:l.agentId,agent:r.find(w=>w.id===l.agentId),agents:r,tab:l.tab??"conversations",...l.section?{section:l.section}:{},timezone:n,navigate:s,attention:a})}):null]})}function Lse({data:e,error:n,reload:s}){const r=e==null?void 0:e.default,[a,i]=d.useState(null),[l,o]=d.useState(!1),[c,u]=d.useState(null),[h,f]=d.useState(null);if(n)return t.jsx(re,{message:n});if(!r||r.choices.length===0)return null;const m=r.defaultAgentId,p=a??m??"",x=p!==""&&p!==m,g=r.problem,b=v=>v.map(y=>{var k;return((k=r.choices.find(N=>N.id===y))==null?void 0:k.name)??y}).join(" and "),j=async()=>{o(!0),u(null),f(null);try{const v=await T.setDefaultAgent(p);f(v.note),i(null),s()}catch(v){u(v instanceof Error?v.message:String(v))}finally{o(!1)}};return t.jsx(lt,{children:t.jsxs("div",{className:"ui-stack",children:[t.jsx(re,{message:c}),(g==null?void 0:g.code)==="multiple-defaults"?t.jsx(Q,{tone:"warning",role:"status",children:`Two agents claim default in their files: ${b(g.agents)}. The one chosen here wins.`}):(g==null?void 0:g.code)==="no-default-agent"?t.jsx(Q,{tone:"warning",role:"status",children:"No agent file claims the default and this installation has not recorded one. Choose who answers when you name nobody."}):null,h?t.jsx(Q,{tone:"good",role:"status",children:h}):null,t.jsxs(ne,{children:[t.jsxs("div",{className:"default-agent-text",children:[t.jsx("h3",{className:"default-agent-title",children:"Default agent"}),t.jsx("span",{className:"ui-field-hint",children:"Where a chat that names nobody lands."})]}),t.jsx("span",{className:"ui-toolbar-spacer"}),t.jsxs("select",{"aria-label":"Default agent",value:p,disabled:l,onChange:v=>i(v.target.value),children:[p===""?t.jsx("option",{value:"",children:"Choose an agent"}):null,r.choices.map(v=>t.jsxs("option",{value:v.id,disabled:!v.available,children:[v.name," @",v.handle,v.available?"":" (cannot run)"]},v.id))]}),t.jsx(A,{variant:"accent",disabled:l||!x,onClick:()=>void j(),children:"Save"})]})]})})}function Fse({agentId:e,agent:n,agents:s,tab:r,section:a,timezone:i,navigate:l,attention:o}){const c=p=>x=>{x.preventDefault(),l(p)},u=bd(o.get(e)),h=(n==null?void 0:n.name)??e,f=Yte(e),m=n!==void 0&&!n.roles.includes(Mr)&&!n.roles.includes(wd);return t.jsxs("div",{className:"ui-stack","data-gap":"lg",children:[t.jsxs("header",{className:"agent-head",children:[t.jsx(Bn,{id:e,name:h,size:"xl",unavailable:n?!n.available:!1,face:n}),t.jsxs("div",{className:"agent-head-text",children:[t.jsx("p",{className:"ui-page-lede",children:(n==null?void 0:n.description)??"This agent is not in the roster right now."}),f.entry?t.jsx(Qte,{entry:f.entry,navigate:l,onUpdated:f.reload}):null,t.jsxs("div",{className:"ui-row",children:[n?t.jsxs("span",{className:"muted mono",children:["@",n.handle]}):null,n?t.jsx("span",{className:"muted",children:n.model}):null,u?t.jsx(Ae,{tone:"critical",children:u}):n&&!n.available?t.jsx(Ae,{tone:"warning",children:n.unavailableReason??"cannot run"}):null]})]}),t.jsx("div",{className:"ui-page-actions",children:t.jsxs(it,{variant:"accent",href:ht(e),onClick:c(ht(e)),children:["Talk to ",h]})})]}),n&&!n.available?t.jsxs(Q,{tone:"warning",role:"status",children:[qI(n)," ",t.jsx("a",{href:We(uj(n).section),children:uj(n).label})]}):null,t.jsx(cc,{children:Mse.map(p=>t.jsx(xl,{href:Jt(e,p.id),active:r===p.id,onClick:c(Jt(e,p.id)),children:p.label},p.id))}),r==="conversations"?t.jsx(_se,{agentId:e,navigate:l}):null,r==="missions"?t.jsx(NO,{timezone:i,embedded:!0,agentId:e}):null,r==="offers"?t.jsx(CO,{embedded:!0,agentId:e,agentName:h}):null,r==="reminders"?t.jsx(_O,{timezone:i,embedded:!0,agentId:e}):null,r==="memory"?t.jsx($O,{embedded:!0,agents:s,timezone:i,agentId:e}):null,r==="skills"?t.jsx($ne,{agentId:e,agentName:h,faces:s,navigate:l}):null,r==="setup"?t.jsx(jse,{agentId:e,section:a,navigate:l}):null,r==="setup"&&m?t.jsx(Xte,{agentId:e,name:h,navigate:l}):null]})}function _se({agentId:e,navigate:n}){const{data:s,error:r}=ve(()=>nt.conversations(e,50),[e]);if(r)return t.jsx(Ce,{children:r});const a=(s==null?void 0:s.conversations)??[];return t.jsx(lt,{flush:!0,children:s?a.length===0?t.jsx(ms,{icon:"chat",title:"No conversations yet",children:"Say hello, and the conversation shows up here."}):t.jsx(yt,{children:a.map(i=>t.jsx(gt,{href:ht(e,i.id),onClick:()=>n(ht(e,i.id)),title:pr(i.preview||i.opening||"Untitled conversation",90),sub:`${i.messageCount} message${i.messageCount===1?"":"s"}`,side:Xe(i.lastMessageAt??i.startedAt??i.createdAt??null)},i.id))}):t.jsx(Ce,{children:"Loading…"})})}const zse=3e4;function sD(){const{data:e,reload:n}=ve(()=>T.recovery(),[],zse),s=d.useRef(n);return s.current=n,d.useEffect(()=>{const r=()=>{s.current()},a=()=>{document.visibilityState==="visible"&&r()};return window.addEventListener("focus",r),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",r),document.removeEventListener("visibilitychange",a)}},[]),{data:e,reload:n}}function wE(e){return e.kind==="account"?e.accountId?ZI(e.accountId):We("accounts"):e.kind==="telegram"?We("telegram"):e.kind==="connection"?e.connectionId?eP(e.connectionId):We("connections"):e.kind==="email"?e.settingsRoute:We("secrets")}function Use(e){return e.install?vW(e.install):hj}const Bse=We("system");function Wse(e){return e.loadsAtRestart?`installed — loads at the next restart${e.waiting?`; ${e.waiting.note}`:""}`:e.waiting?`${e.name} — ${e.waiting.note}`:e.source}const rD="This buddi was restored from a backup. Nothing runs on its own until you finish the checklist.";function Hse({view:e,onLeft:n}){const{secrets:s,plugins:r,pending:a,grants:i}=e.checklist,l=e.checklist.keptTables??[],[o,c]=d.useState(!0),[u,h]=d.useState([]),[f,m]=d.useState(!1),[p,x]=d.useState(null),[g,b]=d.useState(!1),j=r.filter(N=>!N.installed||N.waiting!==void 0||N.loadsAtRestart===!0),v=a.jobs+a.missions+a.approvals+a.telegramChats,y=N=>{h(w=>w.includes(N)?w.filter(S=>S!==N):[...w,N])},k=()=>{m(!0),x(null),lc({kind:"recovery"},()=>T.leaveRecovery({dropPending:o,keepGrants:u})).then(N=>{N&&N.restarting===!1&&Mo(),b(!0),n==null||n()}).catch(N=>x(N instanceof pe?N.message:String(N))).finally(()=>m(!1))};return t.jsx(lt,{title:"Back from a backup",children:t.jsxs(de,{divided:!0,children:[t.jsxs(we,{children:[t.jsx(un,{items:[{label:"Restored",value:e.restoredAt??"just now"},{label:"From",value:t.jsx("span",{className:"mono",children:e.archive??"—"})}]}),t.jsx("p",{className:"ui-card-meta",children:"Nothing runs on its own yet: no schedules, no watchers, no phone. Chat works. Go through what is below, then turn this buddi back on."})]}),t.jsx(we,{title:"Keys to paste again",children:s.length===0?t.jsx(Ce,{children:"Nothing is missing."}):t.jsx(yt,{children:s.map(N=>t.jsx(gt,{title:N.label??N.name,sub:N.name?t.jsx("span",{className:"mono",children:N.name}):void 0,side:N.signIn?t.jsx(it,{size:"sm",href:wE(N),"aria-label":`Sign in again: ${N.label??N.name}`,children:"Sign in again"}):t.jsx(it,{size:"sm",href:wE(N),"aria-label":`Fix ${N.label??N.name}`,children:"Fix"})},`${N.kind}:${N.accountId??N.name}`))})}),t.jsx(we,{title:"Add-ons to install again",children:j.length===0&&l.length===0?t.jsx(Ce,{children:"Everything the backup named is installed."}):t.jsxs(yt,{children:[j.map(N=>t.jsx(gt,{title:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mono",children:N.name})," ",N.version]}),sub:Wse(N),side:N.loadsAtRestart?t.jsx(it,{size:"sm",href:Bse,"aria-label":`Restart to load ${N.name}`,children:"Restart"}):N.installed?void 0:t.jsx(it,{size:"sm",href:Use(N),"aria-label":`Install ${N.name} again`,children:N.install?"Install":"Find it"})},N.name)),l.map(N=>t.jsx(gt,{title:t.jsx("span",{className:"mono",children:N.table}),sub:N.sentence},`kept:${N.table}`))]})}),t.jsx(we,{title:"Work that was waiting",children:v===0?t.jsx(Ce,{children:"Nothing was in flight when the backup was taken."}):t.jsxs(de,{gap:"sm",children:[t.jsx(un,{items:[{label:"Jobs",value:String(a.jobs)},{label:"Missions",value:String(a.missions)},{label:"Waiting for an answer",value:String(a.approvals)},{label:"Phones",value:String(a.telegramChats)}]}),t.jsxs("label",{className:"recovery-check",children:[t.jsx("input",{type:"checkbox",checked:o,onChange:N=>c(N.target.checked)}),t.jsx("span",{children:"Drop it. It was queued somewhere else, days ago."})]})]})}),t.jsx(we,{title:"Standing permissions",children:i.length===0?t.jsx(Ce,{children:"No agent had a standing permission."}):t.jsxs(de,{gap:"sm",children:[t.jsx("p",{className:"ui-card-meta",children:"Each of these lets an agent act without asking. Keep only the ones you meant."}),t.jsx("ul",{className:"recovery-list",children:i.map(N=>t.jsx("li",{children:t.jsxs("label",{className:"recovery-check",children:[t.jsx("input",{type:"checkbox",checked:u.includes(N.id),onChange:()=>y(N.id),"aria-label":`Keep ${N.tool} for ${N.agent}`}),t.jsxs("span",{children:[t.jsx("span",{className:"mono",children:N.tool})," for ",N.agent," ",t.jsx("span",{className:"ui-card-meta",children:N.scope}),N.description?t.jsxs("span",{className:"ui-card-meta",children:[" — ",N.description]}):null]})]})},N.id))})]})}),t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:p}),g?t.jsx(Q,{tone:"good",role:"status",children:"Turning everything back on. This page comes back in a few seconds."}):t.jsx("p",{className:"ui-card-meta",children:"Leaving starts the schedules, the watchers and the phone again. buddi restarts itself to do it."}),t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",disabled:f||g,onClick:k,children:"Leave recovery mode"})})]})})]})})}function aD(e){const n=e.map(s=>s.title);return n.length<=1?n.join(""):`${n.slice(0,-1).join(", ")} and ${n[n.length-1]}`}function iD(e){return(e??[]).filter(n=>n.state==="ready"&&n.wakesOnRestart===!0)}function Kse(e){return`${aD(e)} ${e.length===1?"is":"are"} installed; ${e.length===1?"it wakes":"they wake"} up after a restart.`}const lD="buddi.handoverWakes";function bE(e){try{window.localStorage.setItem(lD,iD(e).length>0?"1":"0")}catch{}}function Vse(){try{return window.localStorage.getItem(lD)==="0"}catch{return!1}}function oD({plugins:e,onboarding:n="open"}){const[s,r]=d.useState(null),[a,i]=d.useState(!1),[l,o]=d.useState(null);d.useEffect(()=>{if(e!==void 0){e.length>0&&bE(e);return}if(n==="unknown")return;if(n==="done"&&Vse()){r([]);return}let h=!1;return Promise.resolve().then(()=>T.takeOnProgress()).then(f=>{if(h)return;const m=(f==null?void 0:f.plugins)??[];r(m),n==="done"&&bE(m)}).catch(()=>{h||r([])}),()=>{h=!0}},[e,n]);const c=iD(e??s??[]);if(c.length===0)return null;const u=()=>{i(!0),o(null),lc({kind:"plugins",line:`Loading ${aD(c)}…`},()=>T.serviceAction("restart")).catch(h=>o(h instanceof pe?h.message:String(h))).finally(()=>i(!1))};return t.jsxs(Q,{tone:"accent",role:"status",action:t.jsx(A,{size:"sm",variant:"accent",disabled:a,onClick:u,children:"Restart"}),children:[Kse(c),l?` ${l.replace(/[.\s]+$/,"")}.`:" It takes a few seconds, and this page comes back by itself."]})}const kE=3,Gse=40;function qse({agent:e,navigate:n}){var x;const s=d.useRef(null),[r,a]=d.useState(!1),[i,l]=d.useState(null),[o,c]=d.useState(null),u=ve(()=>nt.conversations(e.id,kE),[e.id],3e4),h=ts(Tb),f=ts("(pointer: coarse)");d.useEffect(()=>{var g;!h&&!f&&((g=s.current)==null||g.focus())},[]);const m=(g,b)=>{a(!0),l(null),(async()=>{try{const{conversationId:j}=await nt.startConversation(e.id),v=await nt.send(e.id,{conversationId:j,text:g,...b.length>0?{attachmentIds:b.map(y=>y.artifactId)}:{}});n(ht(e.id,v.conversationId))}catch(j){l(j instanceof pe?j.message:String(j)),c({text:g,at:Date.now()}),a(!1)}})()},p=(((x=u.data)==null?void 0:x.conversations)??[]).slice(0,kE);return t.jsxs("div",{className:"home-ask",children:[i?t.jsx(re,{message:i}):null,t.jsx(Ek,{ref:s,disabled:r||!e.available,running:!1,onSend:m,onStop:()=>{},agentName:e.name,placeholder:`Message ${e.name}…`,draft:o,threadKey:`home.${e.id}`,slim:!0}),p.length>0?t.jsxs("div",{className:"home-continue",children:[t.jsx("span",{className:"home-continue-label",id:`home-continue-${e.id}`,children:"Continue"}),t.jsx("ul",{className:"home-continue-chips","aria-labelledby":`home-continue-${e.id}`,children:p.map(g=>{const b=ht(e.id,g.id),j=g.opening??g.preview??"Untitled conversation",v=Jw(g.lastMessageAt??g.createdAt??g.startedAt??null);return t.jsx("li",{children:t.jsxs("a",{className:"home-continue-chip",href:b,title:j,onClick:y=>{y.preventDefault(),n(b)},children:[t.jsx("span",{className:"home-continue-title",children:pr(j,Gse)}),v?t.jsx("span",{className:"home-continue-when",children:v}):null]})},g.id)})})]}):null]})}function Yse(e){const n=e.indexOf("?");if(n===-1)return;const s=new URLSearchParams(e.slice(n+1)).get("tip");return s&&/^[a-z0-9-]{1,40}(,[a-z0-9-]{1,40}){0,4}$/.test(s)?s:void 0}const NE=3,Qse=320,SE=160,Jse=.3,CE=120,Xse=.06,wy=14;function Zse(e,n=!1){var j,v,y,k;const s=ve(()=>T.tipQueue(e,n),[e,n]),[r,a]=d.useState(new Set),[i,l]=d.useState([]),[o,c]=d.useState(!1),u=((j=s.data)==null?void 0:j.tips)??[];d.useEffect(()=>{l([])},[s.data]);const h=u.filter(N=>!r.has(N.id)),f=[...h.filter(N=>!i.includes(N.id)),...i.flatMap(N=>h.find(w=>w.id===N)??[])],m=!!(e||(v=s.data)!=null&&v.preview),p=d.useCallback((N,w)=>{w==="later"?l(S=>[...S.filter(C=>C!==N),N]):a(S=>new Set(S).add(N)),!m&&(w==="dismiss"?T.dismissTip(N):T.laterTip(N)).catch(()=>{})},[m]),{reload:x}=s,g=d.useCallback(async N=>{await T.restoreTip(N),a(S=>{const C=new Set(S);return C.delete(N),C}),c(!1),x()},[x]),b=(((y=s.data)==null?void 0:y.dismissed)??0)+[...r].filter(N=>u.some(w=>w.id===N)).length;return{tips:f,shown:u.length>0&&!(f.length===0&&o),loaded:s.data!==void 0||s.error!==null,allDismissed:f.length===0&&((((k=s.data)==null?void 0:k.dismissed)??0)>0||u.length>0),error:s.error,dismissed:b,restore:g,leave:p,folded:d.useCallback(()=>c(!0),[])}}function ere(e){return Math.max(-wy,Math.min(wy,e*Xse))}function tre({queue:e,navigate:n}){const s=ts("(prefers-reduced-motion: reduce)"),[r,a]=d.useState({kind:"rest"}),i=d.useRef(null),l=d.useRef(null),o=d.useRef(null),c=d.useRef(null),{tips:u,leave:h,folded:f}=e,m=u.length===0;d.useEffect(()=>()=>{c.current&&clearTimeout(c.current)},[]),d.useEffect(()=>{if(!m||!e.shown)return;const S=setTimeout(f,SE);return()=>clearTimeout(S)},[m,e.shown,f]);const p=d.useCallback(S=>{const C=u[0];!C||r.kind==="fly"||(a({kind:"fly",id:C.id,how:S}),c.current=setTimeout(()=>{h(C.id,S),a({kind:"rest"})},s?SE:Qse))},[u,r.kind,h,s]);if(!e.shown)return null;const x=u[0],g=r.kind==="fly",b=u.slice(0,NE+(g?1:0)),j=S=>{var C,E;g||S.button>0||S.target.closest("button, a, input")||(o.current={id:S.pointerId,x:S.clientX,width:S.currentTarget.offsetWidth},(E=(C=S.currentTarget).setPointerCapture)==null||E.call(C,S.pointerId),a({kind:"drag",dx:0}))},v=S=>{const C=o.current;!C||C.id!==S.pointerId||a({kind:"drag",dx:S.clientX-C.x})},y=S=>{const C=o.current;if(!C||C.id!==S.pointerId)return;o.current=null;const E=S.type==="pointercancel"?0:S.clientX-C.x,$=C.width>0?Math.min(CE,C.width*Jse):CE;Math.abs(E)>=$?p(E<0?"later":"dismiss"):a({kind:"snap"})},k=S=>{S.key==="ArrowLeft"?(S.preventDefault(),p("later")):S.key==="ArrowRight"?(S.preventDefault(),p("dismiss")):S.key==="Enter"&&S.target===S.currentTarget&&x&&(S.preventDefault(),n(x.action.route))},N=()=>{var S;if(r.kind==="drag")return{transform:`translateX(${r.dx}px) rotate(${ere(r.dx)}deg)`,transition:"none"};if(r.kind==="fly"&&!s){const C=r.how==="later"?-1:1,E=((S=i.current)==null?void 0:S.offsetWidth)??400;return{transform:`translateX(${C*E*.8}px) rotate(${C*wy*1.3}deg)`}}},w=u.length;return t.jsx("div",{className:"tip-stack-fold","data-empty":m?"true":void 0,children:t.jsxs("div",{className:"tip-stack-fold-inner",children:[t.jsx("div",{ref:l,className:"tip-stack",role:"group","aria-roledescription":"stack of tips","aria-label":x?`Tips, 1 of ${w}. Left arrow: not now. Right arrow: not this again. Enter: ${x.action.label}.`:"Tips",tabIndex:m?-1:0,onKeyDown:k,"data-motion":s?"reduced":"full","data-depth":Math.min(w,NE)-1,"data-testid":"tip-stack",children:b.map((S,C)=>{const E=C===0,$=g&&E,R=g?Math.max(0,C-1):C;return t.jsx("div",{ref:E?i:void 0,className:"tip-stack-card","data-tip":S.id,"data-depth":$?"leaving":R,"data-dragging":E&&r.kind==="drag"?"true":void 0,"data-leaving":$?r.how:void 0,style:{zIndex:b.length-C,...E?N():{}},"aria-hidden":E?void 0:!0,...E?{}:{inert:""},...E?{onPointerDown:j,onPointerMove:v,onPointerUp:y,onPointerCancel:y}:{},children:t.jsx(Ds,{kind:"tip",tone:"accent",icon:"bulb",title:S.text,from:"A tip from buddi",actions:t.jsx(A,{variant:"accent",tabIndex:E&&!$?void 0:-1,onClick:()=>n(S.action.route),children:S.action.label})})},S.id)})}),x?t.jsxs("div",{className:"tip-stack-nav",children:[t.jsxs(A,{variant:"ghost",size:"sm",title:"It may come back after a while",disabled:g,onClick:()=>p("later"),children:[t.jsx(se,{name:"chevron-left",size:14}),"Not now"]}),t.jsxs("span",{className:"tip-stack-count","aria-live":"polite",children:["1 of ",w]}),t.jsxs(A,{variant:"ghost",size:"sm",title:"Never show this tip again",disabled:g,onClick:()=>p("dismiss"),children:["Not this again",t.jsx(se,{name:"chevron-right",size:14})]})]}):null]})})}const by="buddi.tipsOpen",ky="buddi.tipsSeen";function nre(){try{return window.localStorage.getItem(by)==="1"}catch{return!1}}function sre(){try{const e=JSON.parse(window.localStorage.getItem(ky)??"[]");return Array.isArray(e)?e.filter(n=>typeof n=="string"):[]}catch{return[]}}function rre(e){try{e.length?window.localStorage.setItem(ky,JSON.stringify(e)):window.localStorage.removeItem(ky)}catch{}}function are(e){const[n,s]=d.useState(()=>!!e||nre());d.useEffect(()=>{e&&s(!0)},[e]);const r=d.useCallback(u=>{if(s(u),!e)try{u?window.localStorage.setItem(by,"1"):window.localStorage.removeItem(by)}catch{}},[e]),a=Zse(e,!n),[i,l]=d.useState(sre),o=a.tips.map(u=>u.id).join(",");d.useEffect(()=>{if(e||!a.loaded||a.error)return;const u=o?o.split(","):[],h=n?u:i.filter(f=>u.includes(f));h.join(",")!==i.join(",")&&(l(h),rre(h))},[n,o,e,a.loaded,a.error,i]);const c=!n&&!e&&a.tips.some(u=>!i.includes(u.id));return{open:n,setOpen:r,queue:a,unseen:c,preview:!!e}}function ire({tips:e}){const{open:n,setOpen:s,unseen:r}=e,a=r?"A new tip":"Tips";return t.jsxs("button",{type:"button",className:"ui-icon-btn home-tips-btn","aria-label":a,"aria-pressed":n,title:a,"data-open":n,onClick:()=>s(!n),children:[t.jsx(se,{name:"bulb"}),r?t.jsx("span",{className:"home-tips-dot","data-testid":"tips-dot"}):null]})}function lre({tips:e,navigate:n}){const{open:s,setOpen:r,queue:a}=e;if(!s)return null;const i=a.loaded&&!a.shown;return t.jsx("div",{className:"home-tips","data-testid":"tips-section",children:t.jsxs(we,{title:"Tips",actions:t.jsx(A,{variant:"ghost",size:"sm",onClick:()=>r(!1),children:"Close"}),children:[t.jsx(re,{message:a.error}),i&&!a.error?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"home-tips-empty",children:a.allDismissed?"You've turned off every tip that applies.":"No tips right now. New ones appear as you use buddi."}),a.dismissed>0&&!e.preview?t.jsx(ore,{queue:a}):null]}):t.jsx(tre,{queue:a,navigate:n})]})})}function ore({queue:e}){const[n,s]=d.useState(!1),r=e.dismissed;return n?t.jsx(cre,{queue:e}):t.jsxs("p",{className:"home-tips-dismissed",children:[t.jsxs("span",{children:[r," dismissed"]}),t.jsx("span",{"aria-hidden":"true",children:"·"}),t.jsx(A,{variant:"ghost",size:"sm",onClick:()=>s(!0),children:"Show"})]})}function cre({queue:e}){var h;const n=ve(()=>T.dismissedTips(),[]),[s,r]=d.useState(new Set),[a,i]=d.useState(null),[l,o]=d.useState(null),c=(((h=n.data)==null?void 0:h.tips)??[]).filter(f=>!s.has(f.id)),u=async f=>{i(f),o(null);try{await e.restore(f),r(m=>new Set(m).add(f))}catch(m){o(m instanceof Error?m.message:String(m))}finally{i(null)}};return t.jsxs("div",{className:"home-tips-dismissed-list","data-testid":"tips-dismissed",children:[t.jsx(re,{message:n.error??l}),n.data&&c.length===0?null:t.jsx(yt,{children:c.map(f=>t.jsx(gt,{title:f.text,side:t.jsx(A,{size:"sm",disabled:a!==null,onClick:()=>void u(f.id),children:"Bring back"})},f.id))})]})}function ure(e){return e.length<=1?e[0]??"":e.length<=4?`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`:`${e.slice(0,3).join(", ")} and ${e.length-3} more`}function dre({glance:e,team:n,onClose:s}){if(!e.today||!e.note)return null;const r=n.filter(a=>a.available).slice(0,8);return t.jsxs("section",{className:"bd-card","aria-label":"Your birthday",children:[e.image?t.jsxs("figure",{className:"bd-art",children:[t.jsx("img",{src:Lr(e.image),alt:"A picture your team made for your birthday"}),t.jsx("figcaption",{children:"Made for you"})]}):null,t.jsxs("div",{className:"bd-body",children:[t.jsx("p",{className:"bd-kicker",children:"From your team"}),t.jsx("p",{className:"bd-note",children:e.note}),r.length>0?t.jsxs("div",{className:"bd-foot",children:[t.jsx("span",{className:"bd-faces",children:r.slice(0,4).map(a=>t.jsx(yn,{agents:n,id:a.id,size:"sm"},a.id))}),t.jsx("span",{className:"bd-sign",children:ure(r.map(a=>a.name))})]}):null]}),t.jsx("button",{type:"button",className:"ui-icon-btn bd-close","data-size":"sm","aria-label":"Put it away for today",title:"Put it away for today",onClick:s,children:t.jsx(se,{name:"close"})})]})}const hre="Write these down; they open your backups and only you have them.";function fre(){var r;const e=ve(()=>T.passphraseNotice(),[]),[n,s]=d.useState(!1);return{data:e.data,shown:!n&&!!((r=e.data)!=null&&r.show),gone:()=>s(!0)}}function mre({notice:e}){const[n,s]=d.useState(null),[r,a]=d.useState(!1),[i,l]=d.useState(null),[o,c]=d.useState(""),[u,h]=d.useState(null),f=e.data;if(!e.shown||!f||!f.show)return null;const m="passphrase"in f?f.passphrase:u,p=()=>{m!==null&&navigator.clipboard.writeText(m).then(()=>s("done"),()=>s("failed"))},x=()=>{a(!0),l(null),T.revealBackupPassphrase(o).then(b=>{h(b.passphrase),c("")}).catch(b=>l(b instanceof pe?b.message:String(b))).finally(()=>a(!1))},g=()=>{a(!0),l(null),T.acknowledgePassphrase().then(()=>e.gone()).catch(b=>l(b instanceof pe?b.message:String(b))).finally(()=>a(!1))};return t.jsxs(Ds,{kind:"passphrase",tone:"accent",icon:"key",title:"Your backup passphrase",from:"buddi · after your first backup",actions:m!==null?t.jsxs(t.Fragment,{children:[t.jsx(A,{onClick:p,children:n==="done"?"Copied":n==="failed"?"Could not copy":"Copy"}),t.jsx(A,{variant:"accent",disabled:r,onClick:g,children:"I saved it"})]}):t.jsx(A,{variant:"accent",disabled:r||o==="",onClick:x,children:"Show the words"}),children:[t.jsx(re,{message:i}),t.jsx("p",{children:hre}),m!==null?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"backup-phrase mono","aria-label":"Your backup passphrase",children:m}),t.jsx("p",{className:"ui-card-meta",children:"Later, Settings → Backup shows them again behind your PIN."})]}):t.jsx(le,{label:"Your PIN",hint:"The one that unlocks this dashboard.",children:t.jsx("input",{type:"password",inputMode:"numeric",autoComplete:"off",value:o,onChange:b=>c(b.target.value),onKeyDown:b=>{b.key==="Enter"&&o!==""&&x()}})})]})}const cD="buddi.needsYouView";function pre(){try{return window.localStorage.getItem(cD)==="list"?"list":"deck"}catch{return"deck"}}function gre(e){try{window.localStorage.setItem(cD,e)}catch{}}function xre(e,n,s){const r=(n.alsoFrom??[]).filter(a=>a!==n.agentId).map(s);return r.length===0?e:`${e} · also ${r.join(", ")}`}function vre({rows:e,agents:n,label:s,onOpen:r,onDone:a}){const[i,l]=d.useState(0);if(e.length===0)return t.jsx(Ce,{mascot:!0,children:"Nothing needs you. Your agents are on it."});const o=Math.min(i,e.length-1),c=e[o],u=e.length>1,h=x=>l((o+x+e.length)%e.length),f=()=>r(c),m=()=>a(c),p=x=>{const g=x.target;g.closest('input, textarea, select, [contenteditable="true"]')||(x.key==="ArrowRight"&&u?(x.preventDefault(),h(1)):x.key==="ArrowLeft"&&u?(x.preventDefault(),h(-1)):x.key==="Enter"&&!g.closest("button, a")?(x.preventDefault(),(c.link||c.agentId)&&f()):(x.key==="d"||x.key==="Delete")&&!x.metaKey&&!x.ctrlKey&&!x.altKey&&(x.preventDefault(),m()))};return t.jsx("div",{className:"home-deck","data-depth":Math.min(e.length-1,2),role:"region","aria-label":"Needs you, one at a time","aria-roledescription":"deck",tabIndex:0,onKeyDown:p,children:t.jsx(Ds,{kind:"request",tone:"accent",title:Ou(c),time:c.state==="held"?"today":Xe(c.createdAt),from:t.jsx(Gu,{face:c.agentId?t.jsx(yn,{agents:n,id:c.agentId,size:"sm"}):void 0,children:s(c)}),lead:t.jsxs("span",{className:"home-deck-nav",children:[t.jsx(A,{size:"sm",variant:"ghost","aria-label":"Previous",disabled:!u,onClick:()=>h(-1),children:t.jsx(se,{name:"chevron-left"})}),t.jsxs("span",{className:"home-deck-count","aria-live":"polite",children:[o+1," of ",e.length]}),t.jsx(A,{size:"sm",variant:"ghost","aria-label":"Next",disabled:!u,onClick:()=>h(1),children:t.jsx(se,{name:"chevron-right"})})]}),actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{onClick:m,children:"Done"}),c.link||c.agentId?t.jsx(A,{variant:"accent",onClick:f,children:"Open"}):null]}),children:c.text||c.action?t.jsxs("div",{className:"home-deck-body",children:[c.text?t.jsx("p",{className:"home-deck-text",children:c.text}):null,c.action?t.jsx("p",{className:"home-deck-text",children:t.jsx("strong",{children:c.action})}):null]}):null})})}function jre({row:e,agents:n,label:s,onOpen:r,onDone:a}){const i=!!(e.link||e.agentId);return t.jsx(Ds,{kind:"request",tone:"accent",compact:!0,title:Ou(e),...i?{href:e.link??"#",onOpen:()=>r(e)}:{},time:e.state==="held"?"today":Xe(e.createdAt),from:t.jsx(Gu,{face:e.agentId?t.jsx(yn,{agents:n,id:e.agentId,size:"sm"}):void 0,children:e.action?`${s(e)} · ${e.action}`:s(e)}),actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{size:"sm",onClick:()=>a(e),children:"Done"}),i?t.jsx(A,{size:"sm",variant:"accent",onClick:()=>r(e),children:"Open"}):null]})})}function yre({timezone:e,navigate:n,agents:s,defaultAgentId:r,attention:a,update:i,connectionSignals:l=[],hash:o="",pluginPages:c,onboarding:u}){var st,Fe,wt,ot,tn,$t,Et,$n,nn,ce,Me,Ze,Ct,mt,Pe,ct,_e,Gt;const h=ve(()=>T.overview(),[],15e3),f=ve(()=>T.approvals(),[],1e4),m=ve(()=>T.missions(),[],6e4),p=ve(()=>T.reminders(),[],6e4),x=ve(()=>T.conversations(),[],3e4),g=ve(()=>T.offers(),[],3e4),b=ve(()=>T.proposals(),[],6e4),j=ve(()=>T.agentOffers(),[],6e4),v=ve(()=>T.owner(),[]),y=ve(()=>T.birthday(),[],5*6e4),k=ve(()=>T.notificationsNeedingYou(),[],3e4),N=d.useMemo(()=>VI(s,r??null),[s,r]),w=_K(s,r),{busy:S,note:C,failure:E,decide:$}=zb(()=>{f.reload(),h.reload()}),R=h.data,P=s.find(Z=>Z.id===r)??null,O=Z=>PW(Z,s),I=Z=>ut=>{ut.preventDefault(),n(Z)},F=((st=f.data)==null?void 0:st.pending)??[],U=((Fe=R==null?void 0:R.jobs)==null?void 0:Fe.failed)??0,L=((wt=R==null?void 0:R.sentinels)==null?void 0:wt.openUrgent)??0,M=((ot=b.data)==null?void 0:ot.open.length)??0,z=(((tn=j.data)==null?void 0:tn.offers)??[]).filter(Z=>!F.some(ut=>LP(ut,Z.plugin,Z.agent))),D=bre((($t=k.data)==null?void 0:$t.notifications)??[],F),[H,K]=d.useState(new Set),[X,W]=d.useState(pre),me=D.filter(Z=>!H.has(Z.id)),fe=Z=>{K(ut=>new Set(ut).add(Z.id)),T.notificationSeen(Z.id).catch(()=>{})},oe=Z=>{fe(Z);const ut=Z.link??(Z.agentId?ht(Z.agentId):null);ut&&n(ut)},B=Z=>xre(Z.agentId?O(Z.agentId):Z.pluginId?cj(Z.pluginId,c==null?void 0:c.all):wre[Z.kind],Z,O),ue=Cre(R==null?void 0:R.dismissed,()=>h.reload()),Ne=(((Et=R==null?void 0:R.sentinels)==null?void 0:Et.errors)??[]).filter(Z=>!ue.is(`watcher-error:${Z.sentinelId}`,Z.error)),Ke=((R==null?void 0:R.mail)??[]).filter(Z=>Z.lastError&&!ue.is(`source-error:${Z.sourceId}`,Z.lastError)),G=kre(a),ae=l.filter(Z=>!ue.is(`connection:${Z.id}`,Z.sentence)),J=((($n=R==null?void 0:R.needsYou)==null?void 0:$n.recovery)??0)>0,xe=are(Yse(o)),Ie=fre(),Y=!!(i&&i.updateAvailable&&!i.checkout&&i.latest&&!ue.is("update",i.latest)),te=F.length+G.length+z.length+D.length+ae.length+(J?1:0)+(Ie.shown?1:0)+(Y?1:0)+Ne.length+Ke.length;d.useEffect(()=>{var Z,ut;o===Oo&&((ut=(Z=document.getElementById(Ny))==null?void 0:Z.scrollIntoView)==null||ut.call(Z,{behavior:"smooth",block:"start"}))},[o]);const ie=d.useMemo(()=>{var Z,ut;return Tre(((Z=m.data)==null?void 0:Z.missions)??[],((ut=p.data)==null?void 0:ut.reminders)??[])},[m.data,p.data]),ge=(((nn=x.data)==null?void 0:nn.conversations)??[]).slice(0,5),je=((ce=g.data)==null?void 0:ce.offers)??[],Se=je.slice(0,Ere),ke=je.length-Se.length,Be=rO(()=>h.reload()),rt=jee(),ye=d.useMemo(()=>yee(rt.answer),[rt.answer]),Ue=Lre((R==null?void 0:R.needsYou)??{approvals:F.length,questions:G.length,failed:U,urgent:L,proposals:M,agentsToSetUp:z.length,asks:D.length,signIns:ae.length,recovery:J?1:0},(R==null?void 0:R.paused)??!1).map(Z=>{var ut;return Z.key==="urgent"?{...Z,hint:Dre(Z.count??0,((ut=R==null?void 0:R.sentinels)==null?void 0:ut.decisions)??[])}:Z});return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"home-band",children:[t.jsxs("header",{className:"home-top",children:[t.jsxs("div",{className:"home-top-text",children:[t.jsxs("p",{className:"home-date",children:[t.jsx("span",{children:Mre(R==null?void 0:R.now,e)}),t.jsx(QZ,{glances:R==null?void 0:R.glances,navigate:n,except:ye,hiding:Be}),t.jsx(ire,{tips:xe})]}),t.jsx("h1",{className:"home-greeting",children:(Me=y.data)!=null&&Me.today?Ire(y.data.name??((Ze=v.data)==null?void 0:Ze.preferredName)??((Ct=v.data)==null?void 0:Ct.displayName)):Pre(R==null?void 0:R.now,e,((mt=v.data)==null?void 0:mt.preferredName)||((Pe=v.data)==null?void 0:Pe.displayName))}),t.jsx(Fre,{items:Ue,navigate:n})]}),t.jsx("div",{className:"home-side",children:t.jsx(oP,{size:"lg",anim:"idle"})})]}),(ct=y.data)!=null&&ct.today&&y.data.note&&!ue.is("birthday",y.data.date)?t.jsx(dre,{glance:y.data,team:N,onClose:()=>ue.close("birthday",y.data.date)}):null]}),t.jsxs("div",{className:"home",children:[P?t.jsx(qse,{agent:P,navigate:n},P.id):null,t.jsx(lre,{tips:xe,navigate:n}),t.jsx(re,{message:h.error??f.error??E}),C?t.jsx("p",{className:"home-note muted",role:"status",children:C}):null,te>0?t.jsx("div",{id:Ny,className:"home-needs",children:t.jsx(we,{title:"Needs you",aside:t.jsx("a",{href:mj,onClick:I(mj),children:"All notifications"}),actions:D.length>0?t.jsx(dn,{label:"Show what needs you as",options:[{value:"list",label:"List"},{value:"deck",label:"Deck"}],value:X,onChange:Z=>{W(Z),gre(Z)}}):void 0,children:t.jsxs(de,{children:[F.map(Z=>t.jsx(Ub,{action:Z,timezone:e,busy:S===Z.id,onDecide:$,agentName:O(Z.agentId),agents:s},Z.id)),G.map(Z=>t.jsx(Ds,{kind:"question",tone:"accent",icon:"chat",title:"Asked you a question",href:Z.route,onOpen:()=>n(Z.route),time:Xe(Z.at),from:t.jsxs(Gu,{face:t.jsx(yn,{agents:s,id:Z.agentId,size:"sm"}),children:[O(Z.agentId)," · waiting for your answer"]}),actions:t.jsx(A,{variant:"accent",onClick:()=>n(Z.route),children:"Answer"})},Z.agentId)),D.length>0&&X==="list"?t.jsx(de,{gap:"sm",children:me.map(Z=>t.jsx(jre,{row:Z,agents:s,label:B,onOpen:oe,onDone:fe},Z.id))}):null,D.length>0&&X==="deck"?t.jsx(vre,{rows:me,agents:s,label:B,onOpen:oe,onDone:fe}):null,t.jsx(mre,{notice:Ie}),Y&&i?t.jsx(Ds,{kind:"update",tone:"accent",icon:"download",title:t.jsxs(t.Fragment,{children:["A newer buddi is ready: ",t.jsx("span",{className:"mono",children:i.latest})]}),from:`buddi · you have ${i.current}`,dismiss:{onClick:()=>ue.close("update",i.latest),hint:"Tell me at the next version"},actions:t.jsx(it,{variant:"accent",href:We("system"),onClick:I(We("system")),children:"Upgrade from Settings"})}):null,Ne.map(Z=>t.jsx(Ds,{kind:"watcher-error",tone:"warning",icon:"alert",title:`Watcher ${Z.sentinelId} failed`,from:"buddi · your watchers",dismiss:{onClick:()=>ue.close(`watcher-error:${Z.sentinelId}`,Z.error),hint:"Hide until the error changes"},actions:t.jsx(it,{href:We("watchers"),onClick:I(We("watchers")),children:"Open Watchers"}),children:t.jsx("p",{children:Z.error})},Z.sentinelId)),Ke.map(Z=>t.jsx(Ds,{kind:"source-error",tone:"warning",icon:"alert",title:`Source ${Z.sourceId} cannot be read`,from:"buddi · your sources",dismiss:{onClick:()=>ue.close(`source-error:${Z.sourceId}`,Z.lastError),hint:"Hide until the error changes"},children:t.jsx("p",{children:Z.lastError})},Z.sourceId)),ae.map(Z=>t.jsx(Ds,{kind:"sign-in",tone:"accent",icon:"plug",title:Z.sentence,from:`${Z.name} · a connection`,dismiss:{onClick:()=>ue.close(`connection:${Z.id}`,Z.sentence),hint:"Tell me if it changes"},actions:t.jsx(it,{variant:"accent",href:We("connections"),onClick:I(We("connections")),children:"Open Connections"})},Z.id)),z.map(Z=>t.jsx(Wb,{plugin:Z.plugin,agent:Z.agent,text:Z.text,label:`Create @${Z.handle}`,handle:Z.handle,card:{from:cj(Z.plugin,c==null?void 0:c.all)},onDismiss:()=>{T.dismissAgentOffer(Z.plugin,Z.agent).then(()=>j.reload())}},`${Z.plugin}/${Z.agent}`)),J?t.jsx(Ds,{kind:"recovery",tone:"warning",icon:"archive",title:"Finish restoring this buddi",from:"buddi · restored from a backup",actions:t.jsx(it,{variant:"accent",href:pj,onClick:I(pj),children:"Open the checklist"}),children:t.jsx("p",{children:rD})}):null]})})}):null,t.jsx(oD,{...u?{onboarding:u}:{}}),t.jsx(Nee,{widgets:rt,navigate:n}),t.jsxs(we,{title:"Your team",aside:w?t.jsx("a",{href:En(),onClick:I(En()),children:"See all teammates"}):t.jsx("a",{href:Mt,onClick:I(Mt),children:"All agents"}),children:[s.length===0?t.jsx(Ce,{mascot:!0,children:"No agents yet. Add one under Agents."}):t.jsxs("div",{className:"home-team",children:[N.map(Z=>{const ut=bd(a.get(Z.id));return t.jsxs("a",{className:"home-face",...gl(ic(Z)),href:ht(Z.id),onClick:I(ht(Z.id)),"data-waiting":ut?"true":void 0,"data-unavailable":Z.available?void 0:"true",children:[t.jsx(Bn,{id:Z.id,name:Z.name,size:"lg",unavailable:!Z.available,face:Z}),t.jsxs("span",{className:"home-face-text",children:[t.jsx("span",{className:"home-face-name",children:Z.name}),t.jsx("span",{className:"home-face-status",children:ut?_re(ut):Z.available?pr(Z.description,60):Z.unavailableReason??"Cannot run right now."})]})]},Z.id)}),w?null:t.jsxs("a",{className:"team-add",href:En(),onClick:I(En()),"data-testid":"team-add",children:[t.jsx(se,{name:"plus",size:14}),"Add a teammate"]})]}),t.jsx(HK,{navigate:n,newTeam:w,closed:ue})]}),Se.length>0?t.jsx(we,{title:"On offer",aside:t.jsxs("span",{className:"ui-row",children:[ke>0?t.jsxs("a",{href:`${Mt}?tab=offers`,onClick:I(`${Mt}?tab=offers`),children:[ke," more"]}):null,t.jsx(SO,{ids:je.map(Z=>Z.id),onDone:()=>g.reload()})]}),children:t.jsx("div",{className:"home-offers",children:Se.map(Z=>t.jsx($re,{offer:Z,agents:s,open:I(Jt(Z.agentId,"offers")),onDismissed:()=>g.reload()},Z.id))})}):null,t.jsx($Z,{}),(Gt=(_e=b.data)==null?void 0:_e.digest)!=null&&Gt.latest&&Sre(b.data.digest.latest,R==null?void 0:R.now,ue.is)?t.jsx(Ore,{digest:b.data.digest.latest,go:I,onClose:()=>ue.close(uD,b.data.digest.latest.at)}):null,t.jsxs("div",{className:"home-columns",children:[t.jsx(we,{title:"Coming up",aside:t.jsx("a",{href:`${Mt}?tab=missions`,onClick:I(`${Mt}?tab=missions`),children:"All missions"}),children:t.jsx(lt,{flush:!0,children:ie.length===0?t.jsx(Ce,{mascot:!0,children:"Nothing scheduled. Missions and reminders will show here."}):t.jsx(yt,{children:ie.map(Z=>t.jsx(gt,{href:Z.route,onClick:()=>n(Z.route),lead:t.jsx(yn,{agents:s,id:Z.agentId,size:"sm"}),title:Z.title,sub:`${Z.kind} for ${O(Z.agentId)}`,side:Xe(Z.at)},Z.key))})})}),t.jsx(we,{title:"Lately",aside:t.jsx("a",{href:cn,onClick:I(cn),children:"All activity"}),children:t.jsx(lt,{flush:!0,children:ge.length===0?t.jsx(Ce,{mascot:!0,children:"Nothing has run yet. Say hello to someone on your team."}):t.jsx(yt,{children:ge.map(Z=>t.jsx(gt,{href:ht(Z.agentId,Z.id),onClick:()=>n(ht(Z.agentId,Z.id)),lead:t.jsx(yn,{agents:s,id:Z.agentId,size:"sm"}),title:Z.opening?pr(Z.opening,80):"Untitled conversation",sub:`${O(Z.agentId)}, ${Z.messageCount} message${Z.messageCount===1?"":"s"}`,side:Xe(Z.lastMessageAt??Z.createdAt)},Z.id))})})})]}),((R==null?void 0:R.home)??[]).filter(Z=>!ue.is(EE(Z.id),AE)).map(Z=>t.jsx(zre,{block:Z,onHide:()=>ue.close(EE(Z.id),AE)},Z.id)),R!=null&&R.jobs&&R.missions?t.jsxs("p",{className:"home-foot muted",children:[Cn(R.jobs.pending??0)," queued, ",Cn(R.jobs.leased??0)," running, ",Cn(R.missions.enabled)," of ",Cn(R.missions.total)," missions on."," ",R.paused?t.jsx(Ae,{tone:"warning",children:"paused"}):t.jsx(Ae,{tone:"good",children:"running"})," ",t.jsx("a",{href:zu("").replace(/\/conversations\/$/,""),onClick:I(cn),children:"Activity"})," · ",t.jsx("a",{href:We("system"),onClick:I(We("system")),children:"System"})]}):null]})]})}const wre={approval:"Approval",question:"Question",watcher:"Watcher",reminder:"Reminder",failure:"Failure",recap:"Report",plugin:"Plugin",agent:"Message"};function bre(e,n){const s=new Set(n.map(r=>r.id));return e.filter(r=>r.needsOwner===!0&&r.kind!=="approval"&&r.kind!=="question"&&r.actedAt===null&&r.state!=="stored"&&r.seenAt===null&&!(r.actionId&&s.has(r.actionId)))}function kre(e){const n=[];for(const s of e.values())s.question&&n.push({agentId:s.agentId,at:s.question.at,route:ht(s.agentId,s.question.conversationId)});return n.sort((s,r)=>s.at.localeCompare(r.at))}const uD="digest",Nre=3*864e5;function EE(e){return`block:${e}`}const AE="hidden";function Sre(e,n,s){if(s(uD,e.at))return!1;const r=Date.parse(e.at),a=n?Date.parse(n):Date.now();return Number.isFinite(r)&&a-r<Nre}function Cre(e,n){const[s,r]=d.useState({});return{is:(l,o)=>(s[l]??(e==null?void 0:e[l]))===o,close:(l,o)=>{r(c=>({...c,[l]:o})),T.homeDismiss(l,o).then(n,()=>{r(c=>{const u={...c};return delete u[l],u})})}}}function dD({label:e,onClick:n}){return t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":e,title:e,onClick:n,children:t.jsx(se,{name:"close"})})}const Ere=6,Are=500;function $re({offer:e,agents:n,open:s,onDismissed:r}){const[a,i]=d.useState(!1),l=d.useRef(null),o=d.useRef(!1),c=()=>{a||(i(!0),T.dismissOffer(e.id).then(r).finally(()=>i(!1)))},u=()=>{l.current!==null&&clearTimeout(l.current),l.current=null};return t.jsxs("span",{className:"home-offer-chip",children:[t.jsxs("a",{className:"home-offer",href:Jt(e.agentId,"offers"),onClick:h=>{if(o.current){o.current=!1,h.preventDefault();return}s(h)},title:e.prompt,onTouchStart:()=>{o.current=!1,u(),l.current=setTimeout(()=>{o.current=!0,c()},Are)},onTouchEnd:u,onTouchMove:u,onTouchCancel:u,children:[t.jsx(yn,{agents:n,id:e.agentId,size:"sm"}),t.jsx("span",{children:e.label})]}),t.jsx("button",{type:"button",className:"home-offer-x","aria-label":`Dismiss ${e.label}`,disabled:a,onClick:c,children:"×"})]})}function Tre(e,n){const s=[];for(const r of e)r.enabled&&r.nextRun&&s.push({key:`m-${r.id}`,at:r.nextRun,title:r.name,kind:"Mission",agentId:r.agentId,route:Jt(r.agentId,"missions")});for(const r of n)r.state==="pending"&&s.push({key:`r-${r.id}`,at:r.dueAt,title:r.text,kind:"Reminder",agentId:r.agentId,route:Jt(r.agentId,"reminders")});return s.sort((r,a)=>r.at.localeCompare(a.at)).slice(0,5)}function Rre(e,n){try{const s=new Intl.DateTimeFormat("en-GB",{hour:"numeric",hourCycle:"h23",timeZone:n}).format(e?new Date(e):new Date);return Number(s)}catch{return new Date().getHours()}}function Ire(e){return e?`Happy birthday, ${e}.`:"Happy birthday."}function Pre(e,n,s){const r=Rre(e,n),a=s!=null&&s.trim()?`, ${s.trim()}`:"";return r<5?`Still up${a}?`:r<12?`Good morning${a}.`:r<18?`Good afternoon${a}.`:`Good evening${a}.`}function Mre(e,n){try{return Hs(e?new Date(e):new Date,n,{weekday:!0})}catch{return Nt(e??null,n)}}function Ore({digest:e,go:n,onClose:s}){var i,l;const r=e.summary??[],a=Object.entries(((i=e.feedback)==null?void 0:i.byAgent)??{}).map(([o,c])=>[o,[c.up>0?`${c.up} 👍`:"",c.down>0?`${c.down} 👎`:"",c.neutral>0?`${c.neutral} other`:""].filter(Boolean).join(" ")]).filter(([,o])=>o!=="").map(([o,c])=>{var u;return`${((u=e.agentNames)==null?void 0:u[o])??o}: ${c}`});return r.length===0&&a.length===0?null:t.jsx(we,{title:"What buddi learned this week",aside:t.jsxs("span",{className:"ui-row",children:[t.jsx("span",{className:"muted",children:Xe(e.at)}),s?t.jsx(dD,{label:"Hide until next week",onClick:s}):null]}),children:t.jsx(lt,{children:t.jsxs(de,{divided:!0,children:[r.length>0?t.jsx("ul",{className:"home-digest-list","data-plain":"",children:r.map(o=>t.jsxs("li",{children:[o.text,o.link?t.jsxs(t.Fragment,{children:[" · ",t.jsx("a",{href:o.link.route,onClick:n(o.link.route),children:o.link.label})]}):null]},o.key))}):null,a.length>0?t.jsxs("div",{"data-testid":"digest-reactions",children:[t.jsx("p",{className:"ui-card-meta",children:"Your reactions"}),t.jsxs("ul",{className:"home-digest-list",children:[a.map(o=>t.jsx("li",{children:o},o)),(((l=e.feedback)==null?void 0:l.notes)??[]).map((o,c)=>{var u;return t.jsxs("li",{children:["What was off (",((u=e.agentNames)==null?void 0:u[o.agentId])??o.agentId,"): ",o.note]},`note-${c}`)})]})]}):null]})})})}function Dre(e,n){const s=n[0];return s?e>1?`${s.title} And ${e-1} more to decide on.`:s.title:`${e} alert${e===1?"":"s"} from your watchers need${e===1?"s":""} a decision.`}const Ny="home-needs";function Lre(e,n=!1){const s=(a,i,l=`${i}s`)=>a===1?i:l,r=[];return e.approvals>0&&r.push({key:"approvals",count:e.approvals,label:s(e.approvals,"approval")}),e.questions>0&&r.push({key:"questions",count:e.questions,label:s(e.questions,"question")}),e.urgent>0&&r.push({key:"urgent",count:e.urgent,label:s(e.urgent,"urgent alert"),tone:"critical",route:`${cn}/alerts`}),e.failed>0&&r.push({key:"failed",count:e.failed,label:s(e.failed,"failed job"),tone:"critical",route:`${cn}/jobs?state=failed`}),n&&r.push({key:"paused",count:null,label:"Paused",route:`${cn}/jobs`}),e.proposals>0&&r.push({key:"proposals",count:e.proposals,label:s(e.proposals,"proposal"),route:We("proposals")}),e.asks>0&&r.push({key:"asks",count:e.asks,label:s(e.asks,"request")}),e.signIns>0&&r.push({key:"signins",count:e.signIns,label:s(e.signIns,"connection to check","connections to check")}),e.agentsToSetUp>0&&r.push({key:"agents",count:e.agentsToSetUp,label:s(e.agentsToSetUp,"agent to set up","agents to set up")}),e.recovery>0&&r.push({key:"recovery",count:null,label:"Restore to finish"}),r}function Fre({items:e,navigate:n}){if(e.length===0)return t.jsx("p",{className:"home-calm",children:"Nothing needs you. Your agents are on it."});const s=()=>{var r,a;(a=(r=document.getElementById(Ny))==null?void 0:r.scrollIntoView)==null||a.call(r,{behavior:"smooth",block:"start"})};return t.jsx("p",{className:"home-counts",children:e.map((r,a)=>{const i=t.jsxs(t.Fragment,{children:[r.count!==null?t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:r.count})," "]}):null,r.label]});return t.jsxs(d.Fragment,{children:[a>0?t.jsx("span",{className:"home-count-sep","aria-hidden":"true",children:"·"}):null,r.route?t.jsx("a",{className:"home-count","data-tone":r.tone,title:r.hint,href:r.route,onClick:l=>{l.preventDefault(),n(r.route)},children:i}):t.jsx("button",{type:"button",className:"home-count","data-tone":r.tone,onClick:s,children:i})]},r.key)})})}function _re(e){return e.charAt(0).toUpperCase()+e.slice(1)}function zre({block:e,onHide:n}){const[s,r]=Xb(),a=e.sensitive===!0&&!s,i=t.jsxs("span",{className:"ui-row",children:[e.rows.length>0&&e.rowsTitle&&!a?t.jsxs("span",{className:"muted",children:[e.rowsTitle.toLowerCase()," below"]}):null,e.sensitive?t.jsx(Fb,{size:"sm",shown:!a,onToggle:r}):null,t.jsx(dD,{label:`Hide ${e.title} from Home`,onClick:n})]});return t.jsxs(we,{title:e.title,aside:i,children:[e.note?t.jsx(Q,{tone:"warning",children:e.note}):null,e.stats.length>0?t.jsx(gp,{children:e.stats.map(l=>t.jsx(ta,{label:l.label,value:a?t.jsx(MP,{}):l.value,note:a?void 0:l.note,tone:a?void 0:l.tone},l.label))}):null,e.rows.length>0?a?t.jsxs("p",{className:"muted",children:[e.rows.length," item",e.rows.length===1?"":"s"," hidden."]}):t.jsx(lt,{flush:!0,children:t.jsx(yt,{children:e.rows.map((l,o)=>t.jsx(gt,{title:l.title,sub:l.sub,side:l.side?t.jsx("span",{className:l.tone==="critical"?"critical":l.tone==="good"?"good":void 0,children:l.side}):void 0},`${l.title}-${o}`))})}):null]})}const Ure="Cloudflare needs a minute or two before the first sign-in works; if its page says it can’t find the application, reload.";async function Bre(e){var n;try{await((n=navigator.clipboard)==null?void 0:n.writeText(e))}catch{}}function Uo({text:e,disabled:n}){return t.jsxs("div",{className:"tailscale-command",children:[t.jsx("code",{className:"mono",children:e}),t.jsx(A,{size:"sm",disabled:n,onClick:()=>{Bre(e)},children:"Copy"})]})}function Wre({id:e}){const n=e==="tailscale"?t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:"5",cy:"5",r:"1.6"}),t.jsx("circle",{cx:"10",cy:"5",r:"1.6"}),t.jsx("circle",{cx:"15",cy:"5",r:"1.6"}),t.jsx("circle",{cx:"5",cy:"10",r:"1.6"}),t.jsx("circle",{cx:"10",cy:"10",r:"1.6"}),t.jsx("circle",{cx:"15",cy:"10",r:"1.6"}),t.jsx("circle",{cx:"10",cy:"15",r:"1.6"})]}):t.jsxs(t.Fragment,{children:[t.jsx("path",{d:"M5.6 14.8h8.6a3.2 3.2 0 0 0 .4-6.4 4.6 4.6 0 0 0-8.9-.9A3.7 3.7 0 0 0 5.6 14.8Z"}),t.jsx("path",{d:"M8.4 11.4l1.4 1.4 2.8-2.8"})]});return t.jsx("span",{className:"access-glyph","aria-hidden":"true",children:t.jsx("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:n})})}const Hre={ready:t.jsx(Ae,{tone:"good",children:"Ready"}),waiting:t.jsx(Ae,{children:"Waiting"}),"needs-setup":t.jsx(Ae,{tone:"warning",children:"Needs setup"}),unanswered:t.jsx(Ae,{tone:"warning",children:"Not answering"}),off:null};function Kre(){var i,l;const e=ve(()=>T.access(),[]),[n,s]=d.useState(null),r=((i=e.data)==null?void 0:i.proxied)===!0,a=(((l=e.data)==null?void 0:l.providers)??[]).filter(o=>o.id==="tailscale"||o.id==="cloudflare-access");return t.jsxs(we,{title:"Sign in from elsewhere",aside:"checked by buddi on every visit",panel:!0,flush:!0,children:[t.jsx(re,{message:e.error}),r?t.jsx("div",{className:"access-locked",children:t.jsx(Q,{tone:"warning",children:"Change this from the computer buddi runs on."})}):null,t.jsx(yt,{children:a.map(o=>t.jsxs(d.Fragment,{children:[t.jsx(gt,{onClick:()=>s(n===o.id?null:o.id),label:`${o.title}: ${o.status.sentence}`,lead:t.jsx(Wre,{id:o.id}),title:o.title,sub:o.status.sentence,side:t.jsxs("span",{className:"access-side",children:[Hre[o.status.state],t.jsx("span",{className:"access-chevron","data-open":n===o.id?"true":void 0,children:t.jsx(se,{name:"chevron-right",size:14})})]})}),n===o.id?t.jsx("div",{className:"access-body",children:o.id==="tailscale"?t.jsx(Vre,{embedded:!0,onSaved:e.reload}):t.jsx(Yre,{enabled:o.enabled,locked:r,onSaved:e.reload})}):null]},o.id))}),t.jsxs("p",{className:"access-foot",children:["Every way in gives the same session: 12 hours idle, approvals as here, the lock screen. A sign-in link from"," ",t.jsx("span",{className:"mono",children:"buddi dashboard --token"})," works everywhere."]})]})}function Vre({embedded:e,onSaved:n}={}){var g;const s=ve(()=>T.tailscale(),[]),[r,a]=d.useState(null),[i,l]=d.useState(!1),[o,c]=d.useState(null),[u,h]=d.useState(!1),f=s.data,m=r??((f==null?void 0:f.login)||((g=f==null?void 0:f.self)==null?void 0:g.login)||""),p=(f==null?void 0:f.proxied)===!0,x=b=>{l(!0),c(null),h(!1),T.setTailscale({enabled:b,login:m.trim()}).then(()=>{h(!0),n==null||n()}).catch(j=>c(j instanceof pe?j.message:String(j))).finally(()=>{l(!1),s.reload()})};return t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s.error??o}),t.jsx("p",{className:"ui-card-meta",children:f?f.available&&f.self?`Tailscale is running on this machine as ${f.self.login}.`:f.available?"Tailscale is running on this machine.":"Tailscale is not running here.":"…"}),p?t.jsxs(t.Fragment,{children:[e?null:t.jsx(Q,{tone:"warning",children:"Change this from the computer buddi runs on."}),t.jsx("p",{className:"ui-card-meta",children:f!=null&&f.enabled?`On, for ${m}`:"Off"})]}):null,t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:(f==null?void 0:f.enabled)??!1,disabled:i||!f||p,onChange:b=>x(b.target.checked)}),t.jsx("span",{children:"Let this Tailscale login sign in"})]}),t.jsx(le,{label:"Tailscale login",children:t.jsx("input",{type:"text",value:m,placeholder:"you@example.com",disabled:i||!f||p,onChange:b=>a(b.target.value)})}),t.jsx("p",{className:"ui-card-meta",children:"Anyone signed in to Tailscale as this login, on any device in your tailnet, is signed in to buddi. The proxy must run on this machine:"}),t.jsx(Uo,{text:(f==null?void 0:f.serveCommand)??"tailscale serve",disabled:i||!f}),t.jsx("p",{className:"ui-card-meta",children:"This gives your tailnet the trust this machine already has: buddi cannot tell the Tailscale proxy from another program running here, and any program that can reach the dashboard on this machine can already read buddi’s files."}),u?t.jsx(Q,{tone:"good",role:"status",children:"Saved."}):null,t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",disabled:i||!f||p,onClick:()=>x((f==null?void 0:f.enabled)??!1),children:"Save"})})]})}const Gre=["teamDomain","aud","email","publicOrigin"];function qre({onSaved:e,extra:n}={}){const s=ve(()=>T.cloudflareAccess(),[]),[r,a]=d.useState(!1),[i,l]=d.useState(null),[o,c]=d.useState(!1),[u,h]=d.useState(null),[f,m]=d.useState(null),[p,x]=d.useState(!1),g=s.data,b=i??{teamDomain:(g==null?void 0:g.teamDomain)??"",aud:(g==null?void 0:g.aud)??"",email:(g==null?void 0:g.email)??"",publicOrigin:(g==null?void 0:g.publicOrigin)??""},j=(g==null?void 0:g.proxied)===!0,v=o||!g||j,y=(E,$)=>l({...b,[E]:$}),k=[b.teamDomain.trim()===""?"the team domain":null,b.aud.trim()===""?"the AUD tag":null,b.email.trim()===""?"your email":null].filter(E=>E!==null),N=k.length>0?`To turn this on, fill in ${k.length===1?k[0]:`${k.slice(0,-1).join(", ")} and ${k[k.length-1]}`}.`:null,w=E=>{if(E&&N){a(!0);return}a(!1),c(!0),h(null),x(!1),m(null),T.setCloudflareAccess({enabled:E,...b}).then($=>{x(!0),$.test&&m($.test.ok?{ok:!0,sentence:`${$.teamDomain} answered with ${$.test.keys} signing key${$.test.keys===1?"":"s"}.${$.publicOrigin?` Open ${$.publicOrigin} from another device to finish.`:""}`}:{ok:!1,sentence:$.test.error??"Cloudflare’s signing keys could not be fetched."}),l(null),e==null||e()}).catch($=>h($ instanceof pe?$.message:String($))).finally(()=>{c(!1),s.reload()})},S=()=>{c(!0),h(null),m(null),T.testCloudflareAccess({teamDomain:b.teamDomain}).then(E=>m({ok:E.ok,sentence:E.ok&&b.publicOrigin?`${E.sentence} Open ${b.publicOrigin} from another device to finish.`:E.sentence})).catch(E=>h(E instanceof pe?E.message:String(E))).finally(()=>c(!1))},C=E=>g==null?void 0:g.setup.fields.find($=>$.key===E);return t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s.error??u}),j?t.jsx("p",{className:"ui-card-meta",children:g!=null&&g.enabled?`On, for ${g.email} at ${g.teamDomain}`:"Off"}):null,t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:(g==null?void 0:g.enabled)??!1,disabled:v,onChange:E=>w(E.target.checked)}),t.jsx("span",{children:"Let this email sign in through Cloudflare"})]}),t.jsx("ol",{className:"access-steps",children:((g==null?void 0:g.setup.steps)??[]).map(E=>t.jsxs("li",{children:[t.jsx("span",{children:E.text}),E.command?t.jsx(Uo,{text:E.command,disabled:v}):null]},E.text))}),t.jsx("div",{className:"access-grid",children:Gre.map(E=>{const $=C(E);return t.jsx(le,{label:($==null?void 0:$.label)??E,hint:$==null?void 0:$.hint,children:t.jsx("input",{type:E==="email"?"email":"text",className:E==="aud"?"mono":void 0,value:b[E],placeholder:$==null?void 0:$.placeholder,disabled:v,spellCheck:!1,autoComplete:"off",onChange:R=>y(E,R.target.value)})},E)})}),N&&!j&&!((g==null?void 0:g.enabled)??!1)?r?t.jsx(Q,{tone:"critical",role:"alert",children:N}):t.jsx("p",{className:"ui-card-meta",children:N}):null,f?t.jsx(Q,{tone:f.ok?"good":"critical",role:"status",children:f.sentence}):null,t.jsx("p",{className:"ui-card-meta",children:"buddi checks Cloudflare’s signature on every visit and never trusts a header alone. Anyone Cloudflare signs in with this email, on any device, is signed in to buddi."}),p&&!f?t.jsx(Q,{tone:"good",role:"status",children:"Saved."}):null,n??null,t.jsxs(ne,{align:"end",children:[t.jsx(A,{disabled:v||b.teamDomain.trim()==="",onClick:S,children:"Test my setup"}),t.jsx(A,{variant:"accent",disabled:v,onClick:()=>w((g==null?void 0:g.enabled)??!1),children:"Save"})]})]})}const $E=["running","waiting","removing"];function Yre({enabled:e,locked:n,onSaved:s}){const[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState(!1),[f,m]=d.useState(!1);d.useEffect(()=>{n||T.cloudflareSetup().then(a).catch(()=>a(null))},[n]);const p=(r==null?void 0:r.progress.state)??"idle",x=$E.includes(p);d.useEffect(()=>{if(!x)return;const v=window.setInterval(()=>{T.cloudflareSetup().then(y=>{a(y),$E.includes(y.progress.state)||s==null||s()}).catch(()=>{})},1500);return()=>window.clearInterval(v)},[x,s]);const g=n?"manual":i??(p!=="idle"?"run":e||r!=null&&r.record?"manual":r?"offer":null),b=(v,y)=>{h(!0),c(null),v().then(k=>{a(k),y&&l(y),s==null||s()}).catch(k=>c(k instanceof pe?k.message:String(k))).finally(()=>h(!1))},j=()=>b(()=>T.removeCloudflareSetup(),"run");if(g===null)return t.jsx("p",{className:"ui-card-meta",children:"…"});if(g==="manual"){const v=r!=null&&r.record&&!n?t.jsxs("p",{className:"ui-card-meta",children:["Set up by buddi for ",r.record.host," on ",r.record.zone,"."]}):null;return t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:o}),t.jsx(qre,{onSaved:s,extra:v}),r!=null&&r.record&&!n?t.jsxs(ne,{align:"end",children:[t.jsx(A,{disabled:u,onClick:j,children:"Remove what buddi made"}),t.jsx(A,{disabled:u,onClick:()=>l("form"),children:"Set it up again"})]}):null]})}return g==="offer"?t.jsxs(de,{gap:"sm",children:[t.jsx("p",{className:"ui-card-meta",children:"buddi can make the tunnel, the DNS record and the Access application for you, with one Cloudflare API token. You run one command; buddi does the rest and tests it."}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:()=>l("manual"),children:"I’ll do it myself"}),t.jsx(A,{variant:"accent",onClick:()=>l("form"),children:"Set it up for me"})]})]}):g==="form"?t.jsx(Jre,{setup:r,busy:u,failed:o,onCancel:()=>{c(null),l(null)},onStart:v=>b(()=>T.startCloudflareSetup(v),"run")}):t.jsx(Xre,{progress:(r==null?void 0:r.progress)??null,busy:u,failed:o,onStop:()=>b(()=>T.stopCloudflareSetup()),onRetry:()=>l("form"),onAdopt:()=>{const v=r==null?void 0:r.progress;v&&b(()=>T.startCloudflareSetup({host:v.host,email:v.email,adopt:!0}),"run")},onUseSystem:()=>{const v=r==null?void 0:r.progress;v&&b(()=>T.stopCloudflareSetup().then(()=>T.startCloudflareSetup({host:v.host,email:v.email,useSystemDaemon:!0})),"run")},onRemove:j,onAgain:()=>l("form"),tokenStored:(r==null?void 0:r.tokenStored)??!1,forgot:f,onForget:()=>b(()=>T.forgetCloudflareToken().then(v=>(m(!0),v)))})}function Qre(e,n){const s=e.trim().toLowerCase().replace(/\.$/,""),r=n.filter(a=>s.endsWith(`.${a.name.toLowerCase()}`)).sort((a,i)=>i.name.length-a.name.length)[0];return r?{name:s.slice(0,-(r.name.length+1)),zone:r.name}:null}function Jre({setup:e,busy:n,failed:s,onCancel:r,onStart:a}){var U,L;const i=((U=e==null?void 0:e.record)==null?void 0:U.host)??(e==null?void 0:e.progress.host)??"",[l,o]=d.useState(""),[c,u]=d.useState(null),[h,f]=d.useState(!1),[m,p]=d.useState(null),[x,g]=d.useState("buddi"),[b,j]=d.useState(""),[v,y]=d.useState(i),[k,N]=d.useState(((L=e==null?void 0:e.record)==null?void 0:L.email)??(e==null?void 0:e.progress.email)??""),w=d.useRef({token:"",seq:0}),S=(e==null?void 0:e.tokenStored)===!0,C=l.trim(),E=()=>{if(!C&&!S)return;const M=w.current.seq+1;w.current={token:C,seq:M},f(!0),p(null),T.cloudflareZones(C?{token:C}:{}).then(({zones:z})=>{var K;if(w.current.seq!==M)return;u(z);const D=Qre(i,z),H=(K=z.find(X=>{var W;return X.name===((W=e==null?void 0:e.record)==null?void 0:W.zone)}))==null?void 0:K.name;D?(D.name&&g(D.name),j(D.zone)):j(H??(z.length===1?z[0].name:""))}).catch(z=>{w.current.seq===M&&(u(null),p(z instanceof pe?z.message:String(z)))}).finally(()=>{w.current.seq===M&&f(!1)})};d.useEffect(()=>{S&&E()},[]);const $=M=>{o(M),u(null),p(null),f(!1),w.current={token:"",seq:w.current.seq+1}},R=c!==null&&c.length>0,P=x.trim().replace(/\.+$/,""),O=R?P&&b?`${P}.${b}`:"":v.trim(),I=c!==null&&!h&&O!==""&&k.trim()!=="",F={autoComplete:"off",spellCheck:!1,disabled:n};return t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s}),t.jsx("p",{className:"ui-card-meta",children:"Open Cloudflare: the token form comes pre-filled with these permissions. Name it, create it, paste it here."}),t.jsx("ul",{className:"access-perms",children:((e==null?void 0:e.permissions)??[]).map(M=>t.jsx("li",{className:"mono",children:M},M))}),t.jsx(ne,{children:t.jsx(it,{size:"sm",href:(e==null?void 0:e.tokenUrl)??"https://dash.cloudflare.com/profile/api-tokens",target:"_blank",rel:"noreferrer",children:"Open Cloudflare ↗"})}),t.jsx(le,{label:"API token",hint:"Kept as an owner secret, used only to set this up and to remove it.",action:t.jsx(A,{disabled:n||h||!C&&!S,onClick:E,children:"Check the token"}),children:t.jsx("input",{type:"password",className:"mono",value:l,placeholder:S?"Kept. Paste a new one to replace it":"Paste the token",...F,onChange:M=>$(M.target.value),onBlur:()=>{C&&w.current.token!==C&&E()}})}),h?t.jsx("p",{className:"ui-card-meta",role:"status",children:"Checking the token with Cloudflare…"}):null,t.jsx(re,{message:m}),c!==null?t.jsxs("div",{className:"access-grid",children:[R?t.jsxs(t.Fragment,{children:[t.jsx(le,{label:"Name",hint:O?`Makes ${O}.`:"The part in front of the domain.",children:t.jsx("input",{type:"text",value:x,placeholder:"buddi",...F,onChange:M=>g(M.target.value)})}),t.jsx(le,{label:"Domain",hint:"One of the domains the token can edit.",children:t.jsxs("select",{value:b,disabled:n,onChange:M=>j(M.target.value),children:[b===""?t.jsx("option",{value:"",children:"Choose a domain"}):null,c.map(M=>t.jsx("option",{value:M.name,children:M.name},M.id))]})})]}):t.jsx(le,{label:"Hostname",hint:"The token lists no domain; type the full name.",children:t.jsx("input",{type:"text",value:v,placeholder:"buddi.example.com",...F,onChange:M=>y(M.target.value)})}),t.jsx(le,{label:"Your email",hint:"The one Cloudflare will let in.",children:t.jsx("input",{type:"email",value:k,placeholder:"you@example.com",...F,onChange:M=>N(M.target.value)})})]}):null,t.jsxs(ne,{align:"end",children:[t.jsx(A,{disabled:n,onClick:r,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:n||!I,onClick:()=>a({...C?{token:C}:{},host:O,email:k.trim(),...R?{zone:b}:{}}),children:"Set it up"})]})]})}const TE="To revoke it in Cloudflare: My Profile → API Tokens.";function Xre({progress:e,busy:n,failed:s,onStop:r,onRetry:a,onAdopt:i,onUseSystem:l,onRemove:o,onAgain:c,tokenStored:u=!1,forgot:h=!1,onForget:f}){if(!e)return t.jsx("p",{className:"ui-card-meta",children:"…"});if(e.state==="removed"||e.state==="removing"){const p=e.state==="removed"&&!e.error&&u&&f!==void 0;return t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s}),e.state==="removing"?t.jsx("p",{className:"ui-card-meta",children:"Removing what buddi made…"}):null,e.state==="removed"&&e.removed.length>0?t.jsxs(Q,{tone:"good",role:"status",children:["Removed ",eae(e.removed),". Signing in through Cloudflare is off."]}):null,e.error?t.jsx(Q,{tone:"critical",role:"alert",children:e.error}):null,e.uninstall?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"ui-card-meta",children:"Cloudflare’s system service is still installed on this computer. To remove it too:"}),t.jsx(Uo,{text:e.uninstall})]}):null,p?t.jsxs("div",{children:[t.jsx("p",{children:"Your Cloudflare API token is still kept here, and still valid in Cloudflare."}),t.jsx("p",{className:"ui-card-meta",children:TE})]}):null,e.state==="removed"&&h&&!u?t.jsxs(Q,{role:"status",children:["Forgotten here. ",TE]}):null,t.jsxs(ne,{align:"end",children:[e.error&&e.state==="removed"?t.jsx(A,{disabled:n,onClick:o,children:"Remove again"}):null,p?t.jsx(A,{disabled:n,onClick:f,children:"Forget the token"}):null,t.jsx(A,{variant:"accent",disabled:n,onClick:c,children:"Set it up again"})]})]})}const m=e.state==="running"||e.state==="waiting";return t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s}),e.state==="done"&&e.url?t.jsxs(Q,{tone:"good",role:"status",children:["Done. Open ",e.url," from another device and sign in as ",e.email,". ",Ure]}):null,e.state==="stopped"&&e.error?t.jsx(Q,{role:"status",children:e.error}):null,t.jsx("ol",{className:"cat-steps access-run","aria-live":"polite",children:e.steps.map(p=>{var x;return t.jsxs("li",{className:"cat-step","data-state":p.state,children:[t.jsx("span",{className:"cat-step-mark",children:p.state==="done"?t.jsx(se,{name:"check",size:12}):p.state==="failed"?t.jsx(se,{name:"alert",size:14}):null}),t.jsxs("div",{className:"access-run-text",children:[t.jsx("span",{children:p.state==="now"&&p.id!=="connector"?`${p.text}…`:p.text}),p.state==="failed"&&p.why?t.jsx("span",{className:"access-run-why",children:p.why}):null,p.id==="connector"&&p.state!=="done"&&e.connector?t.jsx(Zre,{connector:e.connector,live:m,busy:n,onUseSystem:l}):null,p.id==="connector"&&p.state!=="done"&&e.install?t.jsxs("div",{className:"access-run-more",children:[t.jsx("span",{className:"ui-card-meta",children:((x=e.connector)==null?void 0:x.mode)==="system"?"If the system service runs another tunnel, install it again with this tunnel’s token. buddi never runs sudo itself.":"Run this once in a terminal on this computer. buddi never runs sudo itself."}),t.jsx(Uo,{text:e.install.command}),t.jsx("span",{className:"ui-card-meta",children:e.install.note})]}):null]})]},p.id)})}),t.jsxs(ne,{align:"end",children:[m?t.jsx(A,{disabled:n,onClick:r,children:"Stop waiting"}):null,e.state==="failed"||e.state==="done"||e.state==="stopped"?t.jsx(A,{disabled:n,onClick:o,children:"Remove what buddi made"}):null,e.state==="failed"&&e.adoptable?t.jsx(A,{disabled:n,onClick:a,children:"Try again"}):null,e.state==="failed"&&e.adoptable?t.jsx(A,{variant:"accent",disabled:n,onClick:i,children:"Use it anyway"}):null,e.state==="failed"&&!e.adoptable||e.state==="stopped"?t.jsx(A,{variant:"accent",disabled:n,onClick:a,children:"Try again"}):null]})]})}function Zre({connector:e,live:n,busy:s,onUseSystem:r}){return e.mode==="buddi"&&e.state==="system-daemon"&&e.systemDaemon?t.jsxs("div",{className:"access-run-more",children:[t.jsx("span",{className:"ui-card-meta",children:e.systemDaemon.why}),t.jsx(Uo,{text:e.systemDaemon.command}),n&&r?t.jsx(ne,{align:"end",children:t.jsx(A,{disabled:s,onClick:r,children:"Use Cloudflare’s system service instead"})}):null]}):e.state==="missing-binary"?t.jsxs("div",{className:"access-run-more",children:[t.jsxs("span",{className:"ui-card-meta",children:[e.detail??"cloudflared isn’t on this computer."," ",e.brew?"Or install it with Homebrew; buddi finds it on its own:":""]}),e.brew?t.jsx(Uo,{text:e.brew}):null]}):e.detail&&e.state!=="running"?t.jsx("div",{className:"access-run-more",children:t.jsx("span",{className:"ui-card-meta",children:e.detail})}):null}function eae(e){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}const tae=2e3,nae={queued:"Getting started.",stopping:"Stopping the gateway. The database stays up.",snapshot:"Taking a copy of what is here now, first.",database:"Putting the database back.",recovery:"Marking this installation as restored.",files:"Putting the files back.",starting:"Starting back up.",encrypt:"Locking it with your passphrase.",done:"Done.",failed:"That did not work.","rolled-back":"That did not work, so everything was put back as it was."};function Sy(e){return nae[e.phase]??e.detail??e.phase}const sae=new Set(["done","failed","rolled-back"]);function hD(e){return e!==void 0&&(sae.has(e.phase)||!!e.finishedAt)}function rae(e,n=!1){const[s,r]=d.useState(void 0),[a,i]=d.useState(!1),[l,o]=d.useState(null),c=d.useRef(!1);return d.useEffect(()=>{if(!e){r(void 0),i(!1),c.current=!1;return}let u=!1;const h=()=>{n&&c.current||T.backupJob(e).then(m=>{if(!u){if(n&&(BI({step:Sy(m)}),(m.phase==="failed"||m.phase==="rolled-back")&&Mo()),c.current){window.location.reload();return}r(m),o(null),hD(m)&&(u=!0)}}).catch(m=>{if(!u){if(m instanceof pe&&m.status!==0&&m.status<500){n&&Mo(),o(m.message);return}c.current=!0,n||i(!0)}})};h();const f=window.setInterval(h,tae);return()=>{u=!0,window.clearInterval(f)}},[e,n]),{job:s,away:a,error:l}}function aae({job:e,away:n,error:s}){return s?t.jsx(re,{message:s}):n?t.jsx(Q,{tone:"warning",role:"status",children:"buddi is restarting. This page comes back on its own when it answers again."}):e?e.phase==="rolled-back"||e.phase==="failed"?t.jsxs(Q,{tone:"critical",role:"alert",children:[Sy(e)," ",e.error??""]}):t.jsxs(Q,{tone:e.phase==="done"?"good":void 0,role:"status",children:[Sy(e),e.copyLate?" The backup was made, but the copy to your folder did not go through.":"",e.error?` ${e.error}`:""]}):null}function iae(){var v,y,k,N,w,S,C;const e=ve(()=>T.backups(),[],3e4),n=sD(),s=ve(()=>T.service(),[]),[r,a]=d.useState(null),[i,l]=d.useState(!1),o=rae(r,i),[c,u]=d.useState(null),[h,f]=d.useState(!1),[m,p]=d.useState(null),x=((v=e.data)==null?void 0:v.supervised)??((y=s.data)==null?void 0:y.supervised),g=m!==null||x===!1,b=((k=e.data)==null?void 0:k.archives)??[],j=(E,$=!1)=>{f(!0),u(null),l($),E().then(R=>{var P;$&&R.job&&mp({kind:"restore",patienceMs:UI}),a(((P=R.job)==null?void 0:P.id)??null)}).catch(R=>{R instanceof pe&&R.status===409?p(R.message):u(R instanceof pe?R.message:String(R))}).finally(()=>{f(!1),e.reload()})};return d.useEffect(()=>{hD(o.job)&&e.reload()},[(N=o.job)==null?void 0:N.phase]),t.jsxs(de,{gap:"lg",children:[(w=n.data)!=null&&w.active?t.jsx(Hse,{view:n.data,onLeft:n.reload}):null,t.jsx(re,{message:e.error??c}),t.jsx(aae,{...o}),t.jsx(oae,{onSaved:()=>e.reload()}),t.jsx(we,{title:"Backups",panel:!0,actions:t.jsx(A,{variant:"accent",size:"sm",disabled:h,onClick:()=>j(()=>T.startBackup(!0)),children:"Back up now"}),children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsxs("p",{className:"ui-card-meta",children:["Kept in ",t.jsx("span",{className:"mono",children:((S=e.data)==null?void 0:S.dir)??"…"}),". A backup holds your agents, conversations, memory and files. It never holds a key."]})}),t.jsx(we,{children:e.data&&b.length===0?t.jsx(ms,{icon:"archive",title:"No backups yet",children:"Make one now, or turn on the nightly backup."}):e.data?t.jsxs(ma,{children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Name"}),t.jsx("th",{children:"Taken"}),t.jsx("th",{children:"Size"}),t.jsx("th",{children:"State"}),t.jsx("th",{})]})}),t.jsx("tbody",{children:b.map(E=>{var $;return t.jsx(cae,{archive:E,busy:h,database:($=e.data)==null?void 0:$.database,checkout:g,onVerify:()=>j(()=>T.verifyArchive(E.name)),onRestore:(R,P)=>j(()=>T.restoreArchive({name:E.name,...R?{passphrase:R}:{},...P?{confirm:P}:{}}),!0)},E.name)})})]}):t.jsx(Ce,{children:"Loading…"})})]})}),t.jsx(hae,{}),t.jsx(fae,{busy:h,checkout:g,checkoutSaid:m,database:(C=e.data)==null?void 0:C.database,onRestore:(E,$,R)=>j(()=>T.restoreUpload(E,{passphrase:$,confirm:R}),!0)})]})}const lae={enabled:!1,time:"03:00",keep:7,encryptLocal:!0,copyTo:null};function oae({onSaved:e}){var p;const n=ve(()=>T.backupSchedule(),[]),[s,r]=d.useState(null),[a,i]=d.useState(!1),[l,o]=d.useState(null),[c,u]=d.useState(!1);d.useEffect(()=>{n.data&&r(n.data)},[n.data]);const h={...lae,...s??n.data??{}};if(((p=n.data)==null?void 0:p.supervised)===!1)return t.jsx(we,{title:"Every night",panel:!0,children:t.jsx(we,{children:t.jsx(Q,{tone:"warning",children:n.data.error??"This installation schedules its own backups."})})});const f=x=>{u(!1),r({...h,...x})},m=()=>{i(!0),o(null),T.setBackupSchedule(h).then(x=>{r(x),u(!0),e()}).catch(x=>o(x instanceof pe?x.message:String(x))).finally(()=>i(!1))};return t.jsx(we,{title:"Every night",panel:!0,foot:t.jsx(A,{variant:"accent",disabled:a,onClick:m,children:"Save"}),children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:l}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:h.enabled,onChange:x=>f({enabled:x.target.checked})}),t.jsx("span",{children:"Back this buddi up on its own"})]}),t.jsxs(Ks,{children:[t.jsx(le,{label:"At",children:t.jsx("input",{type:"time",value:h.time,onChange:x=>f({time:x.target.value})})}),t.jsx(le,{label:"Keep",hint:"How many to keep before the oldest is thrown away.",children:t.jsx("input",{type:"number",min:1,max:365,value:h.keep,onChange:x=>f({keep:Number(x.target.value)||1})})})]}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:h.encryptLocal,onChange:x=>f({encryptLocal:x.target.checked})}),t.jsx("span",{children:"Lock each one with the passphrase"})]})]})}),t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(le,{label:"Also copy to a folder",hint:"A second disk, or a folder that syncs somewhere. Left empty, backups stay on this machine.",children:t.jsx("input",{type:"text",value:h.copyTo??"",placeholder:"/Volumes/backup/buddi",onChange:x=>f({copyTo:x.target.value===""?null:x.target.value})})}),c?t.jsxs(Q,{tone:"good",role:"status",children:["Saved.",h.lastRunAt?` Last run ${Xe(h.lastRunAt)}.`:""]}):null]})})]})})}function cae({archive:e,busy:n,database:s,checkout:r,onVerify:a,onRestore:i}){const[l,o]=d.useState(!1),[c,u]=d.useState(""),[h,f]=d.useState("");return t.jsxs(t.Fragment,{children:[t.jsxs("tr",{children:[t.jsx("td",{className:"mono",children:e.name}),t.jsx("td",{children:Xe(e.createdAt)}),t.jsx("td",{children:qn(e.bytes)}),t.jsxs("td",{children:[e.encrypted?t.jsx(Ae,{tone:"good",children:"locked"}):t.jsx(Ae,{tone:"muted",children:"plain"})," ",e.envelopeOk===!1?t.jsx(Ae,{tone:"critical",children:"damaged"}):null]}),t.jsx("td",{children:t.jsxs(ne,{align:"end",children:[t.jsx(A,{size:"sm",disabled:n,onClick:a,children:"Verify"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>o(!l),children:"Restore…"})]})})]}),l?t.jsx("tr",{children:t.jsx("td",{colSpan:5,children:r?t.jsx(Q,{tone:"warning",children:fD}):t.jsx(pD,{what:`${e.name}, taken ${Xe(e.createdAt)}, ${qn(e.bytes)}`,database:s,needsPassphrase:e.encrypted,passphrase:c,onPassphrase:u,confirm:h,onConfirm:f,busy:n,onCancel:()=>o(!1),onGo:()=>i(c,h)})})}):null]})}const fD="Restoring needs the packaged installation. In a checkout, run: buddi backup restore <file>";function uae(e){const n=e.split(/\r?\n/).map(r=>r.trim()).filter(r=>r!==""),s=n[0]==="buddi backup passphrase"?n[1]:n.length===1?n[0]:void 0;return s===void 0||s===""?void 0:s}function dae(e){return new Promise((n,s)=>{const r=new FileReader;r.onload=()=>n(String(r.result??"")),r.onerror=()=>s(r.error??new Error("unreadable")),r.readAsText(e)})}function mD({archive:e,onPassphrase:n}){const[s,r]=d.useState(null);return t.jsx(le,{label:"Or read it from its .passphrase.txt",hint:s??(e?`Uninstall leaves ${e}.passphrase.txt beside the backup it took.`:"Uninstall leaves one beside the backup it took."),children:t.jsx("input",{type:"file",accept:".txt,text/plain","aria-label":"The passphrase file",onChange:a=>{var l;const i=(l=a.target.files)==null?void 0:l[0];i&&dae(i).then(o=>{const c=uae(o);if(c===void 0){r(`${i.name} has no passphrase in it.`);return}n(c),r(`Read from ${i.name}.`)},()=>r(`${i.name} could not be read.`))}})})}function pD({what:e,database:n,needsPassphrase:s,passphrase:r,onPassphrase:a,confirm:i,onConfirm:l,busy:o,onCancel:c,onGo:u}){const h=n??"",f=h===""?i.trim()!=="":i.trim()===h;return t.jsxs(de,{gap:"sm",children:[t.jsxs(Q,{tone:"warning",children:["This replaces everything in this buddi with ",e,". What is here now is copied first, so a restore that fails puts it back."]}),s?t.jsxs(t.Fragment,{children:[t.jsx(le,{label:"The passphrase this one was locked with",children:t.jsx("input",{type:"password",autoComplete:"off",value:r,onChange:m=>a(m.target.value)})}),t.jsx(mD,{onPassphrase:a})]}):null,t.jsx(le,{label:h?`Type ${h} to confirm`:"Type the name of this database to confirm",hint:h?void 0:"The same name buddi shows on the System tab.",children:t.jsx("input",{value:i,onChange:m=>l(m.target.value)})}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{variant:"ghost",onClick:c,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:o||!f||s&&r==="",onClick:u,children:"Restore"})]})]})}function hae(){const[e,n]=d.useState(null),[s,r]=d.useState(""),[a,i]=d.useState(!1),[l,o]=d.useState(null),[c,u]=d.useState(!1),[h,f]=d.useState(!1),[m,p]=d.useState(""),x=()=>{i(!0),o(null),T.revealBackupPassphrase(h?m:void 0).then(b=>{n(b.passphrase),f(!1),p("")}).catch(b=>{if(b instanceof pe&&b.status===403&&!h){f(!0);return}o(b instanceof pe?b.message:String(b))}).finally(()=>i(!1))},g=()=>{i(!0),o(null),T.setBackupPassphrase(s.trim()).then(b=>{n(b.passphrase),r(""),u(!0)}).catch(b=>o(b instanceof pe?b.message:String(b))).finally(()=>i(!1))};return t.jsx(we,{title:"The passphrase",panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:l}),t.jsx("p",{className:"ui-card-meta",children:"This is the only thing that opens an encrypted backup. Write it down."}),e?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"backup-phrase mono",children:e}),t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"ghost",onClick:()=>n(null),children:"Hide"})})]}):t.jsxs(t.Fragment,{children:[h?t.jsx(le,{label:"Your PIN",hint:"The one that unlocks this dashboard.",children:t.jsx("input",{type:"password",inputMode:"numeric",autoComplete:"off",value:m,onChange:b=>p(b.target.value),onKeyDown:b=>{b.key==="Enter"&&m!==""&&x()}})}):null,t.jsx(ne,{align:"end",children:t.jsx(A,{disabled:a||h&&m==="",onClick:x,children:"Reveal"})})]}),c?t.jsx(Q,{tone:"good",role:"status",children:"Saved. Backups made from now on use it; older ones keep the one they were made with."}):null]})}),t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(le,{label:"Use my own",hint:"Six words you can read out loud beat a short one nobody can.",children:t.jsx("input",{type:"text",autoComplete:"off",value:s,onChange:b=>{u(!1),r(b.target.value)}})}),t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",disabled:a||s.trim()==="",onClick:g,children:"Use this one"})})]})})]})})}function fae({busy:e,checkout:n,checkoutSaid:s,database:r,onRestore:a}){const[i,l]=d.useState(null),[o,c]=d.useState(""),[u,h]=d.useState(""),[f,m]=d.useState(!1);return n?t.jsx(we,{title:"Restore from a file",panel:!0,children:t.jsx(we,{children:t.jsx(Q,{tone:"warning",children:s??fD})})}):t.jsx(we,{title:"Restore from a file",panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx("p",{className:"ui-card-meta",children:"A backup from another buddi, or one you keep somewhere else."}),t.jsxs(Ks,{children:[t.jsx(le,{label:"The backup file",children:t.jsx("input",{type:"file",onChange:p=>{var x;m(!1),l(((x=p.target.files)==null?void 0:x[0])??null)}})}),t.jsx(le,{label:"Its passphrase",hint:"Only if it was locked with one.",children:t.jsx("input",{type:"password",autoComplete:"off",value:o,onChange:p=>c(p.target.value)})})]}),i!=null&&i.name.endsWith(".age")?t.jsx(mD,{archive:i.name,onPassphrase:c}):null,f?null:t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",disabled:e||!i,onClick:()=>m(!0),children:"Restore"})})]})}),f&&i?t.jsx(we,{children:t.jsx(pD,{what:`${i.name}, ${qn(i.size)}`,database:r,needsPassphrase:!1,passphrase:o,onPassphrase:c,confirm:u,onConfirm:h,busy:e,onCancel:()=>m(!1),onGo:()=>a(i,o,u)})}):null]})})}const Cy="gpt-5.5",RE="gpt-6.1-sol";function gD(e){return e.source!=="provider"?null:e.models.some(n=>n.id===RE)?RE:null}const xD="gemini-2.5-pro";function Dp(e){return e.replace(/^models\//,"")}const Uk=/(image|tts|audio|live|embedding|vision|robotics|transcribe)/;function vD(e){const n=e.map(Dp);let s;for(const r of n){const a=/^gemini-(\d+(?:\.\d+)*)-pro(?:-(.+))?$/.exec(r);if(!a||Uk.test(a[2]??""))continue;const i=a[1].split(".").map(Number),l=(a[2]??"")!=="";(!s||vm(i,s.version)>0||vm(i,s.version)===0&&s.preview&&!l)&&(s={id:r,version:i,preview:l})}return(s==null?void 0:s.id)??n.find(r=>r.startsWith("gemini-"))}function jD(e){let n;for(const s of e.map(Dp)){const r=/^gemini-(\d+(?:\.\d+)*)-flash(?:-(.+))?$/.exec(s);if(!r||/lite/.test(r[2]??"")||Uk.test(r[2]??""))continue;const a=r[1].split(".").map(Number),i=(r[2]??"")!=="";(!n||vm(a,n.version)>0||vm(a,n.version)===0&&n.preview&&!i)&&(n={id:s,version:a,preview:i})}return n==null?void 0:n.id}function yD(e){return/^gemini-[\d.]+-pro(?:-|$)/.test(Dp(e))}function mae(e){return[...new Set(e.map(Dp).filter(n=>n.startsWith("gemini-")&&!Uk.test(n)))]}function wD(e){return e.httpStatus===429||e.state==="rate-limited"||e.state==="quota-exhausted"}function vm(e,n){for(let s=0;s<Math.max(e.length,n.length);s+=1){const r=(e[s]??0)-(n[s]??0);if(r!==0)return r}return 0}function bD(e,n){if(!n||e.kind!=="openai-compatible")return!1;const s=r=>r.replace(/\/+$/,"");return s(e.baseUrl)===s(n)}function pae({embedded:e,account:n}={}){const{data:s,error:r,reload:a,loading:i}=ve(()=>T.providerAccounts(),[]),[l,o]=d.useState(!1),[c,u]=d.useState(null),[h,f]=d.useState(""),[m,p]=d.useState(!1),[x,g]=d.useState(!1),[b,j]=d.useState(n??null);d.useEffect(()=>{n&&j(n)},[n]);const v=s==null?void 0:s.accounts.some(S=>{var C;return((C=S.login)==null?void 0:C.state)==="pending"&&S.login.expiresAt&&Date.parse(S.login.expiresAt)>Date.now()});d.useEffect(()=>{if(!v)return;const S=setInterval(a,2e3);return()=>clearInterval(S)},[v,a]);const y=async(S,C)=>{o(!0),u(null),f(""),g(!1);try{const E=await S();return f((E==null?void 0:E.warning)??C),a(),!0}catch(E){return u(E instanceof Error?E.message:"Could not apply change."),a(),!1}finally{o(!1)}},k=(s==null?void 0:s.accounts)??[],N=k.find(S=>S.id===b)??k[0],w=S=>{var C;return bD(S,(C=s==null?void 0:s.gemini)==null?void 0:C.baseUrl)?"Gemini":kD(S)};return t.jsxs(Rs,{embedded:e,title:"Model accounts",lede:"Give each API key or subscription a name, then pick one per agent. An account never falls back to another credential on its own.",children:[t.jsx(re,{message:r??c}),h&&t.jsx(Q,{tone:"good",role:"status",children:h}),x&&t.jsx(Q,{role:"status",children:i?"Refreshing account status…":r?"Could not refresh account status. Try again.":"Account status refreshed. This checks saved credentials; it does not renew subscription tokens or test connections."}),!s&&!r&&t.jsx(Ce,{children:"Loading accounts…"}),r&&t.jsx(ne,{children:t.jsx(A,{onClick:a,children:"Retry"})}),s&&t.jsxs(t.Fragment,{children:[(s.vault.locked||s.vault.kind==="none")&&t.jsx(Q,{tone:"warning",children:s.vault.advice||"Run buddi init on the host to configure secure credential storage."}),m&&t.jsx(Qe,{title:"Add an account",onClose:()=>p(!1),children:t.jsx("div",{id:"new-provider-account",children:t.jsx(Cae,{accounts:k,codexEnabled:s.codexEnabled,anthropicOAuthEnabled:s.anthropicOAuthEnabled,gemini:s.gemini,busy:l,run:y,onDone:S=>{p(!1),S&&j(S)}})})}),t.jsx(we,{title:"Accounts",aside:`Secrets live in the ${gae(s.vault.kind)}; Postgres holds names and assignments only.`,actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",size:"sm",disabled:l||i,onClick:()=>{u(null),f(""),g(!0),a()},children:i?"Refreshing…":"Refresh status"}),t.jsx(A,{variant:"accent",size:"sm",disabled:l,"aria-expanded":m,"aria-controls":"new-provider-account",onClick:()=>p(!m),children:"Add account"})]}),panel:!0,flush:!0,children:k.length===0?t.jsx(ms,{icon:"chip",title:"No accounts yet",children:"Add one to give your agents a model to run on."}):t.jsxs("div",{className:"accounts",children:[t.jsx("nav",{className:"accounts-list","aria-label":"Accounts",children:k.map(S=>t.jsxs("button",{type:"button",className:"accounts-row","aria-pressed":(N==null?void 0:N.id)===S.id,onClick:()=>j(S.id),children:[t.jsx(xae,{kind:S.kind,auth:S.auth}),t.jsxs("span",{className:"accounts-row-text",children:[t.jsx("span",{className:"accounts-row-name",children:S.label}),td(S)?t.jsxs("span",{className:"accounts-row-sub","data-tone":"warning",children:[w(S)," · back at ",Bk(td(S).until)]}):t.jsxs("span",{className:"accounts-row-sub",children:[w(S)," · ",S.assignedAgents.length===0?"no agents":`${S.assignedAgents.length} agent${S.assignedAgents.length===1?"":"s"}`]})]}),t.jsx(SD,{account:S})]},S.id))}),N?t.jsx(kae,{account:N,provider:w(N),anthropicOAuthEnabled:s.anthropicOAuthEnabled,busy:l,run:y},`${N.id}:${N.revision}`):null]})})]})]})}function gae(e){return e==="keychain"?"macOS Keychain":e==="file"?"encrypted file vault":e==="none"?"vault (none configured)":e}function kD(e){return e.kind==="codex"?"ChatGPT subscription":e.kind==="anthropic"?e.auth==="anthropic-oauth"?"Claude subscription":"Anthropic API":e.kind==="openai"?"OpenAI API":e.auth==="device-key"?"Ollama Cloud":Ok(e)?"mlxh":"OpenAI-compatible"}function ND(e){return e.detectedContextWindowSource==="mlxh"?Ine(e.detectedContextWindowTokens):e.detectedContextWindowSource!=="provider"?"assumed":e.kind==="codex"?"from ChatGPT":"from the provider"}function xae({kind:e,auth:n}){const s=e==="anthropic"?"A":e==="codex"?"G":e==="openai"?"O":"∞",r=e==="anthropic"?"3":e==="codex"?"2":e==="openai"?"5":"4";return t.jsx("span",{className:"ui-avatar","data-tint":r,"aria-hidden":"true",title:`${e} · ${n}`,children:s})}function vae(e){return e==="connected"?"good":["rate-limited","quota-exhausted","provider-unavailable"].includes(e)?"warning":"critical"}function td(e,n=Date.now()){const s=e.rateLimit;return e.enabled&&e.configured&&s&&Date.parse(s.until)>n?s:null}const jae=()=>Intl.DateTimeFormat().resolvedOptions().timeZone;function Bk(e,n=new Date,s=jae()){const r=new Date(e),a=i=>i.toLocaleDateString("en-CA",{timeZone:s});return a(r)===a(n)?Lt(r,s):a(r)===a(new Date(n.getTime()+864e5))?`tomorrow at ${Lt(r,s)}`:Zm(r,s)}function SD({account:e,long:n}){const s=td(e);if(s){const i=`Rate-limited until ${Bk(s.until)}`;return t.jsx("span",{title:i,children:t.jsx(Ae,{tone:"warning",children:n?i:"Rate-limited"})})}const r=e.enabled?e.configured?"good":"warning":void 0,a=e.enabled?e.configured?"Configured":"Needs credential":"Disabled";return t.jsx(Ae,{tone:r,children:a})}function yae({id:e}){const[n,s]=d.useState(!1),r=()=>{var a;(a=navigator.clipboard)==null||a.writeText(e).then(()=>{s(!0),window.setTimeout(()=>s(!1),1600)}).catch(()=>{})};return t.jsxs("span",{className:"accounts-id",children:[t.jsx("code",{className:"accounts-id-text",children:e}),t.jsx(A,{variant:"ghost",size:"sm",onClick:r,"aria-label":"Copy the id of this account",children:n?"Copied":"Copy"})]})}function wae({account:e,provider:n,children:s}){const r=td(e);if(!r)return null;const a=r.provider??n,i=Bk(r.until);if(r.scope==="day"){const l=e.assignedAgents,o=l.length===1?l[0]:"its agents",c=r.provider==="ChatGPT",u=c?"This ChatGPT plan has reached its usage limit":r.limit!==null?`${r.freeTier?`${a}'s free tier allows`:`${a} allows this account`} ${r.limit.toLocaleString()} ${r.unit??"requests"} a day`:`${a} says this account has used today's allowance`,h=r.freeTier&&r.provider==="Gemini"?", or turn on billing for the key at aistudio.google.com":"";return t.jsxs(Q,{tone:"warning",title:u,action:l.length>0?t.jsx(it,{size:"sm",href:l.length===1?Jt(l[0],"setup","brain"):Mt,children:l.length===1?`Change ${l[0]}'s account`:"Change their accounts"}):void 0,children:[t.jsxs("p",{children:["It resets ",/^tomorrow/.test(i)?i:`at ${i}`,". Until then buddi doesn't send this account's requests to ",a,", so ",l.length?`${o}'s runs stop with this note`:"a run on it stops with this note"," instead of failing again and again. To keep going ",c?"before then":"today",", ",l.length?`give ${o} another account`:"use another account",h,"."]}),s]})}return t.jsxs(Q,{tone:"warning",title:`${a} asked buddi to slow down`,children:[t.jsxs("p",{children:["It said to wait until ",i,". A run that meets this waits and tries again — up to a minute during a conversation, longer for work in the background."]}),s]})}function IE({test:e}){return e.state==="connected"?null:t.jsx(Kt,{summary:"Details",children:t.jsx(un,{items:[...e.httpStatus?[{label:"HTTP",value:t.jsx("span",{className:"mono",children:e.httpStatus})}]:[],{label:"Retry after",value:e.retryAt?new Date(e.retryAt).toLocaleString():"not given"},...e.detail?[{label:"Provider said",value:t.jsx("span",{className:"mono",children:e.detail})}]:[],{label:"Tested",value:new Date(e.checkedAt).toLocaleString()}]})})}function bae({account:e,provider:n}){const s=e.test;return td(e)&&(!s||["rate-limited","quota-exhausted","connected"].includes(s.state))?t.jsx(wae,{account:e,provider:n,children:s&&t.jsx(IE,{test:s})}):s?t.jsxs(Q,{role:"status",tone:vae(s.state),children:[t.jsx("p",{children:s.message}),t.jsx(IE,{test:s})]}):null}function Wk(e){return{id:e.id,revision:e.revision,label:e.label,kind:e.kind,auth:e.auth,baseUrl:e.baseUrl,defaultModel:e.defaultModel,enabled:e.enabled,contextWindowTokens:e.contextWindowTokens??null}}function kae({account:e,provider:n,busy:s,run:r,anthropicOAuthEnabled:a}){const[i,l]=d.useState(!1),[o,c]=d.useState(!1);return t.jsxs("section",{className:"accounts-detail","aria-label":e.label,children:[t.jsxs("div",{className:"ui-card-head",children:[t.jsx("h3",{className:"ui-card-title",children:e.label}),t.jsx(SD,{account:e,long:!0})]}),t.jsx(un,{items:[{label:"Provider",value:n},{label:"Default model",value:t.jsx("span",{className:"mono",children:e.defaultModel||"—"})},{label:"Context window",value:t.jsx("span",{className:"mono",children:`${(e.contextWindowTokens??e.detectedContextWindowTokens??0).toLocaleString()} tokens${e.contextWindowTokens?"":` (${ND(e)})`}`})},...e.baseUrl?[{label:"Endpoint",value:t.jsx("span",{className:"mono",children:e.baseUrl})}]:[],{label:"Used by",value:e.assignedAgents.length?t.jsx("span",{className:"ui-row",children:e.assignedAgents.map(u=>t.jsx("a",{href:Jt(u,"setup","brain"),children:u},u))}):t.jsxs("span",{className:"ui-row",children:[t.jsx("span",{className:"muted",children:"No agents"}),t.jsx("a",{href:Mt,children:"Assign to an agent"})]})},...e.tokenExpiresAt?[{label:"Access token",value:`expires ${Nt(e.tokenExpiresAt,Intl.DateTimeFormat().resolvedOptions().timeZone)} (not your subscription renewal date)`}]:[],{label:"ID",value:t.jsx(yae,{id:e.id})}]}),e.removalPending&&t.jsx(Q,{tone:"warning",children:"Removal is pending. Unlock the vault, then retry Remove account."}),e.reconnectRequired&&t.jsxs(Q,{tone:"warning",children:["Token refresh did not finish. Reconnect this ",e.kind==="codex"?"ChatGPT":"Claude"," account."]}),e.auth==="anthropic-oauth"&&t.jsx(AD,{account:e,enabled:!!a,busy:s,run:r}),e.kind==="codex"&&t.jsx(CD,{account:e,busy:s,run:r}),e.auth==="device-key"&&t.jsx(ED,{account:e,busy:s,run:r}),t.jsxs(ne,{children:[t.jsx(A,{disabled:s||e.removalPending,onClick:()=>l(!0),children:"Edit account"}),t.jsx(A,{disabled:s||e.removalPending,onClick:()=>void r(()=>T.saveProviderAccount({...Wk(e),enabled:!e.enabled}),e.enabled?"Account disabled. Subsequent model calls will stop; already-sent requests cannot be recalled.":"Account enabled."),children:e.enabled?"Disable":"Enable"}),e.kind!=="codex"&&t.jsx(A,{disabled:s||!e.enabled||!e.configured,onClick:()=>void r(async()=>(await T.testProviderAccount(e.id),{warning:""}),""),children:"Test connection"}),t.jsx(A,{variant:"danger",disabled:s||e.assignedAgents.length>0,title:e.assignedAgents.length?"Reassign its agents before removing this account":void 0,onClick:()=>c(!0),children:"Remove account"})]}),t.jsx(bae,{account:e,provider:n}),i&&t.jsx(Qe,{title:`Edit ${e.label}`,onClose:()=>l(!1),children:t.jsx(Nae,{account:e,busy:s,run:r,onDone:()=>l(!1)})}),o&&t.jsxs(Q,{tone:"critical",children:[t.jsxs("p",{children:["Remove “",e.label,"” and its stored credential from Buddi? This does not revoke it at the provider or remove it from backups."]}),t.jsxs(ne,{children:[t.jsx(A,{variant:"danger",disabled:s,onClick:()=>void r(()=>T.removeProviderAccount(e.id,e.revision),"Account removed from Buddi."),children:"Confirm removal"}),t.jsx(A,{disabled:s,onClick:()=>c(!1),children:"Cancel"})]})]}),t.jsx(Kt,{summary:"Details",children:t.jsxs("div",{className:"ui-prose muted",children:[e.kind==="codex"?t.jsxs(t.Fragment,{children:[t.jsx("p",{children:"Talks to OpenAI’s Codex backend directly with your ChatGPT sign-in. The credential stays in buddi’s vault; buddi refreshes it and never reads your own Codex login."}),t.jsx("p",{children:"Native tool-step usage reporting is incomplete. Do not use Buddi’s token or API-cost estimates as subscription billing or remaining quota."}),t.jsx("p",{children:"After connecting, assign this account to an agent and send a test message. Model turns use your subscription allowance."})]}):t.jsx("p",{children:"Test connection asks the default model to reply with the single word “ready” (at most five tokens, no tools) and may incur a small charge. No conversation or files are sent. Configured does not mean verified."}),e.auth==="device-key"&&t.jsx("p",{children:"Ollama Cloud with a device key: buddi made a key pair and keeps it in the vault; ollama.com only ever saw the public half and this computer’s name. Each request to ollama.com is signed with the key, and nothing else is sent with it. Disconnect asks ollama.com to forget the device and removes the key from buddi either way."}),e.auth==="anthropic-oauth"&&t.jsx("p",{children:"Claude subscription sign-in. Tokens remain in Buddi’s vault and refresh before use. Uses your plan’s monthly Agent SDK credits; after them, an API key. Remaining credits are unknown here."}),t.jsx("p",{children:"Subscription login is separate from API-key access."})]})})]})}function CD({account:e,busy:n,run:s}){var r,a,i;return t.jsxs(t.Fragment,{children:[t.jsxs(ne,{children:[t.jsx(A,{disabled:n||!e.enabled||e.removalPending||((r=e.login)==null?void 0:r.state)==="pending",onClick:()=>void s(()=>T.codexAccountAction(e.id,"login",e.revision),"Complete device sign-in below."),children:e.configured?"Reconnect ChatGPT":"Connect ChatGPT"}),((a=e.login)==null?void 0:a.state)==="pending"&&t.jsx(A,{disabled:n,onClick:()=>void s(()=>T.codexAccountAction(e.id,"cancel-login",e.revision),"Sign-in cancelled."),children:"Cancel sign-in"}),t.jsx(A,{disabled:n||!e.configured,onClick:()=>void s(()=>T.codexAccountAction(e.id,"logout",e.revision),"Subscription disconnected from Buddi. Your regular Codex login is unchanged."),children:"Disconnect"})]}),((i=e.login)==null?void 0:i.state)==="pending"&&t.jsxs(Q,{tone:"accent",role:"status",children:[t.jsx("p",{children:"Open openai.com, type this code there and approve buddi."}),e.login.userCode&&t.jsx(Lk,{code:e.login.userCode,large:!0}),e.login.verificationUrl&&t.jsx(ne,{children:t.jsx(it,{variant:"accent",href:e.login.verificationUrl,target:"_blank",rel:"noreferrer",children:"Open openai.com"})}),e.login.expiresAt&&t.jsxs("p",{className:"muted",children:["The code works until ",Lt(new Date(e.login.expiresAt),Intl.DateTimeFormat().resolvedOptions().timeZone),". Start again after that; this is the sign-in timeout, not your subscription expiry."]})]}),e.login&&e.login.state!=="pending"&&t.jsx("p",{role:"status",className:"muted",children:e.login.message??`Sign-in ${e.login.state}.`})]})}function Nae({account:e,busy:n,run:s,onDone:r,codexEnabled:a,anthropicOAuthEnabled:i}){const[l,o]=d.useState((e==null?void 0:e.label)??""),[c,u]=d.useState((e==null?void 0:e.kind)??"anthropic"),[h,f]=d.useState((e==null?void 0:e.auth)??"api-key"),[m,p]=d.useState((e==null?void 0:e.baseUrl)??""),[x,g]=d.useState((e==null?void 0:e.defaultModel)??"claude-sonnet-5"),[b,j]=d.useState(""),[v,y]=d.useState(e!=null&&e.contextWindowTokens?String(e.contextWindowTokens):""),k=w=>{u(w),f(w==="codex"?"chatgpt":"api-key"),j(""),p(w==="openai-compatible"?"http://localhost:11434/v1":""),g(w==="anthropic"?"claude-sonnet-5":w==="openai"?"gpt-5":"")},N=!l.trim()||!x.trim();return t.jsxs("form",{className:"ui-stack",onSubmit:w=>{w.preventDefault();const S=b;j(""),s(()=>T.saveProviderAccount({...e?{id:e.id,revision:e.revision}:{},label:l,kind:c,auth:h,baseUrl:m,defaultModel:x,enabled:(e==null?void 0:e.enabled)??!0,contextWindowTokens:v.trim()?Number(v):null,...S.trim()?{secret:S}:{}}),"Account saved. Agent model selections are unchanged.").then(C=>{C&&r()})},children:[t.jsxs("fieldset",{disabled:n,className:"ui-fields","data-stack":"true",children:[t.jsx(le,{label:"Account name",children:t.jsx("input",{autoFocus:!0,required:!0,maxLength:100,value:l,onChange:w=>o(w.target.value),placeholder:"Anthropic — Personal"})}),t.jsx(le,{label:"Provider",children:t.jsxs("select",{disabled:!!e,value:h==="anthropic-oauth"?"anthropic-oauth":h==="device-key"?"ollama-cloud":c,onChange:w=>{w.target.value==="anthropic-oauth"?(k("anthropic"),f("anthropic-oauth")):k(w.target.value)},children:[t.jsx("option",{value:"anthropic",children:"Anthropic API"}),t.jsx("option",{value:"openai",children:"OpenAI API"}),t.jsx("option",{value:"openai-compatible",children:"OpenAI-compatible endpoint"}),(e==null?void 0:e.auth)==="device-key"&&t.jsx("option",{value:"ollama-cloud",children:"Ollama Cloud"}),(i||(e==null?void 0:e.auth)==="anthropic-oauth")&&t.jsx("option",{value:"anthropic-oauth",children:"Claude subscription"}),(a||(e==null?void 0:e.kind)==="codex")&&t.jsx("option",{value:"codex",children:"ChatGPT subscription"})]})}),c==="openai-compatible"&&h!=="device-key"&&t.jsxs(t.Fragment,{children:[t.jsx(le,{label:"API base URL",hint:"Include the API path, such as /v1 or /api/v1. Conversation data will be sent to this endpoint. The model must support tool calling to use agent tools.",children:t.jsx("input",{required:!0,type:"url",value:m,onChange:w=>p(w.target.value)})}),t.jsx(le,{label:"Authentication",children:t.jsxs("select",{disabled:!!e,value:h,onChange:w=>{f(w.target.value),j("")},children:[t.jsx("option",{value:"api-key",children:"API key"}),t.jsx("option",{value:"none",children:"No key (local/self-hosted)"})]})})]}),t.jsx(ne,{valign:"end",children:t.jsx(Dk,{accountId:e!=null&&e.configured&&e.enabled?e.id:void 0,label:"Default model",value:x,onChange:g,disabled:n,...(e==null?void 0:e.kind)==="codex"?{origin:"from ChatGPT",suggest:gD}:{}},`${e==null?void 0:e.id}:${e==null?void 0:e.revision}`)}),t.jsx(le,{label:"Context window",hint:Ok(e)?"mlxh refuses a prompt over its max_prompt_tokens, and its model manager does not report the number, so buddi assumes 8,192. After `mlxh config max_prompt_tokens 40960`, enter the same number here.":"Tokens this endpoint actually serves. Leave blank unless you run the model yourself and set a window of your own — a conversation is ended once its history would fill half of this.",children:t.jsx("input",{type:"number",inputMode:"numeric",min:8e3,max:2e6,step:1e3,value:v,placeholder:e!=null&&e.detectedContextWindowTokens?`${e.detectedContextWindowTokens} (${ND(e)})`:"assumed from the model",onChange:w=>y(w.target.value)})}),c==="codex"&&t.jsx("p",{className:"muted",children:"Pick a model from the list once the account is connected."}),h==="anthropic-oauth"&&t.jsx("p",{className:"muted",children:"Save this account, then choose Connect Claude. You will approve in your browser and paste the authorization code here, not in chat. No existing agent assignment changes."}),h==="api-key"&&t.jsx(le,{label:e?"Replacement API key (leave blank to keep)":"API key",children:t.jsx("input",{type:"password",autoComplete:"new-password",spellCheck:!1,value:b,onChange:w=>j(w.target.value)})}),e&&t.jsx("p",{className:"muted",children:"Saving changes stops an active run at its next model call. Start a new turn afterward. Changing the default model does not change existing agent assignments."}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:r,children:"Cancel"}),t.jsx(A,{type:"submit",variant:"accent",disabled:N,children:"Save account"})]})]}),N&&t.jsx("p",{className:"muted",children:"Enter an account name and default model to enable Save account. The example name is a placeholder."})]})}function ED({account:e,busy:n,run:s}){var o;const r=((o=e.login)==null?void 0:o.state)==="pending"&&e.login.attemptId?e.login:null,a=d.useRef(s);a.current=s,d.useEffect(()=>{if(!(r!=null&&r.attemptId))return;let c=!1,u=!1;const h=setInterval(()=>{c||u||(u=!0,T.ollamaPoll(e.id,r.attemptId).then(f=>{c||f.state==="waiting"||(c=!0,f.state==="connected"?a.current(async()=>{},`Connected as ${f.username}, device ${f.deviceName}.`):a.current(async()=>{throw new Error(f.message)},""))}).catch(()=>{}).finally(()=>{u=!1}))},2e3);return()=>{c=!0,clearInterval(h)}},[e.id,r==null?void 0:r.attemptId]);const i=()=>{const c=typeof window.open=="function"?window.open("","_blank"):null;s(async()=>{try{const u=await T.ollamaConnect(e.id,e.revision);return c&&(c.location.href=u.verificationUrl),u}catch(u){throw c==null||c.close(),u}},"Press Connect on the ollama.com page. This card notices on its own.")},l=e.device;return t.jsxs(t.Fragment,{children:[l&&t.jsx("p",{className:"muted",role:"status",children:l.connectedAt?`Connected as ${l.username||"an ollama.com account"}, device ${l.deviceName}.`:`Not connected yet. Device ${l.deviceName}.`}),t.jsxs(ne,{children:[t.jsx(A,{disabled:n||!e.enabled||e.removalPending||!!r,onClick:i,children:e.configured?"Reconnect Ollama":"Connect Ollama"}),t.jsx(A,{disabled:n||!l||e.removalPending,onClick:()=>void s(async()=>({warning:(await T.ollamaDisconnect(e.id,e.revision)).note}),"Disconnected."),children:"Disconnect"})]}),r&&t.jsxs(Q,{tone:"accent",role:"status",children:[t.jsxs("p",{children:[t.jsx("a",{href:r.verificationUrl,target:"_blank",rel:"noreferrer",children:"Open the ollama.com page"})," and press Connect. Sign in there first if it asks."]}),t.jsxs("p",{className:"muted",children:["buddi stops waiting at ",r.expiresAt&&Lt(new Date(r.expiresAt),Intl.DateTimeFormat().resolvedOptions().timeZone),"."]})]})]})}function AD({account:e,enabled:n,busy:s,run:r}){var l,o,c,u,h;const[a,i]=d.useState("");return d.useEffect(()=>{i("")},[(l=e.login)==null?void 0:l.attemptId,(o=e.login)==null?void 0:o.state]),t.jsxs(t.Fragment,{children:[!n&&t.jsx(Q,{tone:"warning",children:"Claude subscription sign-in is turned off on this host."}),t.jsxs(ne,{children:[t.jsx(A,{disabled:s||!n||!e.enabled||e.removalPending||((c=e.login)==null?void 0:c.state)==="pending",onClick:()=>void r(()=>T.anthropicAccountAction(e.id,"login",e.revision),"Open the Claude consent link below. Existing credentials remain until sign-in succeeds."),children:e.configured?"Reconnect Claude":"Connect Claude"}),((u=e.login)==null?void 0:u.state)==="pending"&&t.jsx(A,{disabled:s,onClick:()=>{i(""),r(()=>T.anthropicAccountAction(e.id,"cancel-login",e.revision),"Claude sign-in cancelled.")},children:"Cancel sign-in"}),t.jsx(A,{disabled:s||!e.configured||e.removalPending,onClick:()=>{i(""),r(()=>T.anthropicAccountAction(e.id,"logout",e.revision),"Claude disconnected from Buddi. This does not revoke access at Anthropic.")},children:"Disconnect Claude"})]}),((h=e.login)==null?void 0:h.state)==="pending"&&t.jsxs("form",{className:"ui-notice","data-tone":"accent",onSubmit:f=>{f.preventDefault();const m=a;i(""),r(()=>T.anthropicAccountAction(e.id,"complete-login",e.revision,{attemptId:e.login.attemptId,code:m}),"Claude connected. Edit account to load its model list, then assign it to an agent.")},children:[t.jsx("p",{children:t.jsx("a",{href:e.login.verificationUrl,target:"_blank",rel:"noreferrer",children:"Open Claude consent page"})}),t.jsxs("p",{className:"muted",children:["Use the Claude account you want to connect. Paste the entire code including #state. This attempt expires at ",e.login.expiresAt&&Lt(new Date(e.login.expiresAt),Intl.DateTimeFormat().resolvedOptions().timeZone),"; restarting Buddi also ends it."]}),t.jsx(le,{label:"Claude authorization code",children:t.jsx("input",{type:"password",autoComplete:"off",spellCheck:!1,maxLength:8192,value:a,onChange:f=>i(f.target.value),disabled:s})}),t.jsx(ne,{align:"end",children:t.jsx(A,{type:"submit",variant:"accent",disabled:s||!a.trim(),children:"Complete Claude sign-in"})})]})]})}const Nx={anthropic:"claude-sonnet-5",openai:"gpt-5",codex:Cy};function Sx(e,n,s){return Ey(e==="codex"?"ChatGPT subscription":e==="anthropic"?n==="anthropic-oauth"?"Claude subscription":"Anthropic API":e==="openai"?"OpenAI API":n==="device-key"?"Ollama Cloud":"Local endpoint",s)}function Ey(e,n){const s=new Set(n.map(r=>r.trim().toLowerCase()));if(!s.has(e.toLowerCase()))return e;for(let r=2;r<100;r+=1)if(!s.has(`${e} ${r}`.toLowerCase()))return`${e} ${r}`;return e}const Sae="That key was refused. Check it and paste it again.";function Cae({accounts:e,busy:n,run:s,onDone:r,codexEnabled:a,anthropicOAuthEnabled:i,gemini:l}){const o=e.map(J=>J.label),[c,u]=d.useState(null),[h,f]=d.useState("anthropic"),[m,p]=d.useState("api-key"),[x,g]=d.useState(()=>Sx("anthropic","api-key",o)),[b,j]=d.useState(!1),[v,y]=d.useState(""),[k,N]=d.useState(""),[w,S]=d.useState(null),[C,E]=d.useState(!1),[$,R]=d.useState(""),[P,O]=d.useState(""),[I,F]=d.useState(!1),[U,L]=d.useState(!1),[M,z]=d.useState(!1),[D,H]=d.useState(void 0),K=(J,xe,Ie=!1)=>{f(J),p(xe),N(""),S(null),R(""),O(""),F(!1),L(Ie),z(!1),H(void 0),y(Ie?"":J==="openai-compatible"?"http://localhost:11434/v1":""),b||g(Ie?Sx(J,"device-key",o):Sx(J,xe,o))},X=J=>{K("openai-compatible",J?"api-key":"device-key",!0),J&&T.ollama().then(xe=>y(xe.cloudBaseUrl)).catch(()=>{})},W=()=>{l&&(K("openai-compatible","api-key"),z(!0),y(l.baseUrl),b||g(Ey("Gemini",o)))},me=()=>{K("openai-compatible","none"),H(null),b||g(Ey("mlxh",o)),T.mlxh().then(J=>{H(J),y(J.baseUrl)}).catch(()=>H(void 0))},fe=D!==void 0,oe=c?e.find(J=>J.id===c):void 0;if(c)return oe?t.jsx(Eae,{account:oe,busy:n,run:s,anthropicOAuthEnabled:i,onDone:()=>r(oe.id)}):t.jsx(Ce,{children:"Saving…"});const B=h==="openai-compatible"&&m!=="device-key",ue=h==="codex"||m==="anthropic-oauth"||m==="device-key",Ne=!ue&&(m==="none"||k.trim()!=="")&&(!B||v.trim()!==""),Ke=async()=>{var J,xe;E(!0),R("");try{const Ie=await T.probeModels({kind:h,auth:m,...B?{baseUrl:v}:{},...k.trim()?{secret:k}:{}});S(Ie),P||O(((J=Ie.models.find(Y=>Y.isDefault))==null?void 0:J.id)??((xe=Ie.models[0])==null?void 0:xe.id)??"")}catch(Ie){R(Ie instanceof Error?Ie.message:"Could not load models. You can still enter a custom model.")}finally{E(!1)}},G=P.trim(),ae=!x.trim()||B&&!v.trim()||B&&!M&&!fe&&!G||M&&!k.trim()||fe&&!(D!=null&&D.running);return t.jsxs("form",{className:"ui-stack",onSubmit:J=>{var te;J.preventDefault();const xe=k;N("");let Ie=G||(fe?jy(D)??((te=D==null?void 0:D.models[0])==null?void 0:te.id):void 0)||(m==="device-key"?Yh:Nx[h])||"claude-sonnet-5",Y;(async()=>{if(M){Ie=xD;try{const ke=(await T.probeModels({kind:"openai-compatible",auth:"api-key",baseUrl:v,secret:xe})).models.map(Be=>Be.id);Ie=vD(ke)??Ie,Y=yD(Ie)?jD(ke):void 0}catch{}}let ie,ge=!1;!await s(async()=>{if(ie=await T.saveProviderAccount({label:x,kind:h,auth:m,baseUrl:v,defaultModel:Ie,enabled:!0,...xe.trim()?{secret:xe}:{}}),m!=="api-key")return ie;const Se=await T.testProviderAccount(ie.id);if(Se.state==="connected")return{...ie,warning:`Account saved. ${Se.message}`};if(eb(Se)){const ke=ie.id;ie=void 0;try{const Be=(await T.providerAccounts()).accounts.find(rt=>rt.id===ke);Be&&await T.removeProviderAccount(ke,Be.revision)}catch{}throw new Error(Sae)}if(M&&Y&&wD(Se)){const ke=(await T.providerAccounts()).accounts.find(Be=>Be.id===ie.id);if(ke&&(await T.saveProviderAccount({...Wk(ke),defaultModel:Y}),(await T.testProviderAccount(ie.id)).state==="connected"))return{...ie,warning:`Account saved on ${Y}. Your Google AI plan covers the Gemini app, not this key. The key’s Google Cloud project has no billing, so Pro models aren’t included; enable billing on that project at aistudio.google.com to use Pro.`}}return ge=!0,{...ie,warning:`Account saved. ${Se.message}`}},"Account saved.")||!ie||(M||fe||ge?u(ie.id):G||!ue?r(ie.id):u(ie.id))})()},children:[t.jsxs("fieldset",{disabled:n,className:"ui-fields","data-stack":"true",children:[t.jsx(le,{label:"Provider",children:t.jsxs("select",{value:m==="anthropic-oauth"?"anthropic-oauth":U?"ollama-cloud":M?"gemini":fe?"mlxh":h,onChange:J=>{if(J.target.value==="anthropic-oauth")K("anthropic","anthropic-oauth");else if(J.target.value==="gemini")W();else if(J.target.value==="mlxh")me();else if(J.target.value==="ollama-cloud")K("openai-compatible","device-key",!0);else{const xe=J.target.value;K(xe,xe==="codex"?"chatgpt":"api-key")}},children:[t.jsx("option",{value:"anthropic",children:"Anthropic API"}),t.jsx("option",{value:"openai",children:"OpenAI API"}),l&&t.jsx("option",{value:"gemini",children:"Gemini (Google AI key)"}),t.jsx("option",{value:"ollama-cloud",children:"Ollama Cloud"}),t.jsx("option",{value:"mlxh",children:"mlxh, local MLX models on this Mac"}),t.jsx("option",{value:"openai-compatible",children:"OpenAI-compatible endpoint (Ollama, OpenRouter, vLLM…)"}),i&&t.jsx("option",{value:"anthropic-oauth",children:"Claude subscription"}),a&&t.jsx("option",{value:"codex",children:"ChatGPT subscription"})]})}),t.jsx(le,{label:"Account name",hint:"Proposed from the provider. Change it to anything you will recognise.",children:t.jsx("input",{autoFocus:!0,required:!0,maxLength:100,value:x,onChange:J=>{g(J.target.value),j(!0)},placeholder:"Anthropic — Personal"})}),U&&t.jsxs("label",{className:"ui-row",children:[t.jsx("input",{type:"checkbox",checked:m==="api-key",onChange:J=>X(J.target.checked)}),t.jsx("span",{children:"Use a key instead"})]}),B&&t.jsxs(t.Fragment,{children:[t.jsx(le,{label:"API base URL",hint:"Include the API path, such as /v1 or /api/v1. Conversation data will be sent to this endpoint. The model must support tool calling to use agent tools.",children:t.jsx("input",{required:!0,type:"url",value:v,onChange:J=>{y(J.target.value),S(null)}})}),!M&&!fe&&t.jsx(le,{label:"Authentication",children:t.jsxs("select",{value:m,onChange:J=>{p(J.target.value),N(""),S(null)},children:[t.jsx("option",{value:"api-key",children:"API key"}),t.jsx("option",{value:"none",children:"No key (local/self-hosted)"})]})})]}),m==="api-key"&&t.jsx(le,{label:"API key",hint:"Stored in the vault, never shown again.",children:t.jsx("input",{type:"password",autoComplete:"new-password",spellCheck:!1,value:k,onChange:J=>{N(J.target.value),S(null)}})}),fe?D===null?t.jsx("p",{className:"muted",children:"Looking for mlxh on this computer…"}):D!=null&&D.running?t.jsxs(de,{gap:"sm",children:[t.jsxs("p",{className:"muted",children:["mlxh answers with ",D.models.length===1?"one model":`${D.models.length} models`,". No key: mlxh takes any. buddi starts on ",jy(D)??"the first","; the next step lists the rest. A model that is not loaded takes up to a minute on its first answer."]}),D.models.some(J=>J.kind==="image")?t.jsxs("p",{className:"muted",children:[D.models.filter(J=>J.kind==="image").map(J=>J.id).join(", "),": ",BO,"."]}):null]}):t.jsx(Q,{tone:"warning",children:UO((D==null?void 0:D.baseUrl)??v)}):M&&l?t.jsxs("p",{className:"muted",children:[t.jsx("a",{href:l.keyUrl,target:"_blank",rel:"noreferrer",children:"Get a key at aistudio.google.com"}),". buddi picks the newest Gemini Pro your key can reach; the next step lists the rest."]}):ue?t.jsx("p",{className:"muted",children:h==="codex"?"You will connect your ChatGPT subscription on the next step, with a code you enter on openai.com, and pick a model then.":m==="device-key"?"You will connect on the next step: ollama.com opens, you press Connect, and no key is typed. Free to start.":"You will connect your Claude subscription on the next step, in your browser, and pick a model then."}):t.jsxs("div",{className:"ui-field",children:[t.jsx("span",{className:"ui-field-label",children:"Model"}),w?t.jsxs("div",{className:"ui-row",children:[t.jsxs("select",{"aria-label":"Model",value:I?"__custom__":P,onChange:J=>{J.target.value==="__custom__"?(F(!0),O("")):(F(!1),O(J.target.value))},children:[w.models.map(J=>t.jsxs("option",{value:J.id,children:[J.name===J.id?J.id:`${J.name} — ${J.id}`,J.isDefault?" (provider default)":"",J.thinks?" · thinks":""]},J.id)),t.jsx("option",{value:"__custom__",children:"Custom model…"})]}),t.jsx(A,{size:"sm",disabled:C||!Ne,onClick:()=>void Ke(),children:C?"Loading…":"Reload"})]}):t.jsxs("div",{className:"ui-row",children:[t.jsx(A,{disabled:C||!Ne,onClick:()=>void Ke(),children:C?"Loading models…":"Load models"}),B?t.jsx("span",{className:"muted",children:"Ask the endpoint what it serves."}):t.jsxs("span",{className:"muted",children:["Optional now: ",Nx[h]," is used until you pick one."]})]}),I||B&&!w?t.jsx("input",{"aria-label":"Custom model",required:B,maxLength:150,value:P,onChange:J=>O(J.target.value),placeholder:B?"qwen3:8b":Nx[h]}):null,$?t.jsx("span",{className:"ui-field-hint critical",role:"alert",children:$}):null,w!=null&&w.truncated?t.jsx("span",{className:"ui-field-hint",children:"Showing the first part of the provider’s list."}):null]}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:()=>r(),children:"Cancel"}),t.jsx(A,{type:"submit",variant:"accent",disabled:ae,children:"Save account"})]})]}),ae&&!fe&&t.jsxs("p",{className:"muted",children:["Enter an account name",M?" and a key":B?", an endpoint and a model":""," to enable Save account."]})]})}function Eae({account:e,busy:n,run:s,anthropicOAuthEnabled:r,onDone:a}){const[i,l]=d.useState(e.defaultModel),o=e.configured;return t.jsxs(de,{gap:"lg",children:[t.jsxs(Q,{tone:"good",children:["Saved “",e.label,"”."]}),e.auth==="anthropic-oauth"&&!o?t.jsx(AD,{account:e,enabled:!!r,busy:n,run:s}):null,e.kind==="codex"&&!o?t.jsx(CD,{account:e,busy:n,run:s}):null,e.auth==="device-key"&&!o?t.jsx(ED,{account:e,busy:n,run:s}):null,o?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"ui-page-lede",children:"Pick the model this account offers by default. An agent can still choose another when you assign it."}),t.jsx(ne,{valign:"end",children:t.jsx(Dk,{accountId:e.enabled?e.id:void 0,label:"Default model",value:i,onChange:l,disabled:n,...e.kind==="codex"?{origin:"from ChatGPT",suggest:gD,onSuggest:c=>l(u=>u===Cy&&e.defaultModel===Cy?c:u)}:{}},`${e.id}:${e.revision}`)}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:a,children:"Skip for now"}),t.jsx(A,{variant:"accent",disabled:n||!i.trim(),onClick:()=>{if(i===e.defaultModel){a();return}s(()=>T.saveProviderAccount({...Wk(e),defaultModel:i}),"Default model saved.").then(c=>{c&&a()})},children:"Done"})]})]}):t.jsx(ne,{children:t.jsx(A,{onClick:a,children:"Finish later"})})]})}async function wl(e,n,s,r){s(!0),r(null);try{return(await T.secretsAct(e,n)).result}catch(a){return r(a instanceof Error?a.message:String(a)),null}finally{s(!1)}}const $D="Passwords, keys and links your agents use without ever seeing them. Each goes only where you allow.";function Aae(e,n){if(n==="mail")return"mail";if(n==="models")return"chip";if(n==="connections")return"plug";if(n==="plugin:calendar")return"calendar";const s=e.bindings.map(r=>r.kind);return s.some(r=>r.startsWith("browser."))?"globe":s.includes("developer.env")?"terminal":"key"}function $ae({embedded:e,timezone:n,secret:s,adding:r,navigate:a}={}){const i=ve(()=>T.secrets(),[]),l=ve(()=>T.providerAccounts(),[]),o=d.useMemo(()=>{var x;return new Map((((x=l.data)==null?void 0:x.accounts)??[]).map(g=>[g.id,{label:g.label,provider:kD(g)}]))},[l.data]),[c,u]=d.useState(s?{what:"replace",name:s}:r?{what:"add"}:null);d.useEffect(()=>{s&&u({what:"replace",name:s})},[s]),d.useEffect(()=>{r&&u({what:"add"})},[r]);const h=()=>{u(null),(s||r)&&a&&a(We("secrets"))},f=i.data,m=d.useMemo(()=>{const x=new Map;for(const g of(f==null?void 0:f.secrets)??[]){const b=Ba(g);x.set(b,[...x.get(b)??[],g])}return[...x.entries()].sort(([g],[b])=>fQ(g,b))},[f]),p=c&&c.what!=="add"?(f==null?void 0:f.secrets.find(x=>x.name===c.name))??null:null;return t.jsxs(Rs,{embedded:e,title:"Keys and secrets",lede:$D,actions:e?void 0:t.jsx(A,{variant:"accent",size:"sm",onClick:()=>u({what:"add"}),children:"Add a secret"}),children:[t.jsxs(de,{gap:"lg",children:[!f&&!i.error?t.jsx(Ce,{children:"Opening the vault…"}):null,i.error?t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:i.error}),t.jsx(ne,{children:t.jsx(A,{onClick:i.reload,children:"Retry"})})]}):null,f&&f.secrets.length===0?t.jsx(lt,{children:t.jsx(ms,{icon:"lock",title:"Nothing stored yet.",children:"Add a site password or an API token, and say where an agent may use it. Mailbox passwords and calendar links show up here as you add them."})}):null,f&&f.secrets.length>0?t.jsx(lt,{flush:!0,children:m.map(([x,g])=>{const b=hQ(x);return t.jsxs("section",{className:"secrets-group","aria-label":b.title,children:[t.jsxs("header",{className:"secrets-group-head",children:[t.jsx("h3",{className:"secrets-group-title",children:b.title}),t.jsx("span",{className:"secrets-group-aside",children:b.aside})]}),t.jsx(yt,{children:g.map(j=>t.jsx(Rae,{secret:j,group:x,accounts:o,timezone:n,onOpen:v=>u({what:v,name:j.name})},j.name))})]},x)})}):null,f&&f.ownKeys.length>0?t.jsx(Kt,{summary:`buddi’s own keys · ${f.ownKeys.length}`,children:t.jsxs("p",{className:"secrets-note",children:["The keys buddi itself runs on, read from its environment:"," ",f.ownKeys.map((x,g)=>t.jsxs("span",{children:[g>0?", ":"",t.jsx("code",{className:"mono",children:x})]},x)),". They aren’t changed here, and buddi hides them in whatever it sends out, like your own."]})}):null]}),(c==null?void 0:c.what)==="add"&&f?t.jsx(Oae,{destinations:f.destinations,onClose:h,onChanged:i.reload}):null,p&&(c==null?void 0:c.what)==="sheet"?t.jsx(Pae,{secret:p,accounts:o,timezone:n,onClose:h,onOpen:x=>u({what:x,name:p.name})}):null,p&&(c==null?void 0:c.what)==="replace"?t.jsx(Dae,{secret:p,title:iu(p,o),onClose:h,onChanged:i.reload}):null,p&&(c==null?void 0:c.what)==="rename"?t.jsx(Lae,{secret:p,onClose:h,onChanged:i.reload}):null,p&&(c==null?void 0:c.what)==="places"&&f?t.jsx(Fae,{secret:p,title:iu(p,o),destinations:f.destinations,onClose:h,onChanged:i.reload}):null,p&&(c==null?void 0:c.what)==="delete"?t.jsx(_ae,{secret:p,title:iu(p,o),onClose:h,onChanged:i.reload}):null]})}const nd=e=>n=>{n.stopPropagation(),e==null||e()};function TD({fix:e,onOpen:n}){return"href"in e?t.jsx(it,{size:"sm",href:e.href,onClick:nd(),children:e.label}):t.jsx(A,{size:"sm",onClick:nd(()=>n(e.action)),children:e.label})}function Tae(e,n,s){if(n==="mine")return[{label:"Replace value…",onSelect:()=>s("replace")},{label:"Rename…",onSelect:()=>s("rename")},{label:"Change where it may go…",hint:"Places, and when it asks",onSelect:()=>s("places")},{label:"Usage history",onSelect:()=>s("sheet")},"separator",{label:"Delete…",tone:"critical",onSelect:()=>s("delete")}];if(n==="mail"){const r=(e.usedBy??[]).find(a=>a.kind==="mailbox");return[r&&!e.unused?{label:"Set a new password",hint:"On the Email page, which tests it first",onSelect:()=>{window.location.hash=Yj(r.id)}}:null,{label:"Usage history",onSelect:()=>s("sheet")},ho(e)?"separator":null,ho(e)?{label:"Remove…",tone:"critical",onSelect:()=>s("delete")}:null]}return[{label:n==="plugin:calendar"?"Replace link…":"Replace value…",onSelect:()=>s("replace")},{label:"Usage history",onSelect:()=>s("sheet")},ho(e)?"separator":null,ho(e)?{label:"Remove…",tone:"critical",onSelect:()=>s("delete")}:null]}function Rae({secret:e,group:n,accounts:s,timezone:r,onOpen:a}){const i=iu(e,s),l=gQ(e,s),o=pQ(e,r),c=[o??kk(e),o&&!e.lastUse?null:wQ(e)].filter(Boolean).join(" · "),u=E2(e),h=A2(e),f=Qj(e),m=b2(n)?S2(e):null;return t.jsx(gt,{onClick:()=>a("sheet"),label:`${i}: details`,lead:t.jsx(ss,{icon:Aae(e,n)}),title:t.jsxs(t.Fragment,{children:[i,l?t.jsx("span",{className:"secrets-tag",children:l}):null]}),sub:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"secrets-line",children:c}),u?t.jsx("span",{className:"secrets-status","data-tone":"warning",children:u.text}):null,h?t.jsx("span",{className:"secrets-status",children:h}):null,f?t.jsx("span",{className:"secrets-status",children:f}):null,e.savedFrom?t.jsx(Iae,{from:e.savedFrom,timezone:r}):null]}),side:t.jsxs("span",{className:"secrets-side",children:[u!=null&&u.fix?t.jsx(TD,{fix:u.fix,onOpen:a}):null,h&&ho(e)||e.login&&n==="mine"?t.jsx(A,{size:"sm",variant:"ghost",onClick:nd(()=>a("delete")),children:"Remove…"}):null,m?t.jsxs("a",{className:"secrets-managed",href:m.href,onClick:nd(),children:[m.label,t.jsx(se,{name:"chevron-right",size:12})]}):t.jsx(rs,{label:`More for ${i}`,items:Tae(e,n,a),sheet:{title:i,sub:c}})]})})}function Iae({from:e,timezone:n}){const s=n??Intl.DateTimeFormat().resolvedOptions().timeZone,r=new Date(e.at),a=Hs(r,s,{compact:!0}),i=Hs(new Date,s,{compact:!0}),l=Number.isNaN(r.getTime())?"":`${a===i?"today":a} at ${Lt(r,s)}`,o=[e.title,e.agentId?e.agentId.charAt(0).toUpperCase()+e.agentId.slice(1):null].filter(Boolean).join(" · ");return t.jsxs("span",{className:"ss-from",children:["Saved ",l,", ",e.agentId?t.jsx("a",{href:ht(e.agentId,e.conversationId),title:o||void 0,onClick:nd(),children:"from a conversation"}):"from a conversation"]})}function Pae({secret:e,accounts:n,timezone:s,onClose:r,onOpen:a}){const i=Ba(e),l=iu(e,n),o=E2(e),c=A2(e),u=[...new Set(e.bindings.map(m=>m.rule))],h=e.lastUse,f=(e.usedBy??[]).map(m=>({label:m.kind==="mailbox"?"Mailbox":m.kind==="model-account"?"Model account":"Connection",value:t.jsx("code",{className:"mono secrets-mono",children:m.id})}));return t.jsx(Qe,{title:l,onClose:r,foot:i==="mine"?t.jsxs(ne,{children:[t.jsx(A,{variant:"danger-ghost",onClick:()=>a("delete"),children:"Delete…"}),t.jsx(ft,{}),t.jsx(A,{onClick:()=>a("rename"),children:"Rename…"}),t.jsx(A,{variant:"accent",onClick:()=>a("replace"),children:"Replace value…"})]}):void 0,children:t.jsxs(de,{gap:"lg",children:[t.jsx(un,{items:[{label:"Where it may go",value:kk(e)||"Nowhere yet"},...u.length===1&&i==="mine"?[{label:"Asks you",value:kQ[u[0]]}]:[],{label:"Last used",value:h?`${Xe(h.at)}${h.agentId?` by ${h.agentId}`:""}`:"Never"}]}),o?t.jsx(Q,{tone:"warning",action:o.fix?t.jsx(TD,{fix:o.fix,onOpen:a}):void 0,children:o.text}):null,c?ho(e)?t.jsxs(Q,{action:t.jsx(A,{size:"sm",onClick:()=>a("delete"),children:"Remove…"}),children:[c," Nothing removes it but you."]}):t.jsx(Q,{children:c}):null,Qj(e)?t.jsx(Q,{children:Qj(e)}):null,t.jsxs(de,{gap:"sm",children:[t.jsx("h3",{className:"secrets-sheet-head",children:"Usage history"}),t.jsx(Mae,{name:e.name,timezone:s})]}),t.jsx(Kt,{summary:"Details",children:t.jsxs(de,{gap:"sm",children:[t.jsx(un,{items:[{label:"Stored as",value:t.jsx("code",{className:"mono secrets-mono",children:e.name})},...e.bindings.map((m,p)=>({key:`b${p}`,label:p===0?"Bindings":"",value:t.jsxs("code",{className:"mono secrets-mono",children:[m.kind," ",v2(m.kind,m.target)," · ",m.rule]})})),...e.totp?[{label:"One-time code",value:"buddi fills the current code, never the seed"}]:[],...f]}),t.jsx("p",{className:"secrets-note",children:"What buddi keeps for it, never the value. “Held back” means buddi declined to hand the value over — not bound to that place, no value stored, or the vault locked — so it never left."})]})})]})})}function Mae({name:e,timezone:n}){const s=ve(()=>T.secretUses(e,50),[e]);if(s.error)return t.jsx(re,{message:s.error});if(!s.data)return t.jsx(Ce,{children:"Reading the history…"});const r=s.data.uses;return r.length===0?t.jsx("p",{className:"secrets-note",children:"Nothing has used it yet."}):t.jsx(yt,{children:r.map((a,i)=>{const l=EQ(a);return t.jsx(gt,{title:t.jsx("span",{className:"secrets-history","data-tone":l.tone,children:l.text}),sub:`${Nt(a.at,n??"UTC")} · ${a.agent??(a.plugin?`the ${a.plugin} plugin`:"you")}`},i)})})}function RD({title:e,result:n,scrubbed:s,busy:r,failure:a,onScrub:i}){const l=oQ(n);return t.jsxs(de,{gap:"sm",children:[t.jsxs(Q,{tone:"good",role:"status",children:["Saved “",e,"”. Its value is never shown again."]}),t.jsx("p",{className:"secrets-note",children:l||"Nothing of the value sits where buddi already holds text."}),t.jsx(re,{message:a}),l?t.jsx(ne,{children:t.jsx(A,{variant:"accent",disabled:r||s!==null,onClick:i,children:s===null?"Scrub the history":cQ(s)||"Nothing of it was left to replace."})}):null]})}function ID({destinations:e,bindings:n,disabled:s,onChange:r}){const a=(i,l)=>{r(n.map((o,c)=>c===i?{...o,...l}:o))};return t.jsxs(de,{gap:"sm",children:[n.map((i,l)=>{const o=e.find(h=>h.kind===i.kind),c=(o==null?void 0:o.maxRule)??i.rule,u=o?e:[...e,{kind:i.kind,plugin:"",maxRule:i.rule}];return t.jsxs("div",{className:"secrets-place",children:[t.jsx(le,{label:"Kind of place",children:t.jsx("select",{value:i.kind,disabled:s,onChange:h=>{var p;const f=h.target.value,m=(p=e.find(x=>x.kind===f))==null?void 0:p.maxRule;a(l,{kind:f,rule:m?um(m):i.rule})},children:u.map(h=>t.jsx("option",{value:h.kind,children:NQ(h.kind)},h.kind))})}),t.jsx(le,{label:"The place",children:t.jsx("input",{type:"text",spellCheck:!1,disabled:s,value:i.target,placeholder:CQ(i.kind),onChange:h=>a(l,{target:h.target.value})})}),t.jsx(le,{label:"Asks you",children:t.jsx("select",{value:i.rule,disabled:s,onChange:h=>a(l,{rule:h.target.value}),children:g2(c).map(h=>t.jsx("option",{value:h,children:SQ[h]},h))})}),t.jsx(A,{size:"sm",variant:"ghost",disabled:s,onClick:()=>r(n.filter((h,f)=>f!==l)),children:"Remove"}),t.jsxs("p",{className:"ui-field-hint secrets-place-hint",children:["The place: ",nQ(i.kind),"."]})]},l)}),n.length===0?t.jsx("p",{className:"ui-field-hint",children:tQ}):null,e.length?t.jsx(ne,{children:t.jsx(A,{size:"sm",disabled:s,onClick:()=>r([...n,{kind:e[0].kind,target:"",rule:um(e[0].maxRule)}]),children:"Add a place"})}):t.jsx("p",{className:"ui-field-hint",children:"Nothing installed here takes a secret yet, so there is nowhere to send one."})]})}function PD(e){const n=e.map(r=>iQ(r.kind,r.target)),s=n.findIndex(r=>!r.ok);return s!==-1?{ok:!1,error:`Place ${s+1}: ${n[s].error}`}:{ok:!0,bindings:e.map((r,a)=>({kind:r.kind,target:n[a].target,rule:r.rule}))}}function Oae({destinations:e,onClose:n,onChanged:s}){const[r,a]=d.useState(""),[i,l]=d.useState(""),[o,c]=d.useState(!1),[u,h]=d.useState(()=>e.length?[{kind:e[0].kind,target:"",rule:um(e[0].maxRule)}]:[]),[f,m]=d.useState(!1),[p,x]=d.useState(null),[g,b]=d.useState(null),[j,v]=d.useState(null),y=async()=>{const N=PD(u);if(!N.ok){x(N.error);return}const w=i;l("");const S=await wl("secrets.put",{name:r.trim(),value:w,totp:o,bindings:N.bindings},m,x);S!==null&&(b({name:r.trim(),result:S}),s())},k=async()=>{const N=await wl("secrets.scrub_history",{name:(g==null?void 0:g.name)??""},m,x);N!==null&&(v(N),s())};return g?t.jsx(Qe,{title:"Add a secret",onClose:n,foot:t.jsx(ne,{align:"end",children:t.jsx(A,{onClick:n,children:"Done"})}),children:t.jsx(RD,{title:g.name,result:g.result,scrubbed:j,busy:f,failure:p,onScrub:()=>void k()})}):t.jsx(Qe,{title:"Add a secret",size:"wide",onClose:n,foot:t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:n,children:"Cancel"}),t.jsx(A,{type:"submit",form:"secrets-add",variant:"accent",disabled:f,children:"Save secret"})]}),children:t.jsxs("form",{id:"secrets-add",className:"ui-stack","data-gap":"lg",onSubmit:N=>{N.preventDefault(),y()},children:[t.jsxs("fieldset",{disabled:f,className:"ui-stack","data-gap":"sm",children:[t.jsx(le,{label:"Name",hint:"What agents ask for it by. Saving a name that exists replaces that secret’s value.",children:t.jsx("input",{required:!0,autoFocus:!0,maxLength:200,value:r,onChange:N=>a(N.target.value),placeholder:"PNC password"})}),t.jsx(le,{label:"Value",hint:"Kept in the vault and never shown again, not even here.",children:t.jsx("input",{type:"password",autoComplete:"new-password",spellCheck:!1,required:!0,value:i,onChange:N=>l(N.target.value)})}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:o,onChange:N=>c(N.target.checked)}),t.jsx("span",{children:"It’s a one-time-code seed — buddi fills the current code, never the seed"})]})]}),t.jsxs("fieldset",{disabled:f,className:"ui-stack","data-gap":"sm",children:[t.jsx("h3",{className:"secrets-sheet-head",children:"Where it may go"}),t.jsx("p",{className:"secrets-note",children:"Agents can use it only in these places. Anywhere else, buddi holds it back and the row says so."}),t.jsx(ID,{destinations:e,bindings:u,disabled:f,onChange:h})]}),p?t.jsx(Q,{tone:"critical",role:"alert",children:p}):null]})})}function Dae({secret:e,title:n,onClose:s,onChanged:r}){const[a,i]=d.useState(""),[l,o]=d.useState(!1),[c,u]=d.useState(null),[h,f]=d.useState(null),[m,p]=d.useState(null),x=async()=>{const b=a;i("");const j=await wl("secrets.put",{name:e.name,value:b,totp:e.totp,bindings:e.bindings.map(({kind:v,target:y,rule:k})=>({kind:v,target:y,rule:k}))},o,u);j!==null&&(f(j),r())},g=async()=>{const b=await wl("secrets.scrub_history",{name:e.name},o,u);b!==null&&(p(b),r())};return h?t.jsx(Vt,{title:`Replaced the value of “${n}”`,onClose:s,foot:t.jsx(A,{variant:"accent",onClick:s,children:"Done"}),children:t.jsx(RD,{title:n,result:h,scrubbed:m,busy:l,failure:c,onScrub:()=>void g()})}):t.jsx(Vt,{title:`Replace the value of “${n}”`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{type:"submit",form:"secrets-replace",variant:"accent",disabled:l||a==="",children:"Save value"})]}),children:t.jsxs("form",{id:"secrets-replace",className:"ui-stack","data-gap":"sm",onSubmit:b=>{b.preventDefault(),a!==""&&x()},children:[t.jsx(le,{label:"New value",hint:"Kept in the vault and never shown again. Where it may go stays the same.",children:t.jsx("input",{type:"password",autoComplete:"new-password",spellCheck:!1,required:!0,autoFocus:!0,disabled:l,value:a,onChange:b=>i(b.target.value)})}),t.jsx(re,{message:c})]})})}function Lae({secret:e,onClose:n,onChanged:s}){const[r,a]=d.useState(e.name),[i,l]=d.useState(!1),[o,c]=d.useState(null),u=r.trim()!==""&&r.trim()!==e.name,h=async()=>{await wl("secrets.rename",{name:e.name,to:r.trim()},l,c)!==null&&(s(),n())};return t.jsx(Vt,{title:`Rename “${e.name}”`,onClose:n,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{type:"submit",form:"secrets-rename",variant:"accent",disabled:i||!u,children:"Rename"})]}),children:t.jsxs("form",{id:"secrets-rename",className:"ui-stack","data-gap":"sm",onSubmit:f=>{f.preventDefault(),u&&h()},children:[t.jsx(le,{label:"Name",hint:"What agents ask for it by. One that uses the old name needs the new one.",children:t.jsx("input",{required:!0,autoFocus:!0,maxLength:200,disabled:i,value:r,onChange:f=>a(f.target.value)})}),t.jsx(re,{message:o})]})})}function Fae({secret:e,title:n,destinations:s,onClose:r,onChanged:a}){const[i,l]=d.useState(()=>e.bindings.length?e.bindings.map(m=>({kind:m.kind,target:lQ(m.target),rule:m.rule})):s.length?[{kind:s[0].kind,target:"",rule:um(s[0].maxRule)}]:[]),[o,c]=d.useState(!1),[u,h]=d.useState(null),f=async()=>{const m=PD(i);if(!m.ok){h(m.error);return}await wl("secrets.rebind",{name:e.name,bindings:m.bindings},c,h)!==null&&(a(),r())};return t.jsx(Qe,{title:`Where “${n}” may go`,size:"wide",onClose:r,foot:t.jsxs(ne,{align:"end",children:[t.jsx(A,{onClick:r,children:"Cancel"}),t.jsx(A,{type:"submit",form:"secrets-places",variant:"accent",disabled:o,children:"Save"})]}),children:t.jsxs("form",{id:"secrets-places",className:"ui-stack","data-gap":"sm",onSubmit:m=>{m.preventDefault(),f()},children:[t.jsx("p",{className:"secrets-note",children:"Agents can use it only in these places. Anywhere else, buddi holds it back and the row says so."}),t.jsx(ID,{destinations:s,bindings:i,disabled:o,onChange:l}),u?t.jsx(Q,{tone:"critical",role:"alert",children:u}):null]})})}function _ae({secret:e,title:n,onClose:s,onChanged:r}){const[a,i]=d.useState(!1),[l,o]=d.useState(null),c=!!(e.unused||e.login),u=async()=>{await wl("secrets.delete",{name:e.name},i,o)!==null&&(r(),s())};return t.jsxs(Vt,{title:`${c?"Remove":"Delete"} “${n}”?`,onClose:s,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:a,onClick:()=>void u(),children:c?"Remove":"Delete"})]}),children:[t.jsxs("p",{className:"secrets-dialog-text",children:[bQ(e)," The value is gone for good; its usage history stays, under its name."]}),t.jsx(re,{message:l})]})}function zae({timezone:e,embedded:n}){var p;const{data:s,error:r,reload:a}=ve(()=>T.sentinels(),[],3e4),[i,l]=d.useState(null),[o,c]=d.useState(null),u=(s==null?void 0:s.installed)??[],h=((s==null?void 0:s.runs)??[]).filter(x=>x.lastError),f=u.filter(x=>!x.enabled),m=(x,g)=>{l(x),c(null),T.setSentinelEnabled(x,g).catch(b=>c(b instanceof pe?b.message:String(b))).finally(()=>{l(null),a()})};return t.jsxs(Rs,{embedded:n,title:"Watchers",children:[t.jsx(re,{message:r??o}),t.jsx(Q,{children:"Watchers are small checks that run on their own, with no model involved. An urgent finding wakes an agent, which verifies it before it tells you. The rest waits for the weekly recap."}),h.length>0?t.jsx(Q,{tone:"warning",children:h.length===1?"One watcher failed on its last run.":`${h.length} watchers failed on their last run.`}):null,f.length>0?t.jsxs(Q,{tone:"warning",children:[f.length===1?"One watcher is off.":`${f.length} watchers are off.`," A watcher that is off does not run, and what it already found stays as it was."]}):null,t.jsx(we,{title:"Installed",aside:t.jsx("a",{href:`${cn}/alerts`,children:"See what they found"}),panel:!0,flush:!0,children:s?u.length===0?t.jsx(ms,{icon:"eye",title:"No watchers are installed",children:"Plugins bring their own."}):t.jsx(yt,{children:u.map(x=>{const g=s.runs.find(b=>b.sentinelId===x.id);return t.jsx(gt,{lead:t.jsx(Ae,{tone:x.enabled?g!=null&&g.lastError?"critical":g?"good":void 0:"muted",children:x.enabled?g!=null&&g.lastError?"failed":g?"ok":"never ran":"off"}),title:x.description,sub:`${x.id}, every ${Uae(x.every)}${g!=null&&g.lastError?`. ${g.lastError}`:""}`,side:t.jsxs(t.Fragment,{children:[t.jsx("span",{title:g?Nt(g.lastRunAt,e):void 0,children:g?Xe(g.lastRunAt):"never ran"}),t.jsx(A,{size:"sm",disabled:i===x.id,onClick:()=>m(x.id,!x.enabled),children:x.enabled?"Turn off":"Turn on"})]})},x.id)})}):t.jsx(Ce,{children:"Loading…"})}),t.jsx(Tte,{mutes:((p=s==null?void 0:s.alerts)==null?void 0:p.mutes)??[],onChanged:a})]})}function Uae(e){if(e%86400===0){const s=e/86400;return s===1?"day":`${s} days`}if(e%3600===0){const s=e/3600;return s===1?"hour":`${s} hours`}const n=Math.max(1,Math.round(e/60));return n===1?"minute":`${n} minutes`}const PE=4,Bae={time:"profile",date:"profile",zone:null};function Wae({data:e,phone:n}){const s=d.useRef(null),r=nO(),[a,i]=d.useState(.4),l=n?390:1280,o=n?780:800;d.useEffect(()=>{const u=s.current;if(!u)return;const h=()=>i(u.clientWidth/l||.4);if(h(),typeof ResizeObserver>"u")return;const f=new ResizeObserver(h);return f.observe(u),()=>f.disconnect()},[l]);const c=(e==null?void 0:e.owner)??null;return t.jsx("div",{ref:s,className:"lke-preview","data-phone":n?"true":void 0,style:{aspectRatio:`${l} / ${o}`},role:"img","aria-label":"Preview of the lock screen",children:t.jsxs("div",{className:"lk","data-preview":"true","data-bg":Rk(e==null?void 0:e.background,e==null?void 0:e.image),"data-phone":n?"true":void 0,"data-view":"glance",style:{width:l,height:o,transform:`scale(${a})`},"aria-hidden":"true",children:[t.jsx(hO,{data:e??null,now:r,phone:n}),t.jsx("footer",{className:"lk-unlock",children:n?t.jsxs("span",{className:"lk-chip lk-enter",children:[t.jsx(se,{name:"lock",size:14}),t.jsx("span",{children:"Enter PIN"})]}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"lk-who",children:[t.jsx("span",{className:"lk-face",children:(c??"You").slice(0,1).toUpperCase()}),c?t.jsx("span",{className:"lk-owner",children:c}):null]}),t.jsxs("span",{className:"lk-pin",children:[t.jsx(se,{name:"lock",size:15}),t.jsx("span",{className:"lke-pin-hint",children:"Enter your PIN"})]})]})})]})})}function Hae({info:e,placement:n,index:s,count:r,onSize:a,onSettings:i,onMove:l,onRemove:o}){var u;const c=n.label??e.title;return t.jsxs("li",{className:"lke-row","data-key":n.key,children:[t.jsxs("span",{className:"lke-row-text",children:[t.jsx("span",{className:"lke-row-title",children:c}),t.jsx("span",{className:"lke-row-sub",children:e.builtIn?"Built in":`${e.plugin} plugin`})]}),t.jsxs("span",{className:"lke-row-tools",children:[e.sizes.length>1?t.jsx(dn,{label:`Size of ${c}`,options:["small","medium"].filter(h=>e.sizes.includes(h)).map(h=>({value:h,label:h==="small"?"Small":"Medium"})),value:n.size,onChange:a}):null,t.jsxs("span",{className:"lke-row-acts",children:[(((u=e.settings)==null?void 0:u.length)??0)>0?t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Settings for ${c}`,title:"Settings",onClick:i,children:t.jsx(se,{name:"settings",size:14})}):null,t.jsxs("span",{className:"lke-move",children:[t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Move ${c} earlier`,title:"Move earlier",disabled:s===0,onClick:()=>l(-1),children:t.jsx(se,{name:"chevron-left"})}),t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Move ${c} later`,title:"Move later",disabled:s===r-1,onClick:()=>l(1),children:t.jsx(se,{name:"chevron-right"})})]}),t.jsx("button",{type:"button",className:"ui-icon-btn","data-size":"sm","aria-label":`Take ${c} off the lock screen`,title:"Take off the lock screen",onClick:o,children:t.jsx(se,{name:"close",size:12})})]})]})]})}function ME(e){return e?"place"in e?`place:${e.place}`:`town:${e.timezone}:${e.label}`:""}function Kae({clock:e,onClock:n,version:s}){var H,K,X;const r=e??Bae,a=ve(()=>T.lockScreen(),[s]),i=ve(()=>T.widgets("lock"),[]),l=ve(()=>T.owner(),[]),[o,c]=d.useState(void 0),[u,h]=d.useState(!1),[f,m]=d.useState(null),[p,x]=d.useState(null),[g,b]=d.useState(null),[j,v]=d.useState(null);d.useEffect(()=>{i.data&&c(i.data)},[i.data]);const y=((H=a.data)==null?void 0:H.timezone)??Intl.DateTimeFormat().resolvedOptions().timeZone,k=(o==null?void 0:o.lock)??[],N=new Map(((o==null?void 0:o.available)??[]).map(W=>[W.id,W])),w=k.length>=PE,S=W=>{if(!o)return Promise.resolve(!1);const me=o;return m(null),c({...o,lock:W,arranged:{...o.arranged,lock:!0}}),T.saveWidgets("lock",W).then(fe=>(c(fe),a.reload(),!0),fe=>(c(me),m(`Couldn't save the lock screen's widgets: ${fe instanceof Error?fe.message:String(fe)}`),!1))},C=(W,me)=>{const fe=k.slice(),[oe]=fe.splice(W,1);fe.splice(W+me,0,oe),S(fe)},E=(W,me)=>{const fe=N.get(W);!fe||w||S([...k,{key:oO(),widget:W,size:fe.sizes.includes("small")?"small":fe.sizes[0],settings:me}])},$=W=>{if(W==="find"){b({query:"",found:[],busy:!1});return}if(b(null),W==="")return n({...r,zone:null});if(W.startsWith("place:"))return n({...r,zone:{place:W.slice(6)}});const me=r.zone&&!("place"in r.zone)?r.zone:j;me&&n({...r,zone:me})},R=()=>{if(!g||g.query.trim().length<2)return;const W=g.query.trim();b({query:g.query,found:[],busy:!0}),T.findPlace(W).then(({found:me})=>{var ue;const fe=me.filter(Ne=>Ne.timezone);if(fe.length===0){b({query:W,found:[],busy:!1,missed:`Nothing with a timezone found for “${W}”.`});return}const oe=fe[0],B={label:((ue=oe.name.split(",")[0])==null?void 0:ue.trim())||oe.name,timezone:oe.timezone};v(B),b(null),n({...r,zone:B})}).catch(()=>b({query:W,found:[],busy:!1,missed:"The place finder didn’t answer. Try again in a moment."}))},P=new Date,O=W=>fd({dateFormat:W},()=>Hs(P,y,{weekday:!0})),I=(((K=l.data)==null?void 0:K.places)??[]).filter(W=>W.timezone&&W.timezone!==y),F=r.zone&&!("place"in r.zone)?r.zone:j,U=((o==null?void 0:o.home)??[]).filter(W=>N.has(W.widget)&&!N.get(W.widget).sensitive),L=((o==null?void 0:o.available)??[]).filter(W=>!W.sensitive),M=((o==null?void 0:o.available)??[]).filter(W=>W.sensitive).map(W=>W.title),z=p?k.find(W=>W.key===p):void 0,D=z?N.get(z.widget):void 0;return t.jsxs(we,{title:"What it shows",aside:"Every change is kept at once.",panel:!0,children:[t.jsxs("div",{className:"lke",children:[t.jsxs("div",{className:"lke-look",children:[t.jsx(Wae,{data:a.data,phone:u}),t.jsxs("div",{className:"lke-look-foot",children:[t.jsx(dn,{label:"Preview on",options:[{value:"desk",label:"Desk"},{value:"phone",label:"Phone"}],value:u?"phone":"desk",onChange:W=>h(W==="phone")}),t.jsxs("span",{className:"lke-look-note",children:["As it shows now",(X=a.data)!=null&&X.focus?", with your focus on":"","."]})]})]}),t.jsxs("div",{className:"lke-controls",children:[t.jsx(re,{message:f}),t.jsxs("div",{className:"lke-group",role:"group","aria-label":"Clock",children:[t.jsx("p",{className:"lke-group-title",children:"Clock"}),t.jsxs("div",{className:"wg-field",role:"group","aria-label":"Time",children:[t.jsx("span",{className:"wg-field-label",children:"Time"}),t.jsx(dn,{label:"Time",options:[{value:"profile",label:AR()},{value:"12h",label:"12-hour"},{value:"24h",label:"24-hour"}],value:r.time,onChange:W=>n({...r,time:W})})]}),t.jsx(le,{label:"Date",children:t.jsxs("select",{value:r.date,onChange:W=>n({...r,date:W.target.value}),children:[t.jsxs("option",{value:"profile",children:["Profile · ",O(null)]}),t.jsx("option",{value:"short",children:O("short")}),t.jsx("option",{value:"long",children:O("long")}),t.jsx("option",{value:"iso",children:O("iso")}),t.jsx("option",{value:"off",children:"No date"})]})}),t.jsx(le,{label:"A second clock",hint:"A place in another zone, under the time.",children:t.jsxs("select",{value:g?"find":ME(r.zone),onChange:W=>$(W.target.value),children:[t.jsx("option",{value:"",children:"None"}),I.map(W=>t.jsxs("option",{value:`place:${W.id}`,children:[W.label," — ",W.name.split(",")[0]]},W.id)),r.zone&&"place"in r.zone&&!I.some(W=>W.id===r.zone.place)?t.jsx("option",{value:ME(r.zone),children:"A place no longer in another zone"}):null,F?t.jsx("option",{value:`town:${F.timezone}:${F.label}`,children:F.label}):null,t.jsx("option",{value:"find",children:"Another town…"})]})}),g?t.jsxs("div",{className:"wg-field-stack",children:[t.jsxs("div",{className:"wg-find",children:[t.jsx("input",{autoFocus:!0,value:g.query,placeholder:"Find a town: Tokyo","aria-label":"Find a town for the second clock",onChange:W=>b({...g,query:W.target.value}),onKeyDown:W=>{W.key==="Enter"&&(W.preventDefault(),R()),W.key==="Escape"&&b(null)}}),t.jsx(A,{size:"sm",disabled:g.busy||g.query.trim().length<2,onClick:R,children:g.busy?"Finding…":"Find"})]}),g.missed?t.jsx("span",{className:"ui-field-hint",children:g.missed}):null]}):null]}),t.jsxs("div",{className:"lke-group",role:"group","aria-label":"Widgets",children:[t.jsxs("div",{className:"lke-group-head",children:[t.jsxs("p",{className:"lke-group-title",children:["Widgets ",t.jsxs("span",{className:"lke-count",children:[k.length," of ",PE]})]}),w||!o?t.jsxs(A,{size:"sm",disabled:!0,children:[t.jsx(se,{name:"plus",size:12})," Add a widget"]}):t.jsx(rs,{label:"Add a widget",trigger:t.jsxs("button",{type:"button",className:"ui-btn","data-size":"sm",children:[t.jsx(se,{name:"plus",size:12})," Add a widget"]}),items:[U.length>0?{heading:"As on Home"}:null,...U.map(W=>({label:W.label??N.get(W.widget).title,hint:"same settings",onSelect:()=>E(W.widget,W.settings)})),U.length>0?"separator":null,{heading:"Every widget"},...L.map(W=>({label:W.title,onSelect:()=>E(W.id,{})})),"separator",{label:"Get more widgets",hint:"Browse",onSelect:()=>{window.location.hash=fj("widgets")}}]})]}),o?k.length===0?t.jsx("p",{className:"lke-empty",children:"No widgets: just the clock and the counts."}):t.jsx("ul",{className:"lke-list",children:k.map((W,me)=>{const fe=N.get(W.widget);return fe?t.jsx(Hae,{info:fe,placement:W,index:me,count:k.length,onSize:oe=>void S(k.map(B=>B.key===W.key?{...B,size:oe}:B)),onSettings:()=>x(W.key),onMove:oe=>C(me,oe),onRemove:()=>void S(k.filter(oe=>oe.key!==W.key))},W.key):null})}):t.jsx("p",{className:"lke-empty","aria-busy":"true",children:"Reading the lock screen’s widgets…"}),t.jsxs("p",{className:"ui-field-hint",children:[w?"Four is the most it holds; take one off to add another. ":"","Each keeps its own settings, apart from Home’s.",M.length>0?` A sensitive widget — ${M.join(", ")} — never shows here.`:" A sensitive widget never shows here."," ","One with nothing to show right now stays off until it has."]})]}),t.jsxs("p",{className:"lke-note",children:[t.jsx(se,{name:"moon",size:13}),t.jsx("span",{children:"Your focus shows at the top only while one is on. Approvals and what else needs you show as counts when there are some, never what they say."})]})]})]}),z&&D?t.jsx(aO,{info:D,placement:z,surface:"lock",onClose:()=>x(null),onSave:W=>S(k.map(me=>me.key===z.key?{...me,settings:W}:me)).then(me=>(me&&x(null),me)),onRemove:()=>{x(null),S(k.filter(W=>W.key!==z.key))}}):null]})}const Vae=[{id:"field",label:"Buddi"},{id:"dawn",label:"Dawn"},{id:"sea",label:"Sea"},{id:"moss",label:"Moss"},{id:"dusk",label:"Dusk"}];function Gae({background:e,pictures:n}){if(e==="earth")return t.jsxs("p",{className:"lk-credit",children:["Earth: photo by ",t.jsx("a",{href:fx.authorUrl,target:"_blank",rel:"noreferrer",children:fx.author})," on ",t.jsx("a",{href:fx.photoUrl,target:"_blank",rel:"noreferrer",children:"Unsplash"})]});const s=tO(e),r=s?n==null?void 0:n.find(a=>a.id===s):void 0;return r?t.jsxs("p",{className:"lk-credit",children:[r.credit,r.landscape?null:". Made for phones: a wide screen shows it whole, in the middle."]}):null}const qae=[{value:"1",label:"1 min"},{value:"5",label:"5 min"},{value:"15",label:"15 min"},{value:"60",label:"1 hour"},{value:"never",label:"Never"}],Yae=e=>e.delayMinutes===null?"never":String(e.delayMinutes);function Ay(e){if(e instanceof pe){const n=e.detail??{};return e.status===429||n.waitUntil?"Too many wrong tries. Wait a moment, then try again.":e.status===403&&typeof n.triesLeft=="number"?`${e.message} ${n.triesLeft} ${n.triesLeft===1?"try":"tries"} left.`:e.message}return"Something went wrong. Try again."}function Qae({kind:e,onClose:n,onDone:s}){const[r,a]=d.useState(""),[i,l]=d.useState(""),[o,c]=d.useState(""),[u,h]=d.useState(null),[f,m]=d.useState(!1),p=e==="remove",x=e!=="set",g=!f&&(!x||r.length>=4)&&(p||i.length>=4&&o.length>=4),b=k=>k.replace(/\D/g,"").slice(0,8),j=e==="set"?"Set a PIN":e==="change"?"Change your PIN":"Remove the PIN?",v=k=>{if(k==null||k.preventDefault(),!g)return;if(!p&&i!==o){h("The two PINs aren’t the same.");return}m(!0),h(null),(p?T.removePin(r):T.setPin(i,x?r:void 0)).then(s).catch(w=>{m(!1),h(Ay(w))})},y=(k,N,w,S)=>t.jsx(le,{label:k,children:t.jsx("input",{type:"password",inputMode:"numeric",autoComplete:k==="Current PIN"?"current-password":"new-password",maxLength:8,autoFocus:S,value:N,onChange:C=>{h(null),w(b(C.target.value))}})});return t.jsx(Vt,{title:j,onClose:n,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{variant:p?"danger":"accent",disabled:!g,onClick:()=>v(),children:p?"Remove PIN":e==="set"?"Set PIN":"Change PIN"})]}),children:t.jsxs("form",{className:"lk-form",onSubmit:v,children:[t.jsx("p",{className:"lk-honest",children:p?"The dashboard stops locking, on every device. You can set a PIN again any time.":"Four to eight digits. You type it to open the dashboard after it locks, on any device signed in to it."}),x?y("Current PIN",r,a,!0):null,p?null:y(e==="set"?"PIN":"New PIN",i,l,!x),p?null:y("The same again",o,c,!1),u?t.jsx(Q,{tone:"critical",children:u}):null,t.jsx("button",{type:"submit",hidden:!0,"aria-hidden":"true",tabIndex:-1})]})})}function Jae(e){const n=Op(),s=ve(()=>T.lockState(),[]),[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState(null),u=d.useRef(null),h=d.useRef(null),f=eO(),m=s.data??n.state,p=v=>{n.update(v),s.reload()},x=v=>{l(null),v.then(p).catch(y=>l(Ay(y)))},g=(v,y)=>{v&&(c(y),l(null),(y==="portrait"?T.uploadLockPortrait(v):T.uploadLockBackground(v)).then(p).catch(k=>l(Ay(k))).finally(()=>{c(null);const k=y==="portrait"?h.current:u.current;k&&(k.value="")}))};if(!m)return t.jsx(we,{title:"Lock screen",panel:!0,children:t.jsx(re,{message:s.error?"Couldn’t read the lock screen’s settings.":null})});const b=m.pin,j=(v,y,k)=>t.jsxs("button",{type:"button",className:"lk-swatch","data-bg":v,"aria-pressed":m.background===v,"aria-label":y,title:y,onClick:()=>x(T.setLockSettings({background:v})),children:[v==="image"&&m.image?t.jsx("img",{src:m.image,alt:""}):v==="earth"?t.jsx("img",{src:uy.thumb,alt:""}):k?t.jsx("img",{src:k,alt:""}):t.jsx("span",{className:"lk-swatch-field"}),t.jsx("span",{className:"lk-swatch-label",children:y})]},v);return t.jsxs(t.Fragment,{children:[t.jsxs(we,{title:"Lock screen",aside:"Kept for every device signed in to this dashboard.",actions:b?t.jsxs(A,{size:"sm",onClick:()=>n.lockNow(),children:[t.jsx(se,{name:"lock",size:13})," Lock now"]}):void 0,panel:!0,children:[t.jsxs(de,{divided:!0,gap:"lg",children:[t.jsx("p",{className:"lk-honest ui-section",children:"A privacy screen over this dashboard, on every device signed in to it: it locks when nobody has used it for a while, or when you lock it, and opens with your PIN. A new browser opens locked too. It isn’t a second sign-in — anyone who can run buddi on this computer can open it without the PIN. Telegram and buddi in your coding tools carry on as before."}),t.jsx(re,{message:i}),t.jsxs("div",{className:"lk-pref ui-section",children:[t.jsxs("div",{className:"lk-pref-text",children:[t.jsx("div",{className:"lk-pref-label",children:"PIN"}),t.jsx("div",{className:"ui-field-hint",children:b?"Set. Kept hashed on this buddi; five wrong tries, then a wait that grows.":"Four to eight digits. Until you set one, nothing locks."})]}),b?t.jsxs(ne,{children:[t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>a("remove"),children:"Remove…"}),t.jsx(A,{size:"sm",onClick:()=>a("change"),children:"Change…"})]}):t.jsx(A,{size:"sm",variant:"accent",onClick:()=>a("set"),children:"Set a PIN"})]}),t.jsxs("div",{className:"lk-pref ui-section","data-off":b?void 0:"true","aria-disabled":b?void 0:"true",children:[t.jsxs("div",{className:"lk-pref-text",children:[t.jsx("div",{className:"lk-pref-label",children:"Lock after"}),t.jsx("div",{className:"ui-field-hint",children:b?t.jsxs(t.Fragment,{children:["Nobody using it for this long. Lock it yourself from your menu",t.jsxs("span",{className:"lk-shortcut",children:[", or with ",t.jsx("kbd",{className:"lk-kbd",children:n.shortcut})]}),"."]}):"Set a PIN first."})]}),t.jsx(dn,{label:"Lock after",options:qae,value:b?Yae(m):"",onChange:v=>{b&&x(T.setLockSettings({delayMinutes:v==="never"?null:Number(v)}))}})]}),t.jsxs("div",{className:"lk-pref ui-section","data-stack":"true",children:[t.jsxs("div",{className:"lk-pref-text",children:[t.jsx("div",{className:"lk-pref-label",children:"Background"}),t.jsx("div",{className:"ui-field-hint",children:"Behind the time and your widgets, on every device. A picture is kept as a JPEG of at most 2560 pixels, without its location or other details."})]}),t.jsxs("div",{className:"lk-bg-rows",children:[t.jsxs("div",{className:"lk-bg-row",role:"group","aria-labelledby":"lk-bg-colours",children:[t.jsx("p",{className:"lk-bg-row-label",id:"lk-bg-colours",children:"Colours"}),t.jsx("div",{className:"lk-swatches",children:Vae.map(v=>j(v.id,v.label))})]}),t.jsxs("div",{className:"lk-bg-row",role:"group","aria-labelledby":"lk-bg-pictures",children:[t.jsx("p",{className:"lk-bg-row-label",id:"lk-bg-pictures",children:"Pictures"}),t.jsxs("div",{className:"lk-swatches",children:[j("earth","Earth"),(f??[]).map(v=>j(UZ(v.id),v.title,v.thumb)),m.image?j("image","Your picture"):null,t.jsxs("label",{className:"lk-swatch","data-kind":"add","aria-busy":o==="image"?"true":void 0,children:[t.jsx("input",{ref:u,type:"file",accept:"image/jpeg,image/png",className:"lk-sr","aria-label":m.image?"Replace your picture":"Add your picture",disabled:o!==null,onChange:v=>{var y;return g((y=v.target.files)==null?void 0:y[0],"image")}}),t.jsx("span",{className:"lk-swatch-field","data-kind":"add",children:t.jsx(se,{name:"plus",size:16})}),t.jsx("span",{className:"lk-swatch-label",children:o==="image"?"Adding…":m.image?"Replace":"Add"})]})]}),t.jsx(Gae,{background:m.background,pictures:f})]})]}),m.image?t.jsxs("div",{className:"lk-pref","data-sub":"true",children:[t.jsx("div",{className:"lk-pref-text",children:t.jsx("div",{className:"ui-field-hint",children:m.imagePortrait?"Phones show its portrait version.":"Phones show the middle of it. Add a portrait version to choose what they show."})}),t.jsxs(ne,{align:"end",children:[t.jsx("input",{ref:h,type:"file",accept:"image/jpeg,image/png",className:"lk-sr","aria-label":"Portrait version for phones",disabled:o!==null,onChange:v=>{var y;return g((y=v.target.files)==null?void 0:y[0],"portrait")}}),t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>x(T.removeLockBackground()),children:"Remove picture"}),m.imagePortrait?t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>x(T.removeLockPortrait()),children:"Remove portrait"}):null,t.jsx(A,{size:"sm",disabled:o!==null,onClick:()=>{var v;return(v=h.current)==null?void 0:v.click()},children:o==="portrait"?"Adding…":m.imagePortrait?"Replace portrait…":"Add portrait…"})]})]}):null]})]}),r?t.jsx(Qae,{kind:r,onClose:()=>a(null),onDone:v=>{a(null),p(v)}}):null]}),t.jsx(Kae,{clock:m.clock,onClock:v=>x(T.setLockSettings({clock:v})),version:`${m.background}:${m.image??""}:${m.imagePortrait??""}:${JSON.stringify(m.clock??null)}`})]})}const Cx=60;function MD(e){return e instanceof pe?e.message:"Something went wrong. Try again."}function Xae(e,n,s=Date.now()){const r=`made ${Hs(new Date(e.createdAt),n,{compact:!0})} ${e.createdVia==="cli"?"in the terminal":"here"}`;return`buddi_…${e.hint} · ${r} · ${e.lastUsedAt?`last used ${Xe(e.lastUsedAt,s)}`:"never used"}`}function Zae({onClose:e,onMade:n}){const[s,r]=d.useState(""),[a,i]=d.useState(!1),[l,o]=d.useState(null),[c,u]=d.useState(null),[h,f]=d.useState(!1),m=!a&&s.trim()!==""&&s.trim().length<=Cx,p=x=>{x==null||x.preventDefault(),m&&(i(!0),o(null),T.createApiToken(s.trim()).then(g=>{u({token:g.token,name:g.apiToken.name}),n()}).catch(g=>o(MD(g))).finally(()=>i(!1)))};if(c){const x=()=>{var g;(g=navigator.clipboard)==null||g.writeText(c.token).then(()=>{f(!0),window.setTimeout(()=>f(!1),1600)}).catch(()=>{})};return t.jsx(Vt,{title:`Token for ${c.name}`,onClose:e,foot:t.jsx(A,{variant:"accent",onClick:e,children:"Done"}),children:t.jsxs("div",{className:"at-form",children:[t.jsxs("div",{className:"at-secret",children:[t.jsx("code",{className:"at-secret-text","aria-label":"The token",children:c.token}),t.jsx(A,{size:"sm",onClick:x,children:h?"Copied":"Copy"})]}),t.jsx(Q,{tone:"warning",title:"Copy it now",children:"buddi keeps only a fingerprint of it, so it can’t show it again. Lost it? Revoke it and make another."}),t.jsx("p",{className:"at-text",children:"Send it as a header on every request:"}),t.jsx("code",{className:"at-try",children:`curl -H "Authorization: Bearer buddi_…" ${location.origin}/api/overview`})]})})}return t.jsx(Vt,{title:"Make a token",onClose:e,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:e,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!m,onClick:()=>p(),children:"Make token"})]}),children:t.jsxs("form",{className:"at-form",onSubmit:p,children:[t.jsx("p",{className:"at-text",children:"It acts as you on buddi’s HTTP API. Anything a gated tool does still waits for your approval here or on Telegram."}),t.jsx(le,{label:"What will use it",hint:`So you can tell tokens apart later. Up to ${Cx} characters.`,children:t.jsx("input",{autoFocus:!0,value:s,maxLength:Cx,placeholder:"Home Assistant",onChange:x=>{o(null),r(x.target.value)}})}),l?t.jsx(Q,{tone:"critical",children:l}):null,t.jsx("button",{type:"submit",hidden:!0,"aria-hidden":"true",tabIndex:-1})]})})}function eie({token:e,onClose:n,onRevoked:s}){const[r,a]=d.useState(!1),[i,l]=d.useState(null),o=()=>{a(!0),l(null),T.revokeApiToken(e.id).then(()=>{s(),n()}).catch(c=>{a(!1),l(MD(c))})};return t.jsxs(Vt,{title:`Revoke “${e.name}”?`,onClose:n,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:n,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:r,onClick:o,children:"Revoke"})]}),children:[t.jsx("p",{className:"at-text",children:"A request carrying it is refused from now on. Whatever uses it stops working until you give it a new token."}),i?t.jsx(Q,{tone:"critical",children:i}):null]})}function tie({timezone:e}){var o;const n=ve(()=>T.apiTokens(),[]),[s,r]=d.useState(!1),[a,i]=d.useState(null),l=((o=n.data)==null?void 0:o.tokens)??[];return t.jsxs(de,{gap:"lg",children:[t.jsx("p",{className:"ui-page-lede",children:"Let a script or another program use buddi without the dashboard. A token acts as you, minus the decisions only you make here."}),t.jsx(re,{message:n.error?"Couldn’t read the API tokens.":null}),t.jsx(we,{title:"Tokens",aside:"Kept as a fingerprint · shown once",actions:t.jsx(A,{variant:"accent",size:"sm",onClick:()=>r(!0),children:"Make a token"}),panel:!0,flush:!0,children:n.data&&l.length===0?t.jsxs(Ce,{title:"No tokens yet.",children:["Make one here, or in a terminal with ",t.jsx("code",{className:"mono",children:"buddi api-token create <name>"}),"."]}):t.jsx(yt,{children:l.map(c=>t.jsx(gt,{lead:t.jsx(ss,{icon:"key"}),title:c.name,sub:Xae(c,e),side:t.jsx(A,{size:"sm",variant:"ghost",onClick:()=>i(c),children:"Revoke…"})},c.id))})}),t.jsxs(we,{title:"What a token can’t do",panel:!0,children:[t.jsxs("ul",{className:"at-cant",children:[t.jsx("li",{children:"Approve anything, or make a change where your click is the approval. It can reject."}),t.jsx("li",{children:"Change what an agent may do without asking: its tools, who it hands work to, a connection given out, an “Always”."}),t.jsx("li",{children:"Install or run code buddi hasn’t run before: plugins, upgrades, program connections."}),t.jsx("li",{children:"Change how buddi is reached or unlocked — PIN, Tailscale, Telegram pairing, other tokens — or restore a backup."}),t.jsx("li",{children:"Read or store a secret: owner secrets, model account keys, the backup passphrase."})]}),t.jsxs("p",{className:"at-foot",children:["In a terminal: ",t.jsx("code",{className:"mono",children:"buddi api-token create"}),", ",t.jsx("code",{className:"mono",children:"list"}),", ",t.jsx("code",{className:"mono",children:"revoke"}),". Every route, and which a token may call: docs/api.md."]})]}),s?t.jsx(Zae,{onClose:()=>r(!1),onMade:()=>n.reload()}):null,a?t.jsx(eie,{token:a,onClose:()=>i(null),onRevoked:()=>n.reload()}):null]})}function nie({embedded:e}){const{data:n,error:s,reload:r}=ve(()=>T.owner(),[]);return t.jsxs(Rs,{embedded:e,title:"You",lede:"What every agent knows about the person it is talking to.",children:[t.jsx(re,{message:s}),n?t.jsxs(de,{gap:"lg",children:[t.jsx(aie,{initial:n,onSaved:r}),t.jsx(cie,{initial:n})]}):null]})}const OD=new Date(Date.UTC(2026,9,1,14,5));function sie(){return[["",`Auto (${fd({timeFormat:null},()=>Lt(OD,"UTC"))} here)`],["12h","12-hour · 2:05 PM"],["24h","24-hour · 14:05"]]}function rie(){return[["",`Auto (${fd({dateFormat:null},()=>Hs(OD,"UTC",{weekday:!0}))} here)`],["short","Thu, Oct 1"],["long","Thursday, 1 October"],["iso","2026-10-01"]]}function aie({initial:e,onSaved:n}){var F,U,L;const[s,r]=d.useState(e.preferredName??""),[a,i]=d.useState(e.timezone??""),[l,o]=d.useState(e.timeFormat??""),[c,u]=d.useState(e.dateFormat??""),[h,f]=d.useState(e.language??""),[m,p]=d.useState(e.about??""),[x,g]=d.useState(e.fullName??""),[b,j]=d.useState(e.pronouns??""),[v,y]=d.useState(mm(e.birthday)),[k,N]=d.useState(!1),[w,S]=d.useState(!1),[C,E]=d.useState(null);d.useEffect(()=>{r(e.preferredName??""),i(e.timezone??""),o(e.timeFormat??""),u(e.dateFormat??""),f(e.language??""),p(e.about??""),g(e.fullName??""),j(e.pronouns??""),y(mm(e.birthday))},[e.preferredName,e.timezone,e.timeFormat,e.dateFormat,e.language,e.about,e.fullName,e.pronouns,(F=e.birthday)==null?void 0:F.day,(U=e.birthday)==null?void 0:U.month,(L=e.birthday)==null?void 0:L.year]);const $=pm(v),R=s.trim()!==(e.preferredName??"")||a!==(e.timezone??"")||l!==(e.timeFormat??"")||c!==(e.dateFormat??"")||h.trim()!==(e.language??"")||m.trim()!==(e.about??"")||x.trim()!==(e.fullName??"")||b.trim()!==(e.pronouns??"")||$!=="incomplete"&&!Zte($,e.birthday),P=async()=>{N(!0),E(null);try{const M=await T.setOwner({preferredName:s.trim()===""?null:s.trim(),timezone:a===""?null:a,timeFormat:l===""?null:l,dateFormat:c===""?null:c,language:h.trim()===""?null:h.trim(),about:m.trim()===""?null:m.trim(),fullName:x.trim()===""?null:x.trim(),pronouns:b.trim()===""?null:b.trim(),...$!=="incomplete"?{birthday:$}:{}});Qw({timeFormat:M.timeFormat??null,dateFormat:M.dateFormat??null}),window.dispatchEvent(new Event(Wv)),S(!0),n()}catch(M){E(M instanceof pe?M.message:String(M))}finally{N(!1)}},O=e.zones.length>0?e.zones:[e.detectedTimezone],I=M=>z=>{S(!1),M(z)};return t.jsx(we,{title:"Your profile",aside:"read by every agent, as context",panel:!0,foot:t.jsxs(t.Fragment,{children:[w&&!R?t.jsx("span",{className:"muted",children:"Saved"}):null,t.jsx(A,{variant:"accent",disabled:!R||k,onClick:()=>void P(),children:k?"Saving…":"Save"})]}),children:t.jsxs(de,{divided:!0,gap:"lg",children:[t.jsx(we,{title:"Who you are",children:t.jsxs(Ks,{children:[t.jsx(le,{label:"Full name",hint:"For letters, forms and bookings.",children:t.jsx("input",{value:x,maxLength:120,placeholder:e.displayName??"Your full name",onChange:M=>I(g)(M.target.value)})}),t.jsx(le,{label:"What the agents call you",hint:"How you like to be addressed.",children:t.jsx("input",{value:s,maxLength:80,placeholder:e.displayName??"Your name",onChange:M=>I(r)(M.target.value)})}),t.jsx(le,{label:"Pronouns",hint:"Optional.",children:t.jsx("input",{value:b,maxLength:40,placeholder:"he/him, she/her, they/them…",onChange:M=>I(j)(M.target.value)})}),t.jsx(vy,{label:"Birthday",hint:"The year is optional. Your team greets you on the day.",value:v,onChange:I(y)})]})}),t.jsx(we,{title:"Time and language",children:t.jsxs(Ks,{children:[t.jsx(le,{label:"Timezone",hint:`This host is in ${e.detectedTimezone}. Existing schedules keep the zone they were made in.`,children:t.jsxs("select",{value:a,onChange:M=>I(i)(M.target.value),children:[t.jsx("option",{value:"",children:"Not set (use the host's)"}),O.map(M=>t.jsx("option",{value:M,children:M},M))]})}),t.jsx(le,{label:"Time",children:t.jsx("select",{value:l,onChange:M=>I(o)(M.target.value),children:sie().map(([M,z])=>t.jsx("option",{value:M,children:z},M))})}),t.jsx(le,{label:"Dates",hint:"Auto follows this browser's language. Agents write them your way too.",children:t.jsx("select",{value:c,onChange:M=>I(u)(M.target.value),children:rie().map(([M,z])=>t.jsx("option",{value:M,children:z},M))})}),t.jsx(le,{label:"Answer me in",hint:"A language, as you would say it. Blank mirrors whatever you write in.",children:t.jsx("input",{value:h,maxLength:40,placeholder:"English, français…",onChange:M=>I(f)(M.target.value)})})]})}),t.jsxs(we,{title:"About you",children:[t.jsx(le,{label:"In your own words",hint:"Who you are, how you like answers, anything every agent should keep in mind. A few lines is plenty.",children:t.jsx("textarea",{rows:4,maxLength:1e3,value:m,placeholder:"I run a small studio and prefer short answers with the numbers first. Call me by my first name.",onChange:M=>I(p)(M.target.value)})}),C?t.jsx(Q,{tone:"critical",children:C}):null]})]})})}const iie=["Home","Work"];function lie(e){const n=e.trim().toLowerCase();return n==="home"?"home":n==="work"?"briefcase":"pin"}function OE({label:e,empty:n}){return t.jsx("span",{className:"place-glyph","data-empty":n?"true":void 0,"aria-hidden":"true",children:t.jsx(se,{name:lie(e),size:18})})}function oie(e){var s;const n=((s=e.name.split(",").pop())==null?void 0:s.trim())??"";return e.address?n&&!e.address.toLowerCase().includes(n.toLowerCase())?`${e.address} · ${n}`:e.address:e.name}function cie({initial:e}){var c;const[n,s]=d.useState(e.places??[]);d.useEffect(()=>s(e.places??[]),[e]);const[r,a]=d.useState(null),i=e.timezone??e.detectedTimezone,l=iie.filter(u=>!n.some(h=>h.label.toLowerCase()===u.toLowerCase())),o=d.useMemo(()=>new Date,[n]);return t.jsxs(we,{title:"Places",aside:"the front desk, and plugins you allow",actions:t.jsx(A,{size:"sm",onClick:()=>a({label:""}),children:"Add a place"}),panel:!0,flush:!0,children:[t.jsxs(yt,{children:[n.map(u=>t.jsx(gt,{label:`${u.label}: edit`,onClick:()=>a({place:u,label:u.label}),lead:t.jsx(OE,{label:u.label}),title:u.label,sub:oie(u),side:u.timezone&&u.timezone!==i?t.jsxs(Ae,{children:[Lt(o,u.timezone)," there"]}):void 0},u.id)),l.map(u=>t.jsx(gt,{label:`${u}: add`,onClick:()=>a({label:u}),lead:t.jsx(OE,{label:u,empty:!0}),title:t.jsx("span",{className:"muted",children:u}),sub:"Not set",side:t.jsx(A,{size:"sm",onClick:h=>{h.stopPropagation(),a({label:u})},children:"Add"})},u))]}),t.jsx("p",{className:"place-note",children:"Only the town is looked up, on Open-Meteo, to find where it is and its timezone. The address stays on this computer."}),r?t.jsx(uie,{editing:r,zones:e.zones.length>0?e.zones:[e.detectedTimezone],onClose:()=>a(null),onSaved:u=>{s(u),a(null)}},((c=r.place)==null?void 0:c.id)??`new:${r.label}`):null]})}function uie({editing:e,zones:n,onClose:s,onSaved:r}){const a=e.place,[i,l]=d.useState(e.label),[o,c]=d.useState((a==null?void 0:a.address)??""),[u,h]=d.useState(a?[{name:a.name,latitude:a.latitude,longitude:a.longitude,...a.timezone?{timezone:a.timezone}:{}}]:null),[f,m]=d.useState(0),[p,x]=d.useState((a==null?void 0:a.timezone)??""),[g,b]=d.useState(null),[j,v]=d.useState(null),[y,k]=d.useState((a==null?void 0:a.address)??""),N=u==null?void 0:u[f],w=()=>{o.trim().length<2||(b("find"),v(null),T.findPlace(o.trim()).then(R=>{var P;h(R.found),k(o.trim()),m(0),x(((P=R.found[0])==null?void 0:P.timezone)??""),R.found.length===0&&v("Nothing found by that name. Try the town, with its country.")}).catch(R=>v(R instanceof pe?R.message:String(R))).finally(()=>b(null)))},S=()=>{N&&(b("save"),v(null),T.savePlace({...a?{id:a.id}:{},label:i.trim(),address:o.trim()===""?null:o.trim(),name:N.name,latitude:N.latitude,longitude:N.longitude,timezone:p===""?null:p}).then(R=>r(R.places)).catch(R=>v(R instanceof pe?R.message:String(R))).finally(()=>b(null)))},C=()=>{a&&(b("remove"),v(null),T.removePlace(a.id).then(R=>r(R.places)).catch(R=>v(R instanceof pe?R.message:String(R))).finally(()=>b(null)))},E=a?a.label:e.label?`Add ${e.label}`:"Add a place",$=p!==""&&!n.includes(p)?[p,...n]:n;return t.jsx(Qe,{title:E,onClose:s,foot:t.jsxs(ne,{children:[a?t.jsx(A,{variant:"danger-ghost",disabled:g!==null,onClick:C,children:g==="remove"?"Removing…":"Remove"}):null,t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!N||i.trim()===""||g!==null,onClick:S,children:g==="save"?"Saving…":"Save"})]}),children:t.jsxs(de,{gap:"lg",children:[t.jsx(le,{label:"Name",hint:"What you call it: Home, Work, Mum's.",children:t.jsx("input",{value:i,maxLength:40,autoFocus:!e.label,onChange:R=>l(R.target.value)})}),t.jsx(le,{label:"Address",hint:"A street address, or just the town.",action:t.jsx(A,{disabled:o.trim().length<2||g!==null,onClick:w,children:g==="find"?"Finding…":"Find"}),children:t.jsx("input",{value:o,maxLength:200,autoFocus:!!e.label&&!a,placeholder:"12 Elm Street, Portland, Maine",onChange:R=>c(R.target.value),onKeyDown:R=>{R.key==="Enter"&&(R.preventDefault(),w())}})}),u&&u.length>0?t.jsx("div",{className:"place-found",role:"radiogroup","aria-label":"Which place",children:u.map((R,P)=>t.jsxs("button",{type:"button",role:"radio","aria-checked":P===f,className:"place-option","data-on":P===f?"true":void 0,onClick:()=>{m(P),x(R.timezone??"")},children:[t.jsx("span",{className:"place-radio","aria-hidden":"true"}),t.jsxs("span",{className:"place-option-text",children:[t.jsx("span",{className:"place-option-name",children:R.name}),t.jsxs("span",{className:"place-option-sub",children:[R.latitude.toFixed(2),", ",R.longitude.toFixed(2),R.timezone?` · ${R.timezone}`:""]})]})]},`${R.latitude},${R.longitude}`))}):t.jsx("p",{className:"place-note-inline",children:"Find it to pin it on the map; nothing is saved until you say Save."}),a&&u&&o.trim()!==y?t.jsx("p",{className:"place-note-inline",children:"The address changed. Find it again to move the pin, or save to keep it where it is."}):null,t.jsx(le,{label:"Its timezone",hint:N?"From where it is. Change it if that is wrong.":"Filled in once the place is found.",children:t.jsxs("select",{value:p,disabled:!N,onChange:R=>x(R.target.value),children:[t.jsx("option",{value:"",children:"Not known"}),$.map(R=>t.jsx("option",{value:R,children:R},R))]})}),t.jsx(re,{message:j})]})})}const die=2e6;function DE(e,n){const s=e.replace(/\r\n/g,`
|
|
141
|
+
`).replace(/\n+$/,"").split(`
|
|
142
|
+
`),r=n.replace(/\r\n/g,`
|
|
143
|
+
`).replace(/\n+$/,"").split(`
|
|
144
|
+
`);if(e.trim()===n.trim())return"(no change)";if(s.length*r.length>die)return[...s.map(c=>`-${c}`),...r.map(c=>`+${c}`)].join(`
|
|
145
|
+
`);const a=Array.from({length:s.length+1},()=>new Uint32Array(r.length+1));for(let c=s.length-1;c>=0;c--)for(let u=r.length-1;u>=0;u--)a[c][u]=s[c]===r[u]?a[c+1][u+1]+1:Math.max(a[c+1][u],a[c][u+1]);const i=[];let l=0,o=0;for(;l<s.length&&o<r.length;)s[l]===r[o]?(i.push(` ${s[l]}`),l++,o++):a[l+1][o]>=a[l][o+1]?i.push(`-${s[l++]}`):i.push(`+${r[o++]}`);for(;l<s.length;)i.push(`-${s[l++]}`);for(;o<r.length;)i.push(`+${r[o++]}`);return i.join(`
|
|
146
|
+
`)}const DD={skill:"skill",policy:"rule",change:"change to itself"};function hie(e){return e===null||typeof e!="object"||Array.isArray(e)?String(e??""):Object.entries(e).filter(([n,s])=>!/Id$/.test(n)&&s!==null&&s!==void 0&&s!=="").map(([n,s])=>`${n} ${typeof s=="object"?JSON.stringify(s):String(s)}`).join(" · ")}function $y(e){return[...new Set(e.split(/[,\n]/).map(n=>n.trim().replace(/^[-*]\s+/,"")).filter(n=>n!==""))]}function fie(e,n){const s=e.change;if(!s||s.part!=="tools")return[];if(n===e.editable)return s.added;const r=new Set($y(s.current??""));return $y(n).filter(a=>!r.has(a))}function mie(e){const n=i=>i.kind==="policy"&&i.ruleKind?`${String(i.payload.plugin??"")}\0${i.ruleKind}`:null,s=new Map;for(const i of e){const l=n(i);l&&s.set(l,(s.get(l)??0)+1)}const r=new Map,a=[];for(const i of e){const l=n(i);if(!l||(s.get(l)??0)<2){a.push(i);continue}let o=r.get(l);o||(o={key:l,label:i.ruleKindLabel||i.ruleKind||"Rules",plugin:String(i.payload.plugin??""),cards:[]},r.set(l,o),a.push(o)),o.cards.push(i)}return a}function pie(e){return"cards"in e}function LE(e,n){return!n||e.kind==="policy"&&e.payload.plugin===n}function gie({embedded:e,plugin:n}){const{data:s,error:r,reload:a}=ve(()=>T.proposals(),[],3e4),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState(null),[f,m]=d.useState({}),p=async(v,y,k=!1)=>{l(null),c(null),h(v),m(({[v]:N,...w})=>w);try{c(await y()),a()}catch(N){const w=N instanceof Error?N.message:String(N);k?m(S=>({...S,[v]:w})):l(w)}finally{h(null)}},x=FP(),g=((s==null?void 0:s.open)??[]).filter(v=>LE(v,n)),b=((s==null?void 0:s.closed)??[]).filter(v=>LE(v,n)),j=v=>t.jsx(wie,{proposal:v,busy:u===v.id,refusal:f[v.id]??null,onKeep:y=>void p(v.id,async()=>{const k=await T.keepProposal(v.id,y);return`${v.title}: ${k.note}`},!0),onDiscard:y=>void p(v.id,async()=>(await T.discardProposal(v.id,y),`Discarded: ${v.title}. ${v.agent} will be told once and will not propose it again for 90 days.`))},v.id);return t.jsxs(Rs,{embedded:e,title:"Proposals",lede:"What your agents learned and would like to keep: a procedure, a rule, a change to their own instructions. Keep what is right, correct what is nearly right, discard the rest. A few rules apply themselves, where their plugin allows it (one you always keep, one that only quiets mail sent to many); its own page lists them, with Undo.",children:[t.jsx(re,{message:r??i}),n?t.jsxs(Q,{role:"status",children:["Showing the rules ",n," proposes. ",t.jsx("a",{href:We("proposals"),children:"Show every proposal"})]}):null,o?t.jsx(Q,{tone:"good",role:"status",children:o}):null,n?null:t.jsx(_P,{offers:x.offers,reload:x.reload}),!s||g.length===0?t.jsx(we,{title:"Waiting",panel:!0,children:s?n?t.jsx(ms,{icon:"bulb",title:`No rule from ${n} is waiting`,children:"It proposes one when you decide the same way several times running."}):t.jsx(ms,{icon:"bulb",title:"Nothing proposed",children:"When an agent learns something worth keeping, it waits here."}):t.jsx(Ce,{children:"Loading…"})}):t.jsx(we,{title:"Waiting",aside:`${g.length} to decide`,children:mie(g).map(v=>pie(v)?t.jsx(xie,{group:v,busy:u===v.key,onKeepAll:()=>void p(v.key,async()=>{const y=await T.keepAllProposals(v.cards.map(k=>k.id));return`${v.label}: ${y.note}`}),card:y=>j(y)},v.key):j(v))}),b.length>0?t.jsx(we,{title:`Kept, discarded and expired (${b.length})`,aside:"These stop being shown a week after they were decided.",panel:!0,flush:!0,children:t.jsx(yt,{children:b.map(v=>{var y;return t.jsx(gt,{title:v.title,sub:`${v.agent}: ${vie(v)}`,side:v.kind==="skill"&&v.state==="kept"&&((y=v.skill)!=null&&y.live)?t.jsxs(ne,{align:"end",children:[t.jsx("span",{className:"muted",children:Xe(v.decidedAt??v.createdAt)}),t.jsx(A,{size:"sm",variant:"ghost",disabled:u===v.id,onClick:()=>void p(v.id,async()=>{const k=v.skill;return await T.removeSkill(v.agent,k.name),`Removed ${k.name} from ${v.agent}. Its versions are kept, and ${v.agent} will not propose it again for 90 days.`}),children:"Remove this skill"})]}):Xe(v.decidedAt??v.createdAt)},v.id)})})}):null,!n&&(s!=null&&s.digest)?t.jsx(yie,{schedule:s.digest.schedule,onSaved:a}):null]})}function xie({group:e,busy:n,onKeepAll:s,card:r}){const a=e.cards.length,i=e.cards.some(l=>l.untrusted);return t.jsx(Wr,{tone:i?"warning":"accent",title:`${e.label} (${a})`,meta:t.jsxs(t.Fragment,{children:[t.jsx(Ae,{children:DD.policy}),t.jsx(Ae,{mono:!0,children:e.plugin})]}),foot:t.jsx(ne,{align:"end",children:t.jsxs(A,{variant:"accent",size:"sm",disabled:n,onClick:s,children:["Keep all (",a,")"]})}),children:t.jsxs(de,{gap:"sm",children:[t.jsxs("p",{children:[a," rules of the same kind from ",e.plugin,", each learned from your own decisions. Keep all keeps every one of them as if you had kept each, in one go."]}),t.jsx(Kt,{summary:`Show each of the ${a}`,children:t.jsx(de,{gap:"sm",children:e.cards.map(l=>r(l))})})]})})}function vie(e){switch(e.state){case"kept":return e.decidedBy==="auto"?e.note??"Kept by itself.":e.kind==="skill"&&e.skill?e.skill.live?`Kept as ${e.skill.name}, version ${e.skill.version}; it loads on the agent's next run.`:`Kept; ${e.skill.name} has a newer version now (${e.skill.version}).`:e.note??"Kept.";case"discarded":return e.reason?`Discarded: ${e.reason}`:"Discarded.";case"expired":return`Expired: ${e.reason??"not decided in 30 days"}.`;default:return"Waiting."}}const jie=Array.from({length:24},(e,n)=>n),FE=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function yie({schedule:e,onSaved:n}){const[s,r]=d.useState(e.day),[a,i]=d.useState(e.hour),[l,o]=d.useState(!1),[c,u]=d.useState(null),h=s!==e.day||a!==e.hour,f=async()=>{o(!0),u(null);try{await T.setDigestSchedule(s,a),u({tone:"good",text:`The digest now runs on ${FE[s]} at ${String(a).padStart(2,"0")}:00.`}),n()}catch(m){u({tone:"critical",text:m instanceof Error?m.message:String(m)})}finally{o(!1)}};return t.jsx(we,{title:"Weekly digest",panel:!0,foot:t.jsx(A,{variant:"accent",disabled:l||!h,onClick:()=>void f(),children:"Save"}),children:t.jsxs(de,{children:[t.jsxs("p",{className:"muted",children:["Once a week, one message on Telegram and a card on Home: what your agents learned, what waits here, and what the rules you kept stopped them doing. No message when nothing was learned and nothing waits.",e.next?` Next: ${Xe(e.next)}.`:""]}),t.jsxs(ne,{children:[t.jsx(le,{label:"Day",children:t.jsx("select",{value:s,disabled:l,onChange:m=>r(Number(m.target.value)),children:FE.map((m,p)=>t.jsx("option",{value:p,children:m},m))})}),t.jsx(le,{label:`Hour (${e.timezone})`,children:t.jsx("select",{value:a,disabled:l,onChange:m=>i(Number(m.target.value)),children:jie.map(m=>t.jsxs("option",{value:m,children:[String(m).padStart(2,"0"),":00"]},m))})})]}),c?t.jsx(Q,{tone:c.tone,role:"status",children:c.text}):null]})})}function _E(e,n){return e==="tools"?$y(n).join(`
|
|
147
|
+
`):n}function wie({proposal:e,busy:n,refusal:s,onKeep:r,onDiscard:a}){const[i,l]=d.useState(e.editable??""),[o,c]=d.useState(""),u=e.editable!==null&&i!==e.editable,h=e.payload,f=e.echoes??[],m=e.kind==="change"?e.change??null:null,p=fie(e,i);return t.jsx(Wr,{tone:e.untrusted?"warning":"accent",title:e.title,meta:t.jsxs(t.Fragment,{children:[t.jsx(Ae,{children:DD[e.kind]}),t.jsx(Ae,{mono:!0,children:e.agent}),e.untrusted?t.jsx(Ae,{tone:"warning",children:"untrusted text in view"}):null,p.length>0?t.jsx(Ae,{tone:"warning",children:"widens its tools"}):null]}),foot:t.jsxs(ne,{align:"end",children:[s?t.jsx("span",{className:"proposal-refusal",role:"alert",children:s}):null,t.jsx("input",{"aria-label":"Reason for discarding (optional)",placeholder:"Reason for discarding (optional)",value:o,maxLength:300,disabled:n,onChange:x=>c(x.target.value)}),t.jsx(A,{variant:"ghost",size:"sm",disabled:n,onClick:()=>a(o.trim()||void 0),children:"Discard"}),t.jsx(A,{variant:"accent",size:"sm",disabled:n||e.editable!==null&&i.trim()==="",onClick:()=>r(u?i:void 0),children:u?"Keep my version":"Keep"})]}),children:t.jsxs(de,{gap:"sm",children:[e.why?t.jsx("p",{children:e.why}):null,t.jsxs("p",{className:"ui-card-meta",children:["Proposed by ",e.agent," ",Xe(e.createdAt),e.conversationId?t.jsxs(t.Fragment,{children:[" in ",t.jsx("a",{href:zu(e.conversationId),children:e.turn?`this conversation, turn ${e.turn}`:"this conversation"})]}):null,"."]}),e.untrusted?t.jsxs(Q,{tone:"warning",title:e.kind==="policy"?"Learned from mail you received.":"Made with untrusted text in view.",children:[e.kind==="policy"?"The plugin counted this rule from your own triage decisions; no instruction in that mail can change what it does.":"Something written by someone other than you was in the agent's context when it proposed this. Read it for instructions that came from there rather than from you.",t.jsx("ul",{className:"proposal-sources",children:e.sources.map(x=>t.jsx("li",{className:"mono",children:x},x))}),f.length>0?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"proposal-echo-lede",children:"These sentences of it also appear in that text:"}),t.jsx("ul",{className:"proposal-sources","aria-label":"Sentences found in the untrusted text",children:f.map(x=>t.jsx("li",{children:t.jsx("mark",{className:"wb-diff-mark",children:x})},x))})]}):null]}):null,e.kind==="skill"?t.jsxs(t.Fragment,{children:[typeof h.when=="string"?t.jsxs("p",{className:"ui-card-meta",children:["When: ",h.when]}):null,e.skill?t.jsxs(de,{gap:"sm",children:[t.jsxs("p",{className:"ui-card-meta",children:[e.agent," already has this skill (",t.jsxs("a",{href:Jt(e.agent,"skills"),children:[e.skill.name,", version ",e.skill.version]}),"). Keeping this writes version ",e.skill.version+1,"; the earlier ones stay readable."]}),t.jsx(im,{text:DE(e.skill.steps,i),marks:f,label:`Version ${e.skill.version} against this proposal`})]}):null,t.jsx(le,{label:"The steps, as it would follow them",hint:"Correct them here and keep your version.",children:t.jsx("textarea",{rows:8,value:i,disabled:n,onChange:x=>l(x.target.value)})})]}):null,e.kind==="change"?t.jsxs(t.Fragment,{children:[p.length>0?t.jsxs(Q,{tone:"warning",title:`Adds: ${p.join(", ")}`,children:["Keeping this lets ",e.agent," call tools it cannot call now."]}):null,m!=null&&m.refusal&&!u?t.jsx(Q,{tone:"warning",title:"Keeping this as proposed will be refused.",children:m.refusal}):null,m&&m.current!==null?t.jsx(im,{text:DE(_E(m.part,m.current),_E(m.part,i)),marks:f,label:`${e.agent}'s ${m.part==="tools"?"tool list":"instructions"} now, against this proposal`}):typeof h.before=="string"?t.jsx(Kt,{summary:`What its ${h.part==="tools"?"tool list":"instructions"} said when proposed`,children:t.jsx(en,{children:h.before})}):null,t.jsx(le,{label:h.part==="tools"?"Proposed tool list":"Proposed instructions",hint:"Correct it here and keep your version.",children:t.jsx("textarea",{rows:8,value:i,disabled:n,onChange:x=>l(x.target.value)})})]}):null,e.kind==="policy"?t.jsx(un,{items:[{label:"Plugin",value:t.jsx("span",{className:"mono",children:String(h.plugin??"")})},{label:"Matches",value:t.jsx("span",{className:"mono",children:hie(h.matcher??{})})},{label:"Does",value:String(h.action??"")},...Array.isArray(h.verdicts)&&h.verdicts.length>0?[{label:"Learned from",value:`${h.verdicts.length} ${h.verdicts.length===1?"decision":"decisions"}`}]:[]]}):null]})})}function LD(e){return e.length>1?"small or medium":`${e[0]} only`}function bie(e){return["small","medium"].filter(n=>e.includes(n))}function FD({widget:e,size:n,svg:s}){var a;const r=(a=e.preview)==null?void 0:a[n];return t.jsxs("div",{className:"wg-frame","data-variant":"preview","data-size":n,"data-kind":r==null?void 0:r.kind,role:"img","aria-label":`${e.title}, ${n}: ${r?"a preview with sample data":"no preview"}`,children:[t.jsxs("div",{className:"wg-head",children:[t.jsx("span",{className:"wg-title",children:e.title}),r?t.jsx("span",{className:"wg-sample",children:"Sample"}):null]}),t.jsx("div",{className:"wg-body",children:r?t.jsx(Pp,{body:r,size:n}):t.jsxs("span",{className:"wg-state",children:[t.jsx(ss,{svg:s}),t.jsx("span",{className:"wg-state-sub",children:"No preview from this plugin."})]})})]})}function kie(e){const n=[{label:"Home",path:e.home}];if(e.path===e.home||!e.path.startsWith(`${e.home}/`))return n;let s=e.home;for(const r of e.path.slice(e.home.length+1).split("/"))s=`${s}/${r}`,n.push({label:r,path:s});return n}function Nie({start:e,onPick:n,onClose:s}){const[r,a]=d.useState(null),[i,l]=d.useState(null),[o,c]=d.useState(""),u=(p,x=!1)=>{l(null),T.pluginFolders(p).then(g=>{a(g),c("")}).catch(g=>{x&&p!==void 0?u(void 0):l(g instanceof pe?g.message:String(g))})};d.useEffect(()=>{u(e,!0)},[]);const h=o.trim().toLowerCase(),f=((r==null?void 0:r.folders)??[]).filter(p=>h===""||p.name.toLowerCase().includes(h)),m=r?kie(r):[];return t.jsxs(Qe,{title:"Choose the folder",onClose:s,foot:t.jsxs(ne,{children:[t.jsx("span",{className:"plugins-foot-note mono",children:(r==null?void 0:r.path)??""}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:!r,onClick:()=>r&&n(r.path),children:"Use this folder"})]}),children:[t.jsx("p",{className:"plugins-note",children:"Folders on the computer buddi runs on, inside your home directory. The one you want holds the plugin's package.json and is already built."}),r?t.jsx(tu,{label:"Folder",items:m.map((p,x)=>x===m.length-1?{key:p.path,label:p.label,current:!0}:{key:p.path,label:p.label,onClick:()=>u(p.path)})}):null,t.jsx(xp,{label:"Find a folder here",value:o,placeholder:"Find a folder here…",onChange:c}),t.jsx(re,{message:i}),r?f.length===0?t.jsx(Ce,{children:h===""?"No folders in here.":`No folder here is called anything like “${o.trim()}”.`}):t.jsx(lt,{flush:!0,children:t.jsx(yt,{children:f.map(p=>t.jsx(gt,{onClick:()=>u(p.path),label:`Open ${p.name}`,lead:t.jsx(ss,{icon:"folder"}),title:p.name,side:p.plugin?t.jsx(Ae,{tone:"accent",children:"package.json"}):void 0},p.path))})}):i?null:t.jsx(Ce,{children:"Reading the folders…"}),r!=null&&r.truncated?t.jsx("p",{className:"plugins-note",children:"Only the first 500 folders are listed; find one by name above."}):null]})}const Sie="New tools and pages for your team, written by someone else. Each one is read with you, fact by fact, before any of it runs.";function zE(){return t.jsxs("p",{className:"plugins-quiet connections-quiet",children:[t.jsx(se,{name:"globe",size:14}),t.jsxs("span",{children:["A plugin is code buddi installs and runs; a connection is a service or program buddi talks to."," ",t.jsx("a",{href:We("connections"),children:"Connections"})]})]})}const Cie=1500,_D={fetching:"Fetching the package.","installing-dependencies":"Installing its dependencies. Nothing of the plugin has run.",reading:"Reading what it says it is.",done:"Read. Nothing has been imported yet.",failed:"That did not work."},Eie="Restart buddi to apply it. In a checkout, stop it and run: buddi serve",zD=[{value:"npm",label:"From npm"},{value:"file",label:"A file"},{value:"directory",label:"A directory I built"}],UD="buddi.plugins.install-mode";function Aie(){try{const e=window.localStorage.getItem(UD);if(zD.some(n=>n.value===e))return e}catch{}return"npm"}function $ie(e){try{window.localStorage.setItem(UD,e)}catch{}}const $h=".tgz",ia=(e,n,s)=>`${e} ${e===1?n:s}`;function BD(e){const n=[];return e.tools>0&&n.push(ia(e.tools,"tool","tools")),e.sentinels>0&&n.push(`${e.sentinels} on a timer`),e.views>0&&n.push(ia(e.views,"view","views")),e.agents>0&&n.push(`${ia(e.agents,"agent","agents")} proposed`),n.length===0?"nothing on its own":n.join(", ")}function Ty(e){return e.kind==="registry"?`npm · ${e.name}@${e.version}`:e.kind==="tarball"?`a file on this machine · ${e.path}`:`a directory on this machine · ${e.path}`}function WD(e){return e.kind==="registry"?"npm":e.kind==="tarball"?"a file":"a directory"}function Hk(e,n){return e.kind==="directory"?"you, from this machine":e.kind==="tarball"?"a file on this machine":n??"nobody npm will name"}function HD(e){return e.author?e.author.name:e.source.kind==="registry"?e.publisher??"nobody npm will name":"you"}function Lp({author:e}){return e.url?t.jsx("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",children:e.name}):t.jsx(t.Fragment,{children:e.name})}function Ry({value:e}){return e===void 0||e===""?t.jsx("span",{className:"muted",children:"none — this came off a disk"}):t.jsx("span",{className:"plugins-hash",children:e})}function KD(e){return e.length===0?"none; nothing leaves this computer":t.jsx("span",{className:"mono",children:e.join(", ")})}function Kk(e){return e.length===0?"Nothing beyond its own tables, its own folder and its own tools' approvals.":e.map(n=>`It ${n.words}.`).join(" ")}const Fa=e=>e instanceof pe?e.message:String(e);function Tie(e){const[n,s]=d.useState(void 0),[r,a]=d.useState(null);return d.useEffect(()=>{if(!e){s(void 0),a(null);return}let i=!1;a(null),s(void 0);const l=()=>{i||T.pluginJob(e).then(c=>{i||(s(c),(c.phase==="done"||c.phase==="failed")&&(i=!0))}).catch(c=>{i||(a(Fa(c)),i=!0)})};l();const o=window.setInterval(l,Cie);return()=>{i=!0,window.clearInterval(o)}},[e]),{job:(n==null?void 0:n.id)===e?n:void 0,error:r}}function Rie({plugin:e,pages:n,navigate:s,variant:r}){const a=n.filter(i=>i.plugin===e);return a.length===0?null:t.jsx(t.Fragment,{children:a.map(i=>{const l=Or(i.plugin,i.id);return t.jsx(it,{size:"sm",variant:r,href:l,"aria-label":`Open ${i.title}`,onClick:o=>{o.stopPropagation(),s&&(o.preventDefault(),s(l))},children:a.length===1?"Open":`Open ${i.title}`},i.id)})})}const Iie="buddi was updated and this plugin needs relinking. Restart buddi to repair it.";function VD({plugin:e}){var s;if(e.enabled===!1)return t.jsx(Ae,{children:"disabled"});const n=(s=e.needs)==null?void 0:s[0];return n?t.jsxs(Ae,{tone:"warning",children:["needs ",n.plugin]}):e.loadsAtRestart?t.jsx(Ae,{tone:"accent",children:"Waiting for restart"}):e.loaded&&e.setup?t.jsx(Ae,{tone:"warning",children:"needs setup"}):e.loaded?t.jsx(Ae,{tone:"good",dot:!0,children:"loaded"}):t.jsx(Ae,{tone:"critical",children:"did not load"})}function Vk({entry:e}){var n;return e.trust==="by-buddi"?t.jsx(Ae,{tone:"accent",children:"by buddi"}):t.jsxs(Ae,{tone:"good",children:["reviewed ",((n=e.reviewed)==null?void 0:n.version)??e.version]})}const Iy=We("plugins"),Th={installed:Iy,browse:`${Iy}?tab=browse`};function Pie({railPages:e=[],settingsPages:n=[],navigate:s,hash:r=""}={}){const a=ve(()=>T.plugins(),[],2e4),[i,l]=d.useState(null),{job:o,error:c}=Tie(i),[u,h]=d.useState(null),[f,m]=d.useState(()=>KS(r));d.useEffect(()=>m(KS(r)),[r]);const[p,x]=d.useState(()=>HS(r));d.useEffect(()=>x(HS(r)),[r]);const[g,b]=d.useState(null),[j,v]=d.useState(null),[y,k]=d.useState(null),[N,w]=d.useState(null),[S,C]=d.useState(!1),E=ce=>{C(!0),T.market(ce).then(w).catch(Me=>w({plugins:[],unavailable:Fa(Me)})).finally(()=>C(!1))};d.useEffect(()=>{f==="browse"&&N===null&&!S&&E(!1)},[f]);const $=ce=>{h(null),l(ce),F(!0),z(null)},R=ce=>h(Fa(ce)),[P,O]=d.useState(!1),[I,F]=d.useState(!1),[U,L]=d.useState("plugin"),[M,z]=d.useState(null),D=P||!c&&i!==null&&(!o||o.phase!=="done"&&o.phase!=="failed"),H=(ce,Me="plugin")=>{O(!0),h(null),l(null),z(null),L(Me),F(!0),b(null),ce.then(Ze=>{l(Ze.job.id)}).catch(R).finally(()=>O(!1))},K=d.useRef(null);d.useEffect(()=>{const ce=wW(r);if(!(ce===null||K.current===ce)){K.current=ce,m("installed"),H(T.stagePlugin(ce));try{window.history.replaceState(window.history.state,"",Iy)}catch{}}},[r]);const X=ce=>Me=>{Me.preventDefault(),m(ce),b(null),s==null||s(Th[ce])};d.useEffect(()=>{((o==null?void 0:o.phase)==="done"||(o==null?void 0:o.phase)==="failed")&&a.reload()},[o==null?void 0:o.phase]);const W=a.data,me=W?!W.canRestart:!0,fe=(W==null?void 0:W.installed)??[],oe=ce=>N==null?void 0:N.plugins.find(Me=>Me.installed!==void 0&&(Me.installed.name??Me.name)===ce.name),B=ce=>e.some(Me=>Me.plugin===ce),ue=(ce,Me)=>B(ce)?t.jsx(Rie,{plugin:ce,pages:e,navigate:s,variant:Me}):void 0,Ne=ce=>{const Me=e.find(Ze=>Ze.plugin===ce);Me&&s&&s(Or(Me.plugin,Me.id))},Ke=ce=>{const Me=n.find(Ze=>Ze.plugin===ce);if(!(!Me||!s))return()=>s(Dr(Me.plugin,Me.id))},G=((N==null?void 0:N.plugins)??[]).filter(ce=>ce.update).length,ae=(ce,Me)=>T.setPluginEnabled(ce,Me).then(Ze=>{Sb(),k({name:ce,notes:Ze.notes??[]}),a.reload()}),J=(ce,Me,Ze)=>T.uninstallPlugin(ce,Me?{purge:!0,confirm:Ze}:{}).then(Ct=>{b(null),k({name:ce,notes:Ct.notes??[]}),a.reload()}),xe=ce=>{h(null),ae(ce,!0).catch(R)},Ie=(ce,Me)=>{const Ze=N==null?void 0:N.plugins.find(mt=>{var Pe;return(((Pe=mt.installed)==null?void 0:Pe.name)??mt.name)===ce&&mt.installed!==void 0}),Ct=Ze&&Me?`${Ze.npm}@${Me}`:void 0;H(Ct?T.updatePlugin(ce,Me,Ct):T.updatePlugin(ce,Me),ce)},Y=ce=>{h(null);const Me=Ze=>{const Ct=Ze.plugins.find(mt=>{var Pe;return mt.name===ce||((Pe=mt.installed)==null?void 0:Pe.name)===ce});if(!Ct){h(`${ce} is not listed on withbuddi.com. Add it from npm, a file or a directory above, then install this one.`);return}H(T.stagePlugin(`${Ct.npm}@${Ct.version}`),Ct.name)};if(N&&N.plugins.length>0)return Me(N);O(!0),T.market(!1).then(Ze=>{w(Ze),Me(Ze)}).catch(R).finally(()=>O(!1))},te=(ce,Me)=>Me===void 0?void 0:Me.place==="settings"?Dr(ce,Me.id):Or(ce,Me.id),ie=ce=>{var Ze;if(ce.enabled===!1)return;const Me=(Ze=ce.needs)==null?void 0:Ze[0];if(Me)switch(Me.state){case"missing":return{label:`Install ${Me.plugin}`,run:()=>Y(Me.plugin)};case"disabled":return{label:`Enable ${Me.plugin}`,run:()=>xe(Me.plugin)};case"range":return{label:`Update ${Me.plugin}`,run:()=>Ie(Me.plugin)};case"setup":{const Ct=te(Me.plugin,Me.page),mt=Ct&&s?()=>s(Ct):Ke(Me.plugin);return mt?{label:`Set up ${Me.plugin}`,run:mt}:void 0}default:return{label:`See ${Me.plugin}`,run:()=>b({kind:"installed",name:Me.plugin})}}if(ce.loaded&&ce.setup){const Ct=te(ce.name,ce.setup.page),mt=Ct&&s?()=>s(Ct):Ke(ce.name);return mt?{label:"Set it up",run:mt}:void 0}},ge=t.jsxs(cc,{label:"Plugins",children:[t.jsx(xl,{href:Th.installed,active:f==="installed",count:G,onClick:X("installed"),children:"Installed"}),t.jsx(xl,{href:Th.browse,active:f==="browse",onClick:X("browse"),children:"Browse"})]}),je=(W==null?void 0:W.staged)??[],Se=zie(je,(o==null?void 0:o.phase)==="done"?o.stagedId:void 0),ke=je.find(ce=>ce.id===Se),Be=je.filter(ce=>ce.id!==Se),rt=ce=>{b(null),Uie(ce),m("installed"),s==null||s(Th.installed),z(ce),L(ce),F(!0),N&&E(!1),l(null),a.reload()},ye=(g==null?void 0:g.kind)==="staged"?je.find(ce=>ce.id===g.name):void 0,Ue=(g==null?void 0:g.kind)==="installed"?fe.find(ce=>ce.name===g.name):void 0,st=(g==null?void 0:g.kind)==="market"?N==null?void 0:N.plugins.find(ce=>ce.name===g.name):void 0,Fe=y&&!(Ue&&Ue.name===y.name)&&y.notes.length>0?y.notes:null,wt=ye?t.jsx(UE,{staged:ye,onClose:()=>b(null),onInstalled:rt,onInstallFirst:Y,onGone:()=>{b(null),a.reload()}},ye.id):Ue?t.jsx(qie,{plugin:Ue,listing:oe(Ue),notes:(y==null?void 0:y.name)===Ue.name?y.notes:null,canOpen:B(Ue.name)&&Ue.enabled!==!1,onOpen:()=>Ne(Ue.name),onClose:()=>b(null),onDisable:()=>v({kind:"disable",name:Ue.name}),onEnable:()=>xe(Ue.name),onRemove:()=>v({kind:"remove",name:Ue.name}),onUpdate:ce=>Ie(Ue.name,ce),onSettings:Ue.enabled===!1?void 0:Ke(Ue.name),firstStep:ie(Ue),onRestart:me?void 0:()=>lc({kind:"plugins",line:`Repairing ${Ue.name}…`},()=>T.serviceAction("restart")),busy:D}):st?t.jsx(nle,{entry:st,canOpen:st.installed!==void 0&&B(st.installed.name??st.name),onOpen:()=>{var ce;return Ne(((ce=st.installed)==null?void 0:ce.name)??st.name)},onClose:()=>b(null),onInstall:()=>H(T.stagePlugin(`${st.npm}@${st.version}`),st.name),onUpdate:ce=>{var Me;return Ie(((Me=st.installed)==null?void 0:Me.name)??st.name,ce)},busy:D}):null,ot=()=>F(!1),tn=(o==null?void 0:o.phase)==="done"&&o.stagedId?je.find(ce=>ce.id===o.stagedId):void 0,$t=I?M?t.jsx(Ex,{checkout:me,waiting:fe.filter(ce=>ce.name===M),installedName:M,onClose:ot}):tn?t.jsx(UE,{staged:tn,onClose:ot,onInstalled:rt,onGone:()=>{ot(),l(null),a.reload()},onInstallFirst:Y},tn.id):t.jsx(Qe,{title:`${(o==null?void 0:o.kind)==="update"?"Check":"Install"} ${U}`,onClose:ot,foot:t.jsxs(ne,{children:[t.jsx(ft,{}),t.jsx(A,{onClick:ot,children:"Close"})]}),children:t.jsxs(de,{gap:"lg",children:[u||c||a.error||(o==null?void 0:o.phase)==="failed"?t.jsx(re,{message:u??c??a.error??(o==null?void 0:o.error)??"Preparation failed. Close and try again."}):o!=null&&o.upToDate?t.jsx(Q,{role:"status",children:o.upToDate}):t.jsxs("div",{className:"plugins-preparing",role:"status","aria-live":"polite","aria-busy":"true",children:[t.jsx("span",{className:"plugins-spinner","aria-hidden":"true"}),t.jsx("strong",{children:o?_D[o.phase]:"Preparing the package…"})]}),D?t.jsx("p",{className:"plugins-quiet",children:"You can close this panel. Preparation continues, and the review will wait in Plugins."}):null,o!=null&&o.upToDate&&(W!=null&&W.restartNeeded)?t.jsx(Ex,{checkout:me,waiting:fe.filter(ce=>ce.loadsAtRestart)}):null]})}):null,Et=j?fe.find(ce=>ce.name===j.name):void 0,$n=j?t.jsx(Yie,{kind:j.kind,name:j.name,canDisable:(Et==null?void 0:Et.enabled)!==!1,onCancel:()=>v(null),onDisableInstead:()=>v({kind:"disable",name:j.name}),onDisable:()=>ae(j.name,!1).then(()=>v(null)),onRemove:(ce,Me)=>J(j.name,ce,Me).then(()=>v(null))},`${j.kind}:${j.name}`):null;if(f==="browse")return t.jsxs(de,{gap:"lg",children:[t.jsx(zE,{}),ge,t.jsx(re,{message:u}),t.jsx(lle,{kind:p,onKind:x,navigate:s,market:N,loading:S,busy:D,onRetry:()=>E(!0),onOpen:ce=>b({kind:"market",name:ce.name}),onInstall:ce=>H(T.stagePlugin(`${ce.npm}@${ce.version}`),ce.name),onUpdate:(ce,Me)=>{var Ze;return Ie(((Ze=ce.installed)==null?void 0:Ze.name)??ce.name,Me)}}),wt,$t]});const nn=(W==null?void 0:W.builtIn)??[];return t.jsxs(de,{gap:"lg",children:[t.jsx(zE,{}),ge,t.jsx(re,{message:a.error??u??c}),W!=null&&W.unavailable?t.jsx(Q,{tone:"warning",children:W.unavailable}):null,Fe?t.jsx(Q,{role:"status",children:Fe.join(" ")}):null,t.jsx(Mie,{trust:(W==null?void 0:W.trust)??"",job:o,busy:D,onStaged:$,onFailed:h}),ke&&!I?t.jsx(Lie,{staged:ke,onInstalled:rt,onGone:()=>a.reload(),onInstallFirst:Y},ke.id):null,Be.length>0?t.jsx(lt,{flush:!0,title:"Waiting for you",tool:ia(Be.length,"package","packages"),children:t.jsx("div",{className:"plugins-rows",children:t.jsx(yt,{children:Be.map(ce=>t.jsx(Fie,{staged:ce,onReview:()=>{Gk(ce),b({kind:"staged",name:ce.id})},onReject:()=>{h(null),T.rejectStaged(ce.id).then(()=>a.reload()).catch(R)}},ce.id))})})}):null,W!=null&&W.restartNeeded?t.jsx(Ex,{checkout:me,waiting:fe.filter(ce=>ce.loadsAtRestart)}):null,t.jsx(Wie,{list:fe,firstStepFor:ie}),t.jsx(lt,{flush:!0,title:"Installed",tool:W?ia(fe.length,"plugin","plugins"):void 0,children:W?fe.length===0?t.jsx(Ce,{children:"Nothing installed yet. Only what buddi ships with is here."}):t.jsx("div",{className:"plugins-rows",children:t.jsx(yt,{children:fe.map(ce=>t.jsx(Kie,{plugin:ce,listing:oe(ce),open:ce.enabled===!1?void 0:ue(ce.name,"ghost"),canOpen:B(ce.name)&&ce.enabled!==!1,busy:D,onDetails:()=>b({kind:"installed",name:ce.name}),onOpen:()=>Ne(ce.name),onSettings:ce.enabled===!1?void 0:Ke(ce.name),onDisable:()=>v({kind:"disable",name:ce.name}),onEnable:()=>xe(ce.name),onRemove:()=>v({kind:"remove",name:ce.name}),onUpdate:Me=>Ie(ce.name,Me),firstStep:ie(ce)},ce.name))})}):t.jsx(Ce,{children:"Loading…"})}),nn.length>0?t.jsx(Qie,{plugins:nn,openFor:ue}):null,wt,$t,$n]})}function Mie({trust:e,job:n,busy:s,onStaged:r,onFailed:a}){const[i,l]=d.useState(Aie),[o,c]=d.useState(""),[u,h]=d.useState(!1),[f,m]=d.useState(null),[p,x]=d.useState(null),[g,b]=d.useState(!1),[j,v]=d.useState(!1),y=d.useRef(null),k=C=>a(Fa(C)),N=C=>{l(C),$ie(C),x(null)},w=()=>{h(!0),T.stagePlugin(o.trim()).then(C=>{r(C.job.id),c("")}).catch(k).finally(()=>h(!1))},S=C=>{if(C){if(!C.name.toLowerCase().endsWith($h)){m(null),x(`${C.name} is not a ${$h}. A packed plugin is the file npm pack writes.`);return}x(null),m(C.name),h(!0),T.uploadPlugin(C).then(E=>r(E.job.id)).catch(k).finally(()=>h(!1))}};return t.jsxs(lt,{title:"Add a plugin",actions:t.jsx(dn,{label:"Where it comes from",options:zD,value:i,onChange:N}),children:[t.jsxs("div",{className:"plugins-add",children:[i==="file"?t.jsxs("div",{className:"plugins-drop",role:"group","aria-label":"A plugin file","data-state":g?"over":p?"refused":f?"chosen":void 0,onDragOver:C=>{C.preventDefault(),b(!0)},onDragLeave:()=>b(!1),onDrop:C=>{var E,$;C.preventDefault(),b(!1),S(($=(E=C.dataTransfer)==null?void 0:E.files)==null?void 0:$[0])},children:[t.jsx(se,{name:"drop",size:20}),t.jsx("span",{className:"plugins-drop-text",children:p??(f?`${f} — reading it.`:t.jsxs(t.Fragment,{children:["Drop a ",t.jsx("span",{className:"mono",children:$h})," here: the file ",t.jsx("span",{className:"mono",children:"npm pack"})," ","writes. It is read the moment it lands."]}))}),t.jsx(A,{variant:"accent",disabled:s||u,onClick:()=>{var C;return(C=y.current)==null?void 0:C.click()},children:"Choose a file"}),t.jsx("input",{ref:y,type:"file",accept:$h,hidden:!0,"aria-hidden":"true",tabIndex:-1,onChange:C=>{var E;S((E=C.target.files)==null?void 0:E[0]),C.target.value=""}})]}):t.jsxs("div",{className:"plugins-add-row",children:[t.jsxs(ne,{valign:"end",children:[t.jsx(le,{grow:!0,label:i==="npm"?"Package":"The directory it is in",children:t.jsx("input",{type:"text",value:o,placeholder:i==="npm"?"buddi-plugin-weather":"/home/you/code/buddi-plugin-weather",onChange:C=>c(C.target.value)})}),i==="directory"?t.jsx(A,{onClick:()=>v(!0),children:"Browse…"}):null,t.jsx(A,{variant:"accent",disabled:s||u||o.trim()==="",onClick:w,children:"Read it first"})]}),t.jsx("span",{className:"ui-field-hint",children:i==="npm"?"A package name, or a name@version. Reading fetches it and hashes it; nothing of it runs.":"The folder with its package.json, already built. Nothing of it runs until you say yes."})]}),n?t.jsxs("p",{className:"plugins-status",role:"status","data-tone":n.phase==="failed"?"critical":void 0,children:[n.upToDate??_D[n.phase]," ",n.error??""]}):null,t.jsx("div",{className:"plugins-trust",children:t.jsx(Q,{tone:"warning",children:e})})]}),j?t.jsx(Nie,{start:o.trim().startsWith("/")?o.trim():void 0,onClose:()=>v(!1),onPick:C=>{c(C),v(!1)}}):null]})}function Oie({staged:e}){var r,a;const n=((r=e.uses)==null?void 0:r.areas)??[],s=((a=e.uses)==null?void 0:a.dropped)??[];return t.jsxs("span",{className:"plugins-uses",children:[n.length===0?Kk([]):n.map(i=>t.jsxs("span",{children:["It ",i.words,". ",i.added?t.jsxs(Ae,{tone:"warning",children:["new in ",e.version]}):null]},i.use)),s.length>0?t.jsxs("span",{className:"muted",children:["No longer: ",s.map(i=>i.words).join("; "),"."]}):null]})}function GD(e,n,s){const[r,a]=d.useState(e.plan??null),[i,l]=d.useState(!1),[o,c]=d.useState(null);return{plan:r,busy:i,failed:o,approve:f=>{l(!0),c(null),T.approveStaged(e.id,{integrity:e.integrity??"",...f?{acknowledgeDrift:!0}:{}}).then(m=>{m.installed?n(m.installed.name):m.plan&&a(m.plan)}).catch(m=>c(Fa(m))).finally(()=>l(!1))},reject:()=>{l(!0),c(null),T.rejectStaged(e.id).then(()=>s()).catch(f=>c(Fa(f))).finally(()=>l(!1))}}}function Gk(e){e.openedAt||T.openedStaged(e.id).catch(()=>{})}function Die({staged:e,onInstallFirst:n}){return t.jsxs("span",{className:"plugins-requires",children:[(e.requires??[]).map(s=>t.jsxs("span",{className:"plugins-require",children:[t.jsxs("span",{title:s.range,children:[t.jsx("span",{className:"mono",children:s.plugin})," ",s.rangeWords??s.range]}),s.state==="ok"?t.jsx("span",{className:"plugins-require-ok",children:s.installed?`${s.installed} is here`:"here"}):s.state==="missing"?t.jsxs(t.Fragment,{children:[t.jsx(Ae,{tone:"warning",children:"not installed"}),n?t.jsxs(A,{size:"sm",onClick:()=>n(s.plugin),children:["Install ",s.plugin," first"]}):null]}):t.jsx(Ae,{tone:"warning",children:s.state==="disabled"?"disabled here":s.state==="range"?`${s.installed??"another version"} is here`:s.state==="failed"?"did not load here":"waiting here"})]},s.plugin)),(e.requires??[]).some(s=>s.state!=="ok")?t.jsx("span",{className:"muted",children:"It installs either way, and waits — tools and widgets off, nothing lost — until each is here and set up."}):null]})}function qD({staged:e,onInstallFirst:n}){var r,a;const s=e.dependencies;return t.jsxs(de,{gap:"lg",children:[t.jsx("p",{className:"plugins-summary",children:e.claims.missing?"Review this plugin’s access before installing.":t.jsxs(t.Fragment,{children:["Excerpt from the author’s description: ",(r=e.claims.text.split(/\n\s*\n/).find(i=>i.trim()&&!i.trim().startsWith("#")))==null?void 0:r.slice(0,320)]})}),t.jsx(we,{title:"What it accesses",children:t.jsx(Oie,{staged:e})}),(e.requires??[]).length>0?t.jsx(Die,{staged:e,onInstallFirst:n}):null,t.jsxs(Kt,{summary:"Read full description",boxed:!0,children:[t.jsx("p",{className:"plugins-quiet",children:"Written by the plugin’s author. These are its claims."}),t.jsx(gr,{text:e.claims.missing?"No description provided.":e.claims.text})]}),t.jsx(Kt,{summary:"Technical details",boxed:!0,children:t.jsx("div",{className:"plugins-facts",children:t.jsx(un,{items:[...e.author?[{label:"By",value:t.jsx(Lp,{author:e.author})}]:[],{label:"From",value:e.uploadedName?`a file you chose · ${e.uploadedName}`:Ty(e.source)},{label:"Published by",value:Hk(e.source,e.publisher)},...e.previousSource&&e.previous?[{label:"Replaces",value:`${e.previous.version}, installed from ${Ty(e.previousSource)}`}]:e.source.kind==="directory"&&((a=e.previous)==null?void 0:a.version)===e.version?[{label:"Reinstalls",value:`${e.version}, the same version, its files read again from the folder`}]:[],...e.source.kind==="directory"?[]:[{label:"Installs as",value:e.installsAs?t.jsx("span",{className:"mono",children:e.installsAs}):"the name its manifest gives, read when you approve — it declares no buddi.name"}],...e.coreAsDependency?[{label:"Core",value:"It asks npm for buddi's core; buddi provides its own."}]:[],{label:"Dependencies",value:s.count===0?"none":`${s.count}${s.withScripts.length===0?", none of which run install scripts":`, of which these run install scripts: ${s.withScripts.join(", ")}`}`},{label:"Schema it owns",value:e.claims.schema??"it claims none"},{label:"Hosts it reaches",value:e.claims.hosts.join(", ")||"it claims none"},{label:"Integrity",value:t.jsx(Ry,{value:e.integrity})},...e.stagedHash?[{label:"Files on disk",value:t.jsx(Ry,{value:e.stagedHash})}]:[]]})})})]})}function YD({plan:e,busy:n,onReject:s,onInstallAnyway:r}){return t.jsxs(Wr,{tone:"warning",title:"What it said, and what it does",meta:t.jsx(Ae,{tone:"warning",children:"read this first"}),foot:t.jsxs(ne,{children:[t.jsx("span",{className:"plugins-foot-note",children:"Install anyway says you read these."}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",disabled:n,onClick:s,children:"Not this one"}),t.jsx(A,{variant:"danger",disabled:n,onClick:r,children:"Install anyway"})]}),children:[t.jsx("p",{className:"plugins-note",children:"Its prose and its manifest do not agree. Neither is authoritative; the manifest is what actually runs."}),t.jsx("ul",{className:"plugins-drift",children:e.drift.map(a=>t.jsx("li",{children:a},a))}),t.jsx(QD,{unlocks:e.agents??[]})]})}function Lie({staged:e,onInstalled:n,onGone:s,onInstallFirst:r}){const{plan:a,busy:i,failed:l,approve:o,reject:c}=GD(e,n,s);d.useEffect(()=>Gk(e),[e.id]);const u=(a==null?void 0:a.drift)??[];return t.jsxs(de,{gap:"sm",children:[t.jsxs(Wr,{tone:"accent",title:t.jsxs(t.Fragment,{children:[e.name," ",t.jsx("span",{className:"plugins-ver",children:e.version})]}),meta:t.jsx(Ae,{children:"read, not installed"}),foot:t.jsxs(ne,{children:[t.jsx("span",{className:"plugins-foot-note",children:"Nothing of it has run."}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",disabled:i,onClick:c,children:"Not this one"}),t.jsx(A,{variant:"accent",disabled:i||u.length>0,onClick:()=>o(!1),children:"Install"})]}),children:[t.jsx(re,{message:l}),t.jsx(qD,{staged:e,onInstallFirst:r})]}),a&&u.length>0?t.jsx(YD,{plan:a,busy:i,onReject:c,onInstallAnyway:()=>o(!0)}):null]})}function Fie({staged:e,onReview:n,onReject:s}){const r=Xe(e.createdAt);return t.jsx(gt,{onClick:n,label:`${e.name}: review`,lead:t.jsx(ss,{svg:void 0}),title:t.jsxs(t.Fragment,{children:[e.name," ",t.jsx("span",{className:"plugins-ver",children:e.version})]}),sub:`from ${WD(e.source)}${r?` · read ${r}`:""}`,side:t.jsxs("span",{className:"plugins-side",children:[t.jsxs("span",{className:"plugins-wait-extra",children:[t.jsx(Ae,{children:"read, not installed"}),t.jsx(A,{size:"sm",variant:"ghost",onClick:Bo(s),children:"Not this one"})]}),t.jsx(A,{size:"sm",onClick:Bo(n),children:"Review"})]})})}function UE({staged:e,onClose:n,onInstalled:s,onGone:r,onInstallFirst:a}){const{plan:i,busy:l,failed:o,approve:c,reject:u}=GD(e,s,r),h=(i==null?void 0:i.drift)??[];return d.useEffect(()=>Gk(e),[e.id]),t.jsxs(Qe,{scrollBody:!0,title:t.jsx(Qk,{svg:void 0,name:e.installsAs??e.name,version:e.version,by:e.author?t.jsx(Lp,{author:e.author}):Hk(e.source,e.publisher),pills:t.jsxs(t.Fragment,{children:[" · ",t.jsx(Ae,{children:"read, not installed"})]})}),onClose:l?()=>{}:n,foot:t.jsxs(ne,{children:[t.jsx("span",{className:"plugins-foot-note",children:l?"Installing…":"Nothing of it has run."}),t.jsx(ft,{}),t.jsx(A,{variant:"ghost",disabled:l,onClick:u,children:"Not this one"}),t.jsx(A,{variant:"accent",disabled:l||h.length>0,onClick:()=>c(!1),children:l?"Installing…":`Install ${e.installsAs??e.name}`})]}),children:[t.jsx(re,{message:o}),t.jsx(qD,{staged:e,onInstallFirst:a}),t.jsx(Q,{tone:"warning",children:"Only install plugins from people you trust. A plugin runs with buddi’s access to this computer and can bypass tool approvals."}),i&&h.length>0?t.jsx(YD,{plan:i,busy:l,onReject:u,onInstallAnyway:()=>c(!0)}):null]})}const _ie=10*60*1e3;function zie(e,n,s=Date.now()){if(n&&e.some(i=>i.id===n))return n;const r=[...e].sort((i,l)=>(l.createdAt??"").localeCompare(i.createdAt??""))[0];if(!(r!=null&&r.createdAt))return null;const a=s-Date.parse(r.createdAt);return Number.isFinite(a)&&a<_ie?r.id:null}function Ex({checkout:e,waiting:n,installedName:s,onClose:r}){const[a,i]=d.useState(!1),[l,o]=d.useState(null),c=z8(n)||s,u=c?`${c} ${n.length<=1?"is":"are"} installed.`:"A plugin was installed, disabled or enabled since buddi started, and this buddi has not caught up.",h=e?void 0:t.jsx(A,{size:"sm",variant:"accent",disabled:a,onClick:()=>{i(!0),o(null),lc({kind:"plugins",...c?{line:`Loading ${c}…`}:{line:"Applying your plugin changes…"}},()=>T.serviceAction("restart")).catch(m=>o(Fa(m))).finally(()=>i(!1))},children:"Restart to finish"}),f=t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:l}),t.jsxs(Q,{tone:e?"warning":"accent",role:"status",action:r?void 0:h,children:[u," ",e?Eie:`${c?n.length<=1?"Its tools appear":"Their tools appear":"It takes effect"} once buddi restarts, which takes a few seconds. This page waits and comes back by itself.`]})]});return r?t.jsx(Qe,{title:`${s??"Plugin"} is installed`,onClose:r,scrollBody:!0,foot:t.jsxs(ne,{children:[t.jsx(ft,{}),t.jsx(A,{onClick:r,children:"Later"}),h]}),children:f}):f}const qk="buddi.plugins.justInstalled";function Uie(e){try{window.sessionStorage.setItem(qk,e)}catch{}}function Bie(){try{return window.sessionStorage.getItem(qk)}catch{return null}}function Wie({list:e,firstStepFor:n}){var u;const[s,r]=d.useState(()=>Bie()),a=s?e.find(h=>h.name===s):void 0,i=a!==void 0&&(a.loaded||a.needs!==void 0),l=i&&(a.needs!==void 0||a.setup!==void 0),o=()=>{try{window.sessionStorage.removeItem(qk)}catch{}r(null)};if(d.useEffect(()=>{i&&!l&&o()},[i,l]),!a||!l)return null;const c=n(a);return t.jsx(Qe,{title:`${a.name} is ready to set up`,onClose:o,scrollBody:!0,foot:t.jsxs(ne,{children:[t.jsx(ft,{}),t.jsx(A,{size:"sm",variant:"ghost",onClick:o,children:"Later"}),c?t.jsx(A,{size:"sm",variant:"accent",onClick:()=>{o(),c.run()},children:c.label}):null]}),children:t.jsx(Q,{tone:"accent",role:"status",children:a.needs?`${a.name} is installed and waits. ${Yk(a)}.`:`${a.name} is loaded. First: ${((u=a.setup)==null?void 0:u.note)??"set it up on its settings page."}`})})}const Bo=e=>n=>{n.stopPropagation(),e()},Hie=e=>e.unlocks.filter(n=>n.drift.state==="not-accepted").length;function Yk(e){var n;return e.needs&&e.needs.length>0?e.needs.map(s=>s.state==="setup"&&s.note?`${s.words}: ${s.note}`:s.words).join(" · "):((n=e.setup)==null?void 0:n.note)??"Not set up yet. Its settings say what it needs."}function Kie({plugin:e,listing:n,open:s,canOpen:r,busy:a,onDetails:i,onOpen:l,onSettings:o,onDisable:c,onEnable:u,onRemove:h,onUpdate:f,firstStep:m}){const p=e.enabled===!1,x=Hie(e),g=!p&&(e.needs!==void 0||e.loaded&&e.setup!==void 0);return t.jsx(gt,{onClick:i,label:`${e.name}: details`,dimmed:p,lead:t.jsx(ss,{svg:n==null?void 0:n.iconSvg}),title:t.jsxs(t.Fragment,{children:[e.name," ",t.jsx("span",{className:"plugins-ver",children:e.version}),x>0?t.jsxs("span",{className:"plugins-ask",children:[ia(x,"agent","agents")," to accept"]}):null]}),sub:g?t.jsx("span",{className:"plugins-sub","data-tone":"warning",children:Yk(e)}):`by ${HD(e)} · from ${WD(e.source)} · ${e.loadsAtRestart?"Ready to load after restart":BD(e.contribution)}`,side:t.jsxs("span",{className:"plugins-side",children:[g&&m?t.jsx(A,{size:"sm",onClick:Bo(m.run),children:m.label}):null,n!=null&&n.update?t.jsxs(A,{size:"sm",disabled:a,onClick:Bo(()=>f(n.update)),children:["Update to ",n.update]}):null,g?null:s,!g&&!r&&o?t.jsx(A,{size:"sm",variant:"ghost",onClick:b=>{b.stopPropagation(),o()},children:"Settings"}):null,t.jsx(VD,{plugin:e}),t.jsx(rs,{label:`More for ${e.name}`,items:[{label:"Details",onSelect:i},r?{label:"Open its page",onSelect:l}:null,o?{label:"Its settings",onSelect:o}:null,e.source.kind==="directory"&&!a?{label:"Reinstall from folder",hint:"reads its files again",onSelect:()=>f()}:null,p?{label:"Enable",hint:"all of it comes back",onSelect:u}:{label:"Disable…",hint:"keeps its data",onSelect:c},"separator",{label:"Remove…",tone:"critical",onSelect:h}]})]})})}const Vie={"not-accepted":["warning","not accepted"],"up-to-date":["good","up to date"],"owner-edited":["accent","yours, edited"],"proposal-changed":["warning","proposal changed"],"owner-edited-and-proposal-changed":["warning","edited, and changed"],gone:[void 0,"gone"]};function QD({plugin:e,unlocks:n}){return n.length===0?null:t.jsxs(we,{title:"Agents it would unlock",children:[t.jsx("div",{className:"plugins-unlocks",children:t.jsx(yt,{children:n.map(s=>t.jsx(Gie,{plugin:e,unlock:s},s.id))})}),t.jsxs("p",{className:"plugins-note",children:["Nothing here is created by installing. Accept creates the agent with the tools listed; change or remove it"," ",t.jsx("a",{href:Mt,children:"on the Agents page"}),"."]})]})}function Gie({plugin:e,unlock:n}){const s=Bb(e,n.id),r=s.created?"up-to-date":n.drift.state,[a,i]=Vie[r];return t.jsxs("div",{className:"plugins-unlock",children:[t.jsx(gt,{title:t.jsxs("span",{className:"plugins-handle",children:["@",n.handle]}),sub:s.created?"Accepted just now. It is on the Agents page.":n.drift.message,side:t.jsxs("span",{className:"plugins-side",children:[t.jsx(Ae,{tone:a,children:i}),e&&r==="not-accepted"?t.jsx(A,{size:"sm",variant:"accent",disabled:s.busy,onClick:s.accept,children:"Accept"}):null]})}),t.jsx(re,{message:s.failure}),s.created?t.jsx(DP,{agent:s.created}):null]})}function Qk({svg:e,name:n,version:s,by:r,pills:a}){return t.jsxs("span",{className:"plugins-sheet-title",children:[t.jsx(ss,{svg:e,size:"lg"}),t.jsxs("span",{className:"plugins-sheet-name",children:[t.jsxs("span",{children:[n," ",t.jsx("span",{className:"plugins-ver",children:s})]}),t.jsxs("span",{className:"plugins-sheet-by",children:["by ",r,a]})]})]})}function qie({plugin:e,listing:n,notes:s,canOpen:r,busy:a,onOpen:i,onSettings:l,onClose:o,onDisable:c,onEnable:u,onRemove:h,onUpdate:f,firstStep:m,onRestart:p}){var S,C;const x=e.enabled===!1,[g,b]=d.useState(!1),[j,v]=d.useState(null),y=e.author!==void 0&&e.source.kind==="directory",k=(n==null?void 0:n.summary)??e.description,N=(e.network??((C=(S=n==null?void 0:n.claims)==null?void 0:S.manifest)==null?void 0:C.network)??[]).map(E=>E.host),w=e.uses??(n==null?void 0:n.usesWords);return t.jsxs(Qe,{title:t.jsx(Qk,{svg:n==null?void 0:n.iconSvg,name:e.name,version:e.version,by:e.author?t.jsx(Lp,{author:e.author}):HD(e),pills:t.jsxs(t.Fragment,{children:[n?t.jsxs(t.Fragment,{children:[" · ",t.jsx(Vk,{entry:n})]}):null," · ",t.jsx(VD,{plugin:e})]})}),onClose:o,foot:t.jsxs(ne,{children:[t.jsx(A,{variant:"danger-ghost",onClick:h,children:"Remove…"}),t.jsx(ft,{}),l?t.jsx(A,{variant:"ghost",onClick:l,children:"Settings"}):null,r?t.jsx(A,{onClick:i,children:"Open"}):null,x?t.jsx(A,{onClick:u,children:"Enable"}):t.jsx(A,{variant:"ghost",onClick:c,children:"Disable…"}),n!=null&&n.update?t.jsxs(A,{variant:"accent",disabled:a,onClick:()=>f(n.update),children:["Update to ",n.update]}):t.jsx(A,{disabled:a,onClick:()=>f(),children:e.source.kind==="directory"?"Reinstall from folder":"Check for an update"})]}),children:[e.error&&e.needsRelink?t.jsx(Q,{tone:"critical",action:p?t.jsx(A,{size:"sm",variant:"accent",disabled:g,onClick:()=>{b(!0),v(null),p().catch(E=>v(Fa(E))).finally(()=>b(!1))},children:"Restart buddi"}):void 0,children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:j}),t.jsx("span",{children:Iie}),t.jsx(Kt,{summary:"Technical details",children:t.jsx("code",{className:"plugins-quiet",children:e.error})})]})}):e.error?t.jsx(Q,{tone:"critical",children:e.error}):null,s&&s.length>0?t.jsx(Q,{role:"status",children:s.join(" ")}):null,x?t.jsx(Q,{children:"Disabled: its tools, pages and watchers are off and its missions are paused. Its data is kept."}):null,!x&&e.needs&&e.needs.length>0?t.jsxs(Q,{tone:"warning",action:m?t.jsx(A,{size:"sm",variant:"accent",onClick:m.run,children:m.label}):void 0,children:["Waiting: ",Yk(e),". Its tools and widgets stay off until then; its data is kept."]}):!x&&e.loaded&&e.setup?t.jsxs(Q,{tone:"warning",action:m?t.jsx(A,{size:"sm",variant:"accent",onClick:m.run,children:m.label}):void 0,children:["Not set up yet. ",e.setup.note??"Its settings say what it needs."]}):null,k?t.jsx("p",{className:"plugins-summary-full",children:k}):null,t.jsx("div",{className:"plugins-facts",children:t.jsx(un,{items:[{label:"From",value:Ty(e.source)},...y?[]:[{label:"Published by",value:Hk(e.source,e.publisher)}],{label:"Integrity",value:t.jsx(Ry,{value:e.integrity})},{label:"Installed",value:Xe(e.installedAt)},...e.installedAs?[{label:"Installed as",value:e.installedAs}]:[],{label:"Contributes",value:BD(e.contribution)},...e.network||n?[{label:"Talks to hosts",value:KD(N)}]:[],...w?[{label:"Reaches in buddi",value:Kk(w)}]:[]]})}),t.jsx(QD,{plugin:e.name,unlocks:e.unlocks})]})}function Yie({kind:e,name:n,canDisable:s,onCancel:r,onDisableInstead:a,onDisable:i,onRemove:l}){const[o,c]=d.useState(!1),[u,h]=d.useState(""),[f,m]=d.useState(!1),[p,x]=d.useState(null),g=j=>{m(!0),x(null),j().catch(v=>x(Fa(v))).finally(()=>m(!1))};if(e==="disable")return t.jsxs(Vt,{title:`Disable ${n}?`,onClose:r,foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",disabled:f,onClick:r,children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:f,onClick:()=>g(i),children:"Disable"})]}),children:[t.jsx("p",{className:"plugins-dialog-text",children:"Its tools, pages and watchers stop now and its missions pause. Its data and the agents you accepted from it are kept; enable it to have it all back."}),t.jsx(re,{message:p})]});const b=!o||u.trim()===n;return t.jsxs(Vt,{title:`Remove ${n}?`,onClose:r,foot:t.jsxs(t.Fragment,{children:[s?t.jsx(A,{variant:"ghost",size:"sm",disabled:f,onClick:a,children:"Disable instead"}):null,t.jsx(ft,{}),t.jsx(A,{variant:"ghost",disabled:f,onClick:r,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:f||!b,onClick:()=>g(()=>l(o,u.trim())),children:o?"Remove and drop its data":"Remove"})]}),children:[t.jsxs("p",{className:"plugins-dialog-text",children:["This takes ",n," off this machine and stops its code loading. Its tables and the agents you accepted from it stay."]}),t.jsxs("div",{className:"plugins-purge","data-on":o?"true":void 0,children:[t.jsxs("label",{className:"plugins-check",children:[t.jsx("input",{type:"checkbox",checked:o,onChange:j=>{c(j.target.checked),h("")}}),t.jsxs("span",{children:[t.jsx("span",{className:"plugins-check-title",children:"Also drop its data"}),t.jsx("span",{className:"plugins-check-hint",children:"Its tables are gone for good; there is no undo."})]})]}),o?t.jsx(le,{label:t.jsxs(t.Fragment,{children:["Type ",t.jsx("span",{className:"mono",children:n})," to confirm"]}),children:t.jsx("input",{autoFocus:!0,value:u,onChange:j=>h(j.target.value)})}):null]}),t.jsx(re,{message:p})]})}function Qie({plugins:e,openFor:n}){return t.jsxs(Kt,{boxed:!0,summary:`Ships with buddi · ${ia(e.length,"plugin","plugins")}`,children:[t.jsx("p",{className:"plugins-note",children:"Compiled into this buddi: nothing to approve, nothing to remove. An agent still reaches one only if its own tools line names it."}),t.jsx("div",{className:"plugins-builtins",children:e.map(s=>{const r=(s.network??[]).map(i=>i.host),a=[s.description,s.author?`By ${s.author.name}.`:null,r.length>0?`Talks to ${r.join(", ")}.`:null].filter(Boolean).join(" ");return t.jsxs("div",{className:"plugins-builtin",title:a||void 0,children:[t.jsx("span",{className:"mono",children:s.name}),t.jsxs("span",{className:"plugins-builtin-n",children:[n(s.name,"ghost"),ia(s.contribution.tools,"tool","tools")]})]},s.name)})})]})}const Jie=[{value:"days",label:"Your days"},{value:"money",label:"Money"},{value:"voice",label:"Voice"},{value:"work",label:"Work"},{value:"home",label:"Home"},{value:"other",label:"Other"}];function Xie(e,n){const s=n.trim().toLowerCase();return s===""?!0:[e.title,e.summary,e.npm,...(e.widgets??[]).map(r=>r.title)].some(r=>r.toLowerCase().includes(s))}function Zie({pricing:e}){return e.kind==="free"?t.jsx(t.Fragment,{children:"free"}):t.jsxs(t.Fragment,{children:[e.kind==="paid"?"paid":"a subscription",e.trialDays?` · ${e.trialDays} days to try`:"",e.note?` · ${e.note}`:"",e.vendor?t.jsxs(t.Fragment,{children:[" · ",t.jsx("a",{href:e.vendor,target:"_blank",rel:"noopener noreferrer",children:"its maker's page"})]}):null]})}function ele({entry:e,busy:n,onOpen:s,onInstall:r,onUpdate:a}){var i,l;return t.jsxs(Wr,{onClick:s,label:`${e.title}: details`,children:[t.jsxs("div",{className:"plugins-card-head",children:[t.jsx(ss,{svg:e.iconSvg,size:"lg"}),t.jsxs("div",{className:"plugins-card-name",children:[t.jsx("h3",{className:"ui-card-title",children:e.title}),t.jsxs("div",{className:"plugins-card-by",children:["by ",((i=e.author)==null?void 0:i.name)??"someone who gave no name",(l=e.widgets)!=null&&l.length?` · ${ia(e.widgets.length,"widget","widgets")}`:""]})]})]}),t.jsx("p",{className:"plugins-summary",children:e.summary}),t.jsxs("div",{className:"plugins-card-foot",children:[t.jsx(Vk,{entry:e}),e.installed?t.jsxs(Ae,{children:["installed ",e.installed.version]}):null,t.jsx(ft,{}),e.update?t.jsxs(A,{size:"sm",disabled:n,onClick:Bo(()=>a(e.update)),children:["Update to ",e.update]}):e.installed?null:t.jsx(A,{size:"sm",variant:"accent",disabled:n,onClick:Bo(r),children:"Review & install"})]})]})}function tle(e){var o,c;const n=(o=e.claims)==null?void 0:o.manifest,s=n==null?void 0:n.tools;if(!s)return;const r=s.filter(u=>u.tier==="auto").length,a=s.length-r,i=((c=n==null?void 0:n.sentinels)==null?void 0:c.length)??0,l=[r>0?`${r} run without asking`:null,a>0?`${a} ask${a===1?"s":""} you first`:null,i>0?`${i} on a timer`:null].filter(Boolean);return l.length===0?"none":l.join(", ")}function nle({entry:e,canOpen:n,busy:s,onOpen:r,onClose:a,onInstall:i,onUpdate:l}){var m,p,x,g,b,j,v,y;const o=(m=e.screenshots)==null?void 0:m[0],c=(((x=(p=e.claims)==null?void 0:p.manifest)==null?void 0:x.network)??[]).map(k=>k.host),u=tle(e),h=((j=(b=(g=e.claims)==null?void 0:g.manifest)==null?void 0:b.agents)==null?void 0:j.length)??0,f=(y=(v=e.claims)==null?void 0:v.package)==null?void 0:y.dependencies;return t.jsxs(Qe,{title:t.jsx(Qk,{svg:e.iconSvg,name:e.title,version:e.version,by:e.author?t.jsx(Lp,{author:e.author}):"someone who gave no name",pills:t.jsxs(t.Fragment,{children:[" · ",t.jsx(Vk,{entry:e}),e.installed?t.jsxs(t.Fragment,{children:[" · ",t.jsxs(Ae,{children:["installed ",e.installed.version]})]}):null]})}),onClose:a,foot:t.jsxs(ne,{children:[t.jsx("span",{className:"plugins-foot-note",children:e.installed&&!e.update?"This is the version you have.":"Install reads it first. Nothing of it runs until you say yes."}),t.jsx(ft,{}),n?t.jsx(A,{onClick:r,children:"Open"}):null,e.update?t.jsxs(A,{variant:"accent",disabled:s,onClick:()=>l(e.update),children:["Update to ",e.update]}):e.installed?null:t.jsx(A,{variant:"accent",disabled:s,onClick:i,children:"Review & install"})]}),children:[o?t.jsx("img",{className:"plugins-shot",src:T.marketAssetUrl(o),alt:`${e.title}, as it looks in buddi`}):null,t.jsx("p",{className:"plugins-summary-full",children:e.summary}),t.jsx(rle,{entry:e}),t.jsx("div",{className:"plugins-facts",children:t.jsx(un,{items:[{label:"Package",value:t.jsx("span",{className:"mono",children:`${e.npm}@${e.version}`})},...u?[{label:"Tools",value:u}]:[],...h>0?[{label:"Proposes",value:`${ia(h,"agent","agents")}, created only if you accept`}]:[],{label:"Talks to hosts",value:KD(c)},{label:"Reaches in buddi",value:Kk(e.usesWords??[])},...f?[{label:"Dependencies",value:f.count===0?"none":`${f.count}${f.withScripts.length===0?", none of which run install scripts":`, of which these run install scripts: ${f.withScripts.join(", ")}`}`}]:[],{label:"Licence",value:t.jsxs(t.Fragment,{children:[e.license??"not stated"," · ",t.jsx(Zie,{pricing:e.pricing})]})}]})})]})}function sle(e){return[LD(e.sizes),e.settings>0?"settings per placement":null,e.sensitive?"hidden until you show it, never on the lock screen":null].filter(Boolean).join(" · ")}function rle({entry:e}){const n=e.widgets??[];return n.length===0?null:t.jsx(we,{title:"Widgets",aside:t.jsx("span",{className:"plugins-note",children:"Sample data, drawn as Home draws it"}),children:t.jsx("div",{className:"plugins-widgets",children:n.map(s=>t.jsxs("div",{className:"plugins-widget",children:[t.jsxs("div",{className:"plugins-widget-head",children:[t.jsx("span",{className:"plugins-widget-title",children:s.title}),t.jsx("span",{className:"plugins-widget-sub",children:sle(s)})]}),t.jsx("div",{className:"plugins-widget-frames",children:bie(s.sizes).map(r=>t.jsx(FD,{widget:s,size:r,svg:e.iconSvg},r))})]},s.id))})})}function ale(e){var s,r,a,i,l;const n=(s=e.claims)==null?void 0:s.manifest;return(((r=e.widgets)==null?void 0:r.length)??0)>0&&(((a=n==null?void 0:n.tools)==null?void 0:a.length)??0)===0&&(((i=n==null?void 0:n.sentinels)==null?void 0:i.length)??0)===0&&(((l=n==null?void 0:n.agents)==null?void 0:l.length)??0)===0}function ile({entries:e,busy:n,onOpen:s,onInstall:r}){return t.jsx("div",{className:"plugins-wgrid","data-testid":"browse-widgets",children:e.flatMap(a=>(a.widgets??[]).map(i=>{var o;const l=i.sizes[0]??"small";return t.jsxs("div",{className:"plugins-witem","data-size":l,children:[t.jsx("button",{type:"button",className:"plugins-witem-frame","aria-label":`${i.title}, from ${a.title}: details`,onClick:()=>s(a),children:t.jsx(FD,{widget:i,size:l,svg:a.iconSvg})}),t.jsxs("div",{className:"plugins-witem-foot",children:[t.jsxs("span",{className:"plugins-witem-text",children:[t.jsx("span",{className:"plugins-witem-title",children:i.title}),t.jsxs("span",{className:"plugins-witem-sub",children:[ale(a)?"A widget":`${a.title} plugin`," · by ",((o=a.author)==null?void 0:o.name)??"someone who gave no name"," · ",LD(i.sizes)]})]}),a.installed?t.jsx("span",{className:"plugins-witem-have",children:"Installed"}):t.jsx(A,{size:"sm",variant:"accent",disabled:n,"aria-label":`Install ${a.title}`,onClick:()=>r(a),children:"Review & install"})]})]},`${a.npm}:${i.id}`)}))})}function lle({kind:e="all",onKind:n,navigate:s,market:r,loading:a,busy:i,onRetry:l,onOpen:o,onInstall:c,onUpdate:u}){const[h,f]=d.useState(""),[m,p]=d.useState("all"),x=(r==null?void 0:r.plugins)??[],g=[{value:"all",label:"All"},{value:"recommended",label:"Recommended"},...Jie.filter(k=>x.some(N=>N.category===k.value))],b=x.filter(k=>{var N;return e==="widgets"&&(((N=k.widgets)==null?void 0:N.length)??0)===0||m==="recommended"&&(k.trust!=="by-buddi"||k.installed)||m!=="all"&&m!=="recommended"&&k.category!==m?!1:Xie(k,h)}),j=h.trim(),v=t.jsx("div",{className:"plugins-kind",children:t.jsx(dn,{label:"Show",options:ole,value:e,onChange:k=>n==null?void 0:n(k)})}),y=e==="plugins"||e==="widgets"?null:t.jsx(cle,{kind:e,navigate:s});return e==="agents"?t.jsxs(de,{gap:"lg",children:[v,t.jsxs("p",{className:"plugins-quiet",children:[t.jsx(se,{name:"globe",size:14}),"Opening this tab fetched the list from withbuddi.com. Nothing else leaves."]}),y]}):t.jsxs(de,{gap:"lg",children:[v,t.jsxs(ne,{children:[t.jsx(xp,{grow:!0,label:e==="widgets"?"Search widgets":"Search plugins",value:h,placeholder:e==="widgets"?"Search widgets: weather, calendar, news…":"Search plugins: weather, money, calendar…",onChange:f}),t.jsx(dP,{label:"Show",options:g,value:m,onChange:p})]}),t.jsxs("p",{className:"plugins-quiet",children:[t.jsx(se,{name:"globe",size:14}),"Opening this tab fetched the list from withbuddi.com. Nothing else leaves."," ",t.jsx("button",{type:"button",className:"plugins-link",disabled:a,onClick:l,children:"Refresh"})]}),r===null||a&&r.unavailable?t.jsx(Ce,{children:"Asking withbuddi.com…"}):r.unavailable?t.jsx(Q,{tone:"warning",action:t.jsx(A,{size:"sm",disabled:a,onClick:l,children:"Try again"}),children:r.unavailable}):t.jsxs(t.Fragment,{children:[r.stale?t.jsxs(Q,{tone:"warning",action:t.jsx(A,{size:"sm",disabled:a,onClick:l,children:"Try again"}),children:["withbuddi.com did not answer, so this is the list as it was",r.fetchedAt?` ${Xe(r.fetchedAt)}`:" last time","."]}):null,b.length>0&&e==="widgets"?t.jsx(ile,{entries:b,busy:i,onOpen:o,onInstall:c}):b.length>0?t.jsx("div",{className:"plugins-grid",children:b.map(k=>t.jsx(ele,{entry:k,busy:i,onOpen:()=>o(k),onInstall:()=>c(k),onUpdate:N=>u(k,N)},k.npm))}):t.jsx(Ce,{warm:!0,title:"Nothing listed matches",children:j!==""?`No ${e==="widgets"?"widget":"plugin"} on withbuddi.com mentions “${j}”.`:e==="widgets"&&!x.some(k=>{var N;return(((N=k.widgets)==null?void 0:N.length)??0)>0})?"No plugin on withbuddi.com brings a widget yet.":x.length===0?"withbuddi.com lists no plugins yet.":"Nothing on this shelf yet."})]}),y]})}const ole=[{value:"all",label:"All"},{value:"plugins",label:"Plugins"},{value:"widgets",label:"Widgets"},{value:"agents",label:"Agents"}];function cle({kind:e,navigate:n}){const s=ve(()=>T.catalogue(),[]),r=qb(),a=c=>n==null?void 0:n(c),i=s.data;if(!i)return s.error?t.jsx(Q,{tone:"warning",children:s.error}):t.jsx(Ce,{children:"Asking withbuddi.com…"});if(i.unavailable)return e==="agents"?t.jsx(Q,{tone:"warning",children:i.unavailable}):null;const l=i.agents.filter(c=>Us(c)==="ready"),o=e==="all"?l.slice(0,3):i.agents;return o.length===0?null:t.jsx(we,{title:e==="all"?"Teammates":void 0,aside:t.jsx("a",{href:En(),onClick:c=>{c.preventDefault(),a(En())},children:e==="all"?`See all ${i.agents.length}`:"Open the catalogue"}),children:t.jsx("div",{className:"plugins-grid","data-testid":"browse-agents",children:o.map(c=>t.jsx(BP,{entry:c,loaded:r,onOpen:()=>a(En(c.name)),onAdd:()=>a(En(c.name)),onUpdate:()=>a(En(c.name))},c.name))})})}var Sd={},ule=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},JD={},Zs={};let Jk;const dle=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Zs.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17};Zs.getSymbolTotalCodewords=function(n){return dle[n]};Zs.getBCHDigit=function(e){let n=0;for(;e!==0;)n++,e>>>=1;return n};Zs.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');Jk=n};Zs.isKanjiModeEnabled=function(){return typeof Jk<"u"};Zs.toSJIS=function(n){return Jk(n)};var Fp={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function n(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+s)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,a){if(e.isValid(r))return r;try{return n(r)}catch{return a}}})(Fp);function XD(){this.buffer=[],this.length=0}XD.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let s=0;s<n;s++)this.putBit((e>>>n-s-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};var hle=XD;function Cd(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Cd.prototype.set=function(e,n,s,r){const a=e*this.size+n;this.data[a]=s,r&&(this.reservedBit[a]=!0)};Cd.prototype.get=function(e,n){return this.data[e*this.size+n]};Cd.prototype.xor=function(e,n,s){this.data[e*this.size+n]^=s};Cd.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]};var fle=Cd,ZD={};(function(e){const n=Zs.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const a=Math.floor(r/7)+2,i=n(r),l=i===145?26:Math.ceil((i-13)/(2*a-2))*2,o=[i-7];for(let c=1;c<a-1;c++)o[c]=o[c-1]-l;return o.push(6),o.reverse()},e.getPositions=function(r){const a=[],i=e.getRowColCoords(r),l=i.length;for(let o=0;o<l;o++)for(let c=0;c<l;c++)o===0&&c===0||o===0&&c===l-1||o===l-1&&c===0||a.push([i[o],i[c]]);return a}})(ZD);var eL={};const mle=Zs.getSymbolSize,BE=7;eL.getPositions=function(n){const s=mle(n);return[[0,0],[s-BE,0],[0,s-BE]]};var tL={};(function(e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const n={N1:3,N2:3,N3:40,N4:10};e.isValid=function(a){return a!=null&&a!==""&&!isNaN(a)&&a>=0&&a<=7},e.from=function(a){return e.isValid(a)?parseInt(a,10):void 0},e.getPenaltyN1=function(a){const i=a.size;let l=0,o=0,c=0,u=null,h=null;for(let f=0;f<i;f++){o=c=0,u=h=null;for(let m=0;m<i;m++){let p=a.get(f,m);p===u?o++:(o>=5&&(l+=n.N1+(o-5)),u=p,o=1),p=a.get(m,f),p===h?c++:(c>=5&&(l+=n.N1+(c-5)),h=p,c=1)}o>=5&&(l+=n.N1+(o-5)),c>=5&&(l+=n.N1+(c-5))}return l},e.getPenaltyN2=function(a){const i=a.size;let l=0;for(let o=0;o<i-1;o++)for(let c=0;c<i-1;c++){const u=a.get(o,c)+a.get(o,c+1)+a.get(o+1,c)+a.get(o+1,c+1);(u===4||u===0)&&l++}return l*n.N2},e.getPenaltyN3=function(a){const i=a.size;let l=0,o=0,c=0;for(let u=0;u<i;u++){o=c=0;for(let h=0;h<i;h++)o=o<<1&2047|a.get(u,h),h>=10&&(o===1488||o===93)&&l++,c=c<<1&2047|a.get(h,u),h>=10&&(c===1488||c===93)&&l++}return l*n.N3},e.getPenaltyN4=function(a){let i=0;const l=a.data.length;for(let c=0;c<l;c++)i+=a.data[c];return Math.abs(Math.ceil(i*100/l/5)-10)*n.N4};function s(r,a,i){switch(r){case e.Patterns.PATTERN000:return(a+i)%2===0;case e.Patterns.PATTERN001:return a%2===0;case e.Patterns.PATTERN010:return i%3===0;case e.Patterns.PATTERN011:return(a+i)%3===0;case e.Patterns.PATTERN100:return(Math.floor(a/2)+Math.floor(i/3))%2===0;case e.Patterns.PATTERN101:return a*i%2+a*i%3===0;case e.Patterns.PATTERN110:return(a*i%2+a*i%3)%2===0;case e.Patterns.PATTERN111:return(a*i%3+(a+i)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}e.applyMask=function(a,i){const l=i.size;for(let o=0;o<l;o++)for(let c=0;c<l;c++)i.isReserved(c,o)||i.xor(c,o,s(a,c,o))},e.getBestMask=function(a,i){const l=Object.keys(e.Patterns).length;let o=0,c=1/0;for(let u=0;u<l;u++){i(u),e.applyMask(u,a);const h=e.getPenaltyN1(a)+e.getPenaltyN2(a)+e.getPenaltyN3(a)+e.getPenaltyN4(a);e.applyMask(u,a),h<c&&(c=h,o=u)}return o}})(tL);var _p={};const ni=Fp,Rh=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Ih=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];_p.getBlocksCount=function(n,s){switch(s){case ni.L:return Rh[(n-1)*4+0];case ni.M:return Rh[(n-1)*4+1];case ni.Q:return Rh[(n-1)*4+2];case ni.H:return Rh[(n-1)*4+3];default:return}};_p.getTotalCodewordsCount=function(n,s){switch(s){case ni.L:return Ih[(n-1)*4+0];case ni.M:return Ih[(n-1)*4+1];case ni.Q:return Ih[(n-1)*4+2];case ni.H:return Ih[(n-1)*4+3];default:return}};var nL={},zp={};const ou=new Uint8Array(512),jm=new Uint8Array(256);(function(){let n=1;for(let s=0;s<255;s++)ou[s]=n,jm[n]=s,n<<=1,n&256&&(n^=285);for(let s=255;s<512;s++)ou[s]=ou[s-255]})();zp.log=function(n){if(n<1)throw new Error("log("+n+")");return jm[n]};zp.exp=function(n){return ou[n]};zp.mul=function(n,s){return n===0||s===0?0:ou[jm[n]+jm[s]]};(function(e){const n=zp;e.mul=function(r,a){const i=new Uint8Array(r.length+a.length-1);for(let l=0;l<r.length;l++)for(let o=0;o<a.length;o++)i[l+o]^=n.mul(r[l],a[o]);return i},e.mod=function(r,a){let i=new Uint8Array(r);for(;i.length-a.length>=0;){const l=i[0];for(let c=0;c<a.length;c++)i[c]^=n.mul(a[c],l);let o=0;for(;o<i.length&&i[o]===0;)o++;i=i.slice(o)}return i},e.generateECPolynomial=function(r){let a=new Uint8Array([1]);for(let i=0;i<r;i++)a=e.mul(a,new Uint8Array([1,n.exp(i)]));return a}})(nL);const sL=nL;function Xk(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}Xk.prototype.initialize=function(n){this.degree=n,this.genPoly=sL.generateECPolynomial(this.degree)};Xk.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const s=new Uint8Array(n.length+this.degree);s.set(n);const r=sL.mod(s,this.genPoly),a=this.degree-r.length;if(a>0){const i=new Uint8Array(this.degree);return i.set(r,a),i}return r};var ple=Xk,rL={},Oi={},Zk={};Zk.isValid=function(n){return!isNaN(n)&&n>=1&&n<=40};var ga={};const aL="[0-9]+",gle="[A-Z $%*+\\-./:]+";let sd="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";sd=sd.replace(/u/g,"\\u");const xle="(?:(?![A-Z0-9 $%*+\\-./:]|"+sd+`)(?:.|[\r
|
|
148
|
+
]))+`;ga.KANJI=new RegExp(sd,"g");ga.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");ga.BYTE=new RegExp(xle,"g");ga.NUMERIC=new RegExp(aL,"g");ga.ALPHANUMERIC=new RegExp(gle,"g");const vle=new RegExp("^"+sd+"$"),jle=new RegExp("^"+aL+"$"),yle=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");ga.testKanji=function(n){return vle.test(n)};ga.testNumeric=function(n){return jle.test(n)};ga.testAlphanumeric=function(n){return yle.test(n)};(function(e){const n=Zk,s=ga;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(i,l){if(!i.ccBits)throw new Error("Invalid mode: "+i);if(!n.isValid(l))throw new Error("Invalid version: "+l);return l>=1&&l<10?i.ccBits[0]:l<27?i.ccBits[1]:i.ccBits[2]},e.getBestModeForData=function(i){return s.testNumeric(i)?e.NUMERIC:s.testAlphanumeric(i)?e.ALPHANUMERIC:s.testKanji(i)?e.KANJI:e.BYTE},e.toString=function(i){if(i&&i.id)return i.id;throw new Error("Invalid mode")},e.isValid=function(i){return i&&i.bit&&i.ccBits};function r(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+a)}}e.from=function(i,l){if(e.isValid(i))return i;try{return r(i)}catch{return l}}})(Oi);(function(e){const n=Zs,s=_p,r=Fp,a=Oi,i=Zk,l=7973,o=n.getBCHDigit(l);function c(m,p,x){for(let g=1;g<=40;g++)if(p<=e.getCapacity(g,x,m))return g}function u(m,p){return a.getCharCountIndicator(m,p)+4}function h(m,p){let x=0;return m.forEach(function(g){const b=u(g.mode,p);x+=b+g.getBitsLength()}),x}function f(m,p){for(let x=1;x<=40;x++)if(h(m,x)<=e.getCapacity(x,p,a.MIXED))return x}e.from=function(p,x){return i.isValid(p)?parseInt(p,10):x},e.getCapacity=function(p,x,g){if(!i.isValid(p))throw new Error("Invalid QR Code version");typeof g>"u"&&(g=a.BYTE);const b=n.getSymbolTotalCodewords(p),j=s.getTotalCodewordsCount(p,x),v=(b-j)*8;if(g===a.MIXED)return v;const y=v-u(g,p);switch(g){case a.NUMERIC:return Math.floor(y/10*3);case a.ALPHANUMERIC:return Math.floor(y/11*2);case a.KANJI:return Math.floor(y/13);case a.BYTE:default:return Math.floor(y/8)}},e.getBestVersionForData=function(p,x){let g;const b=r.from(x,r.M);if(Array.isArray(p)){if(p.length>1)return f(p,b);if(p.length===0)return 1;g=p[0]}else g=p;return c(g.mode,g.getLength(),b)},e.getEncodedBits=function(p){if(!i.isValid(p)||p<7)throw new Error("Invalid QR Code version");let x=p<<12;for(;n.getBCHDigit(x)-o>=0;)x^=l<<n.getBCHDigit(x)-o;return p<<12|x}})(rL);var iL={};const Py=Zs,lL=1335,wle=21522,WE=Py.getBCHDigit(lL);iL.getEncodedBits=function(n,s){const r=n.bit<<3|s;let a=r<<10;for(;Py.getBCHDigit(a)-WE>=0;)a^=lL<<Py.getBCHDigit(a)-WE;return(r<<10|a)^wle};var oL={};const ble=Oi;function Wo(e){this.mode=ble.NUMERIC,this.data=e.toString()}Wo.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)};Wo.prototype.getLength=function(){return this.data.length};Wo.prototype.getBitsLength=function(){return Wo.getBitsLength(this.data.length)};Wo.prototype.write=function(n){let s,r,a;for(s=0;s+3<=this.data.length;s+=3)r=this.data.substr(s,3),a=parseInt(r,10),n.put(a,10);const i=this.data.length-s;i>0&&(r=this.data.substr(s),a=parseInt(r,10),n.put(a,i*3+1))};var kle=Wo;const Nle=Oi,Ax=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Ho(e){this.mode=Nle.ALPHANUMERIC,this.data=e}Ho.getBitsLength=function(n){return 11*Math.floor(n/2)+6*(n%2)};Ho.prototype.getLength=function(){return this.data.length};Ho.prototype.getBitsLength=function(){return Ho.getBitsLength(this.data.length)};Ho.prototype.write=function(n){let s;for(s=0;s+2<=this.data.length;s+=2){let r=Ax.indexOf(this.data[s])*45;r+=Ax.indexOf(this.data[s+1]),n.put(r,11)}this.data.length%2&&n.put(Ax.indexOf(this.data[s]),6)};var Sle=Ho;const Cle=Oi;function Ko(e){this.mode=Cle.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Ko.getBitsLength=function(n){return n*8};Ko.prototype.getLength=function(){return this.data.length};Ko.prototype.getBitsLength=function(){return Ko.getBitsLength(this.data.length)};Ko.prototype.write=function(e){for(let n=0,s=this.data.length;n<s;n++)e.put(this.data[n],8)};var Ele=Ko;const Ale=Oi,$le=Zs;function Vo(e){this.mode=Ale.KANJI,this.data=e}Vo.getBitsLength=function(n){return n*13};Vo.prototype.getLength=function(){return this.data.length};Vo.prototype.getBitsLength=function(){return Vo.getBitsLength(this.data.length)};Vo.prototype.write=function(e){let n;for(n=0;n<this.data.length;n++){let s=$le.toSJIS(this.data[n]);if(s>=33088&&s<=40956)s-=33088;else if(s>=57408&&s<=60351)s-=49472;else throw new Error("Invalid SJIS character: "+this.data[n]+`
|
|
149
|
+
Make sure your charset is UTF-8`);s=(s>>>8&255)*192+(s&255),e.put(s,13)}};var Tle=Vo,cL={exports:{}};(function(e){var n={single_source_shortest_paths:function(s,r,a){var i={},l={};l[r]=0;var o=n.PriorityQueue.make();o.push(r,0);for(var c,u,h,f,m,p,x,g,b;!o.empty();){c=o.pop(),u=c.value,f=c.cost,m=s[u]||{};for(h in m)m.hasOwnProperty(h)&&(p=m[h],x=f+p,g=l[h],b=typeof l[h]>"u",(b||g>x)&&(l[h]=x,o.push(h,x),i[h]=u))}if(typeof a<"u"&&typeof l[a]>"u"){var j=["Could not find a path from ",r," to ",a,"."].join("");throw new Error(j)}return i},extract_shortest_path_from_predecessor_list:function(s,r){for(var a=[],i=r;i;)a.push(i),s[i],i=s[i];return a.reverse(),a},find_path:function(s,r,a){var i=n.single_source_shortest_paths(s,r,a);return n.extract_shortest_path_from_predecessor_list(i,a)},PriorityQueue:{make:function(s){var r=n.PriorityQueue,a={},i;s=s||{};for(i in r)r.hasOwnProperty(i)&&(a[i]=r[i]);return a.queue=[],a.sorter=s.sorter||r.default_sorter,a},default_sorter:function(s,r){return s.cost-r.cost},push:function(s,r){var a={value:s,cost:r};this.queue.push(a),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=n})(cL);var Rle=cL.exports;(function(e){const n=Oi,s=kle,r=Sle,a=Ele,i=Tle,l=ga,o=Zs,c=Rle;function u(j){return unescape(encodeURIComponent(j)).length}function h(j,v,y){const k=[];let N;for(;(N=j.exec(y))!==null;)k.push({data:N[0],index:N.index,mode:v,length:N[0].length});return k}function f(j){const v=h(l.NUMERIC,n.NUMERIC,j),y=h(l.ALPHANUMERIC,n.ALPHANUMERIC,j);let k,N;return o.isKanjiModeEnabled()?(k=h(l.BYTE,n.BYTE,j),N=h(l.KANJI,n.KANJI,j)):(k=h(l.BYTE_KANJI,n.BYTE,j),N=[]),v.concat(y,k,N).sort(function(S,C){return S.index-C.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function m(j,v){switch(v){case n.NUMERIC:return s.getBitsLength(j);case n.ALPHANUMERIC:return r.getBitsLength(j);case n.KANJI:return i.getBitsLength(j);case n.BYTE:return a.getBitsLength(j)}}function p(j){return j.reduce(function(v,y){const k=v.length-1>=0?v[v.length-1]:null;return k&&k.mode===y.mode?(v[v.length-1].data+=y.data,v):(v.push(y),v)},[])}function x(j){const v=[];for(let y=0;y<j.length;y++){const k=j[y];switch(k.mode){case n.NUMERIC:v.push([k,{data:k.data,mode:n.ALPHANUMERIC,length:k.length},{data:k.data,mode:n.BYTE,length:k.length}]);break;case n.ALPHANUMERIC:v.push([k,{data:k.data,mode:n.BYTE,length:k.length}]);break;case n.KANJI:v.push([k,{data:k.data,mode:n.BYTE,length:u(k.data)}]);break;case n.BYTE:v.push([{data:k.data,mode:n.BYTE,length:u(k.data)}])}}return v}function g(j,v){const y={},k={start:{}};let N=["start"];for(let w=0;w<j.length;w++){const S=j[w],C=[];for(let E=0;E<S.length;E++){const $=S[E],R=""+w+E;C.push(R),y[R]={node:$,lastCount:0},k[R]={};for(let P=0;P<N.length;P++){const O=N[P];y[O]&&y[O].node.mode===$.mode?(k[O][R]=m(y[O].lastCount+$.length,$.mode)-m(y[O].lastCount,$.mode),y[O].lastCount+=$.length):(y[O]&&(y[O].lastCount=$.length),k[O][R]=m($.length,$.mode)+4+n.getCharCountIndicator($.mode,v))}}N=C}for(let w=0;w<N.length;w++)k[N[w]].end=0;return{map:k,table:y}}function b(j,v){let y;const k=n.getBestModeForData(j);if(y=n.from(v,k),y!==n.BYTE&&y.bit<k.bit)throw new Error('"'+j+'" cannot be encoded with mode '+n.toString(y)+`.
|
|
150
|
+
Suggested mode is: `+n.toString(k));switch(y===n.KANJI&&!o.isKanjiModeEnabled()&&(y=n.BYTE),y){case n.NUMERIC:return new s(j);case n.ALPHANUMERIC:return new r(j);case n.KANJI:return new i(j);case n.BYTE:return new a(j)}}e.fromArray=function(v){return v.reduce(function(y,k){return typeof k=="string"?y.push(b(k,null)):k.data&&y.push(b(k.data,k.mode)),y},[])},e.fromString=function(v,y){const k=f(v,o.isKanjiModeEnabled()),N=x(k),w=g(N,y),S=c.find_path(w.map,"start","end"),C=[];for(let E=1;E<S.length-1;E++)C.push(w.table[S[E]].node);return e.fromArray(p(C))},e.rawSplit=function(v){return e.fromArray(f(v,o.isKanjiModeEnabled()))}})(oL);const Up=Zs,$x=Fp,Ile=hle,Ple=fle,Mle=ZD,Ole=eL,My=tL,Oy=_p,Dle=ple,ym=rL,Lle=iL,Fle=Oi,Tx=oL;function _le(e,n){const s=e.size,r=Ole.getPositions(n);for(let a=0;a<r.length;a++){const i=r[a][0],l=r[a][1];for(let o=-1;o<=7;o++)if(!(i+o<=-1||s<=i+o))for(let c=-1;c<=7;c++)l+c<=-1||s<=l+c||(o>=0&&o<=6&&(c===0||c===6)||c>=0&&c<=6&&(o===0||o===6)||o>=2&&o<=4&&c>=2&&c<=4?e.set(i+o,l+c,!0,!0):e.set(i+o,l+c,!1,!0))}}function zle(e){const n=e.size;for(let s=8;s<n-8;s++){const r=s%2===0;e.set(s,6,r,!0),e.set(6,s,r,!0)}}function Ule(e,n){const s=Mle.getPositions(n);for(let r=0;r<s.length;r++){const a=s[r][0],i=s[r][1];for(let l=-2;l<=2;l++)for(let o=-2;o<=2;o++)l===-2||l===2||o===-2||o===2||l===0&&o===0?e.set(a+l,i+o,!0,!0):e.set(a+l,i+o,!1,!0)}}function Ble(e,n){const s=e.size,r=ym.getEncodedBits(n);let a,i,l;for(let o=0;o<18;o++)a=Math.floor(o/3),i=o%3+s-8-3,l=(r>>o&1)===1,e.set(a,i,l,!0),e.set(i,a,l,!0)}function Rx(e,n,s){const r=e.size,a=Lle.getEncodedBits(n,s);let i,l;for(i=0;i<15;i++)l=(a>>i&1)===1,i<6?e.set(i,8,l,!0):i<8?e.set(i+1,8,l,!0):e.set(r-15+i,8,l,!0),i<8?e.set(8,r-i-1,l,!0):i<9?e.set(8,15-i-1+1,l,!0):e.set(8,15-i-1,l,!0);e.set(r-8,8,1,!0)}function Wle(e,n){const s=e.size;let r=-1,a=s-1,i=7,l=0;for(let o=s-1;o>0;o-=2)for(o===6&&o--;;){for(let c=0;c<2;c++)if(!e.isReserved(a,o-c)){let u=!1;l<n.length&&(u=(n[l]>>>i&1)===1),e.set(a,o-c,u),i--,i===-1&&(l++,i=7)}if(a+=r,a<0||s<=a){a-=r,r=-r;break}}}function Hle(e,n,s){const r=new Ile;s.forEach(function(c){r.put(c.mode.bit,4),r.put(c.getLength(),Fle.getCharCountIndicator(c.mode,e)),c.write(r)});const a=Up.getSymbolTotalCodewords(e),i=Oy.getTotalCodewordsCount(e,n),l=(a-i)*8;for(r.getLengthInBits()+4<=l&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const o=(l-r.getLengthInBits())/8;for(let c=0;c<o;c++)r.put(c%2?17:236,8);return Kle(r,e,n)}function Kle(e,n,s){const r=Up.getSymbolTotalCodewords(n),a=Oy.getTotalCodewordsCount(n,s),i=r-a,l=Oy.getBlocksCount(n,s),o=r%l,c=l-o,u=Math.floor(r/l),h=Math.floor(i/l),f=h+1,m=u-h,p=new Dle(m);let x=0;const g=new Array(l),b=new Array(l);let j=0;const v=new Uint8Array(e.buffer);for(let S=0;S<l;S++){const C=S<c?h:f;g[S]=v.slice(x,x+C),b[S]=p.encode(g[S]),x+=C,j=Math.max(j,C)}const y=new Uint8Array(r);let k=0,N,w;for(N=0;N<j;N++)for(w=0;w<l;w++)N<g[w].length&&(y[k++]=g[w][N]);for(N=0;N<m;N++)for(w=0;w<l;w++)y[k++]=b[w][N];return y}function Vle(e,n,s,r){let a;if(Array.isArray(e))a=Tx.fromArray(e);else if(typeof e=="string"){let u=n;if(!u){const h=Tx.rawSplit(e);u=ym.getBestVersionForData(h,s)}a=Tx.fromString(e,u||40)}else throw new Error("Invalid data");const i=ym.getBestVersionForData(a,s);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!n)n=i;else if(n<i)throw new Error(`
|
|
151
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
152
|
+
Minimum version required to store current data is: `+i+`.
|
|
153
|
+
`);const l=Hle(n,s,a),o=Up.getSymbolSize(n),c=new Ple(o);return _le(c,n),zle(c),Ule(c,n),Rx(c,s,0),n>=7&&Ble(c,n),Wle(c,l),isNaN(r)&&(r=My.getBestMask(c,Rx.bind(null,c,s))),My.applyMask(r,c),Rx(c,s,r),{modules:c,version:n,errorCorrectionLevel:s,maskPattern:r,segments:a}}JD.create=function(n,s){if(typeof n>"u"||n==="")throw new Error("No input text");let r=$x.M,a,i;return typeof s<"u"&&(r=$x.from(s.errorCorrectionLevel,$x.M),a=ym.from(s.version),i=My.from(s.maskPattern),s.toSJISFunc&&Up.setToSJISFunction(s.toSJISFunc)),Vle(n,a,r,i)};var uL={},e0={};(function(e){function n(s){if(typeof s=="number"&&(s=s.toString()),typeof s!="string")throw new Error("Color should be defined as hex string");let r=s.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+s);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(i){return[i,i]}))),r.length===6&&r.push("F","F");const a=parseInt(r.join(""),16);return{r:a>>24&255,g:a>>16&255,b:a>>8&255,a:a&255,hex:"#"+r.slice(0,6).join("")}}e.getOptions=function(r){r||(r={}),r.color||(r.color={});const a=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,i=r.width&&r.width>=21?r.width:void 0,l=r.scale||4;return{width:i,scale:i?4:l,margin:a,color:{dark:n(r.color.dark||"#000000ff"),light:n(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},e.getScale=function(r,a){return a.width&&a.width>=r+a.margin*2?a.width/(r+a.margin*2):a.scale},e.getImageWidth=function(r,a){const i=e.getScale(r,a);return Math.floor((r+a.margin*2)*i)},e.qrToImageData=function(r,a,i){const l=a.modules.size,o=a.modules.data,c=e.getScale(l,i),u=Math.floor((l+i.margin*2)*c),h=i.margin*c,f=[i.color.light,i.color.dark];for(let m=0;m<u;m++)for(let p=0;p<u;p++){let x=(m*u+p)*4,g=i.color.light;if(m>=h&&p>=h&&m<u-h&&p<u-h){const b=Math.floor((m-h)/c),j=Math.floor((p-h)/c);g=f[o[b*l+j]?1:0]}r[x++]=g.r,r[x++]=g.g,r[x++]=g.b,r[x]=g.a}}})(e0);(function(e){const n=e0;function s(a,i,l){a.clearRect(0,0,i.width,i.height),i.style||(i.style={}),i.height=l,i.width=l,i.style.height=l+"px",i.style.width=l+"px"}function r(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}e.render=function(i,l,o){let c=o,u=l;typeof c>"u"&&(!l||!l.getContext)&&(c=l,l=void 0),l||(u=r()),c=n.getOptions(c);const h=n.getImageWidth(i.modules.size,c),f=u.getContext("2d"),m=f.createImageData(h,h);return n.qrToImageData(m.data,i,c),s(f,u,h),f.putImageData(m,0,0),u},e.renderToDataURL=function(i,l,o){let c=o;typeof c>"u"&&(!l||!l.getContext)&&(c=l,l=void 0),c||(c={});const u=e.render(i,l,c),h=c.type||"image/png",f=c.rendererOpts||{};return u.toDataURL(h,f.quality)}})(uL);var dL={};const Gle=e0;function HE(e,n){const s=e.a/255,r=n+'="'+e.hex+'"';return s<1?r+" "+n+'-opacity="'+s.toFixed(2).slice(1)+'"':r}function Ix(e,n,s){let r=e+n;return typeof s<"u"&&(r+=" "+s),r}function qle(e,n,s){let r="",a=0,i=!1,l=0;for(let o=0;o<e.length;o++){const c=Math.floor(o%n),u=Math.floor(o/n);!c&&!i&&(i=!0),e[o]?(l++,o>0&&c>0&&e[o-1]||(r+=i?Ix("M",c+s,.5+u+s):Ix("m",a,0),a=0,i=!1),c+1<n&&e[o+1]||(r+=Ix("h",l),l=0)):a++}return r}dL.render=function(n,s,r){const a=Gle.getOptions(s),i=n.modules.size,l=n.modules.data,o=i+a.margin*2,c=a.color.light.a?"<path "+HE(a.color.light,"fill")+' d="M0 0h'+o+"v"+o+'H0z"/>':"",u="<path "+HE(a.color.dark,"stroke")+' d="'+qle(l,i,a.margin)+'"/>',h='viewBox="0 0 '+o+" "+o+'"',m='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+h+' shape-rendering="crispEdges">'+c+u+`</svg>
|
|
154
|
+
`;return typeof r=="function"&&r(null,m),m};const Yle=ule,Dy=JD,hL=uL,Qle=dL;function t0(e,n,s,r,a){const i=[].slice.call(arguments,1),l=i.length,o=typeof i[l-1]=="function";if(!o&&!Yle())throw new Error("Callback required as last argument");if(o){if(l<2)throw new Error("Too few arguments provided");l===2?(a=s,s=n,n=r=void 0):l===3&&(n.getContext&&typeof a>"u"?(a=r,r=void 0):(a=r,r=s,s=n,n=void 0))}else{if(l<1)throw new Error("Too few arguments provided");return l===1?(s=n,n=r=void 0):l===2&&!n.getContext&&(r=s,s=n,n=void 0),new Promise(function(c,u){try{const h=Dy.create(s,r);c(e(h,n,r))}catch(h){u(h)}})}try{const c=Dy.create(s,r);a(null,e(c,n,r))}catch(c){a(c)}}Sd.create=Dy.create;Sd.toCanvas=t0.bind(null,hL.render);Sd.toDataURL=t0.bind(null,hL.renderToDataURL);Sd.toString=t0.bind(null,function(e,n,s){return Qle.render(e,s)});async function Jle(e){const n=await Sd.toString(e,{type:"svg",margin:4,errorCorrectionLevel:"M"});return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`}const KE=10*6e4,Xle=2e3;function fL(e,n){const[s,r]=d.useState(null),[a,i]=d.useState(null),[l,o]=d.useState(!1),[c,u]=d.useState(!1),h=d.useRef(e);h.current=e;const f=d.useRef(n);f.current=n;const m=d.useCallback(async()=>{const p=await T.telegramPairing();r(p),u(!1),o(!1),i(await Jle(p.link).catch(()=>""))},[]);return d.useEffect(()=>{if(!s||l||c)return;let p=!1;const x=Math.min(Date.parse(s.expiresAt)||Date.now()+KE,Date.now()+KE),g=window.setInterval(()=>{if(Date.now()>=x){u(!0);return}h.current().then(b=>{var j;p||!b||(o(!0),(j=f.current)==null||j.call(f))}).catch(()=>{})},Xle);return()=>{p=!0,window.clearInterval(g)}},[s,l,c]),{offer:s,square:a,paired:l,stale:c,ask:m}}function Zle({offer:e,square:n,children:s}){return t.jsxs("div",{className:"meet-pair",children:[n?t.jsx("img",{className:"meet-qr",src:n,alt:e.link}):null,t.jsx("a",{className:"meet-link",href:e.link,target:"_blank",rel:"noreferrer",children:e.link}),s]})}function eoe({offer:e,square:n,bot:s,status:r,paired:a}){const[i,l]=d.useState(!1),o=()=>{Promise.resolve().then(()=>{var c;return(c=navigator.clipboard)==null?void 0:c.writeText(e.link)}).then(()=>l(!0)).catch(()=>{})};return t.jsxs("div",{className:"tg-pair","data-testid":"pairing-tile",children:[t.jsx("div",{className:"tg-pair-tile",children:n?t.jsx("img",{className:"tg-pair-qr",src:n,alt:s?`QR code for @${s}`:"QR code for your buddi bot"}):null}),s?t.jsxs("span",{className:"tg-pair-bot",children:["@",s]}):null,t.jsxs("div",{className:"tg-pair-actions",children:[t.jsx(A,{onClick:o,children:i?"Copied":"Copy link"}),t.jsx(it,{variant:"accent",href:e.link,target:"_blank",rel:"noreferrer",children:"Open in Telegram"})]}),t.jsxs("p",{className:"tg-pair-status",role:"status","data-paired":a?"true":void 0,children:[a?null:t.jsxs("span",{className:"wiz-pulse","aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]}),r]})]})}const mL=new Set(["approval","question"]),cf={approval:{label:"Approvals",hint:"A run nobody is watching wants to do something gated."},question:{label:"Questions",hint:"A run asked you something and waits."},watcher:{label:"Watchers",hint:"A watcher or a source found something."},reminder:{label:"Reminders",hint:"A reminder an agent promised you came due."},failure:{label:"Failures",hint:"Background jobs died and will not be retried."},recap:{label:"Reports",hint:"Mission reports, the weekly recap, answers to actions you tapped."},plugin:{label:"Plugins",hint:"A plugin that may send you messages has something to say."},agent:{label:"Messages from your agents",hint:"An agent told you something itself."}},toe=new Set(["agent"]),noe={maxUrgency:"now",muted:[]};function soe(e,n){var a;const s=cf[e.kind].label.toLowerCase();return e.kind!=="agent"||!e.agentId?s:`from ${((a=n.find(i=>i.id===e.agentId))==null?void 0:a.name)??e.agentId}`}function roe({timezone:e}){var v,y,k;const n=ve(()=>T.notificationSettings(),[]),s=ve(()=>T.agents(),[]),r=ve(()=>T.notifications(20),[],3e4),a=ve(()=>T.telegram(),[]),i=d.useRef(!1);d.useEffect(()=>{var N,w;i.current||!r.data||window.location.hash!==mj||(i.current=!0,(w=(N=document.getElementById("notifications-recent"))==null?void 0:N.scrollIntoView)==null||w.call(N,{block:"start"}))},[r.data]);const[l,o]=d.useState(null),[c,u]=d.useState(!1),[h,f]=d.useState(!1),[m,p]=d.useState(null),x=((v=n.data)==null?void 0:v.channels)??[],g=l??((y=n.data)==null?void 0:y.settings),b=N=>{g&&(f(!1),o({...g,...N}))},j=()=>{g&&(u(!0),f(!1),p(null),T.saveNotificationSettings(g).then(()=>{f(!0),o(null),n.reload()}).catch(N=>p(N instanceof pe?N.message:String(N))).finally(()=>u(!1)))};return t.jsxs(de,{gap:"lg",children:[t.jsx(we,{title:"Notifications",aside:"What buddi tells you when you are not looking at this page.",panel:!0,foot:t.jsx(A,{variant:"accent",disabled:c||!g,onClick:j,children:"Save"}),children:t.jsxs(de,{divided:!0,children:[t.jsx(re,{message:n.error??m}),t.jsx(we,{title:"Where buddi reaches you",children:g?x.length===0?t.jsxs("p",{className:"ui-card-meta",children:["No channel yet, so everything waits for you here. ",t.jsx("a",{href:We("telegram"),children:"Set up Telegram"})," and buddi can reach you on your phone."]}):t.jsxs(de,{gap:"sm",children:[x.map(N=>{var w;return t.jsx(doe,{channel:N,checked:(g.defaultChannel??((w=x[0])==null?void 0:w.kind))===N.kind,onPick:()=>b({defaultChannel:N.kind})},N.kind)}),t.jsx(uoe,{status:a.data,listed:x.some(N=>N.kind.startsWith("telegram"))})]}):t.jsx(Ce,{children:"Loading…"})}),t.jsx(we,{title:"By kind",children:g?t.jsxs(de,{gap:"sm",children:[RU.filter(N=>!toe.has(N)).map(N=>t.jsxs("div",{className:"pref-row nt-kind",children:[t.jsxs("div",{className:"pref-text",children:[t.jsx("span",{className:"pref-label",children:cf[N].label}),t.jsx("span",{className:"ui-field-hint",children:cf[N].hint})]}),t.jsxs("select",{"aria-label":cf[N].label,value:hoe(g,N,x),onChange:w=>{const S={...g.perKind};w.target.value==="default"?delete S[N]:S[N]=w.target.value,b({perKind:S})},children:[t.jsx("option",{value:"default",children:"Default"}),x.map(w=>t.jsx("option",{value:w.kind,children:w.label},w.kind)),mL.has(N)?null:t.jsx("option",{value:"off",children:"Off"})]})]},N)),t.jsx("p",{className:"ui-field-hint",children:"Off keeps it in the list below and never sends it."})]}):null}),t.jsx(we,{title:"Messages from your agents",children:g?t.jsx(aoe,{settings:g,agents:((k=s.data)==null?void 0:k.agents)??[],onChange:b}):null}),t.jsx(we,{title:"Focus schedules",children:g?t.jsxs(de,{gap:"sm",children:[t.jsx(poe,{schedules:g.schedules,onChange:N=>b({schedules:N})}),t.jsxs("p",{className:"ui-field-hint",children:["Do not disturb holds everything but approvals and questions; Urgent only also lets watchers and failures through. What waited comes in one message when the focus ends. Switch a focus by hand from your initial at the foot of the rail, or /focus on Telegram. Times are on your clock (",e,")."]}),t.jsx("div",{className:"nt-times",children:t.jsx(le,{label:"End of the day",children:t.jsx("input",{type:"time",value:g.endOfDay,onChange:N=>b({endOfDay:N.target.value})})})}),t.jsx("p",{className:"ui-field-hint",children:"At the end of the day, what could wait goes out as one message."})]}):null}),h?t.jsx(Q,{tone:"good",role:"status",children:"Saved."}):null]})}),t.jsx("div",{id:"notifications-recent",className:"notifications-recent",children:t.jsxs(we,{title:"The last twenty",panel:!0,flush:!0,children:[t.jsx(re,{message:r.error}),r.data?r.data.notifications.length===0?t.jsx(Ce,{children:"Nothing yet. What buddi tells you will be listed here."}):t.jsx(yt,{children:r.data.notifications.map(N=>{var w;return t.jsx(gt,{title:Ou(N),sub:`${Nt(N.createdAt,e)} · ${soe(N,((w=s.data)==null?void 0:w.agents)??[])} · ${foe(N,x)}`,side:t.jsx(moe,{row:N})},N.id)})}):t.jsx(Ce,{children:"Loading…"})]})})]})}function aoe({settings:e,agents:n,onChange:s}){const r=e.perKind.agent!=="off",a=e.agents??noe,i=o=>{const c={...e.perKind};o?delete c.agent:c.agent="off",s({perKind:c})},l=(o,c)=>s({agents:{...a,muted:c?[...new Set([...a.muted,o])]:a.muted.filter(u=>u!==o)}});return t.jsxs(de,{gap:"sm",children:[t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:r,onChange:o=>i(o.target.checked)}),t.jsx("span",{children:"Agents may message you"})]}),t.jsxs("div",{className:"pref-row nt-kind",children:[t.jsxs("div",{className:"pref-text",children:[t.jsx("span",{className:"pref-label",children:"Highest urgency"}),t.jsx("span",{className:"ui-field-hint",children:"End of the day holds every message for the end-of-day message."})]}),t.jsxs("select",{"aria-label":"Highest urgency for agents",value:a.maxUrgency,disabled:!r,onChange:o=>s({agents:{...a,maxUrgency:o.target.value==="today"?"today":"now"}}),children:[t.jsx("option",{value:"now",children:"Now"}),t.jsx("option",{value:"today",children:"End of the day"})]})]}),n.length>0?t.jsx("div",{className:"ui-stack","data-gap":"sm",role:"group","aria-label":"Muted agents",children:n.map(o=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:a.muted.includes(o.id),disabled:!r,onChange:c=>l(o.id,c.target.checked),"aria-label":`Mute @${o.handle}`}),t.jsxs("span",{children:["Mute ",o.name," (@",o.handle,")"]})]},o.id))}):null,t.jsx("p",{className:"ui-field-hint",children:'An agent given the owner.notify tool can message you itself, signed "@agent: title" on Telegram; here the agent is named beside it. Each agent may send 6 urgent messages an hour and 20 a day. Off keeps them in the list below and never sends them.'})]})}function ioe({timezone:e}){return t.jsx(loe,{timezone:e,onChange:()=>{}})}function loe({timezone:e,onChange:n}){var C,E;const s=ve(()=>T.telegramBot(),[]),r=ve(()=>T.telegramDevices(),[]),[a,i]=d.useState(!1),[l,o]=d.useState(""),[c,u]=d.useState(!1),[h,f]=d.useState(null),[m,p]=d.useState(null),x=d.useRef(new Set),g=fL(()=>T.telegramDevices().then($=>$.devices.some(R=>!x.current.has(R.id))),()=>{r.reload(),n()}),b=((C=s.data)==null?void 0:C.configured)??!1,j=!b||a,v=()=>{var R;if(l.trim()===""||c)return;u(!0),f(null);const $=a&&(((R=s.data)==null?void 0:R.running)??!1);T.saveTelegramToken(l.trim()).then(P=>{o(""),i(!1),f(P.restartNeeded?{ok:!1,text:P.note??"Saved. It will be ready the next time buddi starts."}:$?{ok:!0,text:"Saved. The new bot takes over the next time buddi starts."}:{ok:!0,text:"Saved."}),s.reload(),n()}).catch(P=>f({ok:!1,text:P instanceof pe?P.message:String(P)})).finally(()=>u(!1))},y=()=>{var $;p(null),x.current=new Set(((($=r.data)==null?void 0:$.devices)??[]).map(R=>R.id)),g.ask().catch(R=>p(R instanceof pe?R.message:String(R)))},{offer:k,square:N,paired:w,stale:S}=g;return t.jsx(we,{title:"Telegram",aside:"Talk to buddi from your phone.",panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{title:"The bot",foot:j?t.jsxs(t.Fragment,{children:[a?t.jsx(A,{variant:"ghost",onClick:()=>{i(!1),o("")},children:"Cancel"}):null,t.jsx(A,{variant:"accent",disabled:c||l.trim()==="",onClick:v,children:"Save token"})]}):void 0,children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s.error}),!s.data&&!s.error?t.jsx(Ce,{children:"Loading…"}):b&&!a?t.jsxs("div",{className:"nt-channel",children:[t.jsx("span",{className:"pref-label",children:(E=s.data)!=null&&E.username?`Bot: @${s.data.username}`:"A bot token is saved."}),t.jsx(A,{variant:"ghost",size:"sm",onClick:()=>{i(!0),f(null)},children:"Replace token"})]}):null,j?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"ui-card-meta",children:"Ask @BotFather for a bot and paste its token here."}),t.jsx(le,{label:"Bot token",grow:!0,children:t.jsx("input",{type:"password",value:l,autoComplete:"off",spellCheck:!1,onChange:$=>o($.target.value),onKeyDown:$=>{$.key==="Enter"&&($.preventDefault(),v())}})})]}):null,h?t.jsx(Q,{tone:h.ok?"good":"warning",role:"status",children:h.text}):null]})}),t.jsxs(we,{title:"Your devices",children:[t.jsx(re,{message:r.error}),r.data?r.data.devices.length===0?t.jsx("p",{className:"ui-card-meta",children:"No phone is paired yet."}):t.jsx(yt,{children:r.data.devices.map($=>t.jsx(gt,{title:$.name??`Telegram user ${$.userId}`,sub:`Paired ${Nt($.pairedAt,e)} · ${$.lastSeenAt?`last spoke ${Xe($.lastSeenAt)}`:"has not spoken yet"}`,side:t.jsx(ooe,{id:$.id,onGone:()=>{r.reload(),n()}})},$.id))}):r.error?null:t.jsx(Ce,{children:"Loading…"})]}),t.jsx(we,{title:"Pair a device",foot:b&&(!k||w)?t.jsx(A,{variant:k?void 0:"accent",onClick:y,children:"Pair a phone"}):b&&S?t.jsx(A,{variant:"accent",onClick:y,children:"New code"}):void 0,children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:m}),b?w?t.jsx(Q,{tone:"good",role:"status",children:"Paired."}):k&&S?t.jsx("p",{className:"ui-card-meta",children:"That code has run out."}):k?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"ui-card-meta",children:"Open this on your phone, then send /start to the bot."}),t.jsx(Zle,{offer:k,square:N,children:t.jsx(coe,{text:k.link})}),t.jsxs("p",{className:"ui-field-hint",children:["The code works until ",Nt(k.expiresAt,e),"."]})]}):t.jsx("p",{className:"ui-card-meta",children:"Pair another phone, or the first one if you skipped it."}):t.jsx("p",{className:"ui-card-meta",children:"Save a bot token first."})]})})]})})}function ooe({id:e,onGone:n}){const[s,r]=d.useState(!1),[a,i]=d.useState(!1),[l,o]=d.useState(null);if(!s)return t.jsx(A,{size:"sm",onClick:()=>r(!0),children:"Unpair"});const c=()=>{i(!0),o(null),T.unpairTelegramDevice(e).then(n).catch(u=>o(u instanceof pe?u.message:String(u))).finally(()=>i(!1))};return t.jsxs("span",{className:"nt-channel",children:[t.jsx("span",{className:"ui-field-hint",role:l?"alert":void 0,children:l??"It will no longer reach your agents."}),t.jsx(A,{size:"sm",variant:"ghost",disabled:a,onClick:()=>r(!1),children:"Keep"}),t.jsx(A,{size:"sm",variant:"danger",disabled:a,onClick:c,children:"Unpair"})]})}function coe({text:e}){const[n,s]=d.useState(null),r=()=>{var a;if(!((a=navigator.clipboard)!=null&&a.writeText)){s("Select the link to copy it.");return}navigator.clipboard.writeText(e).then(()=>s("Copied."),()=>s("Select the link to copy it."))};return t.jsxs("span",{className:"nt-channel",children:[t.jsx(A,{size:"sm",onClick:r,children:"Copy"}),n?t.jsx("span",{className:"ui-field-hint",role:"status",children:n}):null]})}function uoe({status:e,listed:n}){const s=We("telegram");return e!=null&&e.running&&e.paired?t.jsx("p",{className:"ui-card-meta",children:"Telegram: paired with your phone"}):e!=null&&e.running?t.jsxs("p",{className:"ui-card-meta",children:["Telegram is running; ",t.jsx("a",{href:s,children:"pair your phone"})]}):e!=null&&e.configured?t.jsxs("p",{className:"ui-card-meta",children:["Telegram's token is saved but the bot isn't running. ",t.jsx("a",{href:s,children:"Open Telegram"})]}):e||!n?t.jsxs("p",{className:"ui-card-meta",children:["Telegram is not set up. ",t.jsx("a",{href:s,children:"Set up Telegram"})]}):null}function doe({channel:e,checked:n,onPick:s}){const[r,a]=d.useState(!1),[i,l]=d.useState(null),o=()=>{a(!0),l(null),T.testChannel(e.kind).then(()=>l({ok:!0,text:"Sent. Check that it arrived."})).catch(c=>l({ok:!1,text:c instanceof pe?c.message:String(c)})).finally(()=>a(!1))};return t.jsxs("div",{className:"nt-channel",children:[t.jsxs("label",{children:[t.jsx("input",{type:"radio",name:"nt-default-channel",checked:n,onChange:s}),t.jsxs("span",{className:"nt-channel-text",children:[t.jsxs("span",{className:"pref-label",children:[e.label,e.where?`, ${e.where}`:""]}),t.jsxs("span",{className:"ui-field-hint",children:["The title and a few lines of each message go to ",e.label,"."]}),i?t.jsx("span",{className:"nt-channel-sent","data-tone":i.ok?void 0:"critical",role:"status",children:i.text}):null]})]}),t.jsx(A,{size:"sm",disabled:r,onClick:o,children:"Send a test"})]})}function hoe(e,n,s){const r=e.perKind[n];return r==="off"?mL.has(n)?"default":"off":r&&s.some(a=>a.kind===r)?r:"default"}function foe(e,n){var s;return e.channel&&e.channel!=="dashboard"?((s=n.find(r=>r.kind===e.channel))==null?void 0:s.label)??e.channel:"dashboard"}function moe({row:e}){return e.state==="failed"?t.jsxs("span",{className:"nt-state","data-tone":"critical",children:["Failed: ",e.error??"no reason given"]}):e.actedAt?t.jsx("span",{className:"nt-state",children:"Acted on"}):e.seenAt?t.jsx("span",{className:"nt-state",children:"Seen"}):e.state==="held"?t.jsx("span",{className:"nt-state",children:"Waiting"}):e.state==="stored"?t.jsx("span",{className:"nt-state",children:"Kept"}):e.state==="sent"?t.jsx("span",{className:"nt-state",children:"Sent"}):t.jsx("span",{className:"nt-state",children:"Not seen"})}const VE={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"},GE={mode:"do-not-disturb",days:[...qv],from:"22:00",to:"07:00"};function poe({schedules:e,onChange:n}){const s=(r,a)=>n(e.map((i,l)=>l===r?{...i,...a}:i));return t.jsxs(de,{gap:"sm",children:[e.length===0?t.jsx("p",{className:"ui-card-meta",children:"No schedule: a focus is on only when you switch one on."}):null,e.map((r,a)=>{const i=a+1;return t.jsxs("div",{className:"nt-schedule",role:"group","aria-label":`Schedule ${i}`,children:[t.jsxs("select",{"aria-label":`Schedule ${i} mode`,value:r.mode,onChange:l=>s(a,{mode:l.target.value}),children:[t.jsx("option",{value:"do-not-disturb",children:"Do not disturb"}),t.jsx("option",{value:"urgent-only",children:"Urgent only"})]}),t.jsx("span",{className:"nt-days",children:qv.map(l=>{const o=r.days.includes(l);return t.jsx("button",{type:"button",className:"nt-day","aria-pressed":o,"aria-label":`Schedule ${i} ${VE[l]}`,onClick:()=>s(a,{days:o?r.days.filter(c=>c!==l):qv.filter(c=>c===l||r.days.includes(c))}),children:VE[l]},l)})}),t.jsx(le,{label:"From",children:t.jsx("input",{type:"time","aria-label":`Schedule ${i} from`,value:r.from,onChange:l=>s(a,{from:l.target.value})})}),t.jsx(le,{label:"To",children:t.jsx("input",{type:"time","aria-label":`Schedule ${i} to`,value:r.to,onChange:l=>s(a,{to:l.target.value})})}),t.jsx(A,{size:"sm",variant:"ghost","aria-label":`Remove schedule ${i}`,onClick:()=>n(e.filter((l,o)=>o!==a)),children:"Remove"})]},a)}),t.jsx("div",{className:"nt-schedule-add",children:t.jsx(A,{size:"sm",onClick:()=>n([...e,{...GE,days:[...GE.days]}]),children:"Add a schedule"})})]})}function goe(e){return`Remove buddi from ${e}?`}function xoe(){const e=hc(),[n,s]=d.useState(null),[r,a]=d.useState(!1),[i,l]=d.useState(null),[o,c]=d.useState(null),[u,h]=d.useState(!1),f=()=>{h(!0),c(null),T.uninstallPlan().then(m=>{if(!m.available){l(m.reason);return}s(m),a(!0)}).catch(m=>c(m instanceof pe?m.message:String(m))).finally(()=>h(!1))};return t.jsxs(we,{title:"Remove buddi",children:[t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:o}),i?t.jsx(Q,{children:i}):t.jsx("p",{className:"ui-card-meta",children:"Takes a last backup and gives you its passphrase first; nothing is deleted before you have both."}),t.jsx(ne,{align:"end",children:t.jsxs(A,{variant:"danger",disabled:u||i!==null,onClick:f,children:["Remove buddi from ",e,"…"]})})]}),r&&n?t.jsx(yoe,{plan:n,machine:e,onClose:()=>a(!1)}):null]})}function voe(e,n){var r;const s=[];return e.service&&s.push(`The background service (${e.service}).`),n||(s.push(`Your data: agents, chats, memory, files and the database, in ${e.data}.`),e.keychain&&s.push(`The passwords and keys buddi keeps in the keychain (${e.keychain}).`)),e.app&&s.push(`buddi.app, moved to the Trash (${e.app}).`),(r=e.desktopApp)!=null&&r.goes&&s.push(`The buddi desktop app, its window and its tray icon (${e.desktopApp.path}).`),s}const joe=1e3;function yoe({plan:e,machine:n,onClose:s}){const[r,a]=d.useState("plan"),[i,l]=d.useState(!1),[o,c]=d.useState(!1),[u,h]=d.useState(null),[f,m]=d.useState(null),[p,x]=d.useState(null),[g,b]=d.useState(!1),j=d.useRef(null);d.useEffect(()=>()=>{j.current!==null&&window.clearTimeout(j.current)},[]);const v=S=>{T.uninstallJob(S).then(C=>{if(m(C.detail??C.phase),!C.finishedAt){j.current=window.setTimeout(()=>v(S),joe);return}if(C.phase!=="done"||!C.report){h(`The last backup did not finish: ${C.error??"no reason given"}. Nothing was removed.`),a("plan");return}x(C.report),a("words")}).catch(C=>{h(C instanceof pe?C.message:String(C)),a("plan")})},y=()=>{h(null),a("backup"),T.uninstallBackup(e.token).then(S=>v(S.job.id)).catch(S=>{h(S instanceof pe?S.message:String(S)),a("plan")})},k=()=>{var S;h(null),a("removing"),(S=q2())==null||S.removing(),T.uninstall({token:e.token,wroteItDown:!0,keepData:i}).catch(C=>{C instanceof pe&&C.status===0||(h(C instanceof pe?C.message:String(C)),a("words"))})},N=voe(e,i),w=r==="plan"?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"accent",onClick:y,children:"Take the last backup"})]}):r==="words"?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:s,children:"Cancel"}),t.jsx(A,{variant:"danger",disabled:!o&&(p==null?void 0:p.passphrase)!==void 0,onClick:k,children:"Remove buddi"})]}):null;return t.jsx(Vt,{title:goe(n),onClose:r==="removing"?()=>{}:s,foot:w,children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:u}),r==="plan"||r==="backup"?t.jsxs(t.Fragment,{children:[t.jsx("p",{children:"This removes:"}),t.jsx("ul",{className:"remove-list",children:N.map(S=>t.jsx("li",{children:S},S))}),e.desktopApp&&!e.desktopApp.goes?t.jsxs("p",{className:"ui-card-meta",children:["The desktop app stays installed (",t.jsx("span",{className:"mono",children:e.desktopApp.path}),"); remove it afterwards with ",t.jsx("span",{className:"mono",children:"sudo apt remove buddi-desktop"}),"."]}):null,t.jsxs("p",{className:"ui-card-meta",children:["First, one last backup goes to ",t.jsx("span",{className:"mono",children:e.backups}),", where it stays."]}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:i,disabled:r!=="plan",onChange:S=>l(S.target.checked)}),t.jsx("span",{children:"Keep my data for a reinstall"})]}),r==="backup"?t.jsxs(Q,{role:"status",children:["Taking the last backup",f?`: ${f}`:"","…"]}):null]}):null,r==="words"&&p?t.jsxs(t.Fragment,{children:[t.jsxs("p",{children:["The last backup is ",t.jsx("span",{className:"mono",children:p.archive}),"."]}),p.passphrase?t.jsxs(t.Fragment,{children:[t.jsxs("p",{children:["These six words open it. They leave ",n==="this Mac"?"this Mac’s keychain":"buddi’s secret store"," with the rest, so write them down now:"]}),t.jsx("p",{className:"backup-phrase mono","aria-label":"Your backup passphrase",children:p.passphrase}),p.passphraseFile?t.jsxs("p",{className:"ui-card-meta",children:["They are also in ",t.jsx("span",{className:"mono",children:p.passphraseFile}),", which only you can read. Delete it once they are written down."]}):null,t.jsx(ne,{align:"end",children:t.jsx(A,{onClick:()=>{navigator.clipboard.writeText(p.passphrase).then(()=>b(!0),()=>b(!1))},children:g?"Copied":"Copy"})}),t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:o,onChange:S=>c(S.target.checked)}),t.jsx("span",{children:"I wrote it down"})]})]}):null,t.jsx("ul",{className:"remove-list",children:N.map(S=>t.jsx("li",{children:S},S))})]}):null,r==="removing"?t.jsx(Q,{role:"status",children:e.appFinishes?"Removing buddi. The app quits when it is done.":`Removing buddi. This page stops answering in a moment; what was removed is written to a log in ${e.backups}.`}):null]})})}function woe(){const e=ve(()=>T.cliTool(),[]),[n,s]=d.useState(!1),[r,a]=d.useState(null),[i,l]=d.useState(null),o=e.data;if(!(o!=null&&o.available))return null;const c=()=>{s(!0),a(null),l(null),T.installCliTool().then(h=>{l(h.lines),e.reload()}).catch(h=>a(h instanceof pe?h.message:String(h))).finally(()=>s(!1))},u=o.installed[0];return t.jsx(we,{title:"Command line",panel:!0,children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:r}),t.jsx("p",{className:"ui-card-meta",children:u?t.jsxs(t.Fragment,{children:["Terminal's ",t.jsx("span",{className:"mono",children:"buddi"})," is ",t.jsx("span",{className:"mono",children:u}),", and runs this app's buddi."]}):t.jsxs(t.Fragment,{children:["Use ",t.jsx("span",{className:"mono",children:"buddi"})," in Terminal: it runs this app's buddi and keeps working after updates. macOS asks for your password once."]})}),i?t.jsx(Q,{tone:"good",role:"status",children:i.join(" ")}):null,t.jsx(ne,{align:"end",children:t.jsx(A,{disabled:n,onClick:c,children:u?"Install Again":"Install Command Line Tool"})})]})})}const boe={you:"person",appearance:"sun",notifications:"bell",telegram:"send",memory:"notebook",proposals:"bulb",accounts:"key",computer:"monitor",secrets:"key",connections:"globe",lock:"lock",api:"terminal",watchers:"eye",backup:"archive",system:"chip",plugins:"plug"};function koe(e){const n=NW.map(r=>({id:r.id,route:We(r.id),label:r.label,icon:boe[r.id],group:r.group})),s=[...e].sort((r,a)=>r.title.localeCompare(a.title,void 0,{sensitivity:"base"})||r.plugin.localeCompare(a.plugin)||r.id.localeCompare(a.id)).map(r=>({id:XI(r.plugin,r.id),route:Dr(r.plugin,r.id),label:r.title,icon:X2(r.icon),group:"plugins"}));return[...n,...s]}function pL(e){return kW.map(n=>({id:n.id,label:n.label,entries:e.filter(s=>s.group===n.id)})).filter(n=>n.entries.length>0)}function gL(e,n,s){return n?`${e}, ${n} open`:s?`${e}, ${s}`:void 0}function Noe({entries:e,active:n,counts:s={},dots:r={},navigate:a}){var u;const i=d.useRef(null),l=pL(e),o=e.some(h=>h.id===n)?n:(u=e[0])==null?void 0:u.id,c=h=>{var x;const f=[...((x=i.current)==null?void 0:x.querySelectorAll("a.settings-nav-link"))??[]],m=f.indexOf(document.activeElement);if(m===-1)return;const p=g=>{var b;h.preventDefault(),(b=f[Math.max(0,Math.min(f.length-1,g))])==null||b.focus()};if(h.key==="ArrowDown")p(m+1);else if(h.key==="ArrowUp")p(m-1);else if(h.key==="Home")p(0);else if(h.key==="End")p(f.length-1);else if(h.key==="Enter"||h.key===" "){h.preventDefault();const g=f[m].getAttribute("href");g&&a(g)}};return t.jsx("nav",{className:"settings-nav","aria-label":"Settings sections",ref:i,onKeyDown:c,children:l.map(h=>t.jsxs("div",{className:"settings-nav-group",role:"group","aria-labelledby":`settings-nav-${h.id}`,children:[t.jsx("div",{className:"settings-nav-label",id:`settings-nav-${h.id}`,children:h.label}),h.entries.map(f=>{const m=f.id===n,p=s[f.id],x=r[f.id];return t.jsxs("a",{className:"settings-nav-link",href:f.route,"data-active":m?"true":void 0,"aria-current":m?"page":void 0,"aria-label":gL(f.label,p,x),tabIndex:f.id===o?0:-1,onClick:g=>{g.preventDefault(),a(f.route)},children:[t.jsx(se,{name:f.icon,className:"settings-nav-icon"}),t.jsx("span",{className:"settings-nav-text",children:f.label}),p?t.jsx("span",{className:"ui-badge settings-nav-count","aria-hidden":"true",children:p>99?"99+":p}):x?t.jsx("span",{className:"ui-badge settings-nav-dot","data-kind":"dot","data-testid":"settings-nav-dot","aria-hidden":"true"}):null]},f.id)})]},h.id))})}function Soe({entries:e,active:n,counts:s={},dots:r={},navigate:a}){const i=pL(e),l=e.find(o=>o.id===n)??e[0];return t.jsx("nav",{className:"settings-menu","aria-label":"Settings sections",children:t.jsxs(xd,{modal:!1,children:[t.jsx(vd,{asChild:!0,children:t.jsxs("button",{type:"button",className:"settings-menu-trigger","aria-label":`Settings section: ${(l==null?void 0:l.label)??""}`,children:[l?t.jsx(se,{name:l.icon,className:"settings-nav-icon"}):null,t.jsx("span",{className:"settings-nav-text",children:l==null?void 0:l.label}),t.jsx(se,{name:"chevron-down",className:"settings-menu-chevron"})]})}),t.jsx(rc,{children:t.jsx(jd,{className:"ui-menu settings-menu-list",align:"start",sideOffset:6,children:t.jsx(c5,{value:n,onValueChange:o=>{const c=e.find(u=>u.id===o);c&&a(c.route)},children:i.map((o,c)=>t.jsxs(hb,{children:[c>0?t.jsx(ea,{className:"ui-menu-sep"}):null,t.jsx(pl,{className:"ui-menu-label",children:o.label}),o.entries.map(u=>{const h=s[u.id],f=r[u.id];return t.jsxs(u5,{value:u.id,className:"ui-menu-item settings-menu-item","data-active":u.id===n?"true":void 0,"aria-label":gL(u.label,h,f),children:[t.jsxs("span",{className:"settings-menu-entry",children:[t.jsx(se,{name:u.icon,className:"settings-nav-icon"}),t.jsx("span",{className:"settings-nav-text",children:u.label})]}),h?t.jsx("span",{className:"ui-badge settings-nav-count","aria-hidden":"true",children:h>99?"99+":h}):f?t.jsx("span",{className:"ui-badge settings-nav-dot","data-kind":"dot","aria-hidden":"true"}):null]},u.id)})]},o.id))})})})]})})}function Coe({hash:e,timezone:n,navigate:s,agents:r,pluginPages:a}){var y,k,N;const i=SW(e),l=HI(a!==void 0),o=a??l,c=JI(e),u=c?o.find(c.plugin,c.page):void 0,h=u?null:dW(e,o.settings);d.useEffect(()=>{h&&s(h,!0)},[h,s]);const f=ts(Tb),m=koe(o.settings),x={proposals:((k=(y=ve(()=>Promise.resolve().then(()=>T.proposals()),[],3e4).data)==null?void 0:y.open)==null?void 0:k.length)??0},g=ve(()=>T.version(),[]),b=ve(()=>Promise.resolve().then(()=>T.connectionSignals()),[],6e4),j={};g.data&&!g.data.checkout&&g.data.updateAvailable&&(j.system="a newer buddi is ready"),(((N=b.data)==null?void 0:N.signals)??[]).length>0&&(j.connections=pO);const v={entries:m,active:i,counts:x,dots:j,navigate:w=>s(w)};return t.jsxs("div",{className:"settings",children:[f?null:t.jsx(Noe,{...v}),t.jsx("div",{className:"settings-body",children:t.jsxs("div",{className:"ui-page",children:[i==="secrets"?t.jsx(al,{before:t.jsx(tu,{inline:!0,items:[{label:"Settings",href:Nn,onClick:()=>s(Nn)}]}),title:"Keys and secrets",lede:$D,actions:t.jsx(it,{variant:"accent",size:"sm",href:dj,onClick:w=>{w.preventDefault(),s(dj)},children:"Add a secret"})}):i==="computer"?t.jsx(al,{before:t.jsx(tu,{inline:!0,items:[{label:"Settings",href:Nn,onClick:()=>s(Nn)}]}),title:"Browser & apps",lede:"Where agents may look"}):i==="plugins"||i==="connections"?t.jsx(al,{before:t.jsx(tu,{inline:!0,items:[{label:"Settings",href:Nn,onClick:()=>s(Nn)}]}),title:i==="plugins"?"Plugins":"Connections",lede:i==="plugins"?Sie:QO}):t.jsxs("header",{className:"ui-page-head",children:[t.jsx("h2",{className:"ui-page-title",children:"Settings"}),t.jsx("p",{className:"ui-page-lede",children:"How this installation runs, and where it reaches."})]}),f?t.jsx(Soe,{...v}):null,u?t.jsx(VP,{plugin:u.plugin,title:u.title,navigate:s},u.plugin):null,u?t.jsx(FV,{page:u,params:Ab(e),navigate:s,timezone:n,siblings:o.all.filter(w=>w.plugin===u.plugin)}):null,i==="you"?t.jsx(nie,{embedded:!0}):null,i==="appearance"?t.jsx(Eoe,{railPages:o.rail}):null,i==="notifications"?t.jsx(roe,{timezone:n}):null,i==="telegram"?t.jsx(ioe,{timezone:n}):null,i==="memory"?t.jsx($O,{embedded:!0,agents:r,timezone:n,initialTab:Voe(e)}):null,i==="proposals"?t.jsx(gie,{embedded:!0,plugin:yW(e)}):null,i==="accounts"?t.jsx(pae,{embedded:!0,account:hW(e)}):null,i==="computer"?t.jsx(IY,{embedded:!0,timezone:n,navigate:s}):null,i==="secrets"?t.jsx($ae,{embedded:!0,timezone:n,secret:gW(e),adding:xW(e),navigate:s}):null,i==="connections"?t.jsx(Vne,{embedded:!0,timezone:n,connection:mW(e)}):null,i==="lock"?t.jsx(Jae,{navigate:s}):null,i==="api"?t.jsx(tie,{timezone:n}):null,i==="watchers"?t.jsx(zae,{timezone:n,embedded:!0}):null,i==="backup"?t.jsx(iae,{}):null,i==="plugins"?t.jsx(Pie,{railPages:o.rail,settingsPages:o.settings,navigate:s,hash:e}):null,i==="system"?t.jsx(Toe,{timezone:n}):null]})})]})}function Eoe({railPages:e}){const[n,s]=bO();return t.jsx(we,{title:"Appearance",aside:"Kept in this browser only. Another browser keeps its own.",panel:!0,children:t.jsxs(de,{divided:!0,gap:"lg",children:[t.jsx(Px,{label:"Theme",hint:"System follows your Mac.",children:t.jsx(dn,{label:"Theme",options:[{value:"light",label:"Light"},{value:"dark",label:"Dark"},{value:"system",label:"System"}],value:n.theme,onChange:r=>s({theme:r})})}),t.jsx(Px,{label:"Background",hint:"Blue carries the first-run colours through the app. Sand is quieter.",children:t.jsx(dn,{label:"Background",options:[{value:"blue",label:"Blue"},{value:"sand",label:"Sand"}],value:n.ground,onChange:r=>s({ground:r})})}),t.jsx(Px,{label:"Page width",hint:"How far pages stretch on a wide screen.",children:t.jsx(dn,{label:"Page width",options:[{value:"narrow",label:"Narrow"},{value:"wide",label:"Wide"},{value:"full",label:"Full"}],value:n.width,onChange:r=>s({width:r})})}),t.jsx($oe,{pages:e}),t.jsx(Aoe,{})]})})}function Aoe(){var c,u,h;const e=ve(()=>T.overview(),[]),[n,s]=d.useState(null),r=((c=e.data)==null?void 0:c.glances)??[],a=((u=e.data)==null?void 0:u.home)??[],i=((h=e.data)==null?void 0:h.dismissed)??{};if(r.length===0&&a.length===0)return null;const l=(f,m)=>{s(f),T.setGlanceHidden(f,!m).then(()=>e.reload()).finally(()=>s(null))},o=(f,m)=>{s(`block:${f}`),T.homeDismiss(`block:${f}`,m?null:"hidden").then(()=>e.reload()).finally(()=>s(null))};return t.jsxs(t.Fragment,{children:[r.length>0?t.jsxs("div",{className:"pref-row ui-section",children:[t.jsxs("div",{className:"pref-text",children:[t.jsx("span",{className:"pref-label",children:"Home glances"}),t.jsx("span",{className:"ui-field-hint",children:"The lines beside the date on Home, at most three. Kept for every browser."})]}),t.jsx(de,{gap:"sm",children:r.map(f=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:!f.hidden,disabled:n===f.id,onChange:m=>l(f.id,m.target.checked)}),t.jsx("span",{children:f.title})]},f.id))})]}):null,a.length>0?t.jsxs("div",{className:"pref-row ui-section",children:[t.jsxs("div",{className:"pref-text",children:[t.jsx("span",{className:"pref-label",children:"Home sections"}),t.jsx("span",{className:"ui-field-hint",children:"What the plugins put on Home. Kept for every browser."})]}),t.jsx(de,{gap:"sm",children:a.map(f=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:i[`block:${f.id}`]!=="hidden",disabled:n===`block:${f.id}`,onChange:m=>o(f.id,m.target.checked)}),t.jsx("span",{children:f.title})]},f.id))})]}):null]})}function $oe({pages:e}){const n=gO(),[s,r]=d.useState(null);if(e.length===0)return null;const a=(i,l)=>{r(null),mte(i,!l).catch(o=>r(o instanceof Error?o.message:String(o)))};return t.jsxs("div",{className:"pref-row ui-section",children:[t.jsxs("div",{className:"pref-text",children:[t.jsx("span",{className:"pref-label",children:"In the rail"}),t.jsx("span",{className:"ui-field-hint",children:"The plugin pages beside Home and Chat. One you turn off still opens from Settings → Plugins. Kept for every browser."})]}),t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s}),e.map(i=>t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:!n.has(ed(i)),onChange:l=>a(i,l.target.checked)}),t.jsx("span",{children:i.title})]},ed(i)))]})]})}function Px({label:e,hint:n,children:s}){return t.jsxs("div",{className:"pref-row ui-section",children:[t.jsxs("div",{className:"pref-text",children:[t.jsx("span",{className:"pref-label",children:e}),t.jsx("span",{className:"ui-field-hint",children:n})]}),s]})}function Toe({timezone:e}){const n=ve(()=>T.overview(),[],15e3),s=ve(()=>T.session(),[]),r=ve(()=>T.providerAccounts(),[]),a=n.data;return t.jsxs(de,{gap:"lg",children:[t.jsx(re,{message:n.error}),t.jsx(Woe,{}),a?t.jsx(we,{title:"The queue",panel:!0,actions:t.jsx(A,{size:"sm",variant:a.paused?"accent":void 0,onClick:()=>{T.setPaused(!a.paused).then(()=>n.reload())},children:a.paused?"Resume the queue":"Pause the queue"}),children:t.jsxs("p",{className:"ui-card-meta",children:[a.paused?"Paused. Nothing is being claimed until you resume.":"Running. Jobs are claimed as they come due."," ",a.paused?t.jsx(Ae,{tone:"warning",children:"paused"}):t.jsx(Ae,{tone:"good",children:"running"})]})}):null,t.jsxs(we,{title:"This host",panel:!0,children:[t.jsx(un,{items:[{label:"Time zone",value:e},{label:"Server time",value:a?Nt(a.now,e):"…"},{label:"Bound to",value:s.data?`${s.data.host}:${s.data.port}`:"…"},{label:"Credential vault",value:r.data?Poe(r.data.vault.kind):"…"}]}),r.data&&(r.data.vault.locked||r.data.vault.kind==="none")?t.jsx(Q,{tone:"warning",children:r.data.vault.advice||"Run buddi init on the host to configure secure credential storage."}):null]}),t.jsx(Ioe,{}),t.jsx(Roe,{}),t.jsx(TZ,{}),t.jsx(woe,{}),t.jsx(Kre,{}),t.jsx(we,{title:"Mail and sources",panel:!0,children:a?a.mail.length===0?t.jsx(Ce,{children:"No sources are installed."}):t.jsx(un,{items:a.mail.map(i=>({key:i.sourceId,label:t.jsx("span",{className:"mono",children:i.sourceId}),value:i.lastError?t.jsx("span",{className:"critical",children:i.lastError}):t.jsxs("span",{children:["polled ",Xe(i.lastRunAt)]})}))}):t.jsx(Ce,{children:"Loading…"})}),t.jsx(xoe,{})]})}function Gl(e){return e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:`${Math.max(1,Math.round(e/1e3))} KB`}const qE={ready:"good",downloading:"muted",absent:"muted",failed:"critical"},YE={ready:"ready",downloading:"downloading",absent:"not downloaded",failed:"failed"};function Roe(){const e=ve(()=>T.runtimes(),[],1e4),[n,s]=d.useState(null),[r,a]=d.useState(!1),[i,l]=d.useState(!1),o=e.data;if(!o)return null;const{onnx:c,models:u}=o,h=m=>{a(!0),s(null),m().then(()=>e.reload()).catch(p=>{s(p.message)}).finally(()=>{a(!1)})},f=c.available?t.jsxs("span",{children:[t.jsx(Ae,{tone:qE[c.state],children:YE[c.state]})," ",t.jsxs("span",{className:"ui-card-meta",children:["ONNX Runtime ",c.version," · ",c.state==="downloading"&&c.receivedBytes!==void 0?`${Gl(c.receivedBytes)} of ${Gl(c.downloadBytes)}`:`${Gl(c.sizeBytes)} on disk (${Gl(c.downloadBytes)} download)`]})]}):t.jsxs("span",{className:"ui-card-meta",children:["Not available on this platform (",c.platform,")."]});return t.jsx(we,{title:"Local models",panel:!0,actions:c.available&&(c.state==="ready"||c.state==="failed")?t.jsx(A,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{c.state==="ready"?l(!0):h(()=>T.removeEngine())},children:"Remove"}):void 0,children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:n}),i?t.jsx(Vt,{title:"Remove the engine?",onClose:()=>l(!1),foot:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>l(!1),children:"Keep it"}),t.jsx(A,{variant:"danger",disabled:r,onClick:()=>{l(!1),h(()=>T.removeEngine())},children:"Remove"})]}),children:t.jsxs("p",{children:["Plugins that use it will ask you again, and it downloads again (",Gl(c.downloadBytes),") once you say yes."]})}):null,t.jsx(un,{items:[{label:"Engine",value:f},...u.map(m=>({key:m.id,label:t.jsx("span",{className:"mono",children:m.id}),value:t.jsxs("span",{children:[t.jsx(Ae,{tone:qE[m.state],children:YE[m.state]})," ",t.jsx("span",{className:"ui-card-meta",children:m.state==="failed"?m.reason:Gl(m.sizeBytes)})," ",m.state==="ready"||m.state==="failed"?t.jsx(A,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{h(()=>T.removeModel(m.id))},children:"Remove"}):null]})}))]}),c.state==="failed"&&c.available?t.jsx(Q,{tone:"warning",children:c.reason}):null,t.jsx("p",{className:"ui-card-meta",children:"Plugins that run models on this computer share one engine. It is downloaded for this platform only, after you approve a plugin's card, and checked against its pinned checksum."})]})})}function Ioe(){var u;const e=ve(()=>T.service(),[],1e4),[n,s]=d.useState(null),[r,a]=d.useState(!1),[i,l]=d.useState(null),o=(u=e.data)!=null&&u.supervised?e.data.status:void 0;if(!o)return null;const c=h=>{a(!0),l(null),lc({kind:h},()=>T.serviceAction(h)).then(()=>{s(null)}).catch(f=>{l(f.message),e.reload()}).finally(()=>{a(!1)})};return t.jsx(we,{title:"Service",panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsx(un,{items:[{label:"Database",value:t.jsx(QE,{state:o.database,pid:o.databasePid})},{label:"Gateway",value:t.jsx(QE,{state:o.gateway,pid:o.gatewayPid})},{label:"Supervisor",value:t.jsxs("span",{className:"mono",children:["pid ",o.supervisorPid]})}]})}),t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:i}),n?t.jsx(Q,{tone:"warning",role:"alert",children:n==="stop"?"Stopping the gateway closes this dashboard. The database keeps running; run buddi in a terminal to bring the dashboard back.":"Restarting the gateway takes a few seconds. This page waits for it and comes back by itself."}):t.jsx("p",{className:"ui-card-meta",children:"Stopping the gateway ends this dashboard until buddi is run again."}),t.jsx(ne,{align:"end",children:n?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",disabled:r,onClick:()=>{s(null),l(null)},children:"Cancel"}),t.jsx(A,{variant:n==="stop"?"danger":"accent",disabled:r,onClick:()=>{c(n)},children:n==="stop"?"Stop it":"Restart it"})]}):t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:()=>{s("stop")},children:"Stop gateway"}),t.jsx(A,{variant:"accent",onClick:()=>{s("restart")},children:"Restart gateway"})]})})]})})]})})}function QE({state:e,pid:n}){return t.jsxs("span",{children:[t.jsx(Ae,{tone:e==="running"?"good":e==="stopped"?"warning":e==="failed"?"critical":"muted",children:e})," ",n===null?t.jsx("span",{className:"ui-card-meta",children:"no process"}):t.jsxs("span",{className:"mono",children:["pid ",n]})]})}function Poe(e){return e==="keychain"?"macOS Keychain":e==="file"?"Encrypted file vault":e==="none"?"None":e}const Moe=2e3,wm={starting:"Getting started.",backup:"Taking a backup first, so there is a way back.",stopping:"Stopping the gateway. The database stays up.",installing:"Installing the new version.",verifying:"Checking that the new version can start its database.","rolling-back":"The new version could not start its database. Putting the previous one back.",restarting:"Restarting buddi on the new version.",migrating:"Bringing the database up to date.",done:"Done.",failed:"That did not work."},Ooe=new Set(["done","failed","rolled-back"]),Doe="The check asks the npm registry for the newest version and sends nothing else.",Loe="This takes a backup, installs the new version and restarts buddi. This page waits for it and comes back by itself.",Foe=6e4;function Mx(e,n){return e?{button:n?`Update to ${n}`:"Update",warning:`buddi takes a backup first, installs ${n??"the new version"} and restarts; it takes a minute or two. This page waits for it and comes back by itself.`}:{button:n?`Upgrade to ${n}`:"Upgrade",warning:Loe}}const _oe="A checkout upgrades with git pull, then buddi upgrade in a terminal.",zoe=15*6e4;function Uoe(e,n=!1){const s=e.step==="starting"?"while starting":`at ${e.step??"an unknown step"}`,r=`The upgrade to ${e.to} failed ${s}: ${e.error??"no reason given"}. The backup taken first is ${e.backup??"not available"}. `;return n?r+`To go back to ${e.from}, choose Advanced → Restart with the Previous Version in the buddi menu.`:r+"Run buddi doctor in a terminal; it prints the way back."}function JE(e,n=Date.now()){const s=e[e.length-1];if((s==null?void 0:s.outcome)!=="failed")return null;const r=Date.parse(s.finishedAt??s.startedAt);return Number.isFinite(r)&&n-r<zoe?s:null}function Boe(e,n){const[s,r]=d.useState(void 0),[a,i]=d.useState(null),l=d.useRef(n);return l.current=n,d.useEffect(()=>{if(!e){r(void 0);return}let o=!1,c=!1;const u=()=>{o||c||T.upgradeJob(e).then(f=>{var m;o||(r(f),i(null),BI({step:wm[f.phase]??f.detail??f.phase}),(Ooe.has(f.phase)||f.finishedAt)&&(o=!0,f.phase==="failed"&&(Mo(),(m=l.current)==null||m.call(l,f))))}).catch(f=>{o||(f instanceof pe&&f.status!==0&&f.status<500?(o=!0,Mo(),i(f.message)):c=!0)})};u();const h=window.setInterval(u,Moe);return()=>{o=!0,window.clearInterval(h)}},[e]),{job:s,error:a}}function Woe(){var y;const[e,n]=d.useState(!1),s=ve(()=>T.version(),[],e?Foe:void 0);d.useEffect(()=>{var k;((k=s.data)==null?void 0:k.app)===!0&&n(!0)},[(y=s.data)==null?void 0:y.app]);const[r,a]=d.useState(null),[i,l]=d.useState(!1),[o,c]=d.useState(!1),[u,h]=d.useState(null),[f,m]=d.useState(null),p=d.useCallback(k=>{a(null),m(k)},[]),x=Boe(r,p),g=s.data,b=()=>{c(!0),h(null),T.checkVersion().catch(k=>h(k instanceof pe?k.message:String(k))).finally(()=>{c(!1),s.reload()})},j=k=>{c(!0),h(null),T.setVersionCheck(k).catch(N=>h(N instanceof pe?N.message:String(N))).finally(()=>{c(!1),s.reload()})},v=()=>{c(!0),h(null),m(null),lc({kind:"upgrade",line:g!=null&&g.latest?`Upgrading to ${g.latest}…`:"Upgrading…",step:wm.starting,patienceMs:UI},()=>T.startUpgrade(g==null?void 0:g.latest)).then(k=>{var N;l(!1),a(((N=k==null?void 0:k.job)==null?void 0:N.id)??null)}).catch(k=>h(k instanceof pe?k.message:String(k))).finally(()=>c(!1))};return g!=null&&g.checkout?t.jsx(we,{title:"Version",panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsx(un,{items:[{label:"Running",value:t.jsx("span",{className:"mono",children:g.current})}]})}),t.jsx(we,{children:t.jsx("p",{className:"ui-card-meta",children:_oe})})]})}):t.jsx(we,{title:"Version",panel:!0,children:t.jsxs(de,{divided:!0,children:[t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(re,{message:s.error??u}),t.jsx(un,{items:[{label:"Running",value:g?t.jsx("span",{className:"mono",children:g.current}):"…"},{label:"Newest",value:g?g.updateAvailable&&g.latest?t.jsxs("span",{children:["A newer buddi is available: ",t.jsx("span",{className:"mono",children:g.latest})]}):g.processing?t.jsx("span",{children:g.processing.message}):g.checkedAt?t.jsxs("span",{children:["This is the latest, as of ",Xe(g.checkedAt),"."]}):t.jsx("span",{children:"Not checked yet."}):"…"}]}),g!=null&&g.error?t.jsxs(Q,{tone:"warning",children:["The last check did not get an answer: ",g.error]}):null,t.jsx(ne,{align:"end",children:t.jsx(A,{disabled:o,onClick:b,children:"Check now"})})]})}),t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsxs("label",{className:"backup-check",children:[t.jsx("input",{type:"checkbox",checked:(g==null?void 0:g.checkEnabled)??!1,disabled:o||!g,onChange:k=>j(k.target.checked)}),t.jsx("span",{children:"Check once a day"})]}),t.jsx("p",{className:"ui-card-meta",children:Doe})]})}),g!=null&&g.updateAvailable&&g.latest&&g.latestNotes?t.jsx(we,{title:`What changes in ${g.latest}`,children:t.jsx(gr,{text:g.latestNotes})}):null,t.jsx(we,{children:t.jsxs(de,{gap:"sm",children:[t.jsx(Hoe,{...x,job:x.job??f??void 0}),!x.job&&!f&&!x.error&&g&&JE(g.history)?t.jsx(Q,{tone:"critical",role:"alert",children:Uoe(JE(g.history),g.app===!0)}):null,i?t.jsx(Q,{tone:"warning",role:"alert",children:Mx((g==null?void 0:g.app)===!0,g==null?void 0:g.latest).warning}):null,t.jsx(ne,{align:"end",children:i?t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",disabled:o,onClick:()=>l(!1),children:"Cancel"}),t.jsx(A,{variant:"accent",disabled:o,onClick:v,children:Mx((g==null?void 0:g.app)===!0,g==null?void 0:g.latest).button})]}):g!=null&&g.processing&&r===null?null:t.jsx(A,{variant:"accent",disabled:o||r!==null||!(g!=null&&g.updateAvailable),onClick:()=>l(!0),children:Mx((g==null?void 0:g.app)===!0,g!=null&&g.updateAvailable?g.latest:void 0).button})})]})}),g&&g.history.length>0?t.jsx(we,{title:"Upgrades so far",children:t.jsx(un,{items:g.history.slice().reverse().map(k=>({key:k.startedAt,label:t.jsxs("span",{className:"mono",children:[k.from," → ",k.to]}),value:t.jsx(Koe,{attempt:k})}))})}):null]})})}function Hoe({job:e,error:n}){return n?t.jsx(re,{message:n}):e?e.phase==="failed"?t.jsxs(Q,{tone:"critical",role:"alert",children:[wm.failed," ",e.error??""," buddi is still running on the version it had."]}):t.jsx(Q,{tone:e.phase==="done"?"good":void 0,role:"status",children:wm[e.phase]??e.detail??e.phase}):null}function Koe({attempt:e}){return t.jsxs("span",{children:[t.jsx(Ae,{tone:e.outcome==="done"?"good":e.outcome==="failed"?"critical":"warning",children:e.outcome})," ",Xe(e.startedAt),e.step?`, at ${e.step}`:"",e.error?`: ${e.error}`:"",e.backup?t.jsxs("span",{className:"ui-card-meta",children:[" Backup: ",t.jsx("span",{className:"mono",children:e.backup})]}):null]})}function Voe(e){var s;return((s=/[?&]tab=(people|preferences|notes)\b/.exec(e))==null?void 0:s[1])??"people"}const at={back:"Back",checking:"Checking…",mailbox:{sheet:"Add a mailbox",which:"Which mailbox?",providers:{gmail:{name:"Gmail",line:"Google Mail, or Google Workspace.",mark:"G"},icloud:{name:"iCloud",line:"An @icloud.com, @me.com or @mac.com address.",mark:"i"},fastmail:{name:"Fastmail",line:"Fastmail, with your own domain or theirs.",mark:"F"},other:{name:"Other",line:"Any mailbox that offers IMAP.",mark:"@"}},address:"Address",password:"App password",otherPassword:"Password",how:{gmail:{text:"Google wants an app password, not your usual one. 2-Step Verification must be on.",link:"Make one",href:"https://myaccount.google.com/apppasswords"},icloud:{text:"Apple wants an app-specific password, made under Sign-In and Security.",link:"How",href:"https://support.apple.com/en-us/102654"},fastmail:{text:"Fastmail wants an app password with Mail (IMAP/SMTP) access.",link:"How",href:"https://www.fastmail.help/hc/en-us/articles/360058752854"},other:null},server:"Server details",serverHint:"Left empty, buddi tries imap. and smtp. at your domain.",imapHost:"IMAP host",smtpHost:"SMTP host",submit:"Add it",reading:"Mail Triage is reading it.",brings:"Adding it also brings in Mail Triage, who reads what arrives and sorts it for you.",noTriage:e=>`Saved. Mail Triage didn’t start (${e.replace(/[.\s]+$/,"")}); it waits for you on Home.`,later:"More in Mail settings later."},calendar:{sheet:"Link your calendar",ask:"Your calendar’s private link",google:"Sign in with Google",googleLine:"Reads and, when you approve, changes your Google calendars.",or:"or paste a private link",field:"Private link",placeholder:"Paste the whole link",where:"Where do I find it?",help:[{name:"iCloud",text:"In the Calendar app or at icloud.com/calendar, share the calendar, tick Public Calendar, then copy the link."},{name:"Google",text:"Google Calendar on the web → Settings → pick the calendar → Integrate calendar → copy “Secret address in iCal format”."},{name:"Fastmail",text:"Settings → Calendars → Share beside the calendar → turn on the iCal link for anyone with it → copy it."}],submit:"Link it",starting:"Starting…",continue:"Continue to Google",waiting:"Waiting for Google… This finishes by itself when Google sends you back.",reading:"Signed in. Reading your calendars…",again:"Try again",found:e=>`Found ${e} ${e===1?"calendar":"calendars"}.`,events:e=>`Found your calendar: ${e} ${e===1?"event":"events"}.`,later:"More in Calendar settings later."},bank:{sheet:"Your bank",ask:"Statements, not a bank sign-in",line:"Finance never signs in to a bank, so nothing leaves this computer. Once we are done, hand me a statement — a PDF, a photo or your bank’s CSV export — and I read your accounts in.",ok:"Got it"}};function cu(e){return e instanceof pe||e instanceof Error?e.message:String(e)}function el({state:e,children:n}){return e==="bad"?t.jsx("p",{className:"frs-line","data-tone":"bad",role:"alert",children:n}):t.jsxs("div",{className:"wiz-busy",role:"status","aria-live":"polite",children:[t.jsxs("span",{className:"wiz-pulse","data-done":e==="good"?"true":void 0,"aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]}),t.jsx("span",{children:n})]})}const Goe=1400;function xL(e,n){const s=d.useRef(n);s.current=n,d.useEffect(()=>{if(!e)return;const r=window.setTimeout(()=>s.current(),Goe);return()=>window.clearTimeout(r)},[e])}function vL(){const e=d.useRef(null);return d.useEffect(()=>{const n=window.requestAnimationFrame(()=>{var s;return(s=e.current)==null?void 0:s.focus()});return()=>window.cancelAnimationFrame(n)},[]),e}const qoe={gmail:{imapHost:"imap.gmail.com",imapPort:993,smtpHost:"smtp.gmail.com",smtpPort:465},icloud:{imapHost:"imap.mail.me.com",imapPort:993,smtpHost:"smtp.mail.me.com",smtpPort:587},fastmail:{imapHost:"imap.fastmail.com",imapPort:993,smtpHost:"smtp.fastmail.com",smtpPort:465}},Yoe=["gmail","icloud","fastmail","other"],Ox={plugin:"email",agent:"mail-triage"};function Qoe({onClose:e,onAdded:n}){const[s,r]=d.useState(null);return t.jsx(Qe,{title:at.mailbox.sheet,onClose:e,children:s===null?t.jsxs("div",{className:"wiz-sheet-body",children:[t.jsx("h3",{className:"frs-ask",children:at.mailbox.which}),t.jsx("div",{className:"frs-choices",role:"group","aria-label":at.mailbox.which,children:Yoe.map(a=>{const i=at.mailbox.providers[a];return t.jsxs("button",{type:"button",className:"wiz-opt frs-choice",onClick:()=>r(a),children:[t.jsx("span",{className:"frs-mark","data-provider":a,"aria-hidden":"true",children:i.mark}),t.jsxs("span",{className:"frs-choice-text",children:[t.jsx("span",{className:"wiz-opt-title",children:i.name}),t.jsx("span",{className:"wiz-opt-line",children:i.line})]}),t.jsx(se,{name:"chevron-right"})]},a)})}),t.jsx("p",{className:"frs-later",children:at.mailbox.later})]}):t.jsx(Joe,{provider:s,onBack:()=>r(null),onClose:e,onAdded:n},s)})}function Joe({provider:e,onBack:n,onClose:s,onAdded:r}){const a=vL(),[i,l]=d.useState(""),[o,c]=d.useState(""),[u,h]=d.useState(""),[f,m]=d.useState(""),[p,x]=d.useState({kind:"idle"});xL(p.kind==="good",s);const[g,b]=d.useState(!1);d.useEffect(()=>{let N=!1;return Promise.resolve().then(()=>nt.agents()).then(w=>{N||b(!((w==null?void 0:w.agents)??[]).some(S=>S.id===Ox.agent))}).catch(()=>{N||b(!1)}),()=>{N=!0}},[]);const j=at.mailbox.providers[e],v=at.mailbox.how[e],y=i.trim()!==""&&o.trim()!==""&&p.kind!=="busy"&&p.kind!=="good",k=()=>{if(!y)return;x({kind:"busy"});const N=e==="other"?{...u.trim()?{imapHost:u.trim()}:{},...f.trim()?{smtpHost:f.trim()}:{}}:qoe[e];Promise.resolve().then(()=>T.pageAct("email",{tool:"email.add_account",args:{address:i.trim(),password:o,...N}})).then(async w=>{const S=w.result??{};c("");let C=at.mailbox.reading;S.triage==="needs-agent"&&(C=await Promise.resolve().then(()=>T.acceptPluginAgent(Ox.plugin,Ox.agent)).then(()=>(window.dispatchEvent(new Event(Ts)),at.mailbox.reading)).catch(E=>at.mailbox.noTriage(cu(E)))),x({kind:"good",line:C}),r(S.address??i.trim().toLowerCase())}).catch(w=>x({kind:"bad",line:cu(w)}))};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"wiz-sheet-body",children:[t.jsxs("h3",{className:"frs-ask",children:[t.jsx("span",{className:"frs-mark","data-provider":e,"aria-hidden":"true",children:j.mark}),j.name]}),t.jsxs("form",{className:"frs-form",onSubmit:N=>{N.preventDefault(),k()},children:[t.jsx(le,{label:at.mailbox.address,children:t.jsx("input",{ref:a,type:"email",autoComplete:"email",spellCheck:!1,value:i,onChange:N=>l(N.target.value)})}),t.jsx(le,{label:e==="other"?at.mailbox.otherPassword:at.mailbox.password,hint:v?t.jsxs(t.Fragment,{children:[v.text," ",t.jsx("a",{href:v.href,target:"_blank",rel:"noreferrer",children:v.link})]}):void 0,children:t.jsx("input",{type:"password",autoComplete:"off",spellCheck:!1,value:o,onChange:N=>c(N.target.value)})}),e==="other"?t.jsx(Kt,{summary:at.mailbox.server,children:t.jsxs("div",{className:"frs-form",children:[t.jsx("p",{className:"frs-later",children:at.mailbox.serverHint}),t.jsx(le,{label:at.mailbox.imapHost,children:t.jsx("input",{spellCheck:!1,placeholder:"imap.example.com",value:u,onChange:N=>h(N.target.value)})}),t.jsx(le,{label:at.mailbox.smtpHost,children:t.jsx("input",{spellCheck:!1,placeholder:"smtp.example.com",value:f,onChange:N=>m(N.target.value)})})]})}):null,t.jsx("button",{type:"submit",hidden:!0,"aria-hidden":"true",tabIndex:-1})]}),p.kind==="busy"?t.jsx(el,{state:"busy",children:at.checking}):null,p.kind==="good"?t.jsx(el,{state:"good",children:p.line}):null,p.kind==="bad"?t.jsx(el,{state:"bad",children:p.line}):null,p.kind==="idle"&&g?t.jsx("p",{className:"frs-later",children:at.mailbox.brings}):null,t.jsx("p",{className:"frs-later",children:at.mailbox.later})]}),t.jsx("div",{className:"ui-sheet-foot",children:t.jsxs(ne,{children:[t.jsxs(A,{variant:"ghost",onClick:n,disabled:p.kind==="busy",children:[t.jsx(se,{name:"chevron-left"}),at.back]}),t.jsx(ft,{}),t.jsx(A,{variant:"accent",disabled:!y,onClick:k,children:at.mailbox.submit})]})})]})}const jL=2e3,XE=8*6e4;function Xoe(e,n){let s="";try{s=new URL(e.trim().replace(/^webcals?:\/\//i,"https://")).hostname.toLowerCase()}catch{s=""}const r=/google\./.test(s)?"Google calendar":/icloud\.com$|me\.com$/.test(s)?"iCloud calendar":/fastmail\./.test(s)?"Fastmail calendar":/outlook\.|office365\.|live\.com$/.test(s)?"Outlook calendar":"My calendar",a=new Set(n.map(i=>i.toLowerCase()));if(!a.has(r.toLowerCase()))return r;for(let i=2;;i++)if(!a.has(`${r} ${i}`.toLowerCase()))return`${r} ${i}`}function Zoe({onClose:e,onLinked:n}){var L,M,z;const s=vL(),[r,a]=d.useState(null),[i,l]=d.useState(""),[o,c]=d.useState({kind:"idle"});xL(o.kind==="good",e);const u=()=>T.pageQuery("calendar","settings").then(D=>D.data??{});d.useEffect(()=>{let D=!1;return u().then(H=>{D||a(H)}).catch(()=>{D||a({})}),()=>{D=!0}},[]);const h=D=>{c({kind:"good",line:D}),n(D)},f=((L=r==null?void 0:r.calendars)==null?void 0:L.length)??0,m=()=>{if(i.trim()===""||o.kind==="busy"||o.kind==="good")return;c({kind:"busy",line:at.checking});const D=Xoe(i,((r==null?void 0:r.calendars)??[]).map(H=>H.name));Promise.resolve().then(()=>T.pageAct("calendar",{tool:"calendar.add",args:{name:D,link:i.trim()}})).then(H=>{var W;l("");const K=((W=H.result)==null?void 0:W.note)??"",X=/(\d+) events? read/.exec(K);h(X?at.calendar.events(Number(X[1])):at.calendar.found(1))}).catch(H=>c({kind:"bad",line:cu(H)}))},[p,x]=d.useState(null),[g,b]=d.useState(!1),[j,v]=d.useState(0),y=d.useRef(!1),k=d.useRef(void 0),N=(r==null?void 0:r.googleAvailable)===!0,w=d.useRef(null);d.useEffect(()=>{if(!N)return;let D=!1;const H=async X=>{var W,me;if(!(D||y.current)){window.clearTimeout(k.current);try{const fe=B=>{const ue=B==null?void 0:B[0];return ue&&ue.state==="waiting"&&ue.url?ue:void 0};let oe=X?void 0:fe((W=(await T.pageQuery("calendar","sign_in")).data)==null?void 0:W.rows);if(!oe){if(D||y.current)return;await T.pageAct("calendar",{tool:"calendar.google_sign_in",args:{}}),oe=fe((me=(await T.pageQuery("calendar","sign_in")).data)==null?void 0:me.rows)}if(D||y.current)return;if(!oe)throw new Error("no address to open");w.current={id:oe.id,at:Date.now()},x({id:oe.id,url:oe.url}),b(!1),k.current=window.setTimeout(()=>void H(!0),XE)}catch{D||(w.current=null,x(null),b(!0))}}},K=()=>{const X=w.current;document.visibilityState!=="visible"||!X||y.current||Date.now()-X.at>=XE&&H(!0)};return document.addEventListener("visibilitychange",K),H(!1),()=>{D=!0,window.clearTimeout(k.current),document.removeEventListener("visibilitychange",K);const X=w.current;w.current=null,X&&!y.current&&T.pageAct("calendar",{tool:"calendar.google_cancel",args:{id:X.id}}).catch(()=>{})}},[N,j]);const S=D=>{c({kind:"bad",line:D}),y.current=!1,x(null),v(H=>H+1)},[C,E]=d.useState(0),$=o.kind==="google"?((M=o.signIn)==null?void 0:M.id)??null:null;d.useEffect(()=>{if(C===0)return;let D=!1,H=!1,K=!1;const X=()=>{D=!0,window.clearInterval(me)},W=()=>{D||H||(H=!0,T.pageQuery("calendar","sign_in").then(async fe=>{var Ne,Ke,G,ae;if(D)return;const oe=((Ke=(Ne=fe.data)==null?void 0:Ne.rows)==null?void 0:Ke[0])??null;if(!oe)return;if(oe.state==="waiting"){c(J=>{var xe;return J.kind==="google"&&((xe=J.signIn)==null?void 0:xe.url)===oe.url?J:{kind:"google",signIn:oe}});return}if(oe.state==="failed"){X(),S(oe.problem||oe.note);return}X(),oe.state==="received"&&!K&&(K=!0,c({kind:"busy",line:at.calendar.reading}),await T.pageAct("calendar",{tool:"calendar.google_finish",args:{id:oe.id}}));const B=await u();await T.pageAct("calendar",{tool:"calendar.google_dismiss",args:{id:oe.id}}).catch(()=>{});const ue=(((G=B.calendars)==null?void 0:G.length)??0)-f;h(at.calendar.found(ue>0?ue:((ae=B.calendars)==null?void 0:ae.length)??0))}).catch(fe=>{X(),S(cu(fe))}).finally(()=>{H=!1}))},me=window.setInterval(W,jL);return W(),()=>{D=!0,window.clearInterval(me)}},[C]);const R=()=>{!p||o.kind==="google"||(y.current=!0,window.clearTimeout(k.current),c({kind:"google",signIn:{id:p.id,url:p.url,state:"waiting",note:"",problem:""}}),E(D=>D+1))},P=()=>{y.current=!0,window.clearTimeout(k.current),c({kind:"busy",line:at.calendar.starting}),Promise.resolve().then(()=>T.pageAct("calendar",{tool:"calendar.google_sign_in",args:{}})).then(()=>{c({kind:"google",signIn:null}),E(D=>D+1)}).catch(D=>S(cu(D)))},O=()=>{const D=$??(o.kind!=="good"?p==null?void 0:p.id:void 0);window.clearTimeout(k.current),D&&T.pageAct("calendar",{tool:"calendar.google_cancel",args:{id:D}}).catch(()=>{}),e()},I=o.kind==="busy"||o.kind==="google"||o.kind==="good",F=o.kind==="google"?(z=o.signIn)==null?void 0:z.url:o.kind==="busy"||o.kind==="good"||p==null?void 0:p.url,U=o.kind==="google"&&p===null;return t.jsxs(Qe,{title:at.calendar.sheet,onClose:O,children:[t.jsxs("div",{className:"wiz-sheet-body",children:[t.jsx("h3",{className:"frs-ask",children:at.calendar.ask}),r!=null&&r.googleAvailable?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"frs-google",children:[F?t.jsxs(it,{variant:"accent",size:"lg",href:F,target:"_blank",rel:"noreferrer",onClick:R,children:[U?at.calendar.continue:at.calendar.google,t.jsx(se,{name:"external"})]}):t.jsxs(A,{variant:"accent",size:"lg",disabled:I||!g,onClick:P,children:[at.calendar.google,t.jsx(se,{name:"external"})]}),t.jsx("span",{className:"wiz-opt-line",children:at.calendar.googleLine})]}),t.jsx("div",{className:"frs-or",children:at.calendar.or})]}):null,t.jsxs("form",{className:"frs-form",onSubmit:D=>{D.preventDefault(),m()},children:[t.jsx(le,{label:at.calendar.field,children:t.jsx("input",{ref:s,type:"url",inputMode:"url",autoComplete:"off",spellCheck:!1,placeholder:at.calendar.placeholder,value:i,disabled:I,onChange:D=>l(D.target.value)})}),t.jsx(Kt,{summary:at.calendar.where,children:t.jsx("dl",{className:"frs-help",children:at.calendar.help.map(D=>t.jsxs("div",{children:[t.jsx("dt",{children:D.name}),t.jsx("dd",{children:D.text})]},D.name))})}),t.jsx("button",{type:"submit",hidden:!0,"aria-hidden":"true",tabIndex:-1})]}),o.kind==="busy"?t.jsx(el,{state:"busy",children:o.line}):null,o.kind==="google"?t.jsx(el,{state:"busy",children:at.calendar.waiting}):null,o.kind==="good"?t.jsx(el,{state:"good",children:o.line}):null,o.kind==="bad"?t.jsx(el,{state:"bad",children:o.line}):null,t.jsx("p",{className:"frs-later",children:at.calendar.later})]}),t.jsx("div",{className:"ui-sheet-foot",children:t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",disabled:I||i.trim()==="",onClick:m,children:at.calendar.submit})})})]})}function ece({onClose:e,onUnderstood:n}){return t.jsxs(Qe,{title:at.bank.sheet,onClose:e,children:[t.jsxs("div",{className:"wiz-sheet-body",children:[t.jsx("h3",{className:"frs-ask",children:at.bank.ask}),t.jsx("p",{className:"frs-text",children:at.bank.line})]}),t.jsx("div",{className:"ui-sheet-foot",children:t.jsx(ne,{align:"end",children:t.jsx(A,{variant:"accent",onClick:()=>{n(),e()},children:at.bank.ok})})})]})}function tce(e){return!e||e.download===0?"Fetching the browser…":e.phase==="downloading"?`Fetching ${e.what}… ${e.percent}%`:e.phase==="installing"?`Setting up ${e.what}…`:e.phase==="done"?"Installed.":"The install stopped."}function nce({progress:e}){return t.jsxs(de,{gap:"sm",children:[t.jsx("span",{role:"status",children:tce(e)}),t.jsx(Ib,{value:(e==null?void 0:e.percent)??0,label:"Fetching the browser"})]})}const bm=["hello","brain","takeOn","reach","assistant","handover"],yL={hello:"you",brain:"model",takeOn:"take-on",reach:"reach",assistant:"agent",handover:"hello"};function wL(e){return((e==null?void 0:e.accounts)??[]).filter(n=>n.enabled&&n.configured&&n.removalPending!==!0)}function sce(e){var i,l,o;const n=wL(e.accounts),s=e.assistant?(((i=e.accounts)==null?void 0:i.bindings)??[]).find(c=>c.agentId===e.assistant.id):void 0,r=(s==null?void 0:s.accountId)??((o=(l=e.onboarding)==null?void 0:l.details)==null?void 0:o.accountId);if(!r)return;const a=n.find(c=>c.id===r);if(a)return{accountId:a.id,label:a.label,model:(s==null?void 0:s.model)??a.defaultModel}}function bL(e){var i,l,o,c,u;const n=sce(e),s=e.onboarding&&!e.onboarding.needs.agent?e.assistant:void 0,r=((i=e.onboarding)==null?void 0:i.details)??{},a=((l=e.onboarding)==null?void 0:l.stepsDone)??[];return{...(o=e.owner)!=null&&o.preferredName?{name:e.owner.preferredName}:{},...(c=e.owner)!=null&&c.timezone?{clock:e.owner.timezone}:{},...n?{brain:n}:{},...Array.isArray(r.takeOn)?{takeOn:r.takeOn}:s?{takeOn:[]}:{},...r.reach?{reach:r.reach}:a.includes("reach")||s?{reach:{}}:{},...a.includes("browser")||((u=r.reach)==null?void 0:u.browser)===!0?{browser:e.browser??"other"}:{},...s?{assistant:s}:{}}}function kL(e,n){return n==="hello"?typeof e.name=="string"&&e.name!==""&&typeof e.clock=="string"&&e.clock!=="":n==="brain"?e.brain!==void 0:n==="takeOn"?e.takeOn!==void 0:n==="reach"?e.reach!==void 0:n==="assistant"?e.assistant!==void 0:!1}function uf(e){return bm.find(n=>!kL(e,n))??"handover"}function rce(e){const n=bm.indexOf(e);return n>0?bm[n-1]:null}function ZE(e,n,s){return s===n?"now":kL(e,s)?"done":"todo"}function ace(e,n){return{...e}}const Ly="buddi.firstRun.restore";function Fy(e){try{e===null?window.sessionStorage.removeItem(Ly):window.sessionStorage.setItem(Ly,e)}catch{}}function NL(){try{return window.sessionStorage.getItem(Ly)}catch{return null}}function ice(e){const n=bL(e),s=uf(n);return{answers:n,open:s,stay:s!=="handover"}}function lce(e){return e.trim().startsWith("sk-ant-")?"anthropic":"openai"}function oce(e){const n=e.normalize("NFKD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^[^a-z]+/,"").replace(/-+$/,"").slice(0,20).replace(/-+$/,"");return n===""?"assistant":n}const cce=6e4,uce=5*6e4,SL=1500,dce=2e3,hce="(max-width: 720px)";function mc(){const e=d.useRef(null);return d.useEffect(()=>{let n=0,s=0;const r=l=>{const o=l.ownerDocument.activeElement;if(o===null||o===l.ownerDocument.body||o===l.ownerDocument.documentElement)return!0;const c=l.closest('[role="dialog"]');return c!==null&&o.tagName==="BUTTON"&&o.closest('[role="dialog"]')===c},a=()=>{const l=e.current;l&&r(l)&&l.focus()},i=()=>{a(),s=window.setTimeout(a,0)};return typeof window.requestAnimationFrame=="function"?n=window.requestAnimationFrame(i):i(),window.addEventListener("focus",a),()=>{n&&window.cancelAnimationFrame(n),window.clearTimeout(s),window.removeEventListener("focus",a)}},[]),e}const n0=d.createContext({busy:0,report:()=>{}});function fce({children:e}){const[n,s]=d.useState(0),r=d.useCallback(i=>s(l=>Math.max(0,l+(i?1:-1))),[]),a=d.useMemo(()=>({busy:n,report:r}),[n,r]);return t.jsx(n0.Provider,{value:a,children:e})}function At({children:e}){const{busy:n}=d.useContext(n0);return t.jsxs("div",{className:"wiz-say",children:[t.jsx(yd,{state:n>0?"working":"idle",size:"sm",className:"wiz-say-face"}),t.jsx("div",{className:"wiz-bubble",children:e})]})}function vt({children:e}){return t.jsx(t.Fragment,{children:e})}function $s({line:e}){const{report:n}=d.useContext(n0);return d.useEffect(()=>(n(!0),()=>n(!1)),[n]),t.jsxs("div",{className:"wiz-busy",role:"status","aria-live":"polite",children:[t.jsxs("span",{className:"wiz-pulse","aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]}),e]})}const s0=d.createContext(null);function Pn({children:e,actions:n}){const s=d.useContext(s0),r=n==null?null:s?Jo.createPortal(n,s):t.jsx("div",{className:"wiz-dock-inline",children:n});return t.jsxs(t.Fragment,{children:[e?t.jsx("div",{className:"wiz-ask",children:e}):null,r]})}function Vs({onClick:e,disabled:n}){return t.jsxs(A,{variant:"ghost",size:"lg",onClick:e,disabled:n,children:[t.jsx(se,{name:"chevron-left"}),_.back]})}function pc({children:e,onClick:n,disabled:s}){return t.jsxs(A,{variant:"accent",size:"lg",onClick:n,disabled:s,children:[e,t.jsx(se,{name:"arrow"})]})}function mce({navigate:e,timezone:n}){var $n,nn,ce,Me,Ze,Ct,mt;const s=ts(hce),[r,a]=d.useState(void 0);d.useEffect(()=>{T.session().then(Pe=>a(Pe.platform)).catch(()=>{})},[]);const[i,l]=d.useState({}),[o,c]=d.useState(null),[u,h]=d.useState(void 0),[f,m]=d.useState(void 0),[p,x]=d.useState([]),[g,b]=d.useState(null),[j,v]=d.useState(null),[y,k]=d.useState(!1),[N,w]=d.useState(null),[S,C]=d.useState(null),[E,$]=d.useState(null),[R,P]=d.useState(null),[O,I]=d.useState(()=>NL()?"running":"idle"),[F,U]=d.useState({}),[L,M]=d.useState([]),[z,D]=d.useState(0),H=d.useRef(void 0),[K,X]=d.useState(null),[W,me]=d.useState(null),fe=d.useCallback(()=>{Promise.resolve().then(()=>T.takeOnProgress()).then(Pe=>{Pe&&Array.isArray(Pe.plugins)&&X(Pe)}).catch(()=>{})},[]);d.useEffect(()=>{if(!(K!=null&&K.running))return;const Pe=window.setInterval(fe,dce);return()=>window.clearInterval(Pe)},[K==null?void 0:K.running,fe]);const oe=d.useMemo(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||n}catch{return n}},[n]),B=d.useRef(e);B.current=e;const ue=d.useCallback(async(Pe=!0,ct=!1)=>{var On,as,er,tr,Dn,Ot,Ee,Hr,Je;const[_e,Gt,Z,ut,Yn,xn]=await Promise.all([T.onboarding().catch(()=>{}),T.owner().catch(()=>{}),T.providerAccounts().catch(()=>{}),nt.agents().catch(()=>{}),T.browser().catch(()=>{}),T.providers().catch(()=>{})]);h(Z),Array.isArray(_e==null?void 0:_e.offers)&&me(_e.offers);const Te=(as=(On=xn==null?void 0:xn.providers.find(tt=>tt.kind==="anthropic"))==null?void 0:On.defaultModel)==null?void 0:as.trim();m(Te||void 0),x((Gt==null?void 0:Gt.zones)??[]),w(((er=_e==null?void 0:_e.details)==null?void 0:er.conversationId)??null);const De=(ut==null?void 0:ut.agents.find(tt=>tt.id===ut.defaultAgentId))??(ut==null?void 0:ut.agents[0]);De&&b(De),C(_e&&!_e.needs.agent&&De?{id:De.id,name:De.name,avatar:((tr=De.avatar)==null?void 0:tr.kind)==="emoji"?De.avatar.value:"",description:De.description,...De.picture?{picture:De.picture}:{}}:null),Array.isArray((Dn=_e==null?void 0:_e.details)==null?void 0:Dn.takeOn)&&fe();const xt={onboarding:_e,owner:Gt,accounts:Z,browser:(Ot=Yn==null?void 0:Yn.browser)==null?void 0:Ot.engine,...De?{assistant:{id:De.id,name:De.name,avatar:((Ee=De.avatar)==null?void 0:Ee.kind)==="emoji"?De.avatar.value:""}}:{}};if(ct){const tt=ice(xt);if(l(tt.answers),c(tt.open),!tt.stay){const Pt=(Hr=_e==null?void 0:_e.details)==null?void 0:Hr.conversationId;B.current(Pt&&De?ht(De.id,Pt):Un,!0)}return}if(Pe&&(_e==null?void 0:_e.state)==="done"){const tt=(Je=_e.details)==null?void 0:Je.conversationId;B.current(tt&&De?ht(De.id,tt):Un,!0);return}if(!Pe)return;const It=bL(xt);l(It),c(tt=>tt??uf(It))},[]);d.useEffect(()=>{ue()},[ue]);const Ne=(Pe,ct={})=>{Promise.resolve().then(()=>T.onboardingStep(yL[Pe],ct)).catch(()=>{})},Ke=Pe=>uf(Pe)==="brain"&&F.brain?{...Pe,brain:F.brain}:Pe,G=(Pe,ct)=>{const _e=Ke(ct);_e.brain&&(H.current=_e.brain),v(null),M([]),l(_e),Pe==="brain"&&_e.brain?Ne(Pe,{accountId:_e.brain.accountId}):Pe==="reach"?Ne(Pe,_e.reach?{reach:_e.reach}:{}):Pe!=="takeOn"&&Ne(Pe),c(uf(_e))},ae=(Pe,ct)=>{v(null),l(ct),ct.brain&&(H.current=ct.brain),Pe==="brain"&&ct.brain&&Ne(Pe,{accountId:ct.brain.accountId})},J=Pe=>{v(null),l(ct=>ace(ct)),c(Pe)},xe=()=>{if(!o)return;const Pe=rce(o==="handover"?"handover":o);Pe&&J(Pe)},Ie=()=>{const Pe=i.brain??H.current,ct=((K==null?void 0:K.plugins)??[]).filter(_e=>_e.state==="ready").map(_e=>_e.title);v(null),U({}),M([]),l({}),c("hello"),D(_e=>_e+1),(async()=>{var Te;const[_e,Gt,Z]=await Promise.all([Promise.resolve().then(()=>T.providerAccounts()).catch(()=>{}),Promise.resolve().then(()=>T.telegram()).catch(()=>{}),Promise.resolve().then(()=>T.browser()).catch(()=>{})]),ut=wL(_e),Yn=Pe&&ut.some(De=>De.id===Pe.accountId)?Pe:void 0;_e&&h(_e),U(Yn?{brain:Yn}:{});const xn=[...new Set(ut.map(De=>De.label)),...Gt!=null&&Gt.paired?[_.startOver.telegram]:[],...((Te=Z==null?void 0:Z.browser)==null?void 0:Te.engine)==="chromium"?[_.startOver.browser]:[],...ct];M(xn.length>0?[_.startOver.said(xn.join(", "))]:[])})()},Y=()=>{k(!0),T.skipOnboarding().then(()=>e(Un)).catch(Pe=>v(Pe instanceof pe?Pe.message:String(Pe))).finally(()=>k(!1))},te=ve(()=>T.version().catch(()=>({current:""})),[]),ie=d.useRef(null);d.useEffect(()=>{ie.current&&(ie.current.scrollTop=0)},[o]);const ge=O==="running",je=Object.keys(i).length===0,Se={answers:i,accounts:u,claudeModel:f,zones:p,browserZone:oe,assistantAgent:g,met:N,onMet:w,existing:S,progress:K,offers:W,onProgress:fe,navigate:e,onSettled:Pe=>o&&G(o,Pe),onKept:Pe=>o&&ae(o,Pe),onBack:xe,onTrouble:v,onReload:()=>void ue(!1),onPickAnotherBrain:()=>J("brain"),onSpoken:P},ke=(i.takeOn??[]).map(Pe=>{var ct;return((ct=Bf.find(_e=>_e.id===Pe))==null?void 0:ct.title)??Pe}),Be=(K==null?void 0:K.plugins)??[],rt=Be.filter(Pe=>Pe.state==="ready").length,ye=Be.length===0?null:K!=null&&K.running?_.takeOn.installing(rt,Be.length):rt===Be.length?_.takeOn.installed:null,Ue=[($n=i.reach)!=null&&$n.phone?_.reach.done.phone:null,(nn=i.reach)!=null&&nn.mailbox?_.reach.done.mailbox:null,(ce=i.reach)!=null&&ce.app||(Me=i.reach)!=null&&Me.browser?_.reach.done.app:null].filter(Pe=>Pe!==null),st={hello:{answer:_.hello.answer(i.name??""),sub:i.clock??null},brain:{answer:_.brain.answer(((Ze=i.brain)==null?void 0:Ze.label)??"")},takeOn:{answer:_.takeOn.answer(ke),sub:ye},reach:{answer:_.reach.answer(Ue)},assistant:{answer:((Ct=i.assistant)==null?void 0:Ct.name)??""}},Fe=bm.filter(Pe=>Pe!=="handover"),wt=o===null||o==="handover"?Fe.length:Fe.indexOf(o),ot=Math.min(wt,Fe.length-1),tn=R?null:t.jsxs("div",{className:"wiz-map-out",children:[t.jsx("button",{type:"button",className:"wiz-link",disabled:y,onClick:Y,children:_.later}),o==="hello"&&je&&O==="idle"?t.jsx("button",{type:"button",className:"wiz-link",onClick:()=>I("form"),children:_.restore.offer}):!ge&&o!==null&&!(o==="hello"&&je)?t.jsx("button",{type:"button",className:"wiz-link",disabled:y,onClick:Ie,children:_.startOver.link}):null]}),$t=r===void 0||r==="darwin"?_.tagline:_.taglineElsewhere,Et=o&&o!=="handover"?t.jsx("span",{className:"wiz-count",children:_.count(wt+1)}):t.jsx("span",{className:"wiz-count"});return t.jsx(s0.Provider,{value:E,children:t.jsx(fce,{children:t.jsxs(fP,{className:"wiz-ground",children:[t.jsx("div",{className:"wiz",ref:ie,"data-phone":s?"true":void 0,"data-testid":"meet",children:t.jsxs("div",{className:"wiz-frame",children:[s?t.jsxs("div",{className:"wiz-strip",children:[t.jsx(Hu,{size:"sm"}),t.jsx("span",{className:"wiz-dots","aria-label":o&&o!=="handover"?_.count(wt+1):void 0,children:Fe.map(Pe=>t.jsx("i",{"data-state":ZE(i,o,Pe)},Pe))}),t.jsx("span",{className:"wiz-strip-name",children:o&&o!=="handover"?_.strip(wt+1,_.chapters[wt]??""):_.handover.starterLabel})]}):t.jsxs("nav",{className:"wiz-map","aria-label":"Chapters",children:[t.jsxs("div",{className:"wiz-head",children:[t.jsx(Hu,{size:"lg"}),t.jsxs("div",{children:[t.jsx("div",{className:"wiz-head-name",children:"buddi"}),t.jsx("div",{className:"wiz-head-line",children:$t}),(mt=te.data)!=null&&mt.current?t.jsxs("div",{className:"wiz-head-version mono",children:["buddi ",te.data.current]}):null]})]}),Fe.map((Pe,ct)=>{const _e=ge?Pe==="hello"?"now":"todo":ZE(i,o,Pe),Gt=st[Pe];return t.jsxs("div",{className:"wiz-ch","data-state":_e,"aria-current":_e==="now"?"step":void 0,children:[t.jsx("span",{className:"wiz-num","data-state":_e,children:_e==="done"?t.jsx(se,{name:"check",size:12}):ct+1}),t.jsxs("span",{className:"wiz-ch-label",children:[_e==="done"?Gt.answer:_.chapters[ct],_e==="done"&&Gt.sub?t.jsx("span",{className:"wiz-ch-sub",children:Gt.sub}):null]}),_e==="done"&&!ge?t.jsx("button",{type:"button",className:"wiz-link",onClick:()=>J(Pe),children:_.change}):null]},Pe)}),t.jsx("div",{className:"wiz-map-spacer"}),t.jsx("div",{className:"wiz-map-note",children:_.mapNotes[ot]}),tn]}),t.jsx("div",{className:"wiz-stage",role:"main",children:t.jsxs("div",{className:"wiz-column","data-width":o==="hello"?"narrow":o==="brain"?"mid":"wide",children:[t.jsxs(BW,{dock:t.jsxs(t.Fragment,{children:[Et,t.jsx("div",{className:"wiz-dock-actions",ref:$})]}),children:[ge?t.jsx(Vce,{onDone:Pe=>{I("idle"),M([...Pe?[_.restore.welcome(Pe)]:[],_.restore.keys]),ue(!0,!0)},onFailed:Pe=>{I("idle"),v(Pe)}}):o==="hello"?t.jsx(pce,{...Se}):o==="brain"?t.jsx(xce,{...Se}):o==="takeOn"?t.jsx(Mce,{...Se}):o==="reach"?t.jsx(Oce,{...Se}):o==="assistant"?t.jsx(Bce,{...Se}):o==="handover"?t.jsx(Wce,{...Se}):t.jsx($s,{}),L.length>0||j?t.jsxs(vt,{children:[L.map(Pe=>t.jsx(At,{children:Pe},Pe)),j?t.jsx(At,{children:j}):null]}):null]},`${z}-${o??""}-${ge?"r":""}`),s?t.jsx("div",{className:"wiz-phone-out",children:tn}):null]})})]})}),O==="form"?t.jsx(Kce,{onCancel:()=>I("idle"),onStarted:()=>I("running"),onTrouble:v}):null]})})})}function gc({children:e}){return t.jsx("h1",{className:"wiz-title",children:e})}function eA(e){try{return Lt(new Date,e)}catch{return""}}function pce({answers:e,zones:n,browserZone:s,onSettled:r,onTrouble:a}){const i=mc(),[l,o]=d.useState(e.name??""),[c,u]=d.useState(e.clock??s),[h,f]=d.useState(!1),[m,p]=d.useState(!1),x=()=>{const g=l.trim();g===""||m||(p(!0),T.setOwner({preferredName:g,timezone:c}).then(()=>r({...e,name:g,clock:c})).catch(b=>a(b instanceof pe?b.message:String(b))).finally(()=>p(!1)))};return t.jsxs(t.Fragment,{children:[t.jsx(gc,{children:_.hello.title}),t.jsx(vt,{children:_.hello.opening.map(g=>t.jsx(At,{children:g},g))}),t.jsxs(Pn,{actions:t.jsx(pc,{onClick:x,disabled:m||l.trim()==="",children:_.hello.submit}),children:[t.jsxs("div",{className:"wiz-pair",children:[t.jsx(le,{label:_.name.label,children:t.jsx("input",{ref:i,placeholder:_.name.placeholder,maxLength:80,value:l,onChange:g=>o(g.target.value),onKeyDown:g=>{g.key==="Enter"&&(g.preventDefault(),x())}})}),h?t.jsx(le,{label:_.clock.label,hint:_.clock.hint(eA(c)),children:t.jsx("select",{value:c,onChange:g=>u(g.target.value),children:(n.includes(c)?n:[c,...n]).map(g=>t.jsx("option",{value:g,children:g},g))})}):t.jsx(le,{label:_.clock.label,hint:_.clock.hint(eA(c)),action:t.jsx(A,{size:"lg",onClick:()=>f(!0),children:_.clock.change}),children:t.jsx("input",{value:c,readOnly:!0})})]}),t.jsx("div",{className:"wiz-foot",children:_.hello.foot})]})]})}const gce={free:{icon:"cloud",tone:"good"},claude:{icon:"bulb",tone:"mail"},chatgpt:{icon:"chat",tone:"coding"},key:{icon:"key",tone:"accent"},local:{icon:"monitor",tone:"plain",wide:!0}};function xce(e){const{accounts:n,answers:s,onSettled:r,onKept:a,onReload:i,onBack:l}=e,[o,c]=d.useState(null),[u,h]=d.useState("key"),[f,m]=d.useState(null),[p,x]=d.useState(!1),[g,b]=d.useState(null),[j,v]=d.useState(null),[y,k]=d.useState(null),N=(n==null?void 0:n.anthropicOAuthEnabled)===!0,w=(n==null?void 0:n.codexEnabled)===!0,S=n==null?void 0:n.gemini,[C,E]=d.useState(null);d.useEffect(()=>{let z=!1;const D=()=>{Promise.resolve().then(()=>T.ollama()).then(K=>{!z&&K&&b(K)}).catch(()=>{}),Promise.resolve().then(()=>T.mlxh()).then(K=>{!z&&K&&v(K)}).catch(()=>{z||v({running:!1,baseUrl:"",manager:!1,models:[]})})};D();const H=window.setInterval(D,4e3);return()=>{z=!0,window.clearInterval(H)}},[]);const $=async z=>{if(s.assistant??e.existing)try{await T.bindBrain({accountId:z.accountId,model:z.model})}catch(D){return D instanceof pe?D.message:String(D)}return i(),a({...s,brain:z}),C==null||C.close(),E(null),c(null),k(null),null},R=async(z,D,H)=>{x(!0),m(null);try{const K=await T.saveProviderAccount(z);let X=await T.testProviderAccount(K.id),W=z.defaultModel,me=!1;if(X.state!=="connected"&&H&&H!==W&&wD(X)){const oe=(await T.providerAccounts()).accounts.find(B=>B.id===K.id);oe&&(await T.saveProviderAccount({id:oe.id,revision:oe.revision,label:oe.label,kind:oe.kind,auth:oe.auth,baseUrl:oe.baseUrl,defaultModel:H,enabled:oe.enabled}),X=await T.testProviderAccount(K.id),X.state==="connected"&&(W=H,me=!0))}if(X.state!=="connected"){try{const oe=(await T.providerAccounts()).accounts.find(B=>B.id===K.id);oe&&await T.removeProviderAccount(K.id,oe.revision)}catch{}return m(X.message),X}const fe=await $({accountId:K.id,label:D,model:W,...me?{freeTier:me}:{}});return fe&&m(fe),X}catch(K){return m(K instanceof pe?K.message:String(K)),null}finally{x(!1)}},P=async z=>{x(!0),m(null);try{const D=await T.saveProviderAccount(z);let H;try{H=await T.testProviderAccount(D.id)}finally{try{const K=(await T.providerAccounts()).accounts.find(X=>X.id===D.id);K&&await T.removeProviderAccount(D.id,K.revision)}catch{}}return H.state!=="connected"&&m(H.message),H}catch(D){return m(D instanceof pe?D.message:String(D)),null}finally{x(!1)}},O=(z,D,H)=>{if(z.length<=1){R(D(z[0]??""),H);return}k({models:z,make:D,label:H})},I=z=>{if(z===o)return;C==null||C.close(),E(z==="free"&&typeof window.open=="function"?window.open("","_blank"):null),m(null),k(null),h("key"),c(z)},F=()=>{C==null||C.close(),E(null),k(null),m(null),c(null)},U=EL(g,j),L=["free",...N?["claude"]:[],...w?["chatgpt"]:[],"key","local"];let M=null;return y?M=t.jsxs(t.Fragment,{children:[t.jsx(vt,{children:t.jsx(At,{children:_.brain.model.ask})}),p?t.jsx($s,{line:_.brain.checking.service}):f?t.jsx(vt,{children:t.jsx(At,{children:f})}):null,t.jsx(vce,{busy:p,models:y.models,onBack:F,onUse:z=>void R(y.make(z),y.label)})]}):o==="key"?M=t.jsxs(t.Fragment,{children:[t.jsx(dn,{label:_.brain.keyKinds.label,value:u,onChange:z=>{m(null),h(z)},options:[{value:"key",label:_.brain.keyKinds.key},...S?[{value:"gemini",label:_.brain.keyKinds.gemini}]:[],{value:"service",label:_.brain.keyKinds.service}]}),u==="gemini"&&S?t.jsx(yce,{busy:p,problem:f,preset:S,onBack:F,onUse:R},"gemini"):u==="service"?t.jsx(kce,{busy:p,problem:f,address:(g==null?void 0:g.cloudBaseUrl)??"",onBack:F,onOffer:O,onTrial:P,onUse:R},"service"):t.jsx(jce,{busy:p,problem:f,onBack:F,onUse:R},"key")]}):o==="local"?M=t.jsx(bce,{busy:p,problem:f,probe:g,mlxh:j,onBack:F,onOffer:O,onUse:R,onCloud:()=>I("free")}):o==="free"?M=t.jsx(Sce,{...e,busy:p,consent:C,onBack:F,onConnected:$}):o==="chatgpt"?M=t.jsx(Ace,{...e,busy:p,consent:C,onBack:F,onConnected:$}):o==="claude"&&(M=t.jsx(Tce,{...e,busy:p,problem:f,onBack:F,onConnected:$})),t.jsxs(t.Fragment,{children:[t.jsx(gc,{children:_.brain.title}),t.jsx(vt,{children:t.jsx(At,{children:_.brain.ask})}),t.jsx("div",{className:"wiz-grid",role:"group","aria-label":_.brain.ask,children:L.map(z=>{const D=gce[z],H=_.brain.cards[z];return t.jsxs("button",{type:"button",className:"wiz-opt","aria-pressed":o===z,"data-wide":D.wide?"true":void 0,onClick:()=>I(z),children:[t.jsx("span",{className:"wiz-glyph","data-tone":D.tone,"aria-hidden":"true",children:t.jsx(se,{name:D.icon})}),t.jsxs("span",{children:[t.jsx("span",{className:"wiz-opt-title",children:H.title}),t.jsx("span",{className:"wiz-opt-line",children:z==="local"?U:H.line}),"pill"in H?t.jsx(Ae,{tone:"good",children:H.pill}):null]})]},z)})}),M,M===null&&s.brain?t.jsxs(vt,{children:[t.jsx(At,{children:s.brain.freeTier?_.brain.worksOnFlash(s.brain.model):_.brain.works(s.brain.model)}),t.jsx(Cce,{...e}),s.brain.label===_.brain.ollama.label||s.brain.label===_.brain.mlxh.label?t.jsx(Q,{tone:"warm",title:_.brain.ollama.honestTitle,children:_.brain.ollama.honest}):null]}):null,M===null?t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:l}),t.jsx(pc,{onClick:()=>s.brain&&r(s),disabled:!s.brain,children:_.brain.submit})]})}):null]})}function vce({busy:e,models:n,onBack:s,onUse:r}){const[a,i]=d.useState(n[0]??"");return t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:s,disabled:e}),t.jsx(A,{variant:"accent",size:"lg",disabled:e||a==="",onClick:()=>r(a),children:_.brain.model.submit})]}),children:t.jsx(le,{label:_.brain.model.label,grow:!0,children:t.jsx("select",{value:a,onChange:l=>i(l.target.value),children:n.map(l=>t.jsx("option",{value:l,children:l},l))})})})}function CL({models:e,picked:n,disabled:s,onPick:r}){return t.jsx(le,{label:_.brain.model.label,grow:!0,children:t.jsx("select",{value:n,disabled:s,onChange:a=>r(a.target.value),children:e.map(a=>t.jsx("option",{value:a,children:a},a))})})}function jce({busy:e,problem:n,onBack:s,onUse:r}){const a=mc(),[i,l]=d.useState(""),[o,c]=d.useState(null),[u,h]=d.useState(!1),[f,m]=d.useState([]),[p,x]=d.useState(""),[g,b]=d.useState(!1),j=e||u,v=!g&&n!==null&&f.length>0,y=o??lce(i),k=()=>{const N=i.trim();N===""||j||(h(!0),b(!1),(async()=>{var E;let w=y==="anthropic"?"claude-sonnet-5":"gpt-5",S=f;if(v&&p!=="")w=p;else try{const $=await T.probeModels({kind:y,auth:"api-key",secret:N});w=((E=$.models.find(R=>R.isDefault))==null?void 0:E.id)??w,S=$.models.map(R=>R.id)}catch{S=[]}h(!1);const C=await r({label:y==="anthropic"?_.brain.key.anthropic:_.brain.key.openai,kind:y,auth:"api-key",baseUrl:"",defaultModel:w,enabled:!0,secret:N},y==="anthropic"?_.brain.key.anthropic:_.brain.key.openai);if(!(!C||C.state==="connected")){if(eb(C)){b(!0),m([]);return}m(S.includes(w)||S.length===0?S:[w,...S]),x(w)}})())};return t.jsxs(t.Fragment,{children:[j?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.key})}):g?t.jsx(vt,{children:t.jsx(At,{children:_.brain.key.refused})}):n?t.jsx(vt,{children:t.jsx(At,{children:n})}):null,t.jsxs(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:s,disabled:j}),t.jsx(A,{variant:"accent",size:"lg",disabled:j||i.trim()==="",onClick:k,children:v?_.brain.model.retry:_.brain.key.submit})]}),children:[t.jsx(le,{label:_.brain.key.field,grow:!0,children:t.jsx("input",{ref:a,type:"password",autoComplete:"off",spellCheck:!1,placeholder:_.brain.key.placeholder,value:i,onChange:N=>{l(N.target.value),m([])},onKeyDown:N=>{N.key==="Enter"&&(N.preventDefault(),k())}})}),v?t.jsx(CL,{models:f,picked:p,disabled:j,onPick:x}):null,t.jsxs("button",{type:"button",className:"wiz-link",onClick:()=>c(y==="anthropic"?"openai":"anthropic"),children:[y==="anthropic"?_.brain.key.anthropic:_.brain.key.openai," · ",_.brain.key.which]})]})]})}function yce({busy:e,problem:n,preset:s,onBack:r,onUse:a}){const i=mc(),[l,o]=d.useState(""),[c,u]=d.useState(!1),[h,f]=d.useState([]),[m,p]=d.useState(""),x=e||c,g=n!==null&&h.length>0,b=()=>{const j=l.trim();j===""||x||(u(!0),(async()=>{let v=xD,y;if(g&&m!=="")v=m;else try{const N=(await T.probeModels({kind:"openai-compatible",auth:"api-key",baseUrl:s.baseUrl,secret:j})).models.map(w=>w.id);v=vD(N)??v,y=yD(v)?jD(N):void 0,f(mae(N)),p(y??v)}catch{}u(!1),await a({label:_.brain.gemini.label,kind:"openai-compatible",auth:"api-key",baseUrl:s.baseUrl,defaultModel:v,enabled:!0,secret:j},_.brain.gemini.label,y)})())};return t.jsxs(t.Fragment,{children:[x?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.gemini})}):n?t.jsx(vt,{children:t.jsx(At,{children:n})}):null,t.jsxs(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:r,disabled:x}),t.jsx(A,{variant:"accent",size:"lg",disabled:x||l.trim()==="",onClick:b,children:_.brain.gemini.submit})]}),children:[t.jsx(le,{label:_.brain.gemini.field,grow:!0,children:t.jsx("input",{ref:i,type:"password",autoComplete:"off",spellCheck:!1,placeholder:_.brain.gemini.placeholder,value:l,onChange:j=>o(j.target.value),onKeyDown:j=>{j.key==="Enter"&&(j.preventDefault(),b())}})}),g?t.jsx(le,{label:_.brain.model.label,grow:!0,children:t.jsx("select",{value:m,disabled:x,onChange:j=>p(j.target.value),children:h.map(j=>t.jsx("option",{value:j,children:j},j))})}):null,t.jsx("a",{className:"wiz-link",href:s.keyUrl,target:"_blank",rel:"noreferrer",children:_.brain.gemini.get})]})]})}function EL(e,n){return e===null||n===null?_.brain.local.looking:!e.running&&!n.running?_.brain.local.missing:_.brain.local.found({...e.running?{ollama:e.models.length}:{},...n.running?{mlxh:n.models.length}:{}})}const wce=1e3;function tA({command:e}){const[n,s]=d.useState(!1);return d.useEffect(()=>{if(!n)return;const r=window.setTimeout(()=>s(!1),1600);return()=>window.clearTimeout(r)},[n]),t.jsxs("div",{className:"rs-cmd",children:[t.jsx("code",{className:"rs-cmd-text",children:e}),t.jsx(A,{size:"sm",onClick:()=>{var r;return void((r=navigator.clipboard)==null?void 0:r.writeText(e).then(()=>s(!0),()=>{}))},children:n?_.brain.ollama.copied:_.brain.ollama.copy})]})}const nA=e=>(e/1e9).toFixed(1);function bce({busy:e,problem:n,probe:s,mlxh:r,onBack:a,onOffer:i,onUse:l,onCloud:o}){const c=(s==null?void 0:s.models)??[],u=jy(r),h=s==null?void 0:s.machine,[f,m]=d.useState(null),[p,x]=d.useState(null),g=d.useRef(null),b=f??(s==null?void 0:s.pull)??null,j=(b==null?void 0:b.state)==="pulling",v=O=>({label:_.brain.ollama.label,kind:"openai-compatible",auth:"none",baseUrl:(s==null?void 0:s.baseUrl)??"",defaultModel:O,enabled:!0});d.useEffect(()=>{if(!j)return;let O=!1;const I=window.setInterval(()=>{T.ollamaPullState().then(F=>{!O&&F.pull&&m(F.pull)},()=>{})},wce);return()=>{O=!0,window.clearInterval(I)}},[j]),d.useEffect(()=>{(f==null?void 0:f.state)!=="done"||!s||g.current===f.model||(g.current=f.model,l(v(f.model),_.brain.ollama.label))},[f==null?void 0:f.state,f==null?void 0:f.model,s]);const y=O=>{x(null),g.current=null,T.ollamaPull(O).then(I=>m(I.pull),I=>x(I instanceof pe?I.message:String(I)))},k=()=>{!(r!=null&&r.running)||!u||l({label:_.brain.mlxh.label,kind:"openai-compatible",auth:"none",baseUrl:r.baseUrl,defaultModel:u,enabled:!0},_.brain.mlxh.label)},N=s!==null&&r!==null&&!s.running&&!r.running,w=()=>{s&&i(c,v,_.brain.ollama.label)},S=(h==null?void 0:h.platform)==="darwin"?"this Mac":"this computer",C=(s==null?void 0:s.running)===!0&&c.length===0,E=h!==void 0&&!(r!=null&&r.running)&&(C||N||j),$=h!=null&&h.cloudSuggested?h.memoryGb<7?"memory":"gpu":null,R=h?t.jsxs("div",{className:"wiz-foot",children:[_.brain.ollama.cloud($,h.memoryGb)," ",t.jsx("button",{type:"button",className:"wiz-link",onClick:o,children:_.brain.ollama.useCloud})]}):null;let P=null;if(E&&h){const O=(b==null?void 0:b.state)==="failed"?b:null;if(j&&b){const I=b.total>0?b.completed/b.total:0;P=t.jsxs("div",{className:"wiz-stack",children:[t.jsxs("div",{className:"wiz-busy","data-boxed":"true",children:[t.jsxs("span",{className:"wiz-pulse","aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]}),t.jsx("span",{children:_.brain.ollama.fetching(b.model,nA(b.completed),b.total>0?nA(b.total):"")}),t.jsxs("span",{className:"wiz-busy-side",children:[Math.round(I*100),"%"]})]}),t.jsx(Ib,{value:I*100,label:_.brain.ollama.fetch(b.model)}),t.jsx("div",{className:"wiz-foot",children:_.brain.ollama.fetchingFoot})]})}else if(C){const I=(O==null?void 0:O.model)??h.recommended.model;P=t.jsxs("div",{className:"wiz-stack",children:[t.jsx(vt,{children:t.jsx(At,{children:O?_.brain.ollama.failed(O.error??""):_.brain.ollama.empty(S,h.memoryGb,h.recommended.model,h.recommended.sizeGb)})}),p?t.jsx(Q,{tone:"critical",children:p}):null,t.jsxs(ne,{children:[t.jsx("span",{className:"wiz-foot",children:_.brain.ollama.emptyFoot(S)}),t.jsx(ft,{}),t.jsx(A,{variant:"accent",size:"lg",disabled:e,onClick:()=>y(I),children:O?_.brain.ollama.again:_.brain.ollama.fetch(I)})]}),R]})}else h.installed?P=t.jsxs("div",{className:"wiz-stack",children:[t.jsx(vt,{children:t.jsx(At,{children:_.brain.ollama.stopped(h.platform)})}),h.platform==="linux"?t.jsx(tA,{command:"ollama serve"}):null,R]}):P=t.jsxs("div",{className:"wiz-stack",children:[t.jsx(vt,{children:t.jsx(At,{children:_.brain.ollama.missing(S)})}),h.install.command?t.jsx(tA,{command:h.install.command}):null,t.jsxs(ne,{children:[t.jsx("span",{className:"wiz-foot",children:_.brain.ollama.missingHow(h.platform,S)}),t.jsx(ft,{}),h.platform==="linux"?null:t.jsx(it,{size:"lg",href:h.install.url,target:"_blank",rel:"noreferrer",children:_.brain.ollama.download})]}),R]})}return t.jsxs(t.Fragment,{children:[e?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.ollama})}):n?t.jsx(vt,{children:t.jsx(At,{children:n})}):null,P,t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:a,disabled:e}),s!=null&&s.running&&c.length>0?t.jsx(A,{variant:r!=null&&r.running?void 0:"accent",size:"lg",disabled:e,onClick:w,children:_.brain.ollama.connect}):null,r!=null&&r.running?t.jsx(A,{variant:"accent",size:"lg",disabled:e||!u,onClick:k,children:_.brain.mlxh.connect}):null,N&&s&&!h?t.jsx(it,{variant:"accent",size:"lg",href:s.downloadUrl,target:"_blank",rel:"noreferrer",children:_.brain.ollama.download}):null]}),children:E?null:t.jsxs("span",{className:"wiz-foot",children:[EL(s,r),r!=null&&r.running&&!u?` ${_.brain.mlxh.noBrain}`:"",N&&(r!=null&&r.baseUrl)?` ${UO(r.baseUrl)}`:""]})})]})}function kce({busy:e,problem:n,address:s,onBack:r,onOffer:a,onTrial:i,onUse:l}){const o=mc(),[c,u]=d.useState(s),[h,f]=d.useState(""),[m,p]=d.useState(!1),[x,g]=d.useState([]),[b,j]=d.useState(""),[v,y]=d.useState(!1),k=e||m,N=!v&&n!==null&&x.length>0,w=()=>{c.trim()===""||k||(p(!0),y(!1),(async()=>{var F;const S=h.trim()?"api-key":"none",C=U=>({label:_.brain.service.label,kind:"openai-compatible",auth:S,baseUrl:c.trim(),defaultModel:U,enabled:!0,...h.trim()?{secret:h.trim()}:{}}),E=(U,L,M)=>{if(!(!U||U.state==="connected")){if(eb(U)){y(!0),g([]);return}g(L),j(M)}};if(S==="api-key"&&N&&b!==""){p(!1),E(await l(C(b),_.brain.service.label),x,b);return}let $=[],R;try{const U=await T.probeModels({kind:"openai-compatible",auth:S,baseUrl:c.trim(),...h.trim()?{secret:h.trim()}:{}});$=U.models.map(L=>L.id),R=(F=U.models.find(L=>L.isDefault))==null?void 0:F.id}catch{}p(!1);const P=R?[R]:$;if(S==="none"){a(P,C,_.brain.service.label);return}const O=P[0]??"";if(P.length<=1){E(await l(C(O),_.brain.service.label),$,O);return}const I=await i(C(O));(I==null?void 0:I.state)==="connected"?a(P,C,_.brain.service.label):E(I,$,O)})())};return t.jsxs(t.Fragment,{children:[k?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.service})}):v?t.jsx(vt,{children:t.jsx(At,{children:_.brain.key.refused})}):n?t.jsx(vt,{children:t.jsx(At,{children:n})}):null,t.jsxs(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:r,disabled:k}),t.jsx(A,{variant:"accent",size:"lg",disabled:k||c.trim()==="",onClick:w,children:N?_.brain.model.retry:_.brain.service.submit})]}),children:[t.jsx(le,{label:_.brain.service.address,grow:!0,children:t.jsx("input",{ref:o,value:c,placeholder:_.brain.service.addressPlaceholder,onChange:S=>{u(S.target.value),g([])}})}),t.jsx(le,{label:_.brain.service.key,children:t.jsx("input",{type:"password",autoComplete:"off",spellCheck:!1,value:h,onChange:S=>{f(S.target.value),g([])}})}),N?t.jsx(CL,{models:x,picked:b,disabled:k,onPick:j}):null]})]})}const Nce=2e3;function Sce({busy:e,consent:n,onBack:s,onConnected:r,accounts:a}){const[i,l]=d.useState(!0),[o,c]=d.useState(null),[u,h]=d.useState(null),[f,m]=d.useState(0),p=d.useRef(-1),x=d.useRef(null),g=_.brain.cloud.label;d.useEffect(()=>{if(p.current===f)return;p.current=f,l(!0),c(null);const j=f===0?n:x.current;(async()=>{try{const v=((a==null?void 0:a.accounts)??[]).find(w=>w.auth==="device-key"),y=v?{id:v.id}:await T.saveProviderAccount({label:g,kind:"openai-compatible",auth:"device-key",baseUrl:"",defaultModel:Yh,enabled:!0}),k=(await T.providerAccounts()).accounts.find(w=>w.id===y.id),N=await T.ollamaConnect(k.id,k.revision);h({id:k.id,attemptId:N.attemptId,url:N.verificationUrl}),j&&(j.location.href=N.verificationUrl)}catch(v){j==null||j.close(),c(v instanceof pe?v.message:String(v))}finally{l(!1)}})()},[f]),d.useEffect(()=>{if(!u)return;let j=!1,v=!1;const y=async()=>{if(!(j||v)){v=!0;try{const N=await T.ollamaPoll(u.id,u.attemptId);if(j||N.state==="waiting")return;if(j=!0,h(null),N.state==="failed"){c(N.message);return}l(!0),c(await b(u.id)),l(!1)}catch{}finally{v=!1}}},k=window.setInterval(()=>void y(),Nce);return()=>{j=!0,window.clearInterval(k)}},[u]);const b=async j=>{try{const v=(await T.accountModels(j).catch(()=>({models:[]}))).models.map(w=>w.id),y=v.length===0||v.includes(Yh)?Yh:v[0],k=(await T.providerAccounts()).accounts.find(w=>w.id===j);k&&k.defaultModel!==y&&await T.saveProviderAccount({id:k.id,revision:k.revision,label:k.label,kind:k.kind,auth:k.auth,baseUrl:k.baseUrl,defaultModel:y,enabled:k.enabled});const N=await T.testProviderAccount(j);return N.state!=="connected"?N.message:await r({accountId:j,label:g,model:y})}catch(v){return v instanceof pe?v.message:String(v)}};return t.jsxs(t.Fragment,{children:[i||e?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.cloud})}):o?t.jsx(vt,{children:t.jsx(At,{children:o})}):u?t.jsx(vt,{children:t.jsx(At,{children:_.brain.cloud.waiting})}):null,t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:s,disabled:i||e}),u?t.jsx(it,{variant:"accent",size:"lg",href:u.url,target:"_blank",rel:"noreferrer",children:_.brain.cloud.open}):o?t.jsx(A,{variant:"accent",size:"lg",disabled:i||e,onClick:()=>{x.current=typeof window.open=="function"?window.open("","_blank"):null,m(j=>j+1)},children:_.brain.cloud.again}):null]})})]})}function Cce({answers:e,accounts:n,onKept:s,onTrouble:r}){var p;const a=e.brain,i=a?((n==null?void 0:n.accounts)??[]).find(x=>x.id===a.accountId):void 0,[l,o]=d.useState([]),[c,u]=d.useState(!1),h=Ok(i),f=(i==null?void 0:i.auth)==="device-key"||(i==null?void 0:i.kind)==="codex"||h||!!i&&bD(i,(p=n==null?void 0:n.gemini)==null?void 0:p.baseUrl);if(d.useEffect(()=>{if(!f||!i)return;let x=!1;return T.accountModels(i.id).then(g=>{const b=h?g.models.filter(j=>!zO({id:j.id,...j.image?{kind:"image"}:{}})):g.models;x||o(b.map(j=>j.id))}).catch(()=>{}),()=>{x=!0}},[f,i==null?void 0:i.id]),!f||!i||!a||l.length<2)return null;const m=x=>{x===a.model||c||(u(!0),r(null),(async()=>{try{await T.saveProviderAccount({id:i.id,revision:i.revision,label:i.label,kind:i.kind,auth:i.auth,baseUrl:i.baseUrl,defaultModel:x,enabled:i.enabled}),e.assistant&&await T.bindBrain({accountId:i.id,model:x}),s({...e,brain:{accountId:a.accountId,label:a.label,model:x}})}catch(g){r(g instanceof pe?g.message:String(g))}finally{u(!1)}})())};return t.jsx(At,{children:t.jsx(le,{label:_.brain.model.change,children:t.jsx("select",{value:a.model,disabled:c,onChange:x=>m(x.target.value),children:(l.includes(a.model)?l:[a.model,...l]).map(x=>t.jsx("option",{value:x,children:x},x))})})})}const sA="gpt-5.5",Ece=2e3;function Ace({busy:e,consent:n,onBack:s,onConnected:r,accounts:a}){const[i,l]=d.useState(!0),[o,c]=d.useState(null),[u,h]=d.useState(null),[f,m]=d.useState(!1),[p,x]=d.useState(void 0),[g,b]=d.useState(0),j=d.useRef(-1),v=d.useRef(null),y=d.useRef(null),k=_.brain.chatgpt.label;d.useEffect(()=>()=>{const S=y.current;y.current=null,S&&T.codexAccountAction(S.id,"cancel-login",S.revision).catch(()=>{})},[]),d.useEffect(()=>{if(j.current===g)return;j.current=g,l(!0),c(null);const S=g===0?n:v.current;(async()=>{try{const C=((a==null?void 0:a.accounts)??[]).find(P=>P.kind==="codex"),E=C?{id:C.id}:await T.saveProviderAccount({label:k,kind:"codex",auth:"chatgpt",baseUrl:"",defaultModel:sA,enabled:!0}),$=(await T.providerAccounts()).accounts.find(P=>P.id===E.id),R=await T.codexAccountAction($.id,"login",$.revision);if(!(R!=null&&R.verificationUrl)||!R.userCode)throw new Error((R==null?void 0:R.message)??_.brain.chatgpt.failed);y.current={id:$.id,revision:$.revision},h({id:$.id,revision:$.revision,url:R.verificationUrl,code:R.userCode}),m(!!S),S&&(S.location.href=R.verificationUrl)}catch(C){S==null||S.close(),c(C instanceof pe||C instanceof Error?C.message:String(C))}finally{l(!1)}})()},[g]),d.useEffect(()=>{if(!u)return;let S=!1,C=!1;const E=async()=>{if(!(S||C)){C=!0;try{const R=(await T.providerAccounts()).accounts.find(O=>O.id===u.id);if(S)return;const P=R==null?void 0:R.login;if(!P||P.state==="pending")return;if(S=!0,y.current=null,h(null),P.state!=="connected"){c(P.message??_.brain.chatgpt.failed);return}x(P.account??null),l(!0),c(await N(u.id)),l(!1),x(void 0)}catch{}finally{C=!1}}},$=window.setInterval(()=>void E(),Ece);return()=>{S=!0,window.clearInterval($)}},[u]);const N=async S=>{var C,E;try{const $=(await T.accountModels(S).catch(()=>({models:[]}))).models,R=((C=$.find(O=>O.isDefault))==null?void 0:C.id)??((E=$[0])==null?void 0:E.id)??sA,P=(await T.providerAccounts()).accounts.find(O=>O.id===S);return P&&P.defaultModel!==R&&await T.saveProviderAccount({id:P.id,revision:P.revision,label:P.label,kind:P.kind,auth:P.auth,baseUrl:P.baseUrl,defaultModel:R,enabled:P.enabled}),await r({accountId:S,label:k,model:R})}catch($){return $ instanceof pe?$.message:String($)}},w=()=>{const S=y.current;y.current=null,S&&T.codexAccountAction(S.id,"cancel-login",S.revision).catch(()=>{}),s()};return t.jsxs(t.Fragment,{children:[p!==void 0?t.jsxs(vt,{children:[t.jsx(At,{children:_.brain.chatgpt.signedIn(p)}),t.jsx($s,{line:_.brain.checking.chatgpt})]}):i||e?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.chatgpt})}):o?t.jsx(vt,{children:t.jsx(At,{children:o})}):u?t.jsx(vt,{children:f?t.jsx($s,{line:_.brain.chatgpt.waiting}):t.jsx(At,{children:_.brain.chatgpt.instruct})}):null,t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:w,disabled:i||e}),u?t.jsx(it,{variant:"accent",size:"lg",href:u.url,target:"_blank",rel:"noreferrer",onClick:()=>m(!0),children:_.brain.chatgpt.open}):o?t.jsx(A,{variant:"accent",size:"lg",disabled:i||e,onClick:()=>{v.current=typeof window.open=="function"?window.open("","_blank"):null,b(S=>S+1)},children:_.brain.chatgpt.again}):null]}),children:u?t.jsx(Lk,{code:u.code,label:_.brain.chatgpt.code,large:!0}):null})]})}const $ce="claude-sonnet-5";function Tce({busy:e,problem:n,onBack:s,onConnected:r,accounts:a,claudeModel:i}){const[l,o]=d.useState(!1),[c,u]=d.useState(null),[h,f]=d.useState(null),[m,p]=d.useState(""),x=d.useRef(null);d.useEffect(()=>()=>{const y=x.current;x.current=null,y&&T.anthropicAccountAction(y.id,"cancel-login",y.revision).catch(()=>{})},[]);const g=()=>{const y=x.current;x.current=null,y&&T.anthropicAccountAction(y.id,"cancel-login",y.revision).catch(()=>{}),s()},b=i??$ce,j=()=>{o(!0),u(null);const y=typeof window.open=="function"?window.open("","_blank"):null;(async()=>{try{const k=((a==null?void 0:a.accounts)??[]).find(E=>E.auth==="anthropic-oauth"),N=k?{id:k.id}:await T.saveProviderAccount({label:_.brain.claude.label,kind:"anthropic",auth:"anthropic-oauth",baseUrl:"",defaultModel:b,enabled:!0}),S=(await T.providerAccounts()).accounts.find(E=>E.id===N.id),C=await T.anthropicAccountAction(S.id,"login",S.revision);x.current={id:S.id,revision:S.revision+1},f({id:S.id,revision:S.revision+1,url:C.verificationUrl??"",attemptId:C.attemptId??""}),y&&C.verificationUrl?y.location.href=C.verificationUrl:y==null||y.close()}catch(k){y==null||y.close(),u(k instanceof pe?k.message:String(k))}finally{o(!1)}})()},v=()=>{!h||m.trim()===""||(x.current=null,o(!0),(async()=>{try{await T.anthropicAccountAction(h.id,"complete-login",h.revision,{attemptId:h.attemptId,code:m.trim()});const y=await T.testProviderAccount(h.id);if(y.state!=="connected"){u(y.message);return}u(await r({accountId:h.id,label:_.brain.claude.label,model:b}))}catch(y){u(y instanceof pe?y.message:String(y))}finally{o(!1)}})())};return t.jsxs(t.Fragment,{children:[l||e?t.jsx(vt,{children:t.jsx($s,{line:_.brain.checking.claude})}):n??c?t.jsx(vt,{children:t.jsx(At,{children:n??c})}):null,h?t.jsxs(t.Fragment,{children:[t.jsx(vt,{children:t.jsx(At,{children:_.brain.claude.waiting})}),t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:g,disabled:l}),t.jsx(it,{size:"lg",href:h.url,target:"_blank",rel:"noreferrer",children:_.brain.claude.open}),t.jsx(A,{variant:"accent",size:"lg",disabled:l||m.trim()==="",onClick:v,children:_.brain.claude.finish})]}),children:t.jsx(le,{label:_.brain.claude.paste,grow:!0,children:t.jsx(Rce,{value:m,onChange:p})})})]}):t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:g,disabled:e||l}),t.jsx(A,{variant:"accent",size:"lg",disabled:e||l,onClick:j,children:_.brain.claude.start})]})})]})}function Rce({value:e,onChange:n}){const s=mc();return t.jsx("input",{ref:s,type:"password",autoComplete:"off",spellCheck:!1,value:e,onChange:r=>n(r.target.value)})}const Ice={days:"calendar",mail:"mail",money:"money",voice:"bulb",code:"monitor",pictures:"files"};function Pce(e){const n=(e==null?void 0:e.plugins)??[];if(n.length===0)return null;const s=n.map(a=>a.title),r=n.filter(a=>a.state==="failed");if(e!=null&&e.running){const a=n.filter(i=>i.state==="ready"||i.state==="failed").length;return{line:_.takeOn.fetching(s,Math.min(a+1,n.length),n.length),done:!1}}return r.length>0?{line:r.map(a=>_.takeOn.failed(a.title,a.reason??"")).join(" "),done:!0}:{line:_.takeOn.ready(s),done:!0}}function Mce({answers:e,progress:n,offers:s,onProgress:r,onSettled:a,onBack:i,onTrouble:l}){const o=s?Bf.filter(b=>s.includes(b.id)):Bf,[c,u]=d.useState(()=>e.takeOn??[...X5]),[h,f]=d.useState(!1),m=o.filter(b=>c.includes(b.id)),p=b=>u(j=>j.includes(b)?j.filter(v=>v!==b):[...j,b]),x=b=>{h||(f(!0),Promise.resolve().then(()=>T.takeOn(b)).then(()=>{r(),a({...e,takeOn:b})}).catch(j=>l(j instanceof pe?j.message:String(j))).finally(()=>f(!1)))},g=Pce(n);return t.jsxs(t.Fragment,{children:[t.jsx(gc,{children:_.takeOn.title}),t.jsx(vt,{children:t.jsx(At,{children:_.takeOn.ask})}),t.jsxs(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:i,disabled:h}),t.jsx(A,{variant:"ghost",size:"lg",disabled:h,onClick:()=>x([]),children:_.takeOn.none}),t.jsx(pc,{onClick:()=>x(m.map(b=>b.id)),disabled:h||m.length===0,children:_.takeOn.submit})]}),children:[t.jsx("div",{className:"wiz-grid","data-cols":"3",role:"group","aria-label":_.takeOn.title,children:o.map(b=>{const j=c.includes(b.id);return t.jsxs("button",{type:"button",className:"wiz-opt","data-tile":"true","aria-pressed":j,onClick:()=>p(b.id),children:[t.jsxs("span",{className:"wiz-tile-top",children:[t.jsx("span",{className:"wiz-glyph","aria-hidden":"true",children:t.jsx(se,{name:Ice[b.id]})}),t.jsx("span",{className:"wiz-tick","aria-hidden":"true",children:j?t.jsx(se,{name:"check",size:12}):null})]}),t.jsxs("span",{children:[t.jsx("span",{className:"wiz-opt-title",children:b.title}),t.jsx("span",{className:"wiz-opt-plugins",children:b.plugins})]}),t.jsx("span",{className:"wiz-opt-line",children:b.line})]},b.id)})}),m.length>0?t.jsxs("div",{className:"wiz-stack",children:[g?t.jsxs("div",{className:"wiz-busy","data-boxed":"true",role:"status",children:[t.jsxs("span",{className:"wiz-pulse","data-done":g.done?"true":void 0,"aria-hidden":"true",children:[t.jsx("i",{}),t.jsx("i",{}),t.jsx("i",{})]}),t.jsx("span",{children:g.line}),c.includes("mail")?t.jsx("span",{className:"wiz-busy-side",children:_.takeOn.builtIn}):null]}):null,t.jsx("div",{className:"wiz-foot",children:m.map(b=>b.note).join(" ")})]}):t.jsx("div",{className:"wiz-foot",children:_.takeOn.nothing})]})]})}function Oce({answers:e,progress:n,onSettled:s,onBack:r}){var g,b,j;const[a,i]=d.useState(((g=e.reach)==null?void 0:g.phone)===!0),[l,o]=d.useState(((b=e.reach)==null?void 0:b.mailbox)===!0),[c,u]=d.useState(((j=e.reach)==null?void 0:j.app)===!0),[h,f]=d.useState(e.browser),m=e.takeOn??[],p=m.includes("mail"),x=()=>{const v={phone:a,mailbox:l,app:c,browser:h==="chrome"||h==="chromium"||h==="installed"};h!==void 0&&Promise.resolve().then(()=>T.onboardingStep("browser")).catch(()=>{}),s({...e,reach:v,...h!==void 0?{browser:h}:{}})};return t.jsxs(t.Fragment,{children:[t.jsx(gc,{children:_.reach.title}),t.jsx(vt,{children:t.jsx(At,{children:_.reach.ask})}),t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:r}),t.jsx(pc,{onClick:x,children:_.reach.submit})]}),children:t.jsxs("div",{className:"wiz-rows",children:[t.jsx(Dce,{paired:a,owner:e.name,onPaired:()=>i(!0)}),t.jsx(Lce,{wanted:p,added:l,onAdded:o}),m.includes("days")?t.jsx(Fce,{progress:n}):null,m.includes("money")?t.jsx(zce,{}):null,t.jsx(Uce,{app:c,onApp:()=>u(!0),browser:h,onBrowser:f}),a?t.jsx(Q,{tone:"good",role:"status",children:_.reach.phone.hello}):null]})})]})}function Dce({paired:e,owner:n,onPaired:s}){const[r,a]=d.useState(null),[i,l]=d.useState(!1),o=d.useRef(s);o.current=s,d.useEffect(()=>{let u=!1;return Promise.resolve().then(()=>T.telegram()).then(h=>{u||!h||(a(h),h.paired&&o.current())}).catch(()=>{u||a({configured:!1,running:!1,paired:!1})}),()=>{u=!0}},[]);const c=(r==null?void 0:r.configured)===!0&&r.running===!0;return t.jsxs("div",{className:"wiz-row",children:[t.jsx("span",{className:"wiz-glyph","aria-hidden":"true",children:t.jsx(se,{name:"chat"})}),t.jsxs("span",{className:"wiz-row-text",children:[t.jsx("span",{className:"wiz-opt-title",children:_.reach.phone.title}),t.jsx("span",{className:"wiz-opt-line",children:_.reach.phone.line})]}),t.jsx("span",{className:"wiz-row-side",children:e?t.jsx(Ae,{tone:"good",dot:!0,children:_.reach.phone.paired}):t.jsx(A,{size:"lg",disabled:r===null,onClick:()=>l(!0),children:c?_.reach.phone.pair:_.reach.phone.setUp})}),i?t.jsx(Qe,{title:_.telegram.sheet,onClose:()=>l(!1),children:t.jsx(Gce,{ready:c,owner:n,onPaired:s,onDismiss:()=>l(!1)})}):null]})}function Lce({wanted:e,added:n,onAdded:s}){const r=AL("email"),[a,i]=d.useState(!1),[l,o]=d.useState(null);return d.useEffect(()=>{Promise.resolve().then(()=>T.pageQuery("email","accounts")).then(c=>{var h,f,m;const u=((m=(f=(h=c==null?void 0:c.data)==null?void 0:h.accounts)==null?void 0:f[0])==null?void 0:m.address)??null;o(u),s(u!==null)}).catch(()=>{})},[]),t.jsxs("div",{className:"wiz-row",children:[t.jsx("span",{className:"wiz-glyph","data-tone":"mail","aria-hidden":"true",children:t.jsx(se,{name:"mail"})}),t.jsxs("span",{className:"wiz-row-text",children:[t.jsx("span",{className:"wiz-opt-title",children:e?_.reach.mailbox.forTriage:_.reach.mailbox.title}),t.jsx("span",{className:"wiz-opt-line",children:r===!1?_.reach.mailbox.unavailable:_.reach.mailbox.line})]}),t.jsx("span",{className:"wiz-row-side",children:n||l?t.jsx(Ae,{tone:"good",dot:!0,mono:l!==null,children:l??_.reach.mailbox.added}):r?t.jsx(A,{size:"lg",onClick:()=>i(!0),children:_.reach.mailbox.add}):null}),a?t.jsx(Qoe,{onClose:()=>i(!1),onAdded:c=>{o(c),s(!0)}}):null]})}function AL(e,n){const[s,r]=d.useState(void 0),a=(n==null?void 0:n.plugins.map(i=>`${i.title}:${i.state}`).join(","))??"";return d.useEffect(()=>{if(s)return;let i=!1;return Promise.resolve().then(()=>T.pages()).then(l=>{i||r(((l==null?void 0:l.pages)??[]).some(o=>o.plugin===e&&o.id==="settings"))}).catch(()=>{i||r(!1)}),()=>{i=!0}},[e,a]),s}function Fce({progress:e}){const n=AL("calendar",e),[s,r]=d.useState(!1),[a,i]=d.useState(null),[l,o]=d.useState(!1),[c,u]=d.useState(0);d.useEffect(()=>{if(!n)return;let m=!1;return Promise.all([T.pageQuery("calendar","settings").then(p=>(p==null?void 0:p.data)??{}),T.pageQuery("calendar","sign_in").then(p=>(p==null?void 0:p.data)??{}).catch(()=>({}))]).then(([p,x])=>{m||i(_ce(p,x))}).catch(()=>{}),()=>{m=!0}},[n,c,s]),d.useEffect(()=>{if((a==null?void 0:a.kind)!=="waiting")return;const m=window.setTimeout(()=>u(p=>p+1),jL);return()=>window.clearTimeout(m)},[a,c]);const h=a??(l?{kind:"linked",tone:"good",label:_.reach.calendar.linked}:null),f=h!==null&&h.kind!=="expired";return t.jsxs("div",{className:"wiz-row",children:[t.jsx("span",{className:"wiz-glyph","data-tone":"calendar","aria-hidden":"true",children:t.jsx(se,{name:"calendar"})}),t.jsxs("span",{className:"wiz-row-text",children:[t.jsx("span",{className:"wiz-opt-title",children:_.reach.calendar.title}),t.jsx("span",{className:"wiz-opt-line",children:n===!1?_.reach.calendar.waiting:_.reach.calendar.line})]}),t.jsxs("span",{className:"wiz-row-side",children:[h!==null?t.jsx(Ae,{tone:h.tone,dot:!0,mono:h.kind==="google"||h.kind==="expired",children:h.label}):null,f?null:t.jsx(A,{size:"lg",disabled:!n,onClick:()=>r(!0),children:_.reach.calendar.add})]}),s?t.jsx(Zoe,{onClose:()=>r(!1),onLinked:()=>{o(!0),u(m=>m+1)}}):null]})}function _ce(e,n){var i;const s=(e.accounts??[]).filter(l=>l.kind==="google"),r=s.filter(l=>l.needsSignIn===!0),a=s.filter(l=>l.needsSignIn!==!0);return n.waiting===!0?{kind:"waiting",tone:"accent",label:_.reach.calendar.googleWaiting}:a.length>0?{kind:"google",tone:"good",label:_.reach.calendar.google(a.map(l=>l.username??"").filter(Boolean).join(", ")||"signed in")}:r.length>0?{kind:"expired",tone:"warning",label:_.reach.calendar.googleExpired(r.map(l=>l.username??"").filter(Boolean).join(", "))}:(((i=e.calendars)==null?void 0:i.length)??0)>0?{kind:"linked",tone:"good",label:_.reach.calendar.linked}:null}function zce(){const[e,n]=d.useState(!1),[s,r]=d.useState(!1);return t.jsxs("div",{className:"wiz-row",children:[t.jsx("span",{className:"wiz-glyph","data-tone":"finance","aria-hidden":"true",children:t.jsx(se,{name:"money"})}),t.jsxs("span",{className:"wiz-row-text",children:[t.jsx("span",{className:"wiz-opt-title",children:_.reach.bank.title}),t.jsx("span",{className:"wiz-opt-line",children:_.reach.bank.line})]}),t.jsx("span",{className:"wiz-row-side",children:s?t.jsx(Ae,{dot:!0,children:_.reach.bank.later}):t.jsx(A,{size:"lg",onClick:()=>n(!0),children:_.reach.bank.add})}),e?t.jsx(ece,{onClose:()=>n(!1),onUnderstood:()=>r(!0)}):null]})}function Uce({app:e,onApp:n,browser:s,onBrowser:r}){const a=Tk(),i=Ip(),l=a?null:i,o=typeof navigator>"u"?null:J2(navigator.userAgent),[c,u]=d.useState(null),[h,f]=d.useState("idle"),[m,p]=d.useState(null),[x,g]=d.useState(null),[b,j]=d.useState(void 0),v=d.useRef(!1),y=d.useRef(!0);d.useEffect(()=>(y.current=!0,Promise.resolve().then(()=>T.browser()).then($=>{var P;if(!y.current)return;const R=$==null?void 0:$.browser;R?((P=R.install)==null?void 0:P.state)==="running"?(u("none"),v.current=!0,f("installing"),w()):u(R.engine):u("other")}).catch(()=>{y.current&&u("other")}),()=>{y.current=!1}),[]);const k=($,R)=>{y.current&&(v.current=!1,f("failed"),p($),g(R??null))},N=async $=>{f("launching");let R;try{R=await T.browserCheck()}catch(P){return k(P instanceof pe?P.message:String(P))}if(y.current){if(R.ok){f("idle"),u($),r(v.current?"installed":$);return}k(R.message,R.command)}},w=async()=>{var P,O;let $;try{$=await T.browser()}catch(I){return k(I instanceof pe?I.message:String(I))}if(!y.current)return;const R=$.browser;if(!R)return k(_.browser.failed(""));if(((P=R.install)==null?void 0:P.state)==="running"){f("installing"),j(R.install.progress),window.setTimeout(()=>void w(),1e3);return}return R.engine!=="none"?N(R.engine):k(((O=R.install)==null?void 0:O.line)??"")},S=()=>{if(g(null),c==="chrome"||c==="chromium"){N(c);return}v.current=!0,f("installing"),j(void 0),Promise.resolve().then(()=>T.browserInstall()).then(()=>{y.current&&window.setTimeout(()=>void w(),1e3)}).catch($=>k($ instanceof pe?$.message:String($)))},C=s==="chrome"||s==="chromium"||s==="installed",E=h==="installing"||h==="launching";return t.jsxs("div",{className:"wiz-row","data-wrap":h!=="idle"?"true":void 0,children:[t.jsx("span",{className:"wiz-glyph","data-tone":"good","aria-hidden":"true",children:t.jsx(se,{name:"globe"})}),t.jsxs("span",{className:"wiz-row-text",children:[t.jsx("span",{className:"wiz-opt-title",children:a?_.reach.app.inApp.title:_.reach.app.title}),t.jsx("span",{className:"wiz-opt-line",children:a?_.reach.app.inApp.line:_.reach.app.line})]}),t.jsxs("span",{className:"wiz-row-side",children:[a?t.jsx(it,{size:"lg",href:p2,target:"_blank",rel:"noreferrer",children:_.reach.app.inApp.extension}):e?t.jsx(Ae,{tone:"good",dot:!0,children:_.reach.app.installed}):l?t.jsx(A,{size:"lg",onClick:()=>{l.prompt().then(()=>l.userChoice).then($=>{(!$||$.outcome==="accepted")&&n()}).catch(()=>{})},children:_.reach.app.install}):null,C?t.jsx(Ae,{tone:"good",dot:!0,children:_.reach.app.ready(s==="chrome"?"chrome":"chromium")}):c===null||c==="other"?null:t.jsx(A,{size:"lg",disabled:E,onClick:S,children:E?_.browser.installing:h==="failed"?_.browser.retry:c==="chrome"?_.reach.app.chrome:c==="chromium"?_.reach.app.chromium:_.reach.app.fetch})]}),!e&&!l&&o?t.jsx("span",{className:"wiz-row-note",children:o}):null,h==="installing"?t.jsxs("div",{className:"wiz-row-more",children:[t.jsx("span",{className:"wiz-opt-line",children:_.browser.needs}),t.jsx(nce,{progress:b})]}):h==="launching"?t.jsx("div",{className:"wiz-row-more",children:t.jsx($s,{line:_.browser.launching})}):h==="failed"?t.jsxs("div",{className:"wiz-row-more",children:[t.jsx("span",{className:"wiz-opt-line",children:_.browser.failed(m??"")}),x?t.jsx(Hce,{command:x}):null]}):null]})}function Bce({answers:e,existing:n,navigate:s,onSettled:r,onTrouble:a,onReload:i,onBack:l}){const[o,c]=d.useState(()=>(n==null?void 0:n.name)??K5),[u,h]=d.useState(()=>n!=null&&n.picture||n!=null&&n.avatar?null:"buddi"),[f,m]=d.useState(n?null:_.assistant.purposeValue),[p,x]=d.useState(n?"":_.assistant.purposeValue);d.useEffect(()=>{if(!n)return;let w=!1;return T.firstAgentPersona().then(S=>{w||(m(S.persona),x(S.persona))},S=>{w||a(S instanceof pe?S.message:String(S))}),()=>{w=!0}},[n==null?void 0:n.id]);const[g,b]=d.useState(!1),[j,v]=d.useState(null),y=Bf.filter(w=>(e.takeOn??[]).includes(w.id)&&"mate"in w).map(w=>w.mate),k=TS.find(w=>w.id===u),N=()=>{if(o.trim()===""||g)return;b(!0);const w=!n||f!==null&&p.trim()!==""&&p.trim()!==f.trim()?{instructions:p.trim()}:{},S=n?T.updateFirstAgent({name:o.trim(),...w}):T.createFirstAgent({name:o.trim(),handle:oce(o),description:"",...w,...e.brain?{accountId:e.brain.accountId}:{}});(async()=>{var $;let C;try{C=await S}catch(R){R instanceof pe&&R.status===409&&(($=R.detail)==null?void 0:$.code)==="assistant-exists"?(v(R.message),a(null)):a(R instanceof pe?R.message:String(R)),b(!1);return}let E=null;try{k&&await T.uploadAgentPicture(C.id,await ZO(k.role))}catch(R){E=R instanceof pe?R.message:String(R)}b(!1),i(),r({...e,assistant:{id:C.id,name:o.trim(),avatar:k?"":(n==null?void 0:n.avatar)??""}}),E&&a(E)})()};return t.jsxs(t.Fragment,{children:[t.jsx(gc,{children:_.assistant.title}),t.jsx(vt,{children:t.jsxs(At,{children:[_.assistant.ask,y.length>0?_.assistant.team(y):""]})}),t.jsxs(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(Vs,{onClick:l,disabled:g}),t.jsx(pc,{onClick:N,disabled:g||j!==null||o.trim()===""||f===null,children:_.assistant.submit})]}),children:[t.jsxs("div",{className:"wiz-meet",children:[t.jsxs("div",{className:"wiz-face",children:[t.jsx("span",{className:"wiz-face-tile","data-agent":(k==null?void 0:k.id)??"buddi","aria-hidden":"true",children:k?t.jsx("img",{src:Ti(k.role),alt:""}):n!=null&&n.picture?t.jsx("img",{src:n.picture,alt:""}):t.jsx("span",{className:"wiz-face-emoji",children:(n==null?void 0:n.avatar)??""})}),t.jsx("div",{className:"wiz-swatches",role:"group","aria-label":_.assistant.colour,children:TS.map(w=>t.jsx("button",{type:"button",className:"wiz-swatch","data-agent":w.id,"aria-label":_.assistant.swatch(w.label),"aria-pressed":u===w.id,onClick:()=>h(w.id)},w.id))}),t.jsx("span",{className:"wiz-face-cap",children:_.assistant.colour})]}),t.jsxs("div",{className:"wiz-stack",children:[t.jsx(le,{label:_.assistant.name,children:t.jsx("input",{value:o,maxLength:60,onChange:w=>c(w.target.value)})}),t.jsx(le,{label:_.assistant.purpose,hint:_.assistant.purposeHint,children:t.jsx("textarea",{className:"wiz-persona",value:p,maxLength:8e3,rows:7,onChange:w=>x(w.target.value)})})]})]}),j?t.jsx(Q,{tone:"warm",role:"status",title:_.assistant.refusedTitle,action:t.jsx(it,{href:Mt,onClick:w=>{w.preventDefault(),s(Mt)},children:_.assistant.toAgents}),children:j}):null]})]})}function Wce({answers:e,assistantAgent:n,met:s,onMet:r,navigate:a,onPickAnotherBrain:i,onSpoken:l,progress:o,onProgress:c}){var U,L;const u=e.assistant,[h,f]=d.useState(s),[m,p]=d.useState([]),[x,g]=d.useState(!1),[b,j]=d.useState(!1),[v,y]=d.useState(!0),[k,N]=d.useState(!1),w=d.useRef(!1),S=d.useMemo(()=>n?[n]:[],[n]);d.useEffect(()=>{c()},[]),d.useEffect(()=>{if(!u||w.current)return;if(w.current=!0,s){f(s);return}let M=!1;return(async()=>{try{const z=await nt.startConversation(u.id);if(M)return;f(z.conversationId),r(z.conversationId),await T.onboardingStep(yL.handover,{conversationId:z.conversationId}).catch(()=>{}),await nt.send(u.id,{conversationId:z.conversationId,text:Y5,opening:!0})}catch{M||(y(!1),g(!0))}})(),()=>{M=!0}},[u==null?void 0:u.id,s]),d.useEffect(()=>{if(!h)return;let M=!1;const z=Date.now(),D=()=>{nt.conversation(h).then(K=>{if(M)return;p(K.messages);const X=Date.now()-z;if(K.messages.some(rA)){y(!1),g(!1),j(!1);return}const W=K.runs??[],me=W.some(oe=>oe.finishedAt===null),fe=W.length>0&&!me;j(me&&X>=cce),(fe||X>=uce)&&(y(!1),g(!0))}).catch(()=>{})};D();const H=window.setInterval(D,SL);return()=>{M=!0,window.clearInterval(H)}},[h]);const C=u&&h?ht(u.id,h):null,E=m.some(rA);d.useEffect(()=>{E&&C&&l(C)},[E,C,l]);const $=o!=null&&o.tiles&&o.tiles.length>0?o.tiles:e.takeOn??[],R=_.handover.starters({days:$.includes("days"),mail:$.includes("mail"),mailbox:((U=e.reach)==null?void 0:U.mailbox)===!0}),P={days:$.includes("days"),mailbox:((L=e.reach)==null?void 0:L.mailbox)===!0,mail:$.includes("mail"),money:$.includes("money"),pictures:$.includes("pictures")},O=(o==null?void 0:o.waiting)??[],I=M=>{Sb(),a(M,!0)},F=M=>{!u||!h||k||(N(!0),Promise.resolve().then(()=>nt.send(u.id,{conversationId:h,text:M})).then(()=>I(ht(u.id,h))).catch(()=>N(!1)))};return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"wiz-hello",children:t.jsx(dk,{messages:m,live:[],now:Date.now(),onOpen:()=>{},working:v,agents:S,agentName:(u==null?void 0:u.name)??"",...u?{agentId:u.id}:{},emptyHint:_.handover.waiting,plain:!0,workingLine:_.handover.looking((u==null?void 0:u.name)??"")})}),b&&!x?t.jsx(vt,{children:t.jsx(At,{children:_.handover.slow})}):null,x?t.jsxs(t.Fragment,{children:[t.jsx(vt,{children:t.jsx(At,{children:_.handover.silent})}),t.jsx(Pn,{actions:t.jsx(pc,{onClick:i,children:_.handover.again})})]}):null,E?t.jsx("div",{className:"wiz-starters",role:"group","aria-label":_.handover.starterLabel,children:R.map(M=>t.jsx("button",{type:"button",className:"wiz-starter",disabled:k,onClick:()=>F(M),children:M},M))}):null,E?t.jsx(VK,{setUp:P,navigate:I}):null,E?t.jsx(oD,{plugins:(o==null?void 0:o.plugins)??[]}):null,E&&O.length>0?t.jsx(Q,{tone:"warm",title:_.handover.waitingTitle(O.length),action:t.jsx(A,{variant:"accent",onClick:()=>I(Un),children:_.handover.home}),children:_.handover.waitingBody(O)}):null,E&&C?t.jsx(Pn,{actions:t.jsx(it,{variant:"accent",size:"lg",href:C,onClick:M=>{M.preventDefault(),I(C)},children:_.done.open})}):null]})}function Hce({command:e}){const[n,s]=d.useState("idle"),r=()=>{var a;if(!((a=navigator.clipboard)!=null&&a.writeText)){s("failed");return}navigator.clipboard.writeText(e).then(()=>s("done"),()=>s("failed"))};return t.jsxs(de,{gap:"sm",children:[t.jsx(en,{label:"The command to run",children:e}),t.jsxs(ne,{align:"end",children:[n==="failed"?t.jsx("span",{className:"ui-toolbar-note",children:"Select it to copy."}):null,t.jsx(A,{size:"sm",onClick:r,children:n==="done"?"Copied":"Copy"})]})]})}function rA(e){return e.role==="assistant"&&(e.blocks??[]).some(n=>n.type==="text"&&n.text.trim()!=="")}function Kce({onCancel:e,onStarted:n,onTrouble:s}){const[r,a]=d.useState(null),[i,l]=d.useState(""),[o,c]=d.useState(!1),u=()=>{!r||o||(c(!0),s(null),T.firstRunRestore(r,i.trim()).then(h=>{Fy(h.job.id),n()}).catch(h=>s(h instanceof pe?h.message:String(h))).finally(()=>c(!1)))};return t.jsx(Qe,{title:_.restore.sheet,onClose:e,children:t.jsxs("div",{className:"wiz-restore",children:[t.jsx("p",{className:"wiz-foot",children:_.restore.lede}),t.jsx(le,{label:_.restore.file,children:t.jsx("input",{type:"file",onChange:h=>{var f;return a(((f=h.target.files)==null?void 0:f[0])??null)}})}),t.jsx(le,{label:_.restore.passphrase,hint:_.restore.passphraseHint,children:t.jsx("input",{type:"password",autoComplete:"off",value:i,onChange:h=>l(h.target.value)})}),t.jsxs(ne,{align:"end",children:[t.jsx(A,{variant:"ghost",onClick:e,children:_.restore.cancel}),t.jsx(A,{variant:"accent",disabled:o||!r,onClick:u,children:_.restore.submit})]})]})})}function Vce({onDone:e,onFailed:n}){const[s,r]=d.useState([]),a=d.useRef({onDone:e,onFailed:n});a.current={onDone:e,onFailed:n},d.useEffect(()=>{const l=NL();if(!l)return;let o=!1;const c=()=>{T.backupJob(l).then(h=>{o||(r(f=>f.includes(h.phase)?f:[...f,h.phase]),h.phase==="done"?(o=!0,Fy(null),T.owner().then(f=>a.current.onDone(f.preferredName??void 0),()=>a.current.onDone(void 0))):(h.phase==="rolled-back"||h.phase==="failed")&&(o=!0,Fy(null),a.current.onFailed(h.error??_.restore.phases[h.phase])))}).catch(()=>{})};c();const u=window.setInterval(c,SL);return()=>{o=!0,window.clearInterval(u)}},[]);const i=s.filter(l=>l in _.restore.phases);return t.jsxs(t.Fragment,{children:[t.jsx(gc,{children:_.restore.title}),t.jsxs(vt,{children:[t.jsx(At,{children:_.restore.started}),i.map(l=>t.jsx(At,{children:_.restore.phases[l]},l))]}),t.jsx($s,{})]})}function Gce(e){return t.jsx(s0.Provider,{value:null,children:t.jsx("div",{className:"wiz-sheet-body",children:t.jsx(Yce,{...e})})})}const qce=1600;function Yce({ready:e,owner:n,onPaired:s,onDismiss:r}){const a=mc(),[i,l]=d.useState(""),[o,c]=d.useState(!1),[u,h]=d.useState(null),[f,m]=d.useState(null),{offer:p,square:x,paired:g,stale:b,ask:j}=fL(()=>T.telegram().then(w=>w.paired),s),v=d.useRef(!1);d.useEffect(()=>{!e||v.current||(v.current=!0,Promise.resolve().then(()=>T.telegramBot()).then(w=>m((w==null?void 0:w.username)??null)).catch(()=>{}),j().catch(w=>h(w instanceof pe?w.message:String(w))))},[e,j]);const y=d.useRef(r);y.current=r,d.useEffect(()=>{if(!g)return;const w=window.setTimeout(()=>y.current(),qce);return()=>window.clearTimeout(w)},[g]);const k=()=>{i.trim()===""||o||(c(!0),h(null),(async()=>{try{const w=await T.saveTelegramToken(i.trim());if(l(""),m(w.botUsername??null),w.restartNeeded){h(w.note??_.telegram.restart);return}await j()}catch(w){h(w instanceof pe?w.message:String(w))}finally{c(!1)}})())},N=()=>{h(null),j().catch(w=>h(w instanceof pe?w.message:String(w)))};return p?t.jsxs(t.Fragment,{children:[t.jsx(vt,{children:t.jsx(At,{children:b&&!g?_.telegram.expired:_.telegram.scan})}),t.jsx(Pn,{actions:g?t.jsx(A,{variant:"accent",onClick:r,children:_.telegram.close}):t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:r,children:_.telegram.notNow}),b?t.jsx(A,{variant:"accent",onClick:N,children:_.telegram.newCode}):null]}),children:b&&!g?null:t.jsx(eoe,{offer:p,square:x,bot:f,paired:g,status:g?_.telegram.pairedWith(n):_.telegram.waiting})})]}):e&&!u?t.jsx(vt,{children:t.jsx($s,{line:_.telegram.making})}):e?t.jsxs(t.Fragment,{children:[t.jsx(vt,{children:t.jsx(At,{children:u})}),t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:r,children:_.telegram.notNow}),t.jsx(A,{variant:"accent",onClick:N,children:_.telegram.newCode})]})})]}):t.jsxs(t.Fragment,{children:[t.jsxs(vt,{children:[t.jsx(At,{children:_.telegram.how}),u?t.jsx(At,{children:u}):null]}),t.jsx(Pn,{actions:t.jsxs(t.Fragment,{children:[t.jsx(A,{variant:"ghost",onClick:r,children:_.telegram.notNow}),t.jsx(A,{variant:"accent",disabled:o||i.trim()==="",onClick:k,children:_.telegram.submit})]}),children:t.jsx(le,{label:_.telegram.field,grow:!0,children:t.jsx("input",{ref:a,type:"password",value:i,autoComplete:"off",spellCheck:!1,onChange:w=>l(w.target.value),onKeyDown:w=>{w.key==="Enter"&&(w.preventDefault(),k())}})})})]})}const Dx={recovery:0,lost:1,paused:2},Qce="Lost buddi. Retrying…",Jce="The queue is paused. Nothing is being claimed until you resume it.";function Xce(e){const n=[];return e.recovery&&n.push({id:"recovery",priority:Dx.recovery,tone:"warning",text:rD,action:{label:"Finish the checklist",href:pj}}),e.lost&&n.push({id:"lost",priority:Dx.lost,tone:"critical",text:Qce}),e.paused&&n.push({id:"paused",priority:Dx.paused,tone:"warning",text:Jce,action:{label:"Resume",onClick:()=>{T.setPaused(!1).catch(()=>{})}}}),n}function Zce({banners:e,onNavigate:n}){if(e.length===0)return null;const s=[...e].sort((l,o)=>l.priority-o.priority),r=s[0],a=s.slice(1),i=r.action;return t.jsxs("div",{className:"shell-banner",role:"status","data-tone":r.tone,"data-banner":r.id,children:[t.jsx("span",{className:"shell-banner-dot","aria-hidden":"true"}),t.jsx("span",{className:"shell-banner-text",children:r.text}),a.length>0?t.jsxs("span",{className:"shell-banner-more",title:a.map(l=>l.text).join(`
|
|
155
|
+
`),children:["+",a.length," more"]}):null,i!=null&&i.href?t.jsx(it,{size:"sm",href:i.href,onClick:l=>{l.preventDefault(),n(i.href)},children:i.label}):i?t.jsx(A,{size:"sm",onClick:i.onClick,children:i.label}):null]})}const $L=1e4,eue=3e4,TL=6e3,r0=/^(localhost|127(?:\.\d{1,3}){3}|\[?::1\]?)$|\.localhost$/i;function tue(e){return r0.test(e)?t.jsxs(t.Fragment,{children:["Is buddi running on this Mac? ",t.jsx("code",{children:"buddi status"})," says."]}):t.jsx(t.Fragment,{children:"Is Tailscale on, and the Mac it runs on awake?"})}async function RL(e){let n;const s=new Promise((r,a)=>{n=setTimeout(()=>a(new pe(0,zf)),e)});try{return{up:!0,version:await Promise.race([T.version(),s])}}catch(r){return Uf(r)?{up:!1}:{up:!0}}finally{clearTimeout(n)}}function IL(e){var n;return e.up&&bb((n=e.version)==null?void 0:n.web)?(window.location.reload(),!1):e.up}function nue({host:e,onRetry:n,retrying:s}){return t.jsxs("main",{className:"unreachable",role:"alert",children:[t.jsx("span",{className:"ui-blob","data-size":"lg","aria-hidden":"true",children:t.jsx("img",{src:Ti("core"),alt:""})}),t.jsxs("h1",{children:["buddi isn't answering at ",e,"."]}),t.jsx("p",{children:tue(e.replace(/:\d+$/,""))}),t.jsx("div",{className:"unreachable-actions",children:t.jsx(A,{variant:"accent",onClick:n,disabled:s,children:s?"Retrying…":"Retry"})})]})}function sue({children:e}){const[n,s]=d.useState("checking"),[r,a]=d.useState(!1),i=d.useRef(!1),l=d.useCallback(async()=>{if(i.current)return;i.current=!0,a(!0);const o=await RL(TL);i.current=!1,a(!1),s(c=>c==="checking"?o.up?"up":"down":IL(o)?"up":"down")},[]);return d.useEffect(()=>{l()},[l]),d.useEffect(()=>{if(n!=="down")return;const o=window.setInterval(()=>void l(),$L);return()=>window.clearInterval(o)},[n,l]),n==="checking"?null:n==="down"?t.jsx(nue,{host:window.location.host,onRetry:()=>void l(),retrying:r}):t.jsx(t.Fragment,{children:e})}function rue(e=eue){const[n,s]=d.useState(!1);return d.useEffect(()=>{let r;const a=()=>{clearTimeout(r);const l=Du();if(l===null)return s(!1);const o=l+e-Date.now();o<=0?s(!0):r=setTimeout(a,o)};a();const i=Xw(a);return()=>{i(),clearTimeout(r)}},[e]),n}function aue(){const e=rue();return d.useEffect(()=>{if(!e)return;const n=window.setInterval(()=>{RL(TL).then(IL)},$L);return()=>window.clearInterval(n)},[e]),e}const iue={local:"Local",tailnet:"Tailnet",reconnecting:"Reconnecting…"},aA=(e,n,s=`${n}s`)=>e===1?n:s;function lue(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function oue(e){return e.includes("/")?e.split("/").pop().replace(/_/g," "):e}function cue(e,n){return n?"reconnecting":r0.test(e)?"local":"tailnet"}function PL(e,n,s=lue()){const r=[],a=iue[e.link];if(r.push({key:"link",route:We("system"),dot:e.link==="reconnecting"?"warning":"good",text:a,label:`Connection: ${a}`}),e.focus){const u=`${Zi[e.focus.mode]} ${Zu(e.focus,e.timezone,n)}`;r.push({key:"focus",route:We("notifications"),icon:"moon",text:u,label:`Focus: ${u}`})}const i=[];if(e.working>0&&i.push({key:"working",dot:"working",text:`${e.working} ${aA(e.working,"agent")} working`}),i.push(e.paused?{key:"queue",tone:"warning",text:"Queue paused"}:{key:"queue",text:"Queue running"}),e.failed>0&&i.push({key:"failed",tone:"critical",text:`${e.failed} failed`}),r.push({key:"work",route:e.failed>0?`${cn}/jobs?state=failed`:`${cn}/jobs`,parts:i,label:`Work: ${i.map(u=>u.text).join(", ")}`}),e.approvals>0){const u=`${aA(e.approvals,"approval")} waiting`;r.push({key:"approvals",route:Oo,count:e.approvals,text:u,label:`${e.approvals} ${u}`})}if(e.version){const u=e.version.updateAvailable&&e.version.latest?e.version.latest:null;r.push({key:"version",route:We("system"),end:!0,mono:`buddi ${e.version.current}`,update:u!==null,label:`buddi ${e.version.current}${u?`, a newer buddi is ready: ${u}`:""}`})}const l=e.timezone||s,o=Lt(n,l),c=l!==s;return r.push({key:"time",route:We("you"),end:!0,time:o,...c?{zone:oue(l)}:{},label:`Your time: ${o}${c?`, ${l}`:""}`}),r}function uue(e){var n;return e.link==="reconnecting"||e.failed>0?"critical":e.paused?"warning":e.approvals>0||(((n=e.version)==null?void 0:n.updateAvailable)??!1)?"attention":"good"}function ML(){const[e,n]=d.useState(()=>new Date);return d.useEffect(()=>{let s;const r=()=>{s=setTimeout(()=>{n(new Date),r()},6e4-Date.now()%6e4)};return r(),()=>clearTimeout(s)},[]),e}function due(){const[e,n]=d.useState(()=>Du()!==null);return d.useEffect(()=>Xw(()=>n(Du()!==null)),[]),e}function OL({item:e}){var n;return t.jsxs(t.Fragment,{children:[e.dot?t.jsx("span",{className:"shell-status-dot","data-tone":e.dot,"aria-hidden":"true"}):null,e.icon?t.jsx(se,{name:e.icon,size:12}):null,e.count?t.jsx("span",{className:"ui-badge","aria-hidden":"true",children:e.count>99?"99+":e.count}):null,(n=e.parts)==null?void 0:n.map((s,r)=>t.jsxs(d.Fragment,{children:[r>0?t.jsx("span",{className:"shell-status-sep","aria-hidden":"true",children:"·"}):null,s.dot?t.jsx("span",{className:"shell-status-dot","data-tone":s.dot,"aria-hidden":"true"}):null,t.jsx("span",{"data-tone":s.tone,children:s.text})]},s.key)),e.text?t.jsx("span",{children:e.text}):null,e.mono?t.jsx("span",{className:"shell-status-mono",children:e.mono}):null,e.update?t.jsx("span",{className:"ui-badge","data-kind":"dot","data-testid":"status-update-dot","aria-hidden":"true"}):null,e.time?t.jsx("span",{className:"shell-status-time",children:e.time}):null,e.zone?t.jsx("span",{className:"shell-status-zone",children:e.zone}):null]})}function hue({status:e,onNavigate:n}){const s=ML(),r=Op(),a=PL(e,s),i=l=>t.jsx("a",{className:"shell-status-item","data-item":l.key,href:l.route,"aria-label":l.label,title:l.label,onClick:o=>{o.preventDefault(),n(l.route)},children:t.jsx(OL,{item:l})},l.key);return t.jsxs("footer",{className:"shell-status","aria-label":"Status",children:[a.filter(l=>!l.end).map(i),t.jsx("span",{className:"shell-status-spacer"}),a.filter(l=>l.end).map(i),r.pin?t.jsx("button",{type:"button",className:"shell-status-item shell-status-lock","data-item":"lock","aria-label":`Lock now (${r.shortcut})`,title:`Lock now (${r.shortcut})`,onClick:()=>r.lockNow(),children:t.jsx(se,{name:"lock",size:13})}):null]})}function fue({status:e,onNavigate:n}){const s=ML(),r=Op(),a=uue(e);return t.jsx("div",{className:"rail-status",children:t.jsxs(xd,{modal:!1,children:[t.jsx(vd,{asChild:!0,children:t.jsx("button",{type:"button",className:"rail-status-btn","aria-label":"Status",children:t.jsx("span",{className:"rail-status-dot","data-tone":a,"data-testid":"rail-status-dot","aria-hidden":"true"})})}),t.jsx(rc,{children:t.jsxs(jd,{className:"ui-menu rail-status-menu",side:"right",align:"end",sideOffset:10,children:[t.jsx(pl,{className:"ui-menu-label",children:"Status"}),PL(e,s).map(i=>t.jsx(ws,{asChild:!0,onSelect:()=>n(i.route),children:t.jsx("a",{className:"ui-menu-item rail-status-item","data-item":i.key,href:i.route,"aria-label":i.label,children:t.jsx("span",{className:"rail-status-line",children:t.jsx(OL,{item:i})})})},i.key)),r.pin?t.jsxs(t.Fragment,{children:[t.jsx(ea,{className:"ui-menu-sep"}),t.jsx(ws,{className:"ui-menu-item rail-status-item","data-item":"lock",onSelect:()=>r.lockNow(),children:t.jsxs("span",{className:"rail-status-line",children:[t.jsx(se,{name:"lock",size:12}),t.jsx("span",{children:"Lock now"})]})})]}):null]})})]})})}const mue=1e4;function DL(){return d.useSyncExternalStore(O8,zS,zS)}function pue(e){switch(e.kind){case"plugins":return{title:"Restarting buddi",line:e.line??"Loading your plugins…"};case"upgrade":return{title:"Upgrading buddi",line:e.line??"Upgrading…"};case"restore":return{title:"Restoring buddi",line:e.line??"Putting your backup in place…"};case"recovery":return{title:"Restarting buddi",line:e.line??"Turning schedules, watchers and the phone back on…"};case"stop":return{title:"buddi is stopped",line:"This page comes back by itself once buddi is started again."};default:return{title:"Restarting buddi",line:e.line??"Back in a few seconds…"}}}function iA(e){const n=Math.max(0,Math.floor(e/1e3));return`${Math.floor(n/60)}:${String(n%60).padStart(2,"0")}`}function gue({command:e}){const[n,s]=d.useState(!1);return d.useEffect(()=>{if(!n)return;const r=window.setTimeout(()=>s(!1),1600);return()=>window.clearTimeout(r)},[n]),t.jsxs("div",{className:"rs-cmd",children:[t.jsx("code",{className:"rs-cmd-text",children:e}),t.jsx(A,{size:"sm",onClick:()=>{var r;(r=navigator.clipboard)==null||r.writeText(e).then(()=>s(!0),()=>{})},children:n?"Copied":"Copy"})]})}function xue({state:e,elapsedMs:n,hostname:s=window.location.hostname,onReload:r=()=>wo.reload()}){const a=pue(e),i=e.kind==="stop",l=!i&&n>=(e.patienceMs??T8),o=r0.test(s),c=d.useRef(null);d.useEffect(()=>{var h;return(h=c.current)==null?void 0:h.focus()},[]);const u=i?o?"This starts it again, in Terminal on this computer:":"On the computer buddi runs on, this starts it again:":o?"This says what it’s doing, in Terminal on this computer:":"On the computer buddi runs on, this says what it’s doing. Is that computer awake, and Tailscale on?";return t.jsx("div",{className:"ui-fieldbg rs-field","data-quiet":"true",children:t.jsx("div",{ref:c,className:"rs",role:"dialog","aria-modal":"true","aria-labelledby":"rs-title",tabIndex:-1,"data-state":i?"stopped":l?"long":"waiting",children:t.jsxs("div",{className:"rs-body",children:[t.jsx("span",{className:"ui-mascot rs-blob","data-size":"lg","aria-hidden":"true",children:t.jsx(yd,{role:"core",state:i||l?"idle":"working",className:"ui-mascot-blob"})}),t.jsx("h1",{id:"rs-title",className:"rs-title",children:a.title}),t.jsx("p",{className:"rs-line",role:"status",children:l?"Still waiting — buddi may need a hand.":a.line}),!l&&e.step?t.jsx("p",{className:"rs-step",children:e.step}):null,i||l?null:t.jsx("div",{className:"rs-track","aria-hidden":"true",children:t.jsx("span",{})}),i||l?t.jsxs("div",{className:"rs-help",children:[t.jsx("p",{className:"rs-help-line",children:u}),t.jsx(gue,{command:i?"buddi service start":"buddi status"})]}):null,t.jsxs("div",{className:"rs-foot",children:[t.jsx("span",{className:"rs-meta",children:i?"Checking every few seconds.":l?`${iA(n)} · still checking every few seconds`:n>=mue?`${iA(n)} · this page reloads when buddi is back`:"This page reloads when buddi is back."}),i||l?t.jsx(A,{size:"sm",variant:l?"accent":void 0,onClick:r,children:"Reload"}):null]})]})})})}function vue(e){const[n,s]=d.useState(()=>wo.now());return d.useEffect(()=>{if(!e)return;s(wo.now());const r=window.setInterval(()=>s(wo.now()),1e3);return()=>window.clearInterval(r)},[e]),e?Math.max(0,n-e.startedAt):0}function jue({children:e}){const n=DL(),s=vue(n),r=d.useRef(null);return d.useEffect(()=>{L8();let a=Du()!==null;const i=Xw(()=>{const o=Du()!==null;a&&!o&&US(),a=o}),l=()=>void US();return window.addEventListener(_u,l),()=>{i(),window.removeEventListener(_u,l)}},[]),d.useEffect(()=>{const a=r.current;a&&(a.toggleAttribute("inert",n!==null),n?a.setAttribute("aria-hidden","true"):a.removeAttribute("aria-hidden"))},[n]),t.jsxs(t.Fragment,{children:[t.jsx("div",{ref:r,className:"rs-host",children:e}),n?t.jsx(xue,{state:n,elapsedMs:s}):null]})}const yue="(max-width: 1080px)",wue="(max-width: 720px)";function bue(){const[e,n]=d.useState(()=>window.location.hash||Un);d.useEffect(()=>{const r=()=>n(window.location.hash||Un);return window.addEventListener("hashchange",r),()=>window.removeEventListener("hashchange",r)},[]);const s=d.useCallback((r,a=!1)=>{a?window.history.replaceState(null,"",r):window.location.hash=r,n(r)},[]);return[e,s]}function kue(){const[e,n]=bO();d.useEffect(()=>{wO(e)},[e]);const s=d.useCallback(r=>n({theme:r}),[n]);return[e.theme,s]}const lA=new Map;function Nue(){var Z,ut,Yn,xn;const[e,n]=bue(),[s,r]=d.useState("UTC"),[a,i]=d.useState({approvals:0,failed:0,paused:!1,running:0,needs:0}),[l,o]=kue(),c=ts(Tb),[u,h]=d.useState(!1),[f,m]=d.useState([]),[p,x]=d.useState(null),[g,b]=d.useState(null),[j,v]=d.useState([]),[y,k]=d.useState(!1),[N,w]=d.useState(null),[S,C]=d.useState(null),[E,$]=d.useState(0),[R,P]=d.useState(null),O=G8(),I=f.find(Te=>Te.id===p)??null,F=I!==null&&rZ(e),[U,L]=d.useState(!1),M=d.useCallback(()=>L(!0),[]);d.useEffect(()=>{F||L(!1)},[F]),xte(n,Xh(e)===null,F?M:void 0);const z=ts(yue),D=sD(),H=HI(),K=gO(),X=ve(()=>Promise.resolve().then(()=>T.version()),[],j8),W=X.data;A8(X.reload);const me=W&&!W.checkout&&W.updateAvailable?W:null,fe=bb(W==null?void 0:W.web);$8(W==null?void 0:W.web);const oe=((Z=ve(()=>Promise.resolve().then(()=>T.connectionSignals()),[],6e4).data)==null?void 0:Z.signals)??[],[B,ue]=d.useState(null),Ne=d.useMemo(()=>new Set(B?[B]:[]),[B]),[Ke,G]=d.useState(new Map);d.useEffect(()=>{const Te=()=>{T.conversations().then(xt=>{const It=new Map;for(const On of xt.conversations){const as=On.lastMessageAt??On.createdAt,er=It.get(On.agentId);(!er||as>er)&&It.set(On.agentId,as)}G(It)}).catch(()=>{})};Te();const De=window.setInterval(Te,3e4);return()=>window.clearInterval(De)},[e]);const[ae,J]=d.useState(!1),[xe,Ie]=d.useState("unknown");d.useEffect(()=>{if(ae)return;let Te=!1;return T.onboarding().then(De=>{Te||(J(!0),Ie(De.state==="done"||De.state==="skipped"?"done":"open"),De.state==="pending"&&De.needs.model&&!Xh(window.location.hash)&&n(nW,!0))}).catch(()=>{Te||(J(!0),Ie("open"))}),()=>{Te=!0}},[ae,n]),d.useEffect(()=>{const Te=CW(e);Te&&n(Te,!0)},[e,n]),d.useEffect(()=>{let Te=!1;const De=()=>{nt.agents().then(It=>{Te||(m(It.agents),T4(It.commands),f8(It.defaultAgentId??null),x(It.defaultAgentId??null),b(On=>{var as;return On??It.defaultAgentId??((as=It.agents[0])==null?void 0:as.id)??null}))}).catch(()=>{})};De();const xt=window.setInterval(De,15e3);return window.addEventListener("focus",De),window.addEventListener(Ts,De),()=>{Te=!0,window.clearInterval(xt),window.removeEventListener("focus",De),window.removeEventListener(Ts,De)}},[e]),d.useEffect(()=>{let Te=!1;const De=()=>{nt.groups().then(It=>{Te||v(It.groups)}).catch(()=>{})};De();const xt=window.setInterval(De,3e4);return()=>{Te=!0,window.clearInterval(xt)}},[e]);const Y=KI(f,p),te=rW(e),ie=YI(e),ge=ie?j.find(Te=>Te.id===ie.groupId)??null:null,je=ie?null:(te==null?void 0:te.agentId)??g;d.useEffect(()=>{te&&b(te.agentId)},[te==null?void 0:te.agentId]);const Se=d.useRef(null);te&&(Se.current=e);const ke=Te=>{b(Te),n(ht(Te))},Be=Te=>n(Gi(Te)),rt=d.useCallback((Te,De,xt=!0)=>n(ie?Gi(ie.groupId,De):ht(Te,De),xt),[n,ie==null?void 0:ie.groupId]),[ye,Ue]=d.useState(!1),[,st]=d.useState(0);d.useEffect(()=>{const Te=()=>{st(De=>De+1),T.session().then(De=>r(De.timezone)).catch(()=>{})};return window.addEventListener(Wv,Te),()=>window.removeEventListener(Wv,Te)},[]),d.useEffect(()=>{T.session().then(Te=>{Qw({timeFormat:Te.timeFormat??null,dateFormat:Te.dateFormat??null}),r(Te.timezone),Ue(!0)}).catch(()=>{})},[]);const Fe=fZ(ye);vZ(ye,Fe.refresh,()=>Ue(!1)),d.useEffect(()=>{const Te=()=>{T.overview().then(xt=>{var It;return i({approvals:xt.approvals.pending,failed:xt.jobs.failed??0,paused:xt.paused,running:xt.running??0,needs:((It=xt.needsYou)==null?void 0:It.total)??xt.approvals.pending+(xt.jobs.failed??0)})}).catch(()=>{})};Te();const De=window.setInterval(Te,2e4);return window.addEventListener(Xi,Te),()=>{window.clearInterval(De),window.removeEventListener(Xi,Te)}},[]);const wt=ve(()=>Promise.resolve().then(()=>T.focus()),[],6e4),ot=d.useRef(wt.reload);ot.current=wt.reload,d.useEffect(()=>{const Te=()=>{ot.current()};return window.addEventListener(Xi,Te),()=>window.removeEventListener(Xi,Te)},[]);const tn=due(),$t=aue(),Et=DL()!==null,$n=ts(wue);d.useEffect(()=>{if(!ye)return;if(e===EW){k(!0),n($a,!0);return}const Te=AW(e),De=new Date().toDateString();!Te||lA.get(Te)===De||(lA.set(Te,De),T.tipsSeenPage(Te).catch(()=>{}))},[e,ye,n]);const nn={link:cue(window.location.hostname,tn&&!Et),focus:((ut=wt.data)==null?void 0:ut.focus)??null,working:a.running,paused:a.paused,failed:a.failed,approvals:a.approvals,version:W?{current:W.current,latest:W.latest,updateAvailable:!W.checkout&&W.updateAvailable}:void 0,timezone:s},ce=Xce({recovery:((Yn=D.data)==null?void 0:Yn.active)===!0,lost:$t&&!Et,paused:a.paused}),Me=Xh(e),Ze=tP(e),Ct=Ze===$a,mt=N?j.find(Te=>Te.id===N.groupId)??null:null,Pe=Te=>v(De=>De.map(xt=>xt.id===Te.id?Te:xt)),ct=()=>w(null),_e=y?t.jsx(jZ,{agents:f,onClose:()=>k(!1),onCreated:Te=>{v(De=>[...De,Te]),k(!1),n(Gi(Te.id))}}):mt&&(N==null?void 0:N.kind)==="members"?t.jsx(VX,{group:mt,agents:f,onClose:ct,onSaved:Pe}):mt&&(N==null?void 0:N.kind)==="rename"?t.jsx(GX,{group:mt,onClose:ct,onSaved:Te=>{Pe(Te),ct()}}):mt&&(N==null?void 0:N.kind)==="clear"?t.jsx(YX,{group:mt,onClose:ct,onCleared:()=>{ct(),$(Te=>Te+1),n(Gi(mt.id),!0)}}):mt&&(N==null?void 0:N.kind)==="delete"?t.jsx(QX,{group:mt,agents:f,onClose:ct,onDeleted:Te=>{const De=j.findIndex(xt=>xt.id===mt.id);ct(),v(xt=>xt.filter(It=>It.id!==mt.id)),C({group:mt,index:De,until:Te}),n(Se.current??$a)}}):null,Gt=()=>{const Te=S;Te&&(C(null),nt.restoreGroup(Te.group.id).then(De=>{v(xt=>{if(xt.some(On=>On.id===De.id))return xt;const It=[...xt];return It.splice(Math.min(Math.max(Te.index,0),It.length),0,De),It}),n(Gi(De.id))}).catch(()=>P(Te.group.name)))};return Me?t.jsx(gS,{delayDuration:400,children:t.jsxs(sS,{swipeDirection:"right",children:[t.jsx(mce,{navigate:n,timezone:s}),t.jsx(rS,{className:"ui-toasts"})]})}):t.jsx(MW,{picture:(xn=f.find(Te=>Te.id===p))==null?void 0:xn.picture,children:t.jsx(gS,{delayDuration:400,children:t.jsxs(sS,{swipeDirection:"right",children:[_e,t.jsxs("div",{className:"wb-shell",children:[t.jsx(Zce,{banners:ce,onNavigate:n}),t.jsxs("div",{className:"wb",children:[t.jsx(ate,{attention:a.needs,place:Ze,onNavigate:n,theme:l,onTheme:o,plugins:pte(H.rail,K),updateAvailable:me!==null,settingsDot:oe.length>0?pO:void 0,stale:fe,timezone:s,version:W&&!W.checkout?{current:W.current,latest:W.latest,updateAvailable:W.updateAvailable}:W?{current:W.current,updateAvailable:!1}:void 0,status:$n?t.jsx(fue,{status:nn,onNavigate:n}):void 0}),Ct&&!z?t.jsx(rP,{agents:Y,currentId:je,attention:O,onSelect:ke,lastActivity:Ke,working:Ne,groups:j,currentGroupId:(ge==null?void 0:ge.id)??null,onSelectGroup:Be,onNewGroup:()=>k(!0)}):null,Ct?t.jsx(JX,{timezone:s,agents:Y,agentId:ge?ge.coordinator:je,defaultAgentId:p,group:ge,...ge?{onGroupAction:Te=>w({kind:Te,groupId:ge.id})}:{},requestedConversationId:(ie==null?void 0:ie.conversationId)??(te==null?void 0:te.conversationId),requestedTab:te==null?void 0:te.tab,onConversationOpened:rt,onSelectAgent:ke,onWorking:ue,attention:O,agentsInHeader:z,narrow:c,canvasOpen:u,onOpenCanvas:()=>h(!0),onCloseCanvas:()=>h(!1)},`room-${E}`):t.jsx("main",{"data-ground":Sue(Ze,e)?"plain":void 0,"data-layout":Ze===Nn?"split":void 0,children:t.jsx(Cue,{hash:e,place:Ze,timezone:s,navigate:n,agents:f,defaultAgentId:p,attention:O,pluginPages:H,update:me,connectionSignals:oe,onboarding:xe})})]}),$n?null:t.jsx(hue,{status:nn,onNavigate:n})]}),F&&I?t.jsx(aZ,{agent:I,agents:f,timezone:s,open:U,onOpenChange:L,navigate:n}):null,t.jsxs(dZ,{placement:uZ(F,U),children:[t.jsx(mZ,{queue:Fe.queue,agents:f,navigate:n,onDismiss:Fe.dismiss}),S?t.jsx(Xu,{title:`Deleted ${S.group.name}`,body:"Its history goes for good in a few seconds.",duration:wZ,onUndo:Gt,onGone:()=>C(null)},S.group.id):null,R?t.jsx(Xu,{title:`${R} is gone for good`,body:"Undo came too late to bring it back.",duration:6e3,onGone:()=>P(null)},`late-${R}`):null,t.jsx(rS,{className:"ui-toasts"})]})]})})})}function Sue(e,n){return Eb(n)!==null}function Cue({place:e,pluginPages:n,...s}){const r={...s,pluginPages:n},a=Eb(s.hash);if(a){const i=n.find(a.plugin,a.page);if(i)return t.jsx(kM,{page:i,item:a.item??null,params:Ab(s.hash),navigate:s.navigate,timezone:s.timezone,siblings:n.all.filter(l=>l.plugin===a.plugin)});if(n.all.length===0)return t.jsx(t.Fragment,{})}switch(e){case Mt:return t.jsx(Ose,{...r});case cn:return t.jsx(Dte,{...s});case Nn:return t.jsx(Coe,{...r});case La:return t.jsx(kZ,{...s});default:return t.jsx(yre,{...r})}}function Eue(){"serviceWorker"in navigator&&window.addEventListener("load",()=>{const e=`./sw.js?v=${encodeURIComponent(wb)}`;navigator.serviceWorker.register(e,{scope:"./"}).catch(()=>{})})}function Aue({search:e=location.search}){const[n,s]=d.useState(null),r=d.useRef(!1);return d.useEffect(()=>{if(r.current)return;r.current=!0;const a=new URLSearchParams(e);try{history.replaceState(null,"",location.pathname)}catch{}const i=a.get("state")??"",l=a.get("code")??void 0,o=a.get("error")??void 0;T.connectionCallback({state:i,...l?{code:l}:{},...o?{error:o}:{}}).then(c=>{s({ok:!0,name:c.name,cli:c.cli===!0});try{const u=new BroadcastChannel(YO);u.postMessage({id:c.id}),u.close()}catch{}window.setTimeout(()=>{try{window.close()}catch{}},1500)}).catch(c=>s({ok:!1,message:c instanceof Error?c.message:String(c)}))},[e]),t.jsx("main",{className:"ui-page connections-callback",children:t.jsxs(de,{gap:"lg",children:[t.jsx("h2",{className:"ui-page-title",children:"Connections"}),n===null?t.jsx(Q,{tone:"accent",role:"status",children:"Finishing the sign-in…"}):null,n!=null&&n.ok?t.jsxs(Q,{tone:"good",role:"status",title:`Signed in to ${n.name}`,children:["buddi keeps the sign-in in its vault. You can close this tab; ",n.cli?"the terminal carries on.":"the other one carries on."]}):null,n&&!n.ok?t.jsx(Q,{tone:"critical",role:"alert",title:"Nothing was connected",children:n.message}):null,n?t.jsx(it,{href:"/#/settings/connections",children:"Back to Connections"}):null]})})}const oA=document.getElementById("root");oA&&wT(oA).render(t.jsx(d.StrictMode,{children:location.pathname==="/connections/callback"?t.jsx(Aue,{}):t.jsx(jue,{children:t.jsx(sue,{children:t.jsx(rte,{children:t.jsx(Nue,{})})})})}));Eue();export{Tue as c,XL as g};
|