@vantran-se/openchamber-web 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -24
- package/bin/cli.js +1 -3
- package/bin/cli.test.js +40 -16
- package/bin/lib/DOCUMENTATION.md +6 -5
- package/bin/lib/cli-args.js +6 -1
- package/bin/lib/cli-args.test.js +34 -0
- package/bin/lib/cli-lifecycle.js +0 -1
- package/bin/lib/cli-network.js +8 -2
- package/bin/lib/cli-process.js +1 -1
- package/bin/lib/cli-settings-accessors.test.js +21 -13
- package/bin/lib/cli-startup.js +17 -11
- package/bin/lib/cli-startup.test.js +92 -2
- package/bin/lib/commands-connect-url.js +8 -1
- package/bin/lib/commands-schedule.js +8 -2
- package/bin/lib/commands-serve.js +15 -21
- package/bin/lib/commands-update.js +12 -24
- package/bin/lib/commands-update.test.js +14 -46
- package/dist/assets/DiffView-Cv9MSXl1.js +4 -0
- package/dist/assets/FilePreviewCommentMenu-D4kLseHj.js +4 -0
- package/dist/assets/FilesView-BVoD8I2x.js +14 -0
- package/dist/assets/{GitView-DzuzhIPx.js → GitView-Bzb8p-ew.js} +4 -4
- package/dist/assets/GuestSurfacePane-Crdbvsxo.js +1 -0
- package/dist/assets/InProgressOperationBanner-CwMjNQgk.js +2 -0
- package/dist/assets/{JsonTreeView-B_EPRjzy.js → JsonTreeView-DRKHZfsn.js} +1 -1
- package/dist/assets/MarkdownImageGallery-DZtqT1Zn.js +1 -0
- package/dist/assets/MarkdownRendererImpl-CqG7HCNd.js +10 -0
- package/dist/assets/OnboardingScreen-DMIxwYK5.js +1 -0
- package/dist/assets/{PatchDiff-6yh1csza.js → PatchDiff-CUcCg1jk.js} +1 -1
- package/dist/assets/PierreDiffViewer-CnnR-dnD.js +228 -0
- package/dist/assets/PlanView-RCBadcY7.js +5 -0
- package/dist/assets/SettingsView-CjBjZFRO.js +30 -0
- package/dist/assets/SettingsWindow-DyM7QuhI.js +1 -0
- package/dist/assets/SubmoduleDiffSummary-BWIfgMED.js +1 -0
- package/dist/assets/ToolOutputDialog-Q0P3FuAi.js +15 -0
- package/dist/assets/ToolPartDiffPreview-p7qR9FpU.js +8 -0
- package/dist/assets/{VirtualizedFileDiff-BTJVRkyo.js → VirtualizedFileDiff-CFpjL8Ns.js} +3 -3
- package/dist/assets/{Virtualizer-xCEYz34p.js → Virtualizer-C0IsclZn.js} +1 -1
- package/dist/assets/WalkthroughView-DI31zD02.js +4 -0
- package/dist/assets/appThemeRegistry-B9gkFq9i.js +1 -0
- package/dist/assets/{computeVirtualFileMetrics-CmPe29DM.js → computeVirtualFileMetrics-C2WM6JC2.js} +2 -2
- package/dist/assets/de-YKfk5MmC.js +14 -0
- package/dist/assets/es-_gwT0kr-.js +20 -0
- package/dist/assets/fileTreeStatus-D438yi8M.js +1 -0
- package/dist/assets/fr-DqzvXmIm.js +18 -0
- package/dist/assets/index-BLaHKdtx.js +1 -0
- package/dist/assets/index-BkMXRrVQ.css +1 -0
- package/dist/assets/index-DxNa7xYB.js +65 -0
- package/dist/assets/initializeSharedPreferences-Bck5EAWP.js +1 -0
- package/dist/assets/{isDiffPlainText-CQmDCnEv.js → isDiffPlainText-Dgbw8VKk.js} +1 -1
- package/dist/assets/{isFilePlainText-CYBUzW4I.js → isFilePlainText-_ZS5UYRj.js} +1 -1
- package/dist/assets/ja-B-GFYhQE.js +20 -0
- package/dist/assets/ko-mzksfqDC.js +20 -0
- package/dist/assets/main-C5Xx8dn_.js +2 -0
- package/dist/assets/main-CfBSQM1H.js +990 -0
- package/dist/assets/markdownCore-BmWwW1ll.js +7 -0
- package/dist/assets/miniChat-mnKwy4vQ.js +2 -0
- package/dist/assets/mobile-DeEQd0wZ.js +2 -0
- package/dist/assets/nl-CWQr6NSq.js +20 -0
- package/dist/assets/{parseDiffFromFile-Cy0PNxun.js → parseDiffFromFile-BUgn-T9p.js} +2 -2
- package/dist/assets/patchFileDiff-Dt8LhgBh.js +13 -0
- package/dist/assets/pl-UmRcDUX2.js +20 -0
- package/dist/assets/pt-BR-BSLybvVF.js +20 -0
- package/dist/assets/relocateRestoredSession-B5E9xb3T.js +1 -0
- package/dist/assets/renderElectronMiniChatApp-C0a9A5_J.js +2 -0
- package/dist/assets/renderMobileApp-BNncg3Pk.js +25 -0
- package/dist/assets/runtimeEndpointReset-CZ5aafpl.js +62 -0
- package/dist/assets/{selectionMarkdown-TkYk5h9l.js → selectionMarkdown-CUN3wUld.js} +9 -9
- package/dist/assets/{sessionOwnership-Bs1xbRfB.js → sessionOwnership-BSuxCEhb.js} +1 -1
- package/dist/assets/shikiHighlight-DHDx-6eM.js +1 -0
- package/dist/assets/space-apply-DM_2pRW7.js +1 -0
- package/dist/assets/space-close-Bpomt8z0.js +1 -0
- package/dist/assets/{surface-B6n7wJtt.js → surface-C-jQaGnL.js} +1 -1
- package/dist/assets/{textMateThemeFromAppTheme-CDlKffWz.js → textMateThemeFromAppTheme-DlsTphbY.js} +1 -1
- package/dist/assets/tr-gaTrX_HK.js +11 -0
- package/dist/assets/uk-CnJF6ykl.js +20 -0
- package/dist/assets/{useAppFontEffects-DCqCVGlT.js → useAppFontEffects-DGlvOqP_.js} +194 -233
- package/dist/assets/useInlineCommentController-kMN4Wg_D.js +2 -0
- package/dist/assets/{useRootScrollLock-BowwS8kq.js → useRootScrollLock-DMPpvpNP.js} +2 -2
- package/dist/assets/{vendor-base-ui-DX96QhTP.js → vendor-base-ui-Det7U81h.js} +1 -1
- package/dist/assets/{vendor-codemirror-autocomplete-DW1FQz9_.js → vendor-codemirror-autocomplete-BSHQHbKu.js} +1 -1
- package/dist/assets/{vendor-codemirror-commands-DpmhalwN.js → vendor-codemirror-commands-C4G_dPWe.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-angular-BqExbN1M.js → vendor-codemirror-lang-angular-B6LbBGHB.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-cpp-DZA36HfS.js → vendor-codemirror-lang-cpp-BWWXBx7W.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-css-B07blnnZ.js → vendor-codemirror-lang-css-Cayfb29q.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-go-BM8K9D1-.js → vendor-codemirror-lang-go-BoKlCNKw.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-html-DaH9adfE.js → vendor-codemirror-lang-html-BQWerHsJ.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-java-CsdC0viz.js → vendor-codemirror-lang-java-DWX7Fq_K.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-javascript-CpGYXGuo.js → vendor-codemirror-lang-javascript-DbpEcZM0.js} +2 -2
- package/dist/assets/{vendor-codemirror-lang-jinja-BBeGzXw5.js → vendor-codemirror-lang-jinja-D1JIJRA7.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-json-58T70Hqs.js → vendor-codemirror-lang-json-BzgckzmB.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-less-BI-xCA59.js → vendor-codemirror-lang-less-B9EpDXFi.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-liquid-zEcMa-zy.js → vendor-codemirror-lang-liquid-9U7kRbSf.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-markdown-BLKnlLP4.js → vendor-codemirror-lang-markdown-D2TEBIvZ.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-php-9f35M83-.js → vendor-codemirror-lang-php-BT6sDVzE.js} +1 -1
- package/dist/assets/vendor-codemirror-lang-python-jAMtYiA9.js +3 -0
- package/dist/assets/{vendor-codemirror-lang-rust-MNDL_jZQ.js → vendor-codemirror-lang-rust-CVO56EiL.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-sass-p9epsSNm.js → vendor-codemirror-lang-sass-DZlOoUWu.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-sql-Bqzh0EXX.js → vendor-codemirror-lang-sql-fZ6t1DPw.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-vue-BnNUWV-p.js → vendor-codemirror-lang-vue-DxbqrLiE.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-wast-C2a-oLmk.js → vendor-codemirror-lang-wast-DyU1Gt-I.js} +1 -1
- package/dist/assets/vendor-codemirror-lang-xml-C9a_K5_p.js +1 -0
- package/dist/assets/{vendor-codemirror-lang-yaml-C0sjswB0.js → vendor-codemirror-lang-yaml-Cptq8l0e.js} +1 -1
- package/dist/assets/{vendor-codemirror-language-ByBn5zIW.js → vendor-codemirror-language-DufXoQvE.js} +2 -2
- package/dist/assets/vendor-codemirror-language-data-CtwSWKtX.js +2 -0
- package/dist/assets/{vendor-codemirror-search-ib-sHD5W.js → vendor-codemirror-search-CvXM_pZg.js} +1 -1
- package/dist/assets/{vendor-codemirror-state-G3UuR-be.js → vendor-codemirror-state-Dek9sMtw.js} +1 -1
- package/dist/assets/{vendor-codemirror-view-Bniqp7p5.js → vendor-codemirror-view-1e0FQ6Wn.js} +1 -1
- package/dist/assets/vendor-framer-motion-DxDVhOLc.js +9 -0
- package/dist/assets/vendor-katex-CuQvj9-L.js +257 -0
- package/dist/assets/vendor-katex-DdZNUVNG.css +1 -0
- package/dist/assets/{vendor-motion-dom-DcCgeG69.js → vendor-motion-dom-HXPOMxb7.js} +1 -1
- package/dist/assets/{vendor-opencode-client-DHzhmLwV.js → vendor-opencode-client-BmFcUkbQ.js} +1 -1
- package/dist/assets/{vendor-replit-codemirror-vim-DkzqxN2H.js → vendor-replit-codemirror-vim-BlJRn-cW.js} +2 -2
- package/dist/assets/{vendor-tanstack-react-virtual-H_JmXOFV.js → vendor-tanstack-react-virtual-CvuLsk7D.js} +1 -1
- package/dist/assets/{vendor-tanstack-virtual-core-Dxc8hSTB.js → vendor-tanstack-virtual-core-DPaNcJcT.js} +1 -1
- package/dist/assets/zh-CN-t2vigSB1.js +20 -0
- package/dist/assets/zh-TW-jAgqBokB.js +20 -0
- package/dist/index.html +6 -6
- package/dist/mini-chat.html +6 -6
- package/dist/mobile.html +6 -6
- package/package.json +8 -5
- package/server/index.js +80 -36
- package/server/lib/agent-memory/actions.js +1 -6
- package/server/lib/agent-memory/routes.js +1 -2
- package/server/lib/agent-memory/runtime.js +1 -8
- package/server/lib/agent-tool/DOCUMENTATION.md +7 -3
- package/server/lib/agent-tool/runtime.js +3 -6
- package/server/lib/agent-tool/runtime.test.js +0 -2
- package/server/lib/browser-control/DOCUMENTATION.md +6 -0
- package/server/lib/changelog/update-notes.js +1 -1
- package/server/lib/context-obligatory/runtime.js +1 -2
- package/server/lib/dev-tunnel/DOCUMENTATION.md +8 -0
- package/server/lib/dev-tunnel/client.js +21 -10
- package/server/lib/dev-tunnel/tunnel.test.js +34 -0
- package/server/lib/dispatch-results/runtime.js +1 -1
- package/server/lib/enterprise-mode.d.ts +1 -0
- package/server/lib/enterprise-mode.js +13 -2
- package/server/lib/enterprise-mode.test.js +21 -0
- package/server/lib/event-stream/DOCUMENTATION.md +2 -2
- package/server/lib/event-stream/index.js +1 -3
- package/server/lib/event-stream/translate-v2.js +1 -9
- package/server/lib/event-stream/translate-v2.test.js +0 -11
- package/server/lib/fs/DOCUMENTATION.md +5 -2
- package/server/lib/fs/routes.js +62 -15
- package/server/lib/fs/routes.test.js +278 -48
- package/server/lib/fs/workspace-file-names.js +104 -0
- package/server/lib/fs/workspace-file-names.test.js +62 -0
- package/server/lib/git/DOCUMENTATION.md +17 -5
- package/server/lib/git/contributor-provenance-storage.js +9 -6
- package/server/lib/git/contributor-provenance-storage.test.js +29 -0
- package/server/lib/git/credential-broker.js +1 -1
- package/server/lib/git/credential-resolver.js +1 -4
- package/server/lib/git/credentials.js +1 -0
- package/server/lib/git/discovery-endpoint.js +1 -1
- package/server/lib/git/identity-provisioning.js +2 -1
- package/server/lib/git/identity-storage.js +3 -4
- package/server/lib/git/lfs-discovery.js +14 -14
- package/server/lib/git/lfs-discovery.test.js +16 -6
- package/server/lib/git/network-operation-plan.js +50 -62
- package/server/lib/git/network-operation-plan.test.js +103 -1
- package/server/lib/git/network-operation-registry.js +4 -6
- package/server/lib/git/network-operation-storage.js +4 -6
- package/server/lib/git/network-operations.js +12 -4
- package/server/lib/git/network-operations.test.js +19 -6
- package/server/lib/git/redaction.js +2 -1
- package/server/lib/git/repository-credential-runtime.js +5 -3
- package/server/lib/git/repository-credential-runtime.test.js +22 -0
- package/server/lib/git/routes.js +31 -137
- package/server/lib/git/routes.test.js +2 -2
- package/server/lib/git/service.js +143 -27
- package/server/lib/git/service.test.js +215 -1
- package/server/lib/git/ssh-credential-storage.js +1 -4
- package/server/lib/git/submodule-discovery.js +1 -1
- package/server/lib/git/worktree-bootstrap-storage.js +3 -4
- package/server/lib/git/worktree-bootstrap-storage.test.js +15 -0
- package/server/lib/git/worktree-creation.js +194 -0
- package/server/lib/git/worktree-creation.test.js +155 -0
- package/server/lib/github/DOCUMENTATION.md +11 -6
- package/server/lib/github/auth.js +2 -4
- package/server/lib/github/device-flow.js +2 -2
- package/server/lib/github/gh-cli-credential.js +1 -0
- package/server/lib/github/octokit.js +31 -0
- package/server/lib/github/pr-status.js +35 -18
- package/server/lib/github/pr-status.test.js +271 -3
- package/server/lib/github/reference-search.js +102 -13
- package/server/lib/github/reference-search.test.js +48 -7
- package/server/lib/github/routes.auth.test.js +18 -0
- package/server/lib/github/routes.js +360 -6
- package/server/lib/github/routes.mutations.test.js +239 -0
- package/server/lib/github/routes.test.js +134 -2
- package/server/lib/gitlab/DOCUMENTATION.md +5 -1
- package/server/lib/gitlab/auth-storage.test.js +1 -0
- package/server/lib/gitlab/mappers.js +30 -1
- package/server/lib/gitlab/resources.js +230 -6
- package/server/lib/gitlab/resources.test.js +179 -0
- package/server/lib/gitlab/routes.js +200 -6
- package/server/lib/gitlab/routes.test.js +186 -2
- package/server/lib/gitlab/validation.js +1 -5
- package/server/lib/guests/DOCUMENTATION.md +1 -1
- package/server/lib/guests/oauth.js +2 -2
- package/server/lib/guests/service.js +1 -1
- package/server/lib/guests/sockets.js +1 -1
- package/server/lib/injected-env.d.ts +8 -0
- package/server/lib/injected-env.js +50 -0
- package/server/lib/injected-env.test.js +56 -0
- package/server/lib/linear/DOCUMENTATION.md +5 -6
- package/server/lib/linear/issues.js +62 -4
- package/server/lib/linear/issues.test.js +68 -0
- package/server/lib/linear/oauth.js +5 -5
- package/server/lib/linear/parse.js +2 -9
- package/server/lib/message-queue/DOCUMENTATION.md +23 -1
- package/server/lib/message-queue/runtime.js +85 -12
- package/server/lib/message-queue/runtime.test.js +172 -2
- package/server/lib/notifications/apns-runtime.js +5 -6
- package/server/lib/notifications/apns-runtime.test.js +20 -4
- package/server/lib/openchamber-control/DOCUMENTATION.md +19 -1
- package/server/lib/openchamber-control/actions.js +2 -1
- package/server/lib/openchamber-control/service.js +119 -20
- package/server/lib/openchamber-control/service.test.js +166 -0
- package/server/lib/openchamber-sessions/archive-store.js +1 -6
- package/server/lib/openchamber-sessions/routes.js +47 -12
- package/server/lib/openchamber-sessions/routes.test.js +65 -2
- package/server/lib/openchamber-sessions/session-metadata-store.js +1 -6
- package/server/lib/opencode/DOCUMENTATION.md +22 -8
- package/server/lib/opencode/agents.js +62 -0
- package/server/lib/opencode/auth-state-runtime.js +3 -1
- package/server/lib/opencode/auth.d.ts +1 -1
- package/server/lib/opencode/auth.js +8 -0
- package/server/lib/opencode/auth.test.js +31 -0
- package/server/lib/opencode/config-entity-routes.js +16 -0
- package/server/lib/opencode/config-entity-v2.test.js +16 -1
- package/server/lib/opencode/config-paths.test.js +2 -2
- package/server/lib/opencode/config-v2.js +2 -4
- package/server/lib/opencode/feature-routes-runtime.js +89 -49
- package/server/lib/opencode/lifecycle.js +41 -21
- package/server/lib/opencode/lifecycle.test.js +50 -2
- package/server/lib/opencode/model-discovery.js +1 -1
- package/server/lib/opencode/model-discovery.test.js +17 -0
- package/server/lib/opencode/models-metadata.js +0 -2
- package/server/lib/opencode/openchamber-routes.test.js +3 -3
- package/server/lib/opencode/plugins.js +6 -9
- package/server/lib/opencode/provider-source-route.test.js +101 -3
- package/server/lib/opencode/providers-disabled.test.js +59 -0
- package/server/lib/opencode/providers.js +34 -0
- package/server/lib/opencode/proxy.js +11 -3
- package/server/lib/opencode/routes.js +40 -2
- package/server/lib/opencode/settings-helpers.js +27 -1
- package/server/lib/opencode/settings-helpers.test.js +19 -7
- package/server/lib/opencode/settings-registry.json +27 -16
- package/server/lib/opencode/settings-runtime.test.js +18 -0
- package/server/lib/opencode/shared-service-runtime.js +23 -104
- package/server/lib/opencode/shared.js +77 -46
- package/server/lib/opencode/shared.test.js +12 -12
- package/server/lib/opencode/shutdown-runtime.test.js +2 -3
- package/server/lib/opencode/skill-routes.js +123 -38
- package/server/lib/opencode/skill-routes.test.js +201 -0
- package/server/lib/opencode/skills.js +81 -34
- package/server/lib/opencode/skills.test.js +176 -21
- package/server/lib/opencode/startup-pipeline-runtime.js +6 -3
- package/server/lib/opencode/startup-pipeline-runtime.test.js +2 -1
- package/server/lib/opencode/watcher.test.js +0 -54
- package/server/lib/outbound-proxy.js +52 -0
- package/server/lib/outbound-proxy.test.js +55 -0
- package/server/lib/package-manager.js +23 -17
- package/server/lib/package-manager.test.js +5 -18
- package/server/lib/permission-auto-accept/DOCUMENTATION.md +1 -1
- package/server/lib/permission-auto-accept/runtime.js +19 -47
- package/server/lib/permission-auto-accept/runtime.test.js +2 -2
- package/server/lib/project-context/DOCUMENTATION.md +7 -1
- package/server/lib/project-context/routes.js +1 -2
- package/server/lib/project-context/runtime.js +12 -14
- package/server/lib/project-context/runtime.test.js +78 -2
- package/server/lib/projects/project-config.js +30 -15
- package/server/lib/projects/project-config.test.js +30 -0
- package/server/lib/projects/project-setup.js +1 -2
- package/server/lib/projects/routes.js +1 -2
- package/server/lib/quota/DOCUMENTATION.md +35 -7
- package/server/lib/quota/index.js +1 -0
- package/server/lib/quota/providers/claude/index.js +1 -1
- package/server/lib/quota/providers/cline-pass.js +1 -1
- package/server/lib/quota/providers/exe-dev.js +1 -1
- package/server/lib/quota/providers/google/index.js +1 -1
- package/server/lib/quota/providers/hyper.js +1 -1
- package/server/lib/quota/providers/kimi.js +116 -36
- package/server/lib/quota/providers/kimi.test.js +128 -3
- package/server/lib/quota/providers/opencode-go.js +144 -21
- package/server/lib/quota/providers/opencode-go.test.js +229 -6
- package/server/lib/quota/providers/openrouter.js +1 -1
- package/server/lib/quota/providers/zenmux.js +1 -1
- package/server/lib/quota/utils/auth.js +1 -0
- package/server/lib/quota/utils/transformers.js +2 -6
- package/server/lib/relay/DOCUMENTATION.md +18 -3
- package/server/lib/relay/e2ee.js +7 -7
- package/server/lib/relay/host-client.js +84 -13
- package/server/lib/relay/host-client.test.js +201 -1
- package/server/lib/relay/identity.js +6 -29
- package/server/lib/relay/identity.test.js +18 -28
- package/server/lib/relay/key-store.js +141 -0
- package/server/lib/relay/key-store.test.js +138 -0
- package/server/lib/relay/service.js +8 -8
- package/server/lib/relay/service.test.js +10 -5
- package/server/lib/relay/signing-key.js +13 -36
- package/server/lib/relay/tunnel-codec.js +10 -10
- package/server/lib/route-module-exports.test.js +22 -0
- package/server/lib/routing/DOCUMENTATION.md +23 -3
- package/server/lib/routing/cache.js +87 -0
- package/server/lib/routing/defaults.js +11 -0
- package/server/lib/routing/history.js +12 -4
- package/server/lib/routing/runtime.js +39 -3
- package/server/lib/routing/runtime.test.js +81 -2
- package/server/lib/routing/store.js +12 -1
- package/server/lib/routing/store.test.js +13 -0
- package/server/lib/scheduled-tasks/DOCUMENTATION.md +59 -1
- package/server/lib/scheduled-tasks/existing-session.js +119 -0
- package/server/lib/scheduled-tasks/existing-session.test.js +350 -0
- package/server/lib/scheduled-tasks/loops.js +1 -8
- package/server/lib/scheduled-tasks/routes.js +8 -8
- package/server/lib/scheduled-tasks/runtime.js +103 -13
- package/server/lib/scheduled-tasks/runtime.test.js +48 -0
- package/server/lib/scheduled-tasks/service.js +33 -11
- package/server/lib/scheduled-tasks/service.test.js +128 -2
- package/server/lib/scheduled-tasks/session-defaults.js +27 -0
- package/server/lib/scheduled-tasks/session-defaults.test.js +19 -0
- package/server/lib/session-assist/context.js +1 -0
- package/server/lib/session-folders/routes.js +2 -2
- package/server/lib/session-goal/objectives.js +1 -1
- package/server/lib/session-knowledge/routes.js +2 -2
- package/server/lib/session-knowledge/runtime.js +1 -2
- package/server/lib/session-work/DOCUMENTATION.md +39 -14
- package/server/lib/session-work/questions.js +31 -2
- package/server/lib/session-work/runtime.js +22 -13
- package/server/lib/session-work/runtime.test.js +43 -26
- package/server/lib/session-work/state.js +10 -4
- package/server/lib/session-work/state.test.js +8 -1
- package/server/lib/shared/DOCUMENTATION.md +89 -0
- package/server/lib/shared/guards.js +53 -0
- package/server/lib/shared/guards.test.js +112 -0
- package/server/lib/skills-catalog/DOCUMENTATION.md +10 -8
- package/server/lib/skills-catalog/cache.js +3 -2
- package/server/lib/skills-catalog/curated-sources.js +5 -1
- package/server/lib/skills-catalog/git.js +107 -20
- package/server/lib/skills-catalog/git.test.js +78 -0
- package/server/lib/skills-catalog/install.js +21 -12
- package/server/lib/skills-catalog/scan.js +25 -15
- package/server/lib/skills-catalog/source.js +26 -1
- package/server/lib/skills-catalog/source.test.js +27 -0
- package/server/lib/source-control/DOCUMENTATION.md +2 -1
- package/server/lib/source-control/audit-storage.js +7 -6
- package/server/lib/source-control/audit-storage.test.js +11 -0
- package/server/lib/source-control/binding-service.js +2 -5
- package/server/lib/source-control/change-request-worktree.js +90 -0
- package/server/lib/source-control/change-request-worktree.test.js +121 -0
- package/server/lib/source-control/mutation-executor.js +1 -1
- package/server/lib/source-control/mutation-storage.js +11 -5
- package/server/lib/source-control/provider-instance.js +1 -2
- package/server/lib/source-control/repository-identity.js +1 -1
- package/server/lib/source-control/routes.js +14 -2
- package/server/lib/spaces/DOCUMENTATION.md +42 -17
- package/server/lib/spaces/command-stream.test.js +15 -0
- package/server/lib/spaces/dispatcher.js +7 -0
- package/server/lib/spaces/dispatcher.test.js +17 -0
- package/server/lib/spaces/hardening.js +2 -2
- package/server/lib/spaces/hardening.test.js +1 -1
- package/server/lib/spaces/host.js +2 -0
- package/server/lib/spaces/journey.js +66 -5
- package/server/lib/spaces/journey.test.js +95 -4
- package/server/lib/spaces/layout.js +1 -1
- package/server/lib/spaces/places/docker-disk.js +38 -14
- package/server/lib/spaces/places/docker-disk.test.js +80 -1
- package/server/lib/spaces/places/docker.js +35 -11
- package/server/lib/spaces/places/fake-docker.js +22 -3
- package/server/lib/spaces/places/memory-place.js +3 -0
- package/server/lib/spaces/places/packed.docker.live.test.js +1 -1
- package/server/lib/spaces/routes.js +5 -0
- package/server/lib/spaces/routes.test.js +4 -2
- package/server/lib/spaces/run-command.js +9 -2
- package/server/lib/spaces/tools.js +4 -5
- package/server/lib/spaces/tools.test.js +2 -2
- package/server/lib/terminal/runtime.js +18 -6
- package/server/lib/terminal/runtime.test.js +66 -0
- package/server/lib/tts/index.js +3 -0
- package/server/lib/tts/service.js +4 -2
- package/server/lib/walkthrough/DOCUMENTATION.md +3 -1
- package/server/lib/walkthrough/index.js +2 -3
- package/server/lib/walkthrough/pr-source.test.js +22 -0
- package/server/lib/walkthrough/sources.js +6 -1
- package/server/opencode-proxy.test.js +127 -0
- package/bin/lib/commands-startup.test.js +0 -15
- package/dist/assets/CodeMirrorCommentWidgets-CVDSjcrP.js +0 -1
- package/dist/assets/DiffView-Ct7vL3fD.js +0 -4
- package/dist/assets/FilesView-DT0uEYgT.js +0 -17
- package/dist/assets/GuestSurfacePane-DVvk1VPu.js +0 -1
- package/dist/assets/LinearIssuesView-C10MwA9h.js +0 -1
- package/dist/assets/MarkdownImageGallery-BbN_K_3d.js +0 -1
- package/dist/assets/MarkdownRendererImpl-BLt2Tkk9.js +0 -10
- package/dist/assets/OnboardingScreen-Bgp5A3WB.js +0 -1
- package/dist/assets/PierreDiffViewer-CWJLj-S-.js +0 -210
- package/dist/assets/PlanView-DsRWnsOI.js +0 -5
- package/dist/assets/PublishDialog-CCeKloRu.js +0 -2
- package/dist/assets/SettingsView-BuPPsNPp.js +0 -30
- package/dist/assets/SettingsWindow-CM5fL8Ot.js +0 -1
- package/dist/assets/SubmoduleDiffSummary-CfsMcfiQ.js +0 -1
- package/dist/assets/ToolOutputDialog-mZrfSofz.js +0 -15
- package/dist/assets/ToolPartDiffPreview-BUGCRYEL.js +0 -8
- package/dist/assets/WalkthroughView-ClBo7PPd.js +0 -4
- package/dist/assets/appThemeRegistry-CxzMxR-H.js +0 -1
- package/dist/assets/de-CBla4hjd.js +0 -14
- package/dist/assets/es-BmnZtxTD.js +0 -20
- package/dist/assets/fileTreeStatus-BSHFIGEg.js +0 -1
- package/dist/assets/fr-OVKIBUZO.js +0 -18
- package/dist/assets/index-CKCFKmjF.js +0 -1
- package/dist/assets/index-Dbx4V4GN.css +0 -1
- package/dist/assets/index-vQ1Pg1cr.js +0 -61
- package/dist/assets/ja-6v-yr-gE.js +0 -20
- package/dist/assets/ko-I_ZLvgQ9.js +0 -20
- package/dist/assets/main-CmO4dRtR.js +0 -2
- package/dist/assets/main-b9vqhlYM.js +0 -999
- package/dist/assets/markdownCore-BPEZRQfP.js +0 -7
- package/dist/assets/miniChat-B5Oi7B-6.js +0 -2
- package/dist/assets/mobile-CVtShif9.js +0 -2
- package/dist/assets/nl-DcvIJf46.js +0 -20
- package/dist/assets/patchFileDiff-CW3wCH1O.js +0 -13
- package/dist/assets/pl-JxCUl0sd.js +0 -20
- package/dist/assets/pt-BR-L89mjja2.js +0 -20
- package/dist/assets/relocateRestoredSession-DYh_9oBa.js +0 -1
- package/dist/assets/renderElectronMiniChatApp-BD-1JHSg.js +0 -2
- package/dist/assets/renderMobileApp-7s5InXt1.js +0 -25
- package/dist/assets/runtimeEndpointReset-DqLJC6L1.js +0 -53
- package/dist/assets/shikiHighlight-CXgZnvHh.js +0 -1
- package/dist/assets/space-apply-1trGVIl8.js +0 -1
- package/dist/assets/space-close-y7j-NuBv.js +0 -1
- package/dist/assets/tr-ka5J1flt.js +0 -11
- package/dist/assets/uk-PyGe6Q_u.js +0 -20
- package/dist/assets/useInlineCommentController-CrjSGCpi.js +0 -2
- package/dist/assets/vendor-codemirror-lang-python-B7ClrMIT.js +0 -3
- package/dist/assets/vendor-codemirror-lang-xml-C8tGnS64.js +0 -1
- package/dist/assets/vendor-codemirror-language-data-q2bKO1EM.js +0 -2
- package/dist/assets/vendor-framer-motion-Bq3iTZ6r.js +0 -1
- package/dist/assets/vendor-katex-CHD9BdDO.js +0 -257
- package/dist/assets/vendor-katex-Cp579UoJ.css +0 -1
- package/dist/assets/zh-CN-B0P2tybJ.js +0 -20
- package/dist/assets/zh-TW-Bs9C5cN8.js +0 -20
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{R as v,f as fe,j as de}from"./vendor-react-BUCujlKS.js";import{m as an}from"./vendor-morphdom-B7dS_VPB.js";import{r as ln,a as cn}from"./vendor-beautiful-mermaid-DztCUpLZ.js";import{j3 as je,j4 as dn,j5 as un,j6 as mn,j7 as Ct,j8 as pn,j9 as fn,g as Ee,bQ as hn,bT as bn,ja as gn,jb as wn,jc as yn,N as vt,ay as Et,jd as St,f as Lt,h as Mt,fC as An,fD as Ge,je as kn,da as Cn,jf as vn,jg as En,jh as Sn,ji as Ln,o as Mn,b9 as Tn}from"./useAppFontEffects-DGlvOqP_.js";import{V as Re,h as Tt,W as ue,eu as Rn,u as K,a as Nn,cn as _n,P as xn,R as Pn,e as In}from"./index-DxNa7xYB.js";import{getCachedMarkdownBlocks as Ye,renderMarkdownSync as Fn,renderMarkdownBlocks as Wn}from"./markdownCore-BmWwW1ll.js";import{b as Dn,r as On}from"./textMateThemeFromAppTheme-DlsTphbY.js";import{g as Rt,a as qn}from"./selectionMarkdown-CUN3wUld.js";import{o as Bn,a as zn,s as Hn}from"./vendor-zod-CxRSdNoV.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-elkjs-BRwcR927.js";import"./vendor-entities-C3BA0AJP.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-Det7U81h.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-tanstack-react-virtual-CvuLsk7D.js";import"./vendor-tanstack-virtual-core-DPaNcJcT.js";import"./vendor-framer-motion-DxDVhOLc.js";import"./vendor-motion-dom-HXPOMxb7.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-codemirror-commands-C4G_dPWe.js";import"./vendor-codemirror-state-Dek9sMtw.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-1e0FQ6Wn.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-language-DufXoQvE.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-DbpEcZM0.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-BSHQHbKu.js";import"./vendor-codemirror-lang-json-BzgckzmB.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-Cayfb29q.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-BQWerHsJ.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-D2TEBIvZ.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CtwSWKtX.js";import"./vendor-codemirror-lang-python-jAMtYiA9.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-capacitor-core-B4EWRrHz.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-BmFcUkbQ.js";import"./vendor-marked-CX41MkDF.js";import"./vendor-marked-linkify-it-CXI_LHIE.js";import"./vendor-linkify-it-DZCzzDkK.js";import"./vendor-uc.micro-BAd0H0z4.js";import"./vendor-remend-DcBOpbSu.js";import"./vendor-katex-CuQvj9-L.js";import"./vendor-dompurify-r8glNMJW.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";const Ve=t=>{const e=t.target;if(!(e instanceof Element))return null;const n=e.closest("a[href]");return!(n instanceof HTMLAnchorElement)||n.getAttribute("data-openchamber-file-link")==="true"?null:n},Fe=(t,e)=>{if(t.defaultPrevented)return!1;const r=Ve(t)?.getAttribute("href")??"";return un(r)?(t.preventDefault(),t.stopPropagation(),e?.(r),!0):!1},Nt=t=>t.button===0&&!t.metaKey&&!t.ctrlKey&&!t.altKey&&!t.shiftKey,$n=(t,e)=>{const n=e.openSessionLink;if(!n||t.defaultPrevented)return!1;const r=Ve(t)?.getAttribute("href")??"",o=dn(r,e.ownOrigins??[]);return!o||je(r)&&!Nt(t)?!1:(t.preventDefault(),t.stopPropagation(),n(o),!0)},jn=(t,e)=>{const n=i=>{if($n(i,e)||Fe(i,e.openAppLink)||!e.allowExternalHttp||i.defaultPrevented||!Nt(i))return;const s=Ve(i)?.getAttribute("href")??"";je(s)&&(i.preventDefault(),i.stopPropagation(),e.openExternalHttp(s))},r=i=>{i.button===1&&Fe(i,e.openAppLink)},o=i=>{Fe(i)};return t.addEventListener("click",n),t.addEventListener("auxclick",r),t.addEventListener("dragstart",o),()=>{t.removeEventListener("click",n),t.removeEventListener("auxclick",r),t.removeEventListener("dragstart",o)}},_t='[data-openchamber-file-link="true"]',Vn=t=>{if(!(t instanceof Element))return null;const e=t.closest(_t);return e instanceof HTMLElement?e:null},Kn=(t,e)=>{if(!(t instanceof Element))return null;const n=t.closest("a[href]");if(!(n instanceof HTMLAnchorElement))return null;const r=e.hrefCandidate(n);return!r||!e.isResolvable(r)?null:n},Un=(t,e)=>{const n=r=>{const o=Vn(r.target)??Kn(r.target,e);if(!o)return;r.preventDefault(),r.stopPropagation();const i=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform);e.openFileReference(o,{external:i?r.metaKey:r.ctrlKey})};return t.addEventListener("click",n),()=>t.removeEventListener("click",n)},xt="openchamber-md",Se={background:"transparent",foreground:"var(--md-syntax-foreground)",comment:"var(--md-syntax-comment)",keyword:"var(--md-syntax-keyword)",string:"var(--md-syntax-string)",number:"var(--md-syntax-number)",function:"var(--md-syntax-function)",variable:"var(--md-syntax-variable)",type:"var(--md-syntax-type)",operator:"var(--md-syntax-operator)"},Xn=Object.fromEntries(Object.keys(mn({base:Se})).map(t=>[t,`var(--md-token-${t})`])),Zn={name:xt,colors:{"editor.background":"transparent","editor.foreground":Se.foreground},tokenColors:[...Dn({base:Se,tokens:Xn}),{scope:["markup.bold","punctuation.definition.bold"],settings:{fontStyle:"bold"}},{scope:["markup.italic","punctuation.definition.italic"],settings:{fontStyle:"italic"}},{scope:["markup.heading","markup.heading entity.name"],settings:{foreground:Se.keyword,fontStyle:"bold"}},{scope:["markup.inserted","punctuation.definition.inserted"],settings:{foreground:"var(--md-syntax-inserted)"}},{scope:["markup.deleted","punctuation.definition.deleted","invalid","invalid.illegal"],settings:{foreground:"var(--md-syntax-deleted)"}}]};let Qe=!1;const Gn=()=>{Qe||(Qe=!0,On(xt,()=>Promise.resolve(Zn)))},P=t=>Number.isFinite(t)&&t>0,Je=t=>{if(t==null)return null;const e=String(t).trim().match(/^([+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?)(?:px)?$/);if(!e)return null;const n=Number(e[1]);return P(n)?n:null},We=(t,e,n)=>Math.min(n,Math.max(e,t)),Yn=6,et=1.25,Qn=1.0015,Jn=.5,er=12,tt=3,tr=400,me='[data-markdown="mermaid-block"]',B=t=>t.querySelector(me)!==null,nr=t=>[t.x,t.y,t.width,t.height].map(e=>{const n=Number(e.toFixed(Yn));return Object.is(n,-0)?"0":String(n)}).join(" "),rr=t=>{const e=t.viewBox?.trim().split(/[\s,]+/).map(o=>Number.parseFloat(o));if(e?.length===4){const[o,i,s,a]=e;if(Number.isFinite(o)&&Number.isFinite(i)&&P(s)&&P(a))return{x:o,y:i,width:s,height:a}}const n=Je(t.width),r=Je(t.height);return n===null||r===null?null:{x:0,y:0,width:n,height:r}},or=t=>{let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return(e>>>0).toString(36)},sr=t=>{const e=t.renderMode||"unknown",n=t.svgMarkup??"";if(!n){const r=[t.viewBox??"",t.width??"",t.height??""];return r.some(o=>o!=="")?`${e}:bounds:${r.join(":")}`:`${e}:no-svg`}return[e,or(n)].join(":")},Pt=(t,e)=>{if(!P(e.width)||!P(e.height))return t;const n=t.width/t.height,r=e.width/e.height;if(n>r){const i=t.width/r;return{x:t.x,y:t.y-(i-t.height)/2,width:t.width,height:i}}const o=t.height*r;return{x:t.x-(o-t.width)/2,y:t.y,width:o,height:t.height}},ar=({currentBox:t,viewport:e,delta:n})=>!P(e.width)||!P(e.height)||!P(t.width)||!P(t.height)?t:{x:t.x-n.x/e.width*t.width,y:t.y-n.y/e.height*t.height,width:t.width,height:t.height},ir=(t,e)=>{const n=e.x-t.x,r=e.y-t.y;return n*n+r*r>tt*tt},De=t=>{const[e,n]=t;return!e||!n?null:{distance:Math.hypot(n.x-e.x,n.y-e.y),center:{x:(e.x+n.x)/2,y:(e.y+n.y)/2}}},lr=({currentBox:t,contentBox:e,viewport:n,pointer:r,zoomFactor:o,minScale:i,maxScale:s})=>{if(!P(n.width)||!P(n.height)||!P(o)||!P(t.width)||!P(t.height)||!P(e.width)||!P(e.height)||!P(i)||!P(s))return t;const a=Math.min(i,s),d=Math.max(i,s),c=Pt(e,n),u=c.width/t.width,f=We(u*o,a,d),p=c.width/f,h=p/(t.width/t.height),w=We(r.x/n.width,0,1),k=We(r.y/n.height,0,1),A=t.x+w*t.width,g=t.y+k*t.height;return{x:A-w*p,y:g-k*h,width:p,height:h}},Me=new WeakMap,Ke=new WeakMap,Y=new Set,pe=new Set;let G=null,ae=null,re=null;const cr=t=>t.querySelector('[data-markdown="mermaid-viewport"]')??t.querySelector('[data-markdown="mermaid"]'),It=t=>{const e=t.querySelector('[data-markdown="mermaid"] svg'),n=t.querySelector('[data-markdown="mermaid"]');return sr({renderMode:t.getAttribute("data-mermaid-render"),svgMarkup:n?.getAttribute("data-md-original-svg")??e?.outerHTML??null,viewBox:e?.getAttribute("viewBox"),width:e?.getAttribute("width"),height:e?.getAttribute("height")})},te=t=>{const e=t.getBoundingClientRect();return{width:e.width,height:e.height}},nt=(t,e)=>{const n=e.getBoundingClientRect();return{x:t.clientX-n.left,y:t.clientY-n.top}},dr=t=>t instanceof Element&&!!t.closest('button, a, [role="button"]'),Ft=t=>{const e=t.map(n=>te(n.viewport));t.forEach((n,r)=>{const o=e[r];o&&n.fitToViewport(o)})},Wt=()=>{re!==null||Y.size===0||(re=window.requestAnimationFrame(()=>{re=null,Ft(Array.from(Y))}))},ur=()=>{if(G)return G;const t=globalThis.ResizeObserver;return t?(G=new t(e=>{for(const n of e)n.target instanceof HTMLElement&&Ke.get(n.target)?.fitToViewport({width:n.contentRect.width,height:n.contentRect.height})}),G):null},mr=t=>{if(Y.has(t))return;const e=Y.size===0;Y.add(t),Ke.set(t.viewport,t),ur()?.observe(t.viewport),e&&window.addEventListener("resize",Wt)},pr=t=>{Y.delete(t)&&(G?.unobserve(t.viewport),Ke.delete(t.viewport),!(Y.size>0)&&(G?.disconnect(),G=null,window.removeEventListener("resize",Wt),re!==null&&(window.cancelAnimationFrame(re),re=null)))},fr=t=>{const e=cr(t),n=t.querySelector('[data-markdown="mermaid"] svg');if(!e||!n)return null;const r=rr({viewBox:n.getAttribute("viewBox"),width:n.getAttribute("width"),height:n.getAttribute("height")});if(!r)return null;let o=r,i=null,s=null,a=null,d=null;const c=new Map;let u=null;const f=l=>{o=l,n.setAttribute("viewBox",nr(l)),n.removeAttribute("width"),n.removeAttribute("height")},p=l=>{f(Pt(r,l))},h=()=>{p(te(e))},w=(l,b)=>{f(lr({currentBox:o,contentBox:r,viewport:te(e),pointer:l,zoomFactor:b,minScale:Jn,maxScale:er}))},k=()=>{const l=te(e);w({x:l.width/2,y:l.height/2},et)},A=()=>{const l=te(e);w({x:l.width/2,y:l.height/2},1/et)},g=l=>{!l.ctrlKey&&!l.metaKey||(l.preventDefault(),l.stopPropagation(),w(nt(l,e),Math.pow(Qn,-l.deltaY)))},S=l=>{if(!(l.button!==0||dr(l.target))){if(l.isPrimary&&(c.clear(),u=null),c.set(l.pointerId,{x:l.clientX,y:l.clientY}),c.size>1){i=null,u=De(Array.from(c.values()))?.distance??null,e.setPointerCapture?.(l.pointerId),t.setAttribute("data-mermaid-suppress-click","true"),l.preventDefault();return}i=l.pointerId,s={x:l.clientX,y:l.clientY},a=s,d!==null&&(window.clearTimeout(d),d=null),t.removeAttribute("data-mermaid-suppress-click"),e.setPointerCapture?.(l.pointerId),t.setAttribute("data-mermaid-panning","true"),l.preventDefault()}},L=l=>{const b={x:l.clientX,y:l.clientY};if(u!==null&&c.has(l.pointerId)){c.set(l.pointerId,b);const E=De(Array.from(c.values()));if(E){const y=nt({clientX:E.center.x,clientY:E.center.y},e);w(y,E.distance/u),u=E.distance}l.preventDefault();return}i!==l.pointerId||!a||(f(ar({currentBox:o,viewport:te(e),delta:{x:b.x-a.x,y:b.y-a.y}})),a=b,s&&ir(s,b)&&t.setAttribute("data-mermaid-suppress-click","true"),l.preventDefault())},N=l=>{if(c.delete(l.pointerId)){if(e.releasePointerCapture?.(l.pointerId),c.size>0){i=null,u=c.size>1?De(Array.from(c.values()))?.distance??null:null;return}u=null,i=null,s=null,a=null,t.removeAttribute("data-mermaid-panning"),t.hasAttribute("data-mermaid-suppress-click")&&(d=window.setTimeout(()=>{t.removeAttribute("data-mermaid-suppress-click"),d=null},tr))}};e.addEventListener("wheel",g,{passive:!1}),e.addEventListener("pointerdown",S),e.addEventListener("pointermove",L),e.addEventListener("pointerup",N),e.addEventListener("pointercancel",N);const m={viewport:e,zoomIn:k,zoomOut:A,fit:h,fitToViewport:p,cleanup:()=>{pr(m),e.removeEventListener("wheel",g),e.removeEventListener("pointerdown",S),e.removeEventListener("pointermove",L),e.removeEventListener("pointerup",N),e.removeEventListener("pointercancel",N),d!==null&&window.clearTimeout(d),c.clear(),t.removeAttribute("data-mermaid-panning"),t.removeAttribute("data-mermaid-suppress-click"),Me.delete(t)}};return m},Dt=t=>{for(const[e,n]of t.controllers){const r=It(e);(!t.container.contains(e)||r!==t.signatures.get(e))&&(n.cleanup(),t.controllers.delete(e),t.signatures.delete(e))}},hr=t=>{if(t.disposed)return[];const e=[];for(const n of Array.from(t.container.querySelectorAll(me))){if(t.controllers.has(n)||n.querySelector('[data-markdown="mermaid"] svg')===null)continue;const r=fr(n);r&&(t.controllers.set(n,r),t.signatures.set(n,It(n)),Me.set(n,r),e.push(r))}return e},Ot=()=>{const t=Array.from(pe);pe.clear();const e=[];for(const n of t)n.disposed||(Dt(n),e.push(...hr(n)));Ft(e);for(const n of e)mr(n)},br=()=>{ae===null&&(ae=window.requestAnimationFrame(()=>{ae=null,ae=window.requestAnimationFrame(()=>{ae=null,Ot()})}))},gr=t=>{t.disposed||(Dt(t),pe.add(t),br())},wr=t=>{if(!(t instanceof HTMLElement))return null;const e=Me.get(t);if(e)return e;for(const n of pe)if(n.container.contains(t))return Ot(),Me.get(t)??null;return null},yr=t=>{const e={container:t,controllers:new Map,signatures:new Map,disposed:!1},n=()=>gr(e),r=()=>{e.disposed=!0,pe.delete(e);for(const o of e.controllers.values())o.cleanup();e.controllers.clear(),e.signatures.clear()};return n(),{refresh:n,cleanup:r}},Ar={copy:"file-copy",check:"check",download:"download",zoomIn:"add",zoomOut:"subtract",fit:"refresh",textWrap:"text-wrap",image:"file-image",disclosure:"arrow-right-s"},qt="p-1 rounded hover:bg-interactive-hover/60 text-muted-foreground hover:text-foreground transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--interactive-focus-ring)]",oe=(t,e)=>{const n=Ar[e],r=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("class","remixicon size-3.5"),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("aria-hidden","true");const o=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","use");o.setAttribute("href",`#oc-${n}`),r.appendChild(o),t.replaceChildren(r)},kr=t=>{for(const e of Array.from(t.querySelectorAll('[data-openchamber-markdown-image-label="true"]'))){if(e.querySelector("[data-openchamber-markdown-image-label-icon]"))continue;const n=document.createElement("span");n.className="inline-flex shrink-0",n.setAttribute("aria-hidden","true"),n.setAttribute("data-openchamber-markdown-image-label-icon","true"),oe(n,"image"),e.prepend(n)}},rt=(t,e)=>{if(t.querySelector("svg"))return;const n=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","block size-[1.1em] shrink-0"),n.setAttribute("aria-hidden","true"),n.setAttribute("focusable","false");const r=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","use");r.setAttribute("href",e),n.appendChild(r),t.prepend(n)},Cr=t=>{for(const e of Array.from(t.querySelectorAll("[data-attachment-citation]"))){const n=e.getAttribute("data-attachment-citation")??"";n&&rt(e,`#${n}`)}for(const e of Array.from(t.querySelectorAll("a[data-skill-name]")))rt(e,gn)},vr=t=>{for(const e of t.querySelectorAll("details[data-md-details] > summary")){if(e.querySelector("[data-md-disclosure-icon]"))continue;const n=document.createElement("span");n.append(...Array.from(e.childNodes));const r=document.createElement("span");r.setAttribute("data-md-disclosure-icon",""),r.setAttribute("aria-hidden","true"),oe(r,"disclosure"),e.append(r,n)}},j=(t,e,n)=>{const r=document.createElement("button");return r.type="button",r.className=qt,r.setAttribute("data-md-action",n),r.setAttribute("title",e),r.setAttribute("aria-label",e),oe(r,t),r},Bt=(t,e,n,r)=>{const o=e?r:n;t.setAttribute("title",o),t.setAttribute("aria-label",o),t.classList.toggle("text-foreground",e),t.classList.toggle("opacity-100",e),t.classList.toggle("text-muted-foreground",!e),t.classList.toggle("opacity-65",!e),t.setAttribute("aria-pressed",e?"true":"false")},zt=(t,e,n)=>{const r=t.querySelector("[data-md-code-body]"),o=t.querySelector("pre"),i=t.querySelector("pre code"),s=t.querySelectorAll("[data-md-code-line-content]"),a=t.querySelector('[data-md-action="toggle-code-wrap"]');t.setAttribute("data-code-wrap",e?"true":"false"),r?.classList.toggle("overflow-x-auto",!e),r?.classList.toggle("overflow-x-hidden",e),o?.classList.toggle("whitespace-pre-wrap",e),o?.classList.toggle("break-words",e),i?.classList.toggle("whitespace-pre-wrap",e),i?.classList.toggle("break-words",e),o&&(o.style.whiteSpace=e?"pre-wrap":"pre",o.style.overflowWrap=e?"anywhere":"normal"),i&&(i.style.whiteSpace=e?"pre-wrap":"pre",i.style.overflowWrap=e?"anywhere":"normal");for(const d of Array.from(s))d.style.whiteSpace=e?"pre-wrap":"pre",d.style.overflowWrap=e?"anywhere":"normal";a&&Bt(a,e,n.enableCodeWrap,n.disableCodeWrap)},Ht=t=>{const e=t.querySelector(":scope > code");if(!e||e.hasAttribute("data-md-code-lines"))return;t.removeAttribute("data-md-gutter-reserved");const n=e.textContent??"",r=n.endsWith(`
|
|
2
|
+
`),o=r?n.slice(0,-1).split(`
|
|
3
|
+
`):n.split(`
|
|
4
|
+
`),i=o.length>0?o:[""],s=Array.from(e.children).filter(c=>c.classList.contains("line"));r&&s.length===i.length+1&&s.at(-1)?.textContent===""&&s.pop();const a=s.length===i.length,d=document.createDocumentFragment();i.forEach((c,u)=>{const f=document.createElement("span");f.setAttribute("data-md-code-line","");const p=document.createElement("span");p.setAttribute("data-md-code-line-number",String(u+1)),p.setAttribute("aria-hidden","true");const h=document.createElement("span");if(h.setAttribute("data-md-code-line-content",""),a){const w=s[u];w&&h.append(...Array.from(w.childNodes))}else h.textContent=c;if(f.append(p,h),d.appendChild(f),u<i.length-1||r){const w=document.createElement("span");w.setAttribute("data-md-code-line-break",""),w.textContent=`
|
|
5
|
+
`,d.appendChild(w)}}),e.replaceChildren(d),e.setAttribute("data-md-code-lines",""),e.toggleAttribute("data-md-code-trailing-newline",r)},ot=(t,e,n)=>{const r=t.querySelectorAll('[data-component="markdown-code"]');for(const o of Array.from(r)){const i=o.querySelector("pre");i&&Ht(i),zt(o,e,n)}},st=(t,e,n,r)=>{oe(t,"check"),t.setAttribute("title",e),t.setAttribute("aria-label",e),window.setTimeout(()=>{oe(t,n),t.setAttribute("title",r),t.setAttribute("aria-label",r)},2e3)},Er=t=>{const e=t.querySelectorAll(":not(pre) > code");for(const n of Array.from(e))n.getAttribute("data-markdown")!=="inline-code"&&n.setAttribute("data-markdown","inline-code"),n.getAttribute("dir")!=="ltr"&&n.setAttribute("dir","ltr"),n.closest("table")&&n.classList.add("whitespace-nowrap")},Sr=(t,e)=>{const n=t.querySelectorAll("pre");for(const r of Array.from(n)){if(r.querySelector("code.language-mermaid"))continue;const o=r.parentElement;if(!o||o.closest('[data-component="markdown-code"]'))continue;const i=r.querySelector("code")?.className.match(/language-([\w+#.-]+)/)?.[1],s=r.getAttribute("data-md-lang")??i??"text",a=document.createElement("div");a.setAttribute("data-component","markdown-code"),a.setAttribute("dir","ltr"),a.className="my-4 group overflow-hidden rounded-2xl border border-border/80 bg-[var(--surface-elevated)]";const d=document.createElement("div");d.className="flex items-center justify-between border-b border-border/70 px-3 py-1.5";const c=document.createElement("span");c.className="font-mono text-[13px] text-muted-foreground",c.textContent=s;const u=j("copy",e.labels.copy,"copy-code"),f=j("textWrap",e.codeBlockLineWrap?e.labels.disableCodeWrap:e.labels.enableCodeWrap,"toggle-code-wrap");d.appendChild(c);const p=document.createElement("div");p.className="flex items-center gap-1",p.setAttribute("data-md-code-actions",""),p.appendChild(f),p.appendChild(u),d.appendChild(p);const h=document.createElement("div");h.setAttribute("data-md-code-body",""),h.className="px-3 py-2.5 overflow-x-auto",o.replaceChild(a,r),r.style.margin="0",r.style.background="transparent",r.classList.add("min-w-0","w-full","flex-1"),e.deferCodeLineNumberSync?r.setAttribute("data-md-gutter-reserved",""):Ht(r),h.appendChild(r),a.appendChild(d),a.appendChild(h),zt(a,e.codeBlockLineWrap,e.labels)}},at=t=>t.replace(/\\/g,"\\\\").replace(/\|/g,"\\|"),Lr=(t,e)=>{const n=r=>{if(!(r instanceof Element)){const o=r.textContent??"";return e?at(o):o}if(r.tagName==="A"){const o=r.getAttribute("href");if(o){const i=o.replace(/ /g,"%20");if(!e)return i;const s=at(r.textContent??"").replace(/\[/g,"\\[").replace(/\]/g,"\\]"),a=i.replace(/\|/g,"%7C"),d=/[()]/.test(a)?`<${a.replace(/</g,"%3C").replace(/>/g,"%3E")}>`:a;return`[${s}](${d})`}}return Array.from(r.childNodes).map(n).join("")};return Array.from(t.childNodes).map(n).join("")},it=(t,e)=>{const n=e==="markdown",r=d=>Lr(d,n).trim(),o=[],i=[],s=t.querySelectorAll("thead th");for(const d of Array.from(s))o.push(r(d));const a=t.querySelectorAll("tbody tr");for(const d of Array.from(a)){const c=Array.from(d.querySelectorAll("td")).map(r);c.length>0&&i.push(c)}return{headers:o,rows:i}},Mr=t=>/[",\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t,lt=({headers:t,rows:e})=>[t,...e].map(n=>n.map(Mr).join(",")).join(`
|
|
6
|
+
`),Tr=({headers:t,rows:e})=>[t,...e].map(n=>n.join(" ")).join(`
|
|
7
|
+
`),ct=({headers:t,rows:e})=>{const n=`| ${t.join(" | ")} |`,r=`| ${t.map(()=>"---").join(" | ")} |`,o=e.map(i=>`| ${i.join(" | ")} |`).join(`
|
|
8
|
+
`);return`${n}
|
|
9
|
+
${r}
|
|
10
|
+
${o}`},dt=(t,e)=>{const n=document.createElement("div");n.className=`absolute top-full right-0 mt-1 hidden ${hn}`,n.style.backgroundColor="var(--surface-elevated)",n.style.color="var(--surface-elevated-foreground)",n.setAttribute("data-md-menu",t);for(const r of e){const o=document.createElement("button");o.type="button",o.className=`w-full text-left ${bn}`,o.setAttribute("data-md-action",`${t}-${r.key}`),o.textContent=r.label,n.appendChild(o)}return n},He=120,Rr=320,$e="data-md-table-layout",ut="data-md-table-wrap",mt="data-md-table-width",$t=(t,e,n)=>{const r=t.querySelector('[data-md-action="toggle-table-wrap"]');r&&Bt(r,e,n.enableTableWrap,n.disableTableWrap),t.querySelector("table")?.classList.toggle("w-max",!e)},Nr=(t,e,n)=>{for(const r of Array.from(t.querySelectorAll('[data-markdown="table-wrapper"]')))$t(r,e,n)},_r=(t,e)=>{const{labels:n}=e,r=t.querySelectorAll("table");for(const o of Array.from(r)){if(o.closest('[data-markdown="table-wrapper"]'))continue;const s=document.createElement("div");s.className="group my-4 flex w-fit max-w-full flex-col space-y-2",s.setAttribute("data-markdown","table-wrapper");const a=document.createElement("div");a.className="flex items-center justify-end gap-1",a.appendChild(j("textWrap",n.enableTableWrap,"toggle-table-wrap"));const d=document.createElement("div");d.className="relative",d.appendChild(j("copy",n.copyTable,"table-copy-toggle")),d.appendChild(dt("table-copy",[{key:"csv",label:"CSV"},{key:"tsv",label:"TSV"},{key:"markdown",label:"Markdown"}]));const c=document.createElement("div");c.className="relative",c.appendChild(j("download",n.downloadTable,"table-download-toggle")),c.appendChild(dt("table-download",[{key:"csv",label:"CSV"},{key:"markdown",label:"Markdown"}])),a.appendChild(d),a.appendChild(c);const u=document.createElement("div");u.className="overflow-x-auto rounded-lg border border-border/80 bg-[var(--surface-elevated)]";const f=o.parentElement;if(!f)continue;f.replaceChild(s,o),o.setAttribute("data-markdown","table"),o.setAttribute($e,"pending"),o.classList.add("border-collapse","text-sm");for(const h of Array.from(o.querySelectorAll("tr")))h.classList.add("border-b","border-border/60");const p=o.querySelector("tbody tr:last-child");p?.classList.remove("border-b"),p?.classList.add("border-0");for(const h of Array.from(o.querySelectorAll("th")))h.classList.add("min-w-[120px]","whitespace-normal","[overflow-wrap:anywhere]","border-r","border-border/60","px-4","py-2.5","text-left","align-middle","font-semibold","text-foreground","last:border-r-0");for(const h of Array.from(o.querySelectorAll("td")))h.classList.add("min-w-[120px]","whitespace-normal","[overflow-wrap:anywhere]","border-r","border-border/60","px-4","py-2.5","align-middle","text-foreground/90","last:border-r-0");u.appendChild(o),s.appendChild(a),s.appendChild(u),$t(s,e.tableCellWrap,n)}},xr=(t,e)=>{const n=[...t];let r=t.map((i,s)=>s),o=e;for(;r.length>0;){const i=o/r.length,s=r.filter(a=>t[a]<=i);if(s.length===0){for(const a of r)n[a]=Math.max(He,Math.floor(i));break}for(const a of s)o-=t[a];r=r.filter(a=>t[a]>i)}return n},Pr=t=>{const e=t.map(r=>r.closest('[data-markdown="table-wrapper"]'));for(const r of e)r?.style.setProperty("width","100%");const n=t.map(r=>r.parentElement?.clientWidth??0);for(const r of e)r?.style.removeProperty("width");return n},Ir=(t,e)=>{const n=String(e),r=Array.from(t.querySelectorAll('table[data-markdown="table"]'));if(r.length===0||!t.isConnected)return;const o=Pr(r),i=r.map((u,f)=>({table:u,availableWidth:o[f]??0})).filter(({table:u,availableWidth:f})=>u.getAttribute($e)!=="fixed"||u.getAttribute(ut)!==n||u.getAttribute(mt)!==String(f));if(i.length===0)return;const s=i.map(({table:u})=>u),a=t.ownerDocument.createElement("div");a.setAttribute("aria-hidden","true"),a.setAttribute("data-md-table-measure",""),a.style.position="fixed",a.style.left="-100000px",a.style.top="0",a.style.visibility="hidden",a.style.pointerEvents="none",a.style.width="max-content";const d=s.map(u=>{const f=A=>Array.from(A.children).filter(g=>g.tagName==="TH"||g.tagName==="TD"),p=Array.from(u.querySelectorAll("tbody tr")),h=p.some(A=>f(A).length>0)?p:Array.from(u.querySelectorAll("thead tr")),w=Math.max(0,...Array.from(u.querySelectorAll("tr")).map(A=>f(A).length)),k=[];for(let A=0;A<w;A+=1){const g=t.ownerDocument.createElement("table");g.className=u.className,g.style.tableLayout="auto",g.style.width="max-content";const S=t.ownerDocument.createElement("tbody");for(const L of h){const N=f(L)[A];if(!N)continue;const m=t.ownerDocument.createElement("tr"),l=N.cloneNode(!0);l instanceof HTMLElement&&(l.style.width="auto",l.style.minWidth="0",l.style.maxWidth="none",l.style.whiteSpace="nowrap",l.style.overflowWrap="normal",m.appendChild(l),S.appendChild(m))}g.appendChild(S),a.appendChild(g),k.push(g)}return{table:u,columnProbes:k}});t.appendChild(a);const c=d.map(({table:u,columnProbes:f},p)=>{const h=i[p]?.availableWidth??0,w=Math.max(He,h||Rr),k=f.map(S=>Math.ceil(S.getBoundingClientRect().width)),A=k.map(S=>Math.min(w,Math.max(He,S))),g=e&&h>0?xr(A,h):A;return{table:u,availableWidth:h,widths:g,cappedColumns:k.map((S,L)=>S>(g[L]??0))}});a.remove();for(const{table:u,availableWidth:f,widths:p,cappedColumns:h}of c){for(const g of Array.from(u.querySelectorAll("tr")))Array.from(g.children).filter(L=>L.tagName==="TH"||L.tagName==="TD").forEach((L,N)=>{const m=!h[N];for(const l of Array.from(L.querySelectorAll('code[data-markdown="inline-code"]')))l.classList.toggle("whitespace-nowrap",m)});Array.from(u.children).find(g=>g.matches("colgroup[data-md-table-columns]"))?.remove();const k=t.ownerDocument.createElement("colgroup");k.setAttribute("data-md-table-columns","");for(const g of p){const S=t.ownerDocument.createElement("col");S.style.width=`${g}px`,k.appendChild(S)}const A=Array.from(u.children).find(g=>g.tagName==="THEAD"||g.tagName==="TBODY"||g.tagName==="TFOOT")??null;u.insertBefore(k,A),u.style.tableLayout="fixed",u.style.width=`${p.reduce((g,S)=>g+S,0)}px`,u.setAttribute($e,"fixed"),u.setAttribute(ut,n),u.setAttribute(mt,String(f))}},Fr=(t,e)=>{const n=t.querySelectorAll("pre > code.language-mermaid");for(const r of Array.from(n)){const o=r.parentElement;if(!o)continue;const i=(r.textContent??"").replace(/\s+$/,""),s=e.renderMermaid(i),a=document.createElement("div");a.setAttribute("data-markdown","mermaid-block"),a.setAttribute("data-md-source",i),a.className="relative";const d=document.createElement("div");d.setAttribute("data-markdown","mermaid-scroll");const c=document.createElement("div");if(c.setAttribute("data-markdown","mermaid-toolbar"),c.setAttribute(Ct,"true"),c.className="absolute top-1 right-2 flex items-center gap-1",s.svg){a.setAttribute("data-mermaid-render","svg");const f=document.createElement("div");f.setAttribute("data-markdown","mermaid-viewport");const p=document.createElement("div");if(p.setAttribute("data-markdown","mermaid"),p.setAttribute("data-md-original-svg",s.svg),p.innerHTML=s.svg,f.appendChild(p),d.appendChild(f),e.mermaidControls.showPanZoomControls&&(c.appendChild(j("zoomIn",e.labels.zoomInDiagram,"mermaid-zoom-in")),c.appendChild(j("zoomOut",e.labels.zoomOutDiagram,"mermaid-zoom-out")),c.appendChild(j("fit",e.labels.resetDiagramView,"mermaid-fit"))),e.mermaidControls.copy){const h=j("copy",e.labels.copyDiagram,"mermaid-copy");h.setAttribute("data-md-source",i),c.appendChild(h)}if(e.mermaidControls.download){const h=j("download",e.labels.downloadDiagram,"mermaid-download");h.setAttribute("data-md-svg","1"),c.appendChild(h)}}else{a.setAttribute("data-mermaid-render","ascii");const f=document.createElement("pre");if(f.setAttribute("data-markdown","mermaid-ascii"),f.textContent=s.ascii||i,d.appendChild(f),e.mermaidControls.copy){const p=j("copy",e.labels.copyDiagram,"mermaid-copy");p.setAttribute("data-md-source",s.ascii||i),c.appendChild(p)}}a.appendChild(d),a.appendChild(c);const u=o.parentElement;u&&u.replaceChild(a,o)}},Wr=(t,e)=>{const n=t.querySelectorAll("a[href]");for(const r of Array.from(n)){if(r.getAttribute("data-md-link-decorated")==="true"||r.getAttribute("data-openchamber-file-link")==="true")continue;const o=r.getAttribute("href")??"";if(!je(o))continue;r.setAttribute("data-md-link-decorated","true"),r.textContent===o&&r.setAttribute("dir","ltr");const i=pn(o);if(i){const s=document.createElement("span");s.setAttribute(Ct,"true"),s.className="mr-1 inline-flex size-[18px] items-center justify-center rounded border border-[var(--border)] bg-[var(--interactive-hover)] align-middle";const a=document.createElement("img");a.src=i,a.alt="",a.setAttribute("aria-hidden","true"),a.loading="lazy",a.decoding="async",a.className="size-3.5 rounded-sm",a.addEventListener("error",()=>s.remove(),{once:!0}),s.appendChild(a),r.parentNode?.insertBefore(s,r)}if(e.onPreviewLoopback&&fn(o)){const s=document.createElement("button");s.type="button",s.className=`ml-1 align-middle ${qt}`,s.setAttribute("data-md-action","preview-loopback"),s.setAttribute("data-md-url",o),s.setAttribute("title",e.labels.previewTitle),s.setAttribute("aria-label",e.labels.previewLabel),oe(s,"download"),r.parentNode?.insertBefore(s,r.nextSibling)}}},ye=(t,e)=>{for(const n of t.querySelectorAll("li, blockquote"))n.getAttribute("dir")!=="auto"&&n.setAttribute("dir","auto");vr(t),kr(t),Cr(t),Er(t),Fr(t,e),Sr(t,e),_r(t,e),Wr(t,e)},pt=(t,e,n)=>{const r=new Blob([e],{type:n}),o=URL.createObjectURL(r),i=document.createElement("a");i.href=o,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o)},ie=t=>{for(const e of Array.from(t.querySelectorAll("[data-md-menu]")))e.classList.add("hidden")},ft=t=>(t.nodeType===1?t:t.parentElement)?.closest("pre code[data-md-code-lines]")??null,Dr=t=>{const e=ft(t.startContainer);return!e||e!==ft(t.endContainer)?null:t.toString()},Ae=new WeakMap,Or=(t,e)=>{let n=Ae.get(t);if(!n){const r=()=>{const s=t.getSelection();if(!s||s.rangeCount!==1||s.isCollapsed)return null;const a=s.getRangeAt(0),d=Dr(a);if(d!==null)return{text:d,html:null};const c=qn(a,n?.getCopyFormat?.()??"markdown");if(c===null)return null;const u=t.createElement("div");return u.appendChild(a.cloneContents()),{text:c,html:u.innerHTML}},o=s=>{if(!s.clipboardData)return;const a=r();a!==null&&(s.preventDefault(),s.stopPropagation(),s.clipboardData.setData("text/plain",a.text),a.html&&s.clipboardData.setData("text/html",a.html))},i=s=>{const a=r();a!==null&&(s.preventDefault(),Ee(a.text))};n={registrations:0,handler:o,menuHandler:i},Ae.set(t,n),t.addEventListener("copy",o,!0),t.defaultView?.addEventListener("openchamber:copy",i)}return n.registrations+=1,e&&(n.getCopyFormat=e),()=>{const r=Ae.get(t);r&&(r.registrations-=1,!(r.registrations>0)&&(t.removeEventListener("copy",r.handler,!0),t.defaultView?.removeEventListener("openchamber:copy",r.menuHandler),Ae.delete(t)))}},qr=(t,e)=>{const n=Or(t.ownerDocument,e.getCopyFormat),r=o=>{const i=o.target;if(!(i instanceof Element))return;const s=i.closest("[data-md-action]");if(!s){ie(t);return}const a=s.getAttribute("data-md-action")??"";if(a==="copy-code"){const d=s.closest('[data-component="markdown-code"]')?.querySelector("code"),c=d?Rt(d):"";c&&(s.setAttribute("data-md-copy-pending",""),Ee(c).then(()=>st(s,e.labels.copied,"copy",e.labels.copy)).finally(()=>s.removeAttribute("data-md-copy-pending")));return}if(a==="toggle-code-wrap"){o.preventDefault(),e.onToggleCodeBlockLineWrap?.();return}if(a==="toggle-table-wrap"){o.preventDefault(),ie(t),e.onToggleTableCellWrap?.();return}if(a==="table-copy-toggle"||a==="table-download-toggle"){o.preventDefault();const d=s.parentElement?.querySelector("[data-md-menu]")??null,c=d?.classList.contains("hidden")??!1;ie(t),d&&c&&d.classList.remove("hidden");return}if(a.startsWith("table-copy-")){const d=a.replace("table-copy-",""),c=s.closest('[data-markdown="table-wrapper"]')?.querySelector("table");if(c instanceof HTMLTableElement){const u=it(c,d),f=d==="csv"?lt(u):d==="tsv"?Tr(u):ct(u);Ee(f)}ie(t);return}if(a.startsWith("table-download-")){const d=a.replace("table-download-",""),c=s.closest('[data-markdown="table-wrapper"]')?.querySelector("table");if(c instanceof HTMLTableElement){const u=it(c,d),f=d==="csv"?lt(u):ct(u);pt(d==="csv"?"table.csv":"table.md",f,d==="csv"?"text/csv":"text/markdown")}ie(t);return}if(a==="mermaid-copy"){const d=s.getAttribute("data-md-source")??"";d&&Ee(d).then(()=>st(s,e.labels.copied,"copy",e.labels.copyDiagram));return}if(a==="mermaid-zoom-in"||a==="mermaid-zoom-out"||a==="mermaid-fit"){o.preventDefault();const d=s.closest('[data-markdown="mermaid-block"]'),c=wr(d);a==="mermaid-zoom-in"?c?.zoomIn():a==="mermaid-zoom-out"?c?.zoomOut():c?.fit();return}if(a==="mermaid-download"){const d=s.closest('[data-markdown="mermaid-block"]')?.querySelector('[data-markdown="mermaid"]'),c=d?.getAttribute("data-md-original-svg")??d?.innerHTML??"";c&&pt("diagram.svg",c,"image/svg+xml;charset=utf-8");return}if(a==="preview-loopback"){o.preventDefault();const d=s.getAttribute("data-md-url")??"";d&&e.onPreviewLoopback?.(d);return}};return t.addEventListener("click",r),()=>{n(),t.removeEventListener("click",r)}},Le=new Map;let ce=null;const Br=()=>{if(ce)return ce;const t=globalThis.ResizeObserver;return t?(ce=new t(e=>{for(const n of e){const r=Le.get(n.target);if(!r)continue;const{width:o}=n.contentRect;if(o===r.width)continue;const i=r.width===null;r.width=o,i||r.onWidthChange()}}),ce):null},zr=(t,e)=>{const n=Br();return n?(Le.set(t,{width:null,onWidthChange:e}),n.observe(t),()=>{Le.delete(t)&&(n.unobserve(t),!(Le.size>0)&&(n.disconnect(),ce=null))}):()=>{}},ht=(t,e,n)=>{let r=0;for(const i of t){const s=r+i.data.length;if(e<s||e===s&&n==="left")return{node:i,offset:Math.max(0,e-r)};r=s}const o=t.at(-1);return o?{node:o,offset:o.data.length}:null},Hr=new Set(["dockerfile","makefile","readme","license",".env",".gitignore",".npmrc"]),bt=Array.from(Hr).map(t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),jt=t=>wn(t),$r=t=>yn(t),Vt=t=>{let e;try{e=new URL(t.trim())}catch{return null}if(e.protocol!=="file:"||e.hostname&&e.hostname!=="localhost")return null;try{const n=decodeURIComponent(e.pathname);return/^\/[A-Za-z]:\//.test(n)?n.slice(1):n.startsWith("/")?n:null}catch{return null}},Te=t=>{let e=(t||"").trim();return e?((e.startsWith("`")&&e.endsWith("`")||e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1).trim()),e=e.replace(/[.,;!?]+$/g,""),e.endsWith(")")&&!e.includes("(")&&(e=e.slice(0,-1)),e.endsWith("]")&&!e.includes("[")&&(e=e.slice(0,-1)),e):""},ke=t=>{let e=Te(t);if(!e)return"";const n=e.indexOf(";");n>=0&&(e=e.slice(0,n)),e=e.replace(/#.*$/,"");const r=e.match(/^(.*\.[A-Za-z0-9_-]{1,16}):.*$/);r&&(e=r[1]??e);const o=bt.length>0?e.match(new RegExp(`^(.*(?:/|^)(${bt})):.*$`,"i")):null;return o&&(e=o[1]??e),Te(e)},Kt=t=>{const e=Te(t);if(!e)return null;const n=e.indexOf(";"),r=n>=0?Te(e.slice(0,n)):e;if(!r)return null;const o=r.match(/^(.*?):(\d+)-(\d+)$/);if(o){const d=ke(o[1]??""),c=Number.parseInt(o[2]??"",10),u=Number.parseInt(o[3]??"",10);return!d||!Number.isFinite(c)||!Number.isFinite(u)||u<c?null:{path:d,line:c,endLine:u}}const i=r.match(/^(.*)#L(\d+)(?:C(\d+))?$/i);if(i){const d=ke(i[1]??""),c=Number.parseInt(i[2]??"",10),u=i[3]?Number.parseInt(i[3],10):void 0;return!d||!Number.isFinite(c)?null:{path:d,line:c,column:Number.isFinite(u??Number.NaN)?u:void 0}}const s=r.match(/^(.*?):(\d+)(?::(\d+))?$/);if(s){const d=ke(s[1]??""),c=Number.parseInt(s[2]??"",10),u=s[3]?Number.parseInt(s[3],10):void 0;return!d||!Number.isFinite(c)?null:{path:d,line:c,column:Number.isFinite(u??Number.NaN)?u:void 0}}const a=ke(r);return a?{path:a}:null},Oe=/(?:[A-Za-z]:[\\/])?[\w.\-/@+]*[\w\-/@+]\.[A-Za-z0-9]{1,8}(?::\d+(?:-\d+)?(?::\d+)?)?/g,jr=4,Vr=1e3,Kr=200,U=new Map;let Ce=0;const gt=[],Ur=()=>Re()?Kr:Vr,Ut=(t,e)=>`${t}\0${e}`,Xr=(t,e)=>{const n=jt(t);if(!n)return Promise.resolve(!1);const r=Ut(e,n),o=U.get(r);if(o)return U.delete(r),U.set(r,o),o;const i=new Promise(a=>{const d=()=>{Ce+=1,Tt(`/api/fs/stat?path=${encodeURIComponent(n)}&optional=true`,{method:"GET",cache:"no-store",headers:e?{"x-opencode-directory":e}:void 0}).then(async c=>{if(!c.ok){a(!1);return}const u=await c.json().catch(()=>null);a(u?.exists!==!1)}).catch(()=>a(!1)).finally(()=>{Ce=Math.max(0,Ce-1),gt.shift()?.()})};if(Ce<jr){d();return}gt.push(d)}),s=Ur();for(;U.size>=s;){const a=U.keys().next().value;if(typeof a!="string")break;U.delete(a)}return U.set(r,i),i},Zr=Bn({paths:zn(Hn())}),le=new Map,Gr=200,Yr=(t,e)=>{if(!t||!e||Re())return Promise.resolve(null);const n=Ut(e,t),r=le.get(n);if(r)return r;const o=Tt(`/api/fs/find-by-name?name=${encodeURIComponent(t)}`,{method:"GET",cache:"no-store",headers:{"x-opencode-directory":e}}).then(async i=>{if(!i.ok)return null;const s=Zr.safeParse(await i.json().catch(()=>null)),a=s.success?s.data.paths:[];return a.length===1?a[0]:null}).catch(()=>null);for(;le.size>=Gr;){const i=le.keys().next();if(i.done)break;le.delete(i.value)}return le.set(n,o),o},Qr={maxSessions:8,maxEntriesPerSession:4};class Jr{maxSessions;maxEntriesPerSession;sessions=new Map;constructor(e=Qr){this.maxSessions=Math.max(1,e.maxSessions),this.maxEntriesPerSession=Math.max(1,e.maxEntriesPerSession)}store(e){const n=e.scope,r=e.id;let o=this.sessions.get(n);for(o===void 0?(o=new Map,this.sessions.set(n,o)):this.refreshSession(n,o),o.delete(r),o.set(r,e);o.size>this.maxEntriesPerSession;)this.removeOldestEntry(o);for(;this.sessions.size>this.maxSessions;)this.removeOldestSession()}take(e){const n=e.scope,r=this.sessions.get(n);if(!r)return null;const o=e.id;this.refreshSession(n,r);const i=r.get(o);return i===void 0||i.locale!==e.locale||i.directory!==e.directory?null:(r.delete(o),r.size===0&&this.sessions.delete(n),i.fragment)}clear(){this.sessions.clear()}stats(){let e=0;for(const n of this.sessions.values())e+=n.size;return{sessions:this.sessions.size,entries:e}}refreshSession(e,n){this.sessions.delete(e),this.sessions.set(e,n)}removeOldestEntry(e){const n=e.keys().next().value;n!==void 0&&e.delete(n)}removeOldestSession(){const e=this.sessions.keys().next().value;e!==void 0&&this.sessions.delete(e)}}const wt=new Jr,Xt=()=>{const t=fe.c(4),e=An();let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n=Ge(!1),t[0]=n):n=t[0];const r=n;let o;t[1]===Symbol.for("react.memo_cache_sentinel")?(o=Ge(!0),t[1]=o):o=t[1];const i=o;let s;return t[2]!==e?.currentTheme?(s=e?.currentTheme??(typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?i:r),t[2]=e?.currentTheme,t[3]=s):s=t[3],s},eo=()=>{if(typeof window>"u")return[];const t=[window.location.origin];try{const e=new URL(In()||window.location.href,window.location.href).origin;t.includes(e)||t.push(e)}catch{}return t},Zt=t=>{const e=fe.c(4),{containerRef:n,enabled:r}=t;let o,i;e[0]!==n||e[1]!==r?(o=()=>{const s=n.current;if(!s)return;const a=!Re();return jn(s,{allowExternalHttp:r!==!1,openAppLink:vo,openExternalHttp:Eo,openSessionLink:a?So:void 0,ownOrigins:eo()})},i=[n,r],e[0]=n,e[1]=r,e[2]=o,e[3]=i):(o=e[2],i=e[3]),v.useEffect(o,i)},se={download:!0,copy:!0,showPanZoomControls:!0},Gt=!0,to=t=>{const e=t.match(/^(?:\uFEFF)?(---|\+\+\+)[^\S\r\n]*\r?\n[\s\S]*?\r?\n\1[^\S\r\n]*(?:\r?\n|$)/);return e?t.slice(e[0].length):t},Yt="data-openchamber-block-path-token",Qt=`[${Yt}]`,ne="data-openchamber-block-paths-scanned",no=2e5,ro=80,oo=40,yt=160,so=()=>Re()?oo:ro,ao=new Set(["dockerfile","makefile","readme","license",".env",".gitignore",".npmrc"]),Jt=t=>jt(t),io=t=>$r(t),lo=(t,e)=>En(t,e),co=t=>{const e=t.split("/").filter(Boolean).pop()??"";return!e||e.endsWith(".")?!1:/\.[A-Za-z0-9_-]{1,16}$/.test(e)},en=t=>{if(!t||t.startsWith("--")||t.includes("://")||/[<>]/.test(t)||/\s{2,}/.test(t))return!1;const e=Jt(t),n=e.split("/").filter(Boolean).pop()??e;if(!n||n==="."||n==="..")return!1;const r=n.toLowerCase();return ao.has(r)||r.startsWith(".")&&r.length>1?!0:co(e)},Ue=t=>{const e=Kt(t);return e?en(e.path):!1},uo=t=>{const e=t.querySelectorAll(Qt);for(const r of Array.from(e))r.replaceWith(t.ownerDocument.createTextNode(r.textContent??""));const n=t.querySelectorAll(`code[${ne}]`);for(const r of Array.from(n))r.removeAttribute(ne),r.normalize()},qe=t=>{if(t.tagName.toLowerCase()==="a"){const e=t.getAttribute("href")?.trim(),n=e?Vt(e):null;if(n)return n;if(e&&Ue(e))return e}return(t.textContent||"").trim()},mo=t=>{const e=t.getAttribute("href")?.trim();if(!e)return null;const n=Vt(e);return n||(Ue(e)?e:null)},po=t=>{const e=t.querySelectorAll("pre code");if(e.length===0)return;const n=t.ownerDocument;if(n)for(const r of Array.from(e)){if(r.getAttribute(ne)==="true")continue;if((r.textContent??"").length>no){r.setAttribute(ne,"true");continue}const o=n.createTreeWalker(r,NodeFilter.SHOW_TEXT),i=[];let s=o.nextNode();for(;s;){const u=s;u.parentElement?.closest("[data-md-code-line-number]")||i.push(u),s=o.nextNode()}const a=Rt(r);if(!a.includes(".")){r.setAttribute(ne,"true");continue}Oe.lastIndex=0;const d=[];let c=Oe.exec(a);for(;c;){const u=c[0];u&&Ue(u)&&d.push({start:c.index,end:c.index+u.length,raw:u}),c=Oe.exec(a)}for(const{start:u,end:f,raw:p}of d.reverse()){const h=ht(i,u,"right"),w=ht(i,f,"left");if(!h||!w)continue;const k=n.createRange();k.setStart(h.node,h.offset),k.setEnd(w.node,w.offset);const A=n.createElement("span");A.setAttribute(Yt,"true"),A.textContent=p,k.deleteContents(),k.insertNode(A)}r.setAttribute(ne,"true")}},ve=(t,e)=>{const n=Kt(t);if(!n||!en(n.path))return null;const r=io(n.path)?Jt(n.path):lo(e,n.path);return r?{...n,resolvedPath:r}:null},fo=(t,e)=>t||vn(t,e),tn=({containerRef:t,effectiveDirectory:e,editor:n,preferRuntimeEditor:r,enabled:o})=>{const i=v.useRef(null);v.useEffect(()=>{const s=t.current;if(!s||o&&!e)return;let a=!1;const d=so(),c=o&&!_n(),u=m=>{m.removeAttribute("data-openchamber-file-link"),m.removeAttribute("data-openchamber-file-ref"),m.removeAttribute("data-openchamber-file-path"),m.getAttribute("title")==="Open file"&&m.removeAttribute("title"),m.tagName.toLowerCase()!=="a"&&(m.removeAttribute("role"),m.removeAttribute("tabindex"))},f=()=>{const m=s.querySelectorAll(_t);for(const l of Array.from(m))u(l);uo(s)},p=async(m,l)=>{const b=m.getAttribute("data-openchamber-file-ref")||qe(m),E=ve(b,e);if(!E)return;const y=m.getAttribute("data-openchamber-file-path"),C=y?{...E,resolvedPath:y}:E;if(l?.external&&xn()&&await Pn(C.resolvedPath))return;const M=fo(e,C.resolvedPath);if(r&&n){n.openFile(C.resolvedPath,Number.isFinite(C.line??Number.NaN)?Math.max(1,Math.trunc(C.line)):void 0,Number.isFinite(C.column??Number.NaN)?Math.max(1,Math.trunc(C.column)):void 0);return}const _=K.getState();Number.isFinite(C.line??Number.NaN)?_.openContextFileAtLine(M,C.resolvedPath,Math.max(1,Math.trunc(C.line)),Number.isFinite(C.column??Number.NaN)?Math.max(1,Math.trunc(C.column)):1):_.openContextFile(M,C.resolvedPath)},h=()=>Un(s,{hrefCandidate:mo,isResolvable:m=>ve(m,e)!==null,openFileReference:p});if(!c)return f(),o?h():void 0;const w=(m=0)=>{if(i.current!==null&&typeof window<"u"&&window.clearTimeout(i.current),typeof window>"u"){k();return}i.current=window.setTimeout(()=>{i.current=null,window.requestAnimationFrame(()=>{a||k()})},m)},k=()=>{S+=1;try{A()}finally{queueMicrotask(()=>{S-=1})}},A=()=>{c&&po(s);const m=s.querySelectorAll(`[data-markdown="inline-code"], a, ${Qt}`);let l=0;for(const b of Array.from(m)){const E=qe(b),y=ve(E,e);if(u(b),!y||l>=d)continue;l+=1;const C=!Cn(y.resolvedPath,e),M=!y.path.includes("/")&&!y.path.includes("\\");(C?Promise.resolve(y.resolvedPath):Xr(y.resolvedPath,e).then(F=>F?y.resolvedPath:M?Yr(y.path,e):null)).then(F=>{if(a||!F||!s.contains(b))return;const O=qe(b),W=ve(O,e);!W||W.resolvedPath!==y.resolvedPath||(b.setAttribute("data-openchamber-file-link","true"),b.setAttribute("data-openchamber-file-ref",O),b.setAttribute("data-openchamber-file-path",F),b.setAttribute("title","Open file"),b.tagName.toLowerCase()!=="a"&&(b.setAttribute("role","button"),b.setAttribute("tabindex","0")))})}},g=m=>{if(m.key!=="Enter"&&m.key!==" ")return;const l=m.target;!(l instanceof HTMLElement)||l.getAttribute("data-openchamber-file-link")!=="true"||(m.preventDefault(),m.stopPropagation(),p(l))};w(yt);let S=0;const L=new MutationObserver(()=>{S>0||w(yt)});L.observe(s,{childList:!0,subtree:!0}),s.addEventListener("keydown",g);const N=h();return()=>{a=!0,i.current!==null&&typeof window<"u"&&window.clearTimeout(i.current),i.current=null,L.disconnect(),N(),s.removeEventListener("keydown",g)}},[t,n,e,r,o])},nn=t=>{const e=fe.c(7),{containerRef:n,onShowPopup:r,enableFullscreen:o,enablePanZoom:i,allowMermaidWheelEvents:s}=t;let a,d;e[0]!==s||e[1]!==n||e[2]!==o||e[3]!==i||e[4]!==r?(a=()=>{const c=n.current;if(!c)return;const u=p=>{if(!o||!r)return;const h=p.target;if(!(h instanceof Element)||h.closest('button, a, [role="button"]'))return;const w=h.closest(me);if(!w)return;if(w instanceof HTMLElement&&w.hasAttribute("data-mermaid-suppress-click")){w.removeAttribute("data-mermaid-suppress-click");return}const A=Array.from(c.querySelectorAll(me)).indexOf(w);if(A<0)return;const g=w instanceof HTMLElement?w.getAttribute("data-md-source"):null;if(!g||g.trim().length===0)return;const S=`Diagram ${A+1}`;r({open:!0,title:S,content:"",metadata:{tool:"mermaid-preview",filename:S},mermaid:{url:`data:text/plain;charset=utf-8,${encodeURIComponent(g)}`,source:g,filename:S}})},f=p=>{if(s||(p.ctrlKey||p.metaKey)&&i)return;const h=p.target;!(h instanceof Element)||!h.closest(me)||p.stopPropagation()};return c.addEventListener("click",u),c.addEventListener("wheel",f,{capture:!0,passive:!0}),()=>{c.removeEventListener("click",u),c.removeEventListener("wheel",f,!0)}},d=[s,n,o,i,r],e[0]=s,e[1]=n,e[2]=o,e[3]=i,e[4]=r,e[5]=a,e[6]=d):(a=e[5],d=e[6]),v.useEffect(a,d)},X=new Map,ho=100,Z="data-md-decoration-id",Be=t=>{const e=t.lastElementChild;for(const n of Array.from(t.children))n!==e&&n.hasAttribute("data-md-last")&&n.removeAttribute("data-md-last");e?.hasAttribute("data-md-block")&&!e.hasAttribute("data-md-last")&&e.setAttribute("data-md-last","")},bo=(t,e,n)=>{const r=t.children;if(r.length!==e.length)return!1;for(let o=0;o<e.length;o+=1){const i=r[o];if(!i||i.getAttribute("data-md-id")!==e[o]?.id||i.getAttribute(Z)!==n)return!1}return!0},At=new WeakMap;let kt=0;const go=2e5,ze=t=>{const e=At.get(t);if(e)return e;const n=`decoration-${kt}`;return kt+=1,At.set(t,n),n},wo=(t,e)=>{const n=X.get(t);if(n)return X.delete(t),X.set(t,n),n;const r=e();if(X.set(t,r),X.size>ho){const o=X.keys().next().value;o&&X.delete(o)}return r},yo=t=>({bg:t.colors.surface.elevated,fg:t.colors.surface.foreground,line:t.colors.interactive.border,accent:t.colors.primary.base,muted:t.colors.surface.mutedForeground,surface:t.colors.surface.muted,border:t.colors.interactive.border,transparent:!0,font:"system-ui, sans-serif"}),Ao=()=>K.getState().copyMessagesAsPlainText?"plain":"markdown",rn=(t,e,n,r=se)=>{const{t:o}=Lt(),i=v.useMemo(()=>({copy:o("markdownRenderer.code.actions.copyTitle"),copied:o("markdownRenderer.code.actions.copiedTitle"),enableCodeWrap:o("markdownRenderer.code.actions.enableWrapTitle"),disableCodeWrap:o("markdownRenderer.code.actions.disableWrapTitle"),enableTableWrap:o("markdownRenderer.table.actions.enableWrapTitle"),disableTableWrap:o("markdownRenderer.table.actions.disableWrapTitle"),copyTable:o("markdownRenderer.table.actions.copyTitle"),downloadTable:o("markdownRenderer.table.actions.downloadTitle"),copyDiagram:o("markdownRenderer.mermaid.actions.copySourceTitle"),downloadDiagram:o("markdownRenderer.mermaid.actions.downloadSvgTitle"),zoomInDiagram:o("markdownRenderer.mermaid.actions.zoomInTitle"),zoomOutDiagram:o("markdownRenderer.mermaid.actions.zoomOutTitle"),resetDiagramView:o("markdownRenderer.mermaid.actions.resetViewTitle"),previewLabel:o("terminalView.preview.open"),previewTitle:o("terminalView.preview.openTitle")}),[o]),s=K(p=>p.codeBlockLineWrap),a=K(p=>p.setCodeBlockLineWrap),d=v.useCallback(()=>{a(!K.getState().codeBlockLineWrap)},[a]),c=K(p=>p.tableCellWrap),u=K(p=>p.setTableCellWrap),f=v.useCallback(()=>{u(!K.getState().tableCellWrap)},[u]);return v.useMemo(()=>{const p=yo(t),h=K.getState().mermaidRenderingMode,w=t.metadata?.id??"theme";return{labels:i,mermaidControls:r,codeBlockLineWrap:s,deferCodeLineNumberSync:e,onToggleCodeBlockLineWrap:d,tableCellWrap:c,onToggleTableCellWrap:f,renderMermaid:A=>wo(`${w}:${h}:${A}`,()=>{try{return h==="ascii"?{ascii:ln(A)}:{svg:cn(A,p)}}catch{return{}}}),onPreviewLoopback:n,getCopyFormat:Ao}},[t,i,r,s,e,d,c,f,n])},on=({containerRef:t,text:e,streaming:n,imageMode:r="inline",rawHtml:o="escape",syntaxVars:i,ctx:s,domCacheKey:a,tableLayoutSettled:d})=>{v.useEffect(()=>{Gn()},[]);const c=v.useRef(null),u=v.useRef(0),f=v.useRef(null),p=v.useRef(null),h=v.useContext(kn),w=v.useRef(null),k=v.useCallback(()=>{w.current?.(),w.current=null},[]);v.useEffect(()=>k,[k]);const A=v.useRef(null),g=v.useCallback(()=>{const m=t.current;if(m){if(!c.current){if(!B(m))return;c.current=yr(m);return}c.current.refresh()}},[t]),{tableCellWrap:S}=s,L=v.useCallback(()=>{if(!d)return;const m=f.current;m!==null&&window.cancelAnimationFrame(m);const l=u.current,b=window.requestAnimationFrame(()=>{if(f.current!==b||(f.current=null,u.current!==l))return;const E=t.current,y=E?.querySelector("[data-markdown-content]")??E;y&&(Ir(y,S),!p.current&&y.querySelector('table[data-markdown="table"]')&&(p.current=zr(y,()=>N.current())))});f.current=b},[t,S,d]),N=v.useRef(L);v.useEffect(()=>{N.current=L},[L]),v.useEffect(()=>()=>{p.current?.(),p.current=null;const m=f.current;m!==null&&(window.cancelAnimationFrame(m),f.current=null)},[]),v.useLayoutEffect(()=>{u.current+=1,A.current=null},[s,r,o,n,e]),v.useLayoutEffect(()=>{if(!a)return;const m=t.current,l=m?.querySelector("[data-markdown-content]")??m;if(!l||l.childNodes.length>0)return;const b=wt.take(a);if(b){l.appendChild(b),Be(l);const E=ze(s);for(const y of Array.from(l.children))y.setAttribute(Z,E);for(const[y,C]of Object.entries(i))l.style.setProperty(y,C);ot(l,s.codeBlockLineWrap,s.labels),Nr(l,s.tableCellWrap,s.labels),A.current={key:a,copiedLabel:s.labels.copied},ue("ui.markdown_renderer.dom_cache.hit")}},[t,s,a,i,e.length]),v.useLayoutEffect(()=>{const m=t.current,l=m?.querySelector("[data-markdown-content]")??m;if(l)return()=>{const b=A.current;if(!b||l.childNodes.length===0||B(l)||Array.from(l.children).some(_=>!_.hasAttribute("data-md-id"))||l.querySelector("[data-md-copy-pending]"))return;const E=window.getSelection();if(E?.rangeCount&&!E.isCollapsed&&E.getRangeAt(0).intersectsNode(l))return;const y=l.querySelector("[data-md-menu]:not(.hidden)"),C=Array.from(l.querySelectorAll("[data-md-action]")).some(_=>_.getAttribute("title")===b.copiedLabel);if(y||C)return;const M=document.createDocumentFragment();M.append(...Array.from(l.childNodes)),wt.store({...b.key,fragment:M}),ue("ui.markdown_renderer.dom_cache.capture")}},[t]),v.useLayoutEffect(()=>{const m=t.current,l=m?.querySelector("[data-markdown-content]")??m;if(!l)return;const b=ze(s);if(e&&l.childNodes.length===0){const E=n?null:Ye(e,r,o);if(E){let y=!1;for(const C of E){const M=document.createElement("div");M.setAttribute("data-md-block",""),M.style.display="contents",M.innerHTML=C.html,ye(M,s),M.setAttribute("data-md-id",C.id),M.setAttribute(Z,b),y||=B(M),l.appendChild(M)}y&&g()}else{!n&&!w.current&&(w.current=h?.hold()??null);const y=document.createElement("div");y.setAttribute("data-md-block",""),y.style.display="contents",y.innerHTML=Fn(e,r,o),ye(y,s),y.setAttribute(Z,b),l.appendChild(y),B(y)&&g()}Be(l)}else!c.current&&B(l)&&g()},[t,e,n,r,o,s,g,h]),v.useEffect(()=>()=>{c.current?.cleanup(),c.current=null},[]),v.useEffect(()=>{const m=t.current;if(!m)return;const l=m.querySelector("[data-markdown-content]")??m;let b=!0;const E=u.current,y=ze(s);if(!n){const C=Ye(e,r,o);if(C&&bo(l,C,y)){A.current=a?{key:a,copiedLabel:s.labels.copied}:null,ue("ui.markdown_renderer.settled_paint.reused"),L(),k();return}}return Wn(e,n,r,o).then(C=>{if(!b||u.current!==E)return;const M=Array.from(l.children),_=Array.from(l.querySelectorAll("details[data-md-details]")).map(R=>({summary:R.querySelector("summary")?.textContent,open:R.open}));let F=0;C.forEach((R,I)=>{let T=M[I],q=!1;if(T||(T=document.createElement("div"),T.setAttribute("data-md-block",""),T.style.display="contents",l.appendChild(T),q=!0),T.getAttribute("data-md-id")===R.id){if(T.getAttribute(Z)!==y){const H=B(T);H&&(c.current?.cleanup(),c.current=null);const x=document.createElement("div");x.setAttribute("data-md-block",""),x.style.display="contents",x.innerHTML=R.html,ye(x,s),x.setAttribute("data-md-id",R.id),x.setAttribute(Z,y),T.replaceWith(x),(H||B(x))&&g()}!c.current&&B(T)&&g();return}const D=document.createElement("div");if(D.innerHTML=R.html,ye(D,s),q&&n&&I>0){const H=Math.min(F,4)*55;F+=1;for(const x of Array.from(D.children))x.classList.add("oc-md-block-enter"),H>0&&x instanceof HTMLElement&&x.style.setProperty("--oc-md-enter-delay",`${H}ms`)}const z=B(T),$=B(D);an(T,D,{childrenOnly:!0,onBeforeElUpdated:(H,x)=>(H.matches("details[data-md-details]")&&x.matches("details[data-md-details]")&&H.querySelector("summary")?.textContent===x.querySelector("summary")?.textContent&&x.toggleAttribute("open",H.hasAttribute("open")),!H.isEqualNode(x))}),T.setAttribute("data-md-id",R.id),T.setAttribute(Z,y),(z||$||B(T))&&g()});const O=B(l);let W=!1;for(let R=M.length-1;R>=C.length;R-=1){const I=M[R];I&&B(I)&&(W=!0),I?.remove()}Be(l),(W||M.length>C.length&&O)&&g(),_.length>0&&l.querySelectorAll("details[data-md-details]").forEach((R,I)=>{const T=_[I];T&&T.summary===R.querySelector("summary")?.textContent&&(R.open=T.open)}),A.current=a?{key:a,copiedLabel:s.labels.copied}:null,L(),k()}),()=>{b=!1}},[t,s,a,r,o,g,k,L,n,e]),v.useEffect(()=>{const m=t.current;if(m)return qr(m,s)},[t,s]),v.useEffect(()=>{const m=t.current,l=m?.querySelector("[data-markdown-content]")??m;if(l)for(const[b,E]of Object.entries(i))l.style.setProperty(b,E)},[t,i]),v.useEffect(()=>{const m=t.current,l=m?.querySelector("[data-markdown-content]")??m;l&&(s.deferCodeLineNumberSync||ot(l,s.codeBlockLineWrap,s.labels))},[t,s.codeBlockLineWrap,s.deferCodeLineNumberSync,s.labels])},sn=t=>t==="tool"?"markdown-content markdown-tool":t==="reasoning"?"markdown-content markdown-reasoning":"markdown-content leading-relaxed",ko=t=>{const e=fe.c(40),{content:n,part:r,messageId:o,isAnimated:i,skipFadeIn:s,className:a,isStreaming:d,disableStreamAnimation:c,variant:u,onShowPopup:f,enableFileReferences:p}=t,h=i===void 0?!0:i,w=s===void 0?!1:s,k=d===void 0?!1:d,A=c===void 0?!1:c,g=u===void 0?"assistant":u,S=p===void 0?!0:p;ue("ui.markdown_renderer.render"),k&&ue("ui.markdown_renderer.render.streaming"),Rn("ui.markdown_renderer.content_len",n.length);const L=Xt(),{editor:N,runtime:m}=vt(),l=v.useRef(null),b=Et()??"",E=K(Lo);let y;e[0]!==b||e[1]!==E?(y=V=>{b&&E(b,V)},e[0]=b,e[1]=E,e[2]=y):y=e[2];const C=y,M=k&&!A;let _;e[3]!==f?(_={containerRef:l,onShowPopup:f,enableFullscreen:Gt,enablePanZoom:se.showPanZoomControls},e[3]=f,e[4]=_):_=e[4],nn(_);const F=S&&!k;let O;e[5]!==N||e[6]!==b||e[7]!==m.isVSCode||e[8]!==F?(O={containerRef:l,effectiveDirectory:b,editor:N,preferRuntimeEditor:m.isVSCode,enabled:F},e[5]=N,e[6]=b,e[7]=m.isVSCode,e[8]=F,e[9]=O):O=e[9],tn(O);let W;e[10]===Symbol.for("react.memo_cache_sentinel")?(W={containerRef:l},e[10]=W):W=e[10],Zt(W);let R;e[11]!==L?(R=St(L),e[11]=L,e[12]=R):R=e[12];const I=R,T=rn(L,M,b?C:void 0,se),{locale:q}=Lt(),D=g==="assistant"?"label":"local",z=r&&(r.type==="text"||r.type==="reasoning")&&r.time?.end!==void 0?r:null;let $;e[13]===Symbol.for("react.memo_cache_sentinel")?($=Nn(),e[13]=$):$=e[13];const H=$,x=z?.sessionID,Xe=z?.messageID,Ze=z?.id;let Ne;e:{if(k||!x||!Xe||!Ze||n.length===0||n.length>go){Ne=null;break e}const V=`${H}\0${x}`,Ie=`${Xe}\0${Ze}\0${D}\0${n.length}`;let we;e[14]!==b||e[15]!==q||e[16]!==V||e[17]!==Ie?(we={scope:V,id:Ie,locale:q,directory:b},e[14]=b,e[15]=q,e[16]=V,e[17]=Ie,e[18]=we):we=e[18],Ne=we}const _e=Ne,xe=`markdown-${r?.id?`part-${r.id}`:`message-${o}`}`,Pe=!k;let he;e[19]!==n||e[20]!==T||e[21]!==_e||e[22]!==D||e[23]!==M||e[24]!==I||e[25]!==Pe?(he={containerRef:l,text:n,streaming:M,imageMode:D,syntaxVars:I,ctx:T,domCacheKey:_e,tableLayoutSettled:Pe},e[19]=n,e[20]=T,e[21]=_e,e[22]=D,e[23]=M,e[24]=I,e[25]=Pe,e[26]=he):he=e[26],on(he);let Q;e[27]!==a?(Q=Mt("break-words w-full min-w-0",a),e[27]=a,e[28]=Q):Q=e[28];let J;e[29]!==g?(J=sn(g),e[29]=g,e[30]=J):J=e[30];let ee;e[31]!==J?(ee=de.jsx("div",{className:J,"data-markdown-content":!0}),e[31]=J,e[32]=ee):ee=e[32];let be;e[33]!==Q||e[34]!==ee?(be=de.jsx("div",{className:Q,ref:l,children:ee}),e[33]=Q,e[34]=ee,e[35]=be):be=e[35];const ge=be;if(h){let V;return e[36]!==xe||e[37]!==ge||e[38]!==w?(V=de.jsx(Sn,{skipAnimation:w,children:ge},xe),e[36]=xe,e[37]=ge,e[38]=w,e[39]=V):V=e[39],V}return ge},Na=v.memo(ko,(t,e)=>t.content===e.content&&t.isStreaming===e.isStreaming&&t.disableStreamAnimation===e.disableStreamAnimation&&t.variant===e.variant&&t.isAnimated===e.isAnimated&&t.skipFadeIn===e.skipFadeIn&&t.className===e.className&&t.messageId===e.messageId&&t.onShowPopup===e.onShowPopup&&t.enableFileReferences===e.enableFileReferences&&t.part?.id===e.part?.id),Co=t=>{const e=fe.c(31),{content:n,className:r,variant:o,disableLinkSafety:i,stripFrontmatter:s,onShowPopup:a,mermaidControls:d,allowMermaidWheelEvents:c,enableFileReferences:u,allowRawHtml:f}=t,p=o===void 0?"assistant":o,h=s===void 0?!1:s,w=d===void 0?se:d,k=c===void 0?!1:c,A=u===void 0?!0:u,g=f===void 0?!1:f,{editor:S,runtime:L}=vt(),N=Xt(),m=v.useRef(null),l=Et()??"";let b;e[0]!==n||e[1]!==h?(b=h?to(n):n,e[0]=n,e[1]=h,e[2]=b):b=e[2];const E=b;let y;e[3]!==k||e[4]!==w.showPanZoomControls||e[5]!==a?(y={containerRef:m,onShowPopup:a,enableFullscreen:Gt,enablePanZoom:w.showPanZoomControls,allowMermaidWheelEvents:k},e[3]=k,e[4]=w.showPanZoomControls,e[5]=a,e[6]=y):y=e[6],nn(y);let C;e[7]!==S||e[8]!==l||e[9]!==A||e[10]!==L.isVSCode?(C={containerRef:m,effectiveDirectory:l,editor:S,preferRuntimeEditor:L.isVSCode,enabled:A},e[7]=S,e[8]=l,e[9]=A,e[10]=L.isVSCode,e[11]=C):C=e[11],tn(C);const M=!i;let _;e[12]!==M?(_={containerRef:m,enabled:M},e[12]=M,e[13]=_):_=e[13],Zt(_);let F;e[14]!==N?(F=St(N),e[14]=N,e[15]=F):F=e[15];const O=F,W=rn(N,!1,void 0,w),R=g?"sanitize":"escape";let I;e[16]!==W||e[17]!==E||e[18]!==O||e[19]!==R?(I={containerRef:m,text:E,streaming:!1,imageMode:"local",rawHtml:R,syntaxVars:O,ctx:W,tableLayoutSettled:!0},e[16]=W,e[17]=E,e[18]=O,e[19]=R,e[20]=I):I=e[20],on(I);let T;e[21]!==r?(T=Mt("break-words w-full min-w-0",r),e[21]=r,e[22]=T):T=e[22];let q;e[23]!==p?(q=sn(p),e[23]=p,e[24]=q):q=e[24];const D=g?"":void 0;let z;e[25]!==q||e[26]!==D?(z=de.jsx("div",{className:q,"data-markdown-content":!0,"data-markdown-html":D}),e[25]=q,e[26]=D,e[27]=z):z=e[27];let $;return e[28]!==T||e[29]!==z?($=de.jsx("div",{className:T,ref:m,children:z}),e[28]=T,e[29]=z,e[30]=$):$=e[30],$},_a=v.memo(Co,(t,e)=>{const n=t.mermaidControls??se,r=e.mermaidControls??se;return t.content===e.content&&t.variant===e.variant&&t.className===e.className&&t.disableLinkSafety===e.disableLinkSafety&&t.stripFrontmatter===e.stripFrontmatter&&t.onShowPopup===e.onShowPopup&&n.download===r.download&&n.copy===r.copy&&n.showPanZoomControls===r.showPanZoomControls&&t.allowMermaidWheelEvents===e.allowMermaidWheelEvents&&t.enableFileReferences===e.enableFileReferences&&t.allowRawHtml===e.allowRawHtml});function vo(t){Ln(t)}function Eo(t){Mn(t)}function So(t){Tn(t.sessionId,t.messageId)}function Lo(t){return t.openContextPreview}export{Na as MarkdownRenderer,_a as SimpleMarkdownRenderer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as A,j as t,R as c,f as ee}from"./vendor-react-BUCujlKS.js";import{f as te,B as L,a8 as Z,h9 as he,g as fe,O as Ne,h as se,I as F}from"./useAppFontEffects-DGlvOqP_.js";import{Y as G,dS as Se,dP as ue,aL as J,O as q,aZ as Y,aK as Re,aC as xe,a5 as ge,h as Q,br as be,D as ye,a1 as ce,aN as Le,g8 as Ue,g9 as Ie}from"./index-DxNa7xYB.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-CxRSdNoV.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-Det7U81h.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-tanstack-react-virtual-CvuLsk7D.js";import"./vendor-tanstack-virtual-core-DPaNcJcT.js";import"./vendor-framer-motion-DxDVhOLc.js";import"./vendor-motion-dom-HXPOMxb7.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-codemirror-commands-C4G_dPWe.js";import"./vendor-codemirror-state-Dek9sMtw.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-1e0FQ6Wn.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-language-DufXoQvE.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-DbpEcZM0.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-BSHQHbKu.js";import"./vendor-codemirror-lang-json-BzgckzmB.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-Cayfb29q.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-BQWerHsJ.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-D2TEBIvZ.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CtwSWKtX.js";import"./vendor-codemirror-lang-python-jAMtYiA9.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-capacitor-core-B4EWRrHz.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-BmFcUkbQ.js";function Te(d){switch(d){case"ok":return null;case"auth":return"onboarding.remoteConnection.probe.authMessage";case"update-recommended":return"onboarding.remoteConnection.probe.updateRecommendedMessage";case"incompatible":return"onboarding.remoteConnection.probe.incompatibleMessage";case"wrong-service":return"onboarding.remoteConnection.probe.wrongServiceMessage";case"unreachable":return"onboarding.remoteConnection.probe.unreachableMessage";default:return null}}function ie(d){return d==="wrong-service"||d==="unreachable"||d==="incompatible"}function ve({onBack:d,showBackButton:e=!0,initialUrl:o="",initialLabel:r="",isRecoveryMode:n=!1,onConnect:i,onSwitchToLocal:u,showInstancePicker:a=!1}){const{t:s}=te(),[h,x]=A.useState(o),[m,U]=A.useState(r),[R,y]=A.useState("idle"),[b,g]=A.useState(null),[S,C]=A.useState(""),[T,I]=A.useState([]),[D,w]=A.useState(()=>a?"instances":"add"),[v,j]=A.useState("");A.useEffect(()=>{a&&G().then(p=>I(p.hosts)).catch(p=>{C(p instanceof Error?p.message:String(p))})},[a]);const k=Se(h),K=k?.persistedUrl??null,B=A.useCallback(p=>{x(p.target.value),y("idle"),g(null),C("")},[]),$=A.useCallback(p=>{U(p.target.value)},[]),W=A.useCallback(async()=>{if(K){y("testing"),g(null),C("");try{const p=await ue(K);g(p),y(p.status==="ok"||p.status==="update-recommended"?"success":"error")}catch(p){C(p instanceof Error?p.message:s("onboarding.remoteConnection.errors.connectionTestFailed")),y("error")}}},[K,s]),f=A.useCallback(async()=>{if(!k)return;const p=k.persistedUrl;y("testing"),g(null),C("");try{const V=await ue(p);if(g(V),ie(V.status)){y("error");return}const ne=await G(),ke=m.trim()||p,re=ne.hosts.find(oe=>oe.url===p),ae=re?re.id:`host-${Date.now().toString(16)}`,de={id:ae,label:ke,url:p,apiUrl:p},Ce=re?ne.hosts.map(oe=>oe.id===ae?de:oe):[...ne.hosts,de];if(await J({hosts:Ce,defaultHostId:ae,initialHostChoiceCompleted:!0}),i?.(),k.redeemUrl){window.location.assign(k.redeemUrl);return}q()&&await Y()}catch(V){C(V instanceof Error?V.message:s("onboarding.remoteConnection.errors.failedToSaveConnection")),y("error")}},[k,m,i,s]),E=A.useCallback(async p=>{const V=await G();await J({hosts:V.hosts,defaultHostId:p,initialHostChoiceCompleted:!0}),await Y()},[]),z=A.useCallback(async()=>{y("testing"),C("");try{const p=await G(),V=await Re(v,p.hosts);await J({hosts:V.hosts,defaultHostId:V.hostId,initialHostChoiceCompleted:!0}),await Y()}catch(p){C(p instanceof Error&&p.message==="invalid-connect-link"?s("settings.remoteInstances.direct.error.invalidConnectLink"):s("onboarding.remoteConnection.errors.failedToSaveConnection")),y("error")}},[v,s]),l=R==="testing",N=K!==null&&!l,O=K!==null&&!l&&!ie(b?.status??null),_=Te(b?.status??null),H=b?.status==="ok",M=b?.status==="update-recommended",X=b?.status==="auth",P=ie(b?.status??null);return a&&D==="instances"?t.jsx("div",{className:"flex flex-col items-center justify-center h-full p-8",children:t.jsxs("div",{className:"w-full max-w-md space-y-6",children:[t.jsxs("div",{className:"space-y-2 text-center",children:[t.jsx("h1",{className:"typography-ui-header text-xl font-semibold text-foreground",children:s("desktopHostSwitcher.actions.switchInstance")}),t.jsx("p",{className:"text-muted-foreground text-sm",children:s("settings.remoteInstances.direct.description")})]}),S?t.jsx("div",{className:"text-sm text-[var(--status-error)]",children:S}):null,t.jsx("div",{className:"space-y-2",children:T.length===0?t.jsx("div",{className:"py-4 text-center text-sm text-muted-foreground",children:s("settings.remoteInstances.direct.state.empty")}):T.map(p=>t.jsx(L,{variant:"outline",className:"w-full justify-start",onClick:()=>{E(p.id)},children:t.jsx("span",{className:"min-w-0 truncate",children:p.label})},p.id))}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(L,{variant:"outline",className:"flex-1",onClick:()=>w("import"),children:s("settings.remoteInstances.direct.import.action")}),t.jsx(L,{className:"flex-1",onClick:()=>w("add"),children:s("settings.remoteInstances.direct.actions.add")})]})]})}):a&&D==="import"?t.jsx("div",{className:"flex flex-col items-center justify-center h-full p-8",children:t.jsxs("div",{className:"w-full max-w-md space-y-6",children:[t.jsx(L,{variant:"ghost",onClick:()=>w("instances"),className:"p-0 text-muted-foreground",children:s("onboarding.common.actions.back")}),t.jsxs("div",{className:"space-y-2 text-center",children:[t.jsx("h1",{className:"typography-ui-header text-xl font-semibold text-foreground",children:s("settings.remoteInstances.direct.import.action")}),t.jsx("p",{className:"text-muted-foreground text-sm",children:s("settings.remoteInstances.direct.import.description")})]}),t.jsx(Z,{value:v,onChange:p=>j(p.target.value),placeholder:s("settings.remoteInstances.direct.import.placeholder"),disabled:l,autoFocus:!0}),S?t.jsx("div",{className:"text-sm text-[var(--status-error)]",children:S}):null,t.jsx(L,{onClick:()=>{z()},disabled:l||!v.trim(),children:s("settings.remoteInstances.direct.import.action")})]})}):t.jsx("div",{className:"flex flex-col items-center justify-center h-full p-8",children:t.jsxs("div",{className:"w-full max-w-md space-y-6",children:[(e||a)&&t.jsx("div",{className:"flex items-center",children:t.jsx(L,{variant:"ghost",onClick:a?()=>w("instances"):d,className:"p-0 text-muted-foreground hover:text-foreground",children:s("onboarding.common.actions.back")})}),t.jsxs("div",{className:"space-y-2 text-center",children:[t.jsx("h1",{className:"typography-ui-header text-xl font-semibold text-foreground",children:s(n?"onboarding.remoteConnection.titleRecovery":"onboarding.remoteConnection.title")}),t.jsx("p",{className:"text-muted-foreground text-sm",children:s("onboarding.remoteConnection.description")})]}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx("label",{htmlFor:"remote-url",className:"text-sm text-foreground",children:s("onboarding.remoteConnection.field.serverAddress")}),t.jsx(Z,{id:"remote-url",type:"url",value:h,onChange:B,placeholder:s("onboarding.remoteConnection.field.serverAddressPlaceholder"),disabled:l})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("label",{htmlFor:"remote-label",className:"text-sm text-foreground",children:s("onboarding.remoteConnection.field.nameOptional")}),t.jsx(Z,{id:"remote-label",type:"text",value:m,onChange:$,placeholder:s("onboarding.remoteConnection.field.namePlaceholder"),disabled:l})]})]}),b&&H&&t.jsx("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--status-success)",color:"var(--status-success)"},children:s("onboarding.remoteConnection.status.connectedSuccessfully",{latencyMs:b.latencyMs})}),b&&X&&t.jsx("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--status-warning)",color:"var(--status-warning)"},children:s("onboarding.remoteConnection.status.authWarning")}),b&&M&&t.jsx("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--status-warning)",color:"var(--status-warning)"},children:_?s(_):null}),b&&P&&t.jsxs("div",{className:"rounded-lg border p-3 text-sm space-y-3",style:{borderColor:"var(--status-error)",color:"var(--status-error)"},children:[t.jsxs("div",{children:[t.jsx("div",{className:"font-semibold mb-1",children:s("onboarding.remoteConnection.status.connectionFailed")}),t.jsx("div",{className:"opacity-90",children:_?s(_):null})]}),t.jsx("div",{className:"text-xs opacity-80",children:b.status==="unreachable"?s("onboarding.remoteConnection.status.suggestionsUnreachable"):s("onboarding.remoteConnection.status.suggestionsWrongService")})]}),S&&t.jsx("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--status-error)",color:"var(--status-error)"},children:S}),t.jsxs("div",{className:"flex gap-3",children:[t.jsx(L,{variant:"outline",onClick:W,disabled:!N,children:s(l?"onboarding.remoteConnection.actions.testing":"onboarding.remoteConnection.actions.testConnection")}),t.jsx(L,{onClick:f,disabled:!O,children:s("onboarding.remoteConnection.actions.connectAndRestart")})]}),P&&t.jsxs("div",{className:"flex flex-col gap-2 pt-2 border-t border-border",children:[t.jsx("div",{className:"text-xs text-muted-foreground text-center",children:s("onboarding.remoteConnection.actions.whatToDo")}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(L,{variant:"outline",size:"sm",onClick:d,className:"flex-1",children:s("onboarding.remoteConnection.actions.chooseDifferentServer")}),!n&&u&&t.jsx(L,{variant:"outline",size:"sm",onClick:u,className:"flex-1",children:s("onboarding.remoteConnection.actions.useLocalInstead")})]})]})]})})}const _e="curl -fsSL https://opencode.ai/v2/install | bash",we="npm install -g @opencode/cli",De="https://opencode.ai/download",me=2500;function Ke(d){const e=ee.c(9),{windows:o,onCopy:r,copyTitle:n}=d;let i;e[0]!==o?(i=t.jsx("code",{className:"flex-1 min-w-0 text-left overflow-x-auto whitespace-nowrap",children:o?t.jsx("span",{style:{color:"var(--syntax-keyword)"},children:we}):t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:"var(--syntax-keyword)"},children:"curl"}),t.jsx("span",{className:"text-muted-foreground",children:" -fsSL "}),t.jsx("span",{style:{color:"var(--syntax-string)"},children:"https://opencode.ai/v2/install"}),t.jsx("span",{className:"text-muted-foreground",children:" | "}),t.jsx("span",{style:{color:"var(--syntax-keyword)"},children:"bash"})]})}),e[0]=o,e[1]=i):i=e[1];let u;e[2]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsx(F,{name:"file-copy",className:"h-4 w-4"}),e[2]=u):u=e[2];let a;e[3]!==n||e[4]!==r?(a=t.jsx("button",{onClick:r,className:"inline-flex items-center text-muted-foreground hover:text-foreground transition-colors shrink-0",title:n,"aria-label":n,children:u}),e[3]=n,e[4]=r,e[5]=a):a=e[5];let s;return e[6]!==i||e[7]!==a?(s=t.jsxs("div",{className:"flex items-center justify-between gap-3 w-full",children:[i,a]}),e[6]=i,e[7]=a,e[8]=s):s=e[8],s}function Ae({onCliAvailable:d,localAvailable:e=!0}){const{t:o}=te(),[r,n]=c.useState(!1),[i,u]=c.useState(!1),[a,s]=c.useState(!1),[h,x]=c.useState(!1),[m,U]=c.useState(""),R=he(l=>l.opencodeBinary),[y,b]=c.useState("unknown"),[g,S]=c.useState(()=>e?"local":"remote"),[C,T]=c.useState(!1),[I,D]=c.useState(!1);c.useEffect(()=>{u(q())},[]),c.useEffect(()=>{if(typeof navigator>"u"){b("unknown");return}const l=navigator.userAgent||"";/Windows/i.test(l)?b("windows"):/Macintosh|Mac OS X/i.test(l)?b("macos"):/Linux/i.test(l)?b("linux"):b("unknown")},[]),c.useEffect(()=>{let l=!1;return(async()=>{try{const N=await xe();if(!N||l)return;const O=N.opencodeBinary??"";O&&U(O)}catch{}})(),()=>{l=!0}},[]);const w=c.useCallback(async l=>{const N=l.target;N.closest(".app-region-no-drag")||N.closest("button, a, input, select, textarea, code, summary, details")||l.button===0&&i&&await ge()},[i]),v=c.useCallback(async()=>{try{const l=await Q("/health");if(!l.ok)return!1;const N=await l.json();return N.openCodeRunning===!0||N.isOpenCodeReady===!0}catch{return!1}},[]),j=c.useCallback(async l=>{if(!i)return;const N=await G();await J({...N,...l==="local"?{defaultHostId:"local"}:{},initialHostChoiceCompleted:!0})},[i]),k=c.useCallback(async()=>{i&&await j("local"),d?.()},[i,d,j]);c.useEffect(()=>{if(!e||g!=="local")return;let l=!1,N=null;const O=async()=>{if(!l){try{const _=await v();if(l)return;if(_){await k();return}}catch{}l||(N=setTimeout(O,me))}};return N=setTimeout(O,me),()=>{l=!0,N&&clearTimeout(N)}},[g,v,k,e]);const K=c.useCallback(async()=>{x(!0);try{await v()&&await k()}finally{x(!1)}},[v,k]),B=c.useCallback(async()=>{if(!(typeof window>"u")&&i)try{const l=await be();l.success&&l.path&&l.path.trim().length>0&&U(l.path.trim())}catch{}},[i]),$=c.useCallback(async()=>{s(!0);try{if(await ye({opencodeBinary:m.trim()}),i){await j("local"),await Y();return}await Q("/api/config/reload",{method:"POST"})}finally{setTimeout(()=>s(!1),1e3)}},[i,m,j]),W=c.useCallback(async()=>{const l=await fe(y==="windows"?we:_e);l.ok?(n(!0),setTimeout(()=>n(!1),2e3)):console.error("Failed to copy:",l.error)},[y]),f=De,E=y==="windows"?"C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd":y==="linux"?"/home/you/.opencode/bin/opencode":"/Users/you/.opencode/bin/opencode",z=e&&(!i||g==="local");return t.jsx("div",{className:"app-region-drag h-full flex items-center justify-center bg-transparent p-8 cursor-default select-none overflow-y-auto",onMouseDown:w,children:t.jsxs("div",{className:"w-full max-w-md",children:[t.jsxs("header",{className:"flex flex-col items-center text-center",children:[t.jsx(Ne,{width:48,height:48}),t.jsx("h1",{className:"mt-6 text-xl font-semibold tracking-tight text-foreground",children:o("onboarding.chooser.title")}),t.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:o("onboarding.chooser.description")})]}),i&&e&&t.jsxs("div",{role:"tablist",className:"app-region-no-drag mt-7 flex gap-1 rounded-lg border border-border p-1",children:[t.jsx("button",{type:"button",role:"tab","aria-selected":g==="local",className:se("flex-1 rounded-md px-3 py-1.5 text-sm transition-colors",g==="local"?"bg-[var(--interactive-selection)] text-[var(--interactive-selection-foreground)]":"text-muted-foreground hover:text-foreground"),onClick:()=>S("local"),children:o("onboarding.chooser.tabs.localInstall")}),t.jsx("button",{type:"button",role:"tab","aria-selected":g==="remote",className:se("flex-1 rounded-md px-3 py-1.5 text-sm transition-colors",g==="remote"?"bg-[var(--interactive-selection)] text-[var(--interactive-selection-foreground)]":"text-muted-foreground hover:text-foreground"),onClick:()=>S("remote"),children:o("onboarding.chooser.tabs.connectRemote")})]}),i&&g==="remote"?t.jsx("div",{className:"app-region-no-drag mt-6",children:t.jsx(ve,{onBack:()=>e&&S("local"),showBackButton:!1,showInstancePicker:!e,onSwitchToLocal:e?()=>S("local"):void 0})}):null,z&&t.jsxs("div",{className:"mt-6",children:[y==="windows"&&t.jsxs("div",{className:"mb-4 rounded-lg border border-border p-4",children:[t.jsx("div",{className:"text-sm text-foreground",children:o("onboarding.localSetup.windows.title")}),t.jsxs("ol",{className:"mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground",children:[t.jsx("li",{children:o("onboarding.localSetup.windows.stepRunInstallInWsl")}),t.jsx("li",{children:o("onboarding.localSetup.windows.stepSetBinaryPath")})]})]}),t.jsx("p",{className:"text-center text-sm leading-relaxed text-muted-foreground text-balance",children:o("onboarding.localSetup.intro")}),t.jsx("div",{className:"app-region-no-drag mt-3 rounded-lg border border-border bg-background/60 px-4 py-3 font-mono text-sm",children:r?t.jsxs("div",{className:"flex items-center gap-2",style:{color:"var(--status-success)"},children:[t.jsx(F,{name:"check",className:"h-4 w-4"}),o("onboarding.common.status.copiedToClipboard")]}):t.jsx(Ke,{windows:y==="windows",onCopy:W,copyTitle:o("onboarding.common.copyToClipboard")})}),t.jsxs("div",{className:"app-region-no-drag mt-3 flex items-center gap-2.5 px-1",role:"status","aria-live":"polite",children:[t.jsx("span",{className:"relative inline-flex h-2 w-2 shrink-0","aria-hidden":!0,children:t.jsx("span",{className:"absolute inset-0 rounded-full",style:{backgroundColor:"var(--primary-base)",animation:"pulse-opacity 1.6s ease-in-out infinite"}})}),t.jsxs("span",{className:"min-w-0 flex-1 text-xs text-muted-foreground",children:[t.jsx("span",{className:"text-foreground",children:o("onboarding.localSetup.status.watching")})," · ",o("onboarding.localSetup.status.autoContinue")]}),t.jsx("button",{type:"button",onClick:K,disabled:h,className:"shrink-0 text-xs text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50",children:o(h?"onboarding.localSetup.actions.checking":"onboarding.localSetup.actions.checkNow")})]}),t.jsxs("div",{className:"mt-6 divide-y divide-border/60 border-y border-border/60",children:[t.jsxs("details",{className:"app-region-no-drag group",open:C,onToggle:l=>T(l.currentTarget.open),children:[t.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between py-3 text-sm text-muted-foreground transition-colors hover:text-foreground [&::-webkit-details-marker]:hidden",children:[t.jsx("span",{children:o("onboarding.localSetup.advanced.title")}),t.jsx(F,{name:"arrow-down-s",className:"h-4 w-4 transition-transform group-open:rotate-180"})]}),t.jsxs("div",{className:"space-y-2 pb-4",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx(Z,{value:R??m,onChange:l=>U(l.target.value),placeholder:E,disabled:a||R!==null,className:"flex-1 font-mono text-xs"}),R===null&&t.jsxs(t.Fragment,{children:[t.jsx(L,{type:"button",variant:"secondary",size:"sm",onClick:B,disabled:a||!i,children:o("onboarding.localSetup.actions.browse")}),t.jsx(L,{type:"button",size:"sm",onClick:$,disabled:a||!m.trim(),children:o("onboarding.localSetup.actions.apply")})]})]}),t.jsx("p",{className:"text-xs text-muted-foreground/70",children:o(R===null?"onboarding.localSetup.helper.saveAndReload":"onboarding.localSetup.helper.pinnedByAdministrator")})]})]}),t.jsxs("details",{className:"app-region-no-drag group",open:I,onToggle:l=>D(l.currentTarget.open),children:[t.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between py-3 text-sm text-muted-foreground transition-colors hover:text-foreground [&::-webkit-details-marker]:hidden",children:[t.jsx("span",{children:o("onboarding.localSetup.troubleshoot.title")}),t.jsx(F,{name:"arrow-down-s",className:"h-4 w-4 transition-transform group-open:rotate-180"})]}),t.jsx("ul",{className:"list-disc space-y-1.5 pb-4 pl-4 text-xs text-muted-foreground",children:y==="windows"?t.jsx("li",{children:o("onboarding.localSetup.windows.hintDetectionFailed")}):t.jsxs(t.Fragment,{children:[t.jsx("li",{children:o("onboarding.localSetup.hint.ensurePath")}),t.jsx("li",{children:o("onboarding.localSetup.hint.setEnv")}),t.jsx("li",{children:o("onboarding.localSetup.hint.missingRuntime")})]})})]})]}),t.jsx("div",{className:"app-region-no-drag mt-5 text-center",children:t.jsxs("a",{href:f,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",children:[o(y==="windows"?"onboarding.localSetup.docs.windows":"onboarding.localSetup.docs.default"),t.jsx(F,{name:"external-link",className:"h-3 w-3"})]})})]})]})})}const Ee="curl -fsSL https://opencode.ai/v2/install | bash",je="npm install -g @opencode/cli",Fe="https://opencode.ai/download";function Oe(d){const e=ee.c(9),{windows:o,onCopy:r,copyTitle:n}=d;let i;e[0]!==o?(i=t.jsx("code",{className:"flex-1 min-w-0 text-left overflow-x-auto whitespace-nowrap",children:o?t.jsx("span",{style:{color:"var(--syntax-keyword)"},children:je}):t.jsxs(t.Fragment,{children:[t.jsx("span",{style:{color:"var(--syntax-keyword)"},children:"curl"}),t.jsx("span",{className:"text-muted-foreground",children:" -fsSL "}),t.jsx("span",{style:{color:"var(--syntax-string)"},children:"https://opencode.ai/v2/install"}),t.jsx("span",{className:"text-muted-foreground",children:" | "}),t.jsx("span",{style:{color:"var(--syntax-keyword)"},children:"bash"})]})}),e[0]=o,e[1]=i):i=e[1];let u;e[2]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsx(F,{name:"file-copy",className:"h-4 w-4"}),e[2]=u):u=e[2];let a;e[3]!==n||e[4]!==r?(a=t.jsx("button",{onClick:r,className:"inline-flex items-center text-muted-foreground hover:text-foreground transition-colors",title:n,"aria-label":n,children:u}),e[3]=n,e[4]=r,e[5]=a):a=e[5];let s;return e[6]!==i||e[7]!==a?(s=t.jsxs("div",{className:"flex items-center justify-center gap-3",children:[i,a]}),e[6]=i,e[7]=a,e[8]=s):s=e[8],s}const He=3e4;function Me({onBack:d,onCliAvailable:e,isFromRecovery:o=!1,onSwitchToRemote:r}){const{t:n}=te(),[i,u]=c.useState(!1),[a,s]=c.useState(!1),[h,x]=c.useState(!1),[m,U]=c.useState(!1),[R,y]=c.useState(!1),[b,g]=c.useState(null),[S,C]=c.useState(""),T=he(f=>f.opencodeBinary),[I,D]=c.useState("unknown");c.useEffect(()=>{const f=setTimeout(()=>s(!0),He);return()=>clearTimeout(f)},[]),c.useEffect(()=>{x(q())},[]),c.useEffect(()=>{if(typeof navigator>"u"){D("unknown");return}const f=navigator.userAgent||"";if(/Windows/i.test(f)){D("windows");return}if(/Macintosh|Mac OS X/i.test(f)){D("macos");return}if(/Linux/i.test(f)){D("linux");return}D("unknown")},[]),c.useEffect(()=>{let f=!1;return(async()=>{try{const E=await xe();if(!E||f)return;const z=E.opencodeBinary??"";z&&C(z)}catch{}})(),()=>{f=!0}},[]);const w=c.useCallback(async f=>{f.target.closest("button, a, input, select, textarea, code")||f.button===0&&h&&await ge()},[h]),v=c.useCallback(async()=>{try{const f=await Q("/health");if(!f.ok)return!1;const E=await f.json();return E.openCodeRunning===!0||E.isOpenCodeReady===!0}catch{return!1}},[]),j=c.useCallback(async()=>{if(!(typeof window>"u")&&h)try{const f=await be();f.success&&f.path&&f.path.trim().length>0&&C(f.path.trim())}catch{}},[h]),k=c.useCallback(async()=>{U(!0);try{if(await ye({opencodeBinary:S.trim()}),h){await Y();return}await Q("/api/config/reload",{method:"POST"})}finally{setTimeout(()=>U(!1),1e3)}},[h,S]),K=c.useCallback(async()=>{const f=await fe(I==="windows"?je:Ee);f.ok?(u(!0),setTimeout(()=>u(!1),2e3)):console.error("Failed to copy:",f.error)},[I]),B=c.useCallback(async()=>{y(!0),g(null);try{await v()?e?.():g(n("onboarding.localSetup.errors.cliNotReady"))}catch(f){g(f instanceof Error?f.message:n("onboarding.localSetup.errors.detectionFailed"))}finally{y(!1)}},[v,e,n]),$=Fe,W=I==="windows"?"C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd":I==="linux"?"/home/you/.opencode/bin/opencode":"/Users/you/.opencode/bin/opencode";return t.jsxs("div",{className:"h-full flex items-center justify-center bg-transparent p-8 relative cursor-default select-none",onMouseDown:w,children:[t.jsxs("div",{className:"w-full max-w-lg space-y-4 text-center",children:[t.jsx("div",{className:"flex items-center",children:t.jsx(L,{variant:"ghost",onClick:d,className:"p-0 text-muted-foreground hover:text-foreground",children:n("onboarding.common.actions.back")})}),t.jsxs("div",{className:"space-y-4",children:[t.jsx("h1",{className:"text-3xl font-semibold tracking-tight text-foreground",children:n("onboarding.localSetup.title")}),t.jsx("p",{className:"text-muted-foreground",children:n("onboarding.localSetup.description")})]}),I==="windows"&&t.jsxs("div",{className:"mx-auto max-w-2xl rounded-lg border border-border bg-background/50 p-4 text-left",children:[t.jsx("div",{className:"text-sm text-foreground",children:n("onboarding.localSetup.windows.title")}),t.jsxs("ol",{className:"mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground",children:[t.jsx("li",{children:n("onboarding.localSetup.windows.stepRunInstallInWsl")}),t.jsx("li",{children:n("onboarding.localSetup.windows.stepSetBinaryPath")})]})]}),t.jsx("div",{className:"flex justify-center",children:t.jsx("div",{className:"bg-background/60 backdrop-blur-sm border border-border rounded-lg px-5 py-3 font-mono text-sm w-fit",children:i?t.jsxs("div",{className:"flex items-center justify-center gap-2",style:{color:"var(--status-success)"},children:[t.jsx(F,{name:"check",className:"h-4 w-4"}),n("onboarding.common.status.copiedToClipboard")]}):t.jsx(Oe,{windows:I==="windows",onCopy:K,copyTitle:n("onboarding.common.copyToClipboard")})})}),t.jsxs("a",{href:$,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1 justify-center",children:[n(I==="windows"?"onboarding.localSetup.docs.windows":"onboarding.localSetup.docs.default"),t.jsx(F,{name:"external-link",className:"h-3 w-3"})]}),b&&t.jsx("div",{className:"mx-auto max-w-md rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive",children:b}),t.jsxs("div",{className:"space-y-3",children:[t.jsx(L,{type:"button",onClick:B,disabled:R,className:"w-full max-w-xs",size:"lg",children:n(R?"onboarding.localSetup.actions.checking":"onboarding.localSetup.actions.checkAndContinue")}),t.jsx("p",{className:"text-xs text-muted-foreground",children:n("onboarding.localSetup.helper.checkAndContinue")})]}),t.jsx("div",{className:"mx-auto w-full max-w-xl pt-4",children:t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"text-sm text-muted-foreground",children:n("onboarding.localSetup.field.alreadyInstalled")}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(Z,{value:T??S,onChange:f=>C(f.target.value),placeholder:W,disabled:m||T!==null,className:"flex-1 font-mono text-xs"}),T===null&&t.jsxs(t.Fragment,{children:[t.jsx(L,{type:"button",variant:"secondary",onClick:j,disabled:m||!h,children:n("onboarding.localSetup.actions.browse")}),t.jsx(L,{type:"button",onClick:k,disabled:m,children:n("onboarding.localSetup.actions.apply")})]})]}),t.jsx("div",{className:"text-xs text-muted-foreground/70",children:n(T===null?"onboarding.localSetup.helper.saveAndReload":"onboarding.localSetup.helper.pinnedByAdministrator")})]})}),o&&r&&t.jsxs("div",{className:"text-center pt-4",children:[t.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:n("onboarding.localSetup.remotePreference")}),t.jsx(L,{variant:"link",onClick:r,children:n("onboarding.localSetup.actions.connectRemoteServer")})]})]}),a&&t.jsx("div",{className:"absolute bottom-8 left-0 right-0 text-center space-y-1",children:I==="windows"?t.jsx(t.Fragment,{children:t.jsx("p",{className:"text-sm text-muted-foreground/70",children:n("onboarding.localSetup.windows.hintDetectionFailed")})}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"text-sm text-muted-foreground/70",children:n("onboarding.localSetup.hint.ensurePath")}),t.jsx("p",{className:"text-sm text-muted-foreground/70",children:n("onboarding.localSetup.hint.setEnv")}),t.jsx("p",{className:"text-sm text-muted-foreground/70",children:n("onboarding.localSetup.hint.missingRuntime")})]})})]})}function le(d,e){if(d?.trim())return ce(d.trim());if(e)return ce(e)}function Pe(d,e,o){switch(d){case"local-unavailable":return{title:"Local OpenCode Unavailable",description:"OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.",titleKey:"onboarding.desktopRecovery.localUnavailable.title",descriptionKey:"onboarding.desktopRecovery.localUnavailable.description",iconKey:"local",showRetry:!0,retryLabel:"Retry Local",retryLabelKey:"onboarding.desktopRecovery.localUnavailable.retry",showUseLocal:!0,showUseRemote:!0,useLocalLabel:"Set Up Local",useLocalLabelKey:"onboarding.desktopRecovery.localUnavailable.useLocal",useRemoteLabel:"Use Remote",useRemoteLabelKey:"onboarding.desktopRecovery.common.useRemote"};case"remote-missing":return{title:"No Default Connection",description:"Your saved default connection could not be found. Choose how you want to connect.",titleKey:"onboarding.desktopRecovery.noDefaultConnection.title",descriptionKey:"onboarding.desktopRecovery.noDefaultConnection.description",iconKey:"local",showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:"Use Local",useLocalLabelKey:"onboarding.desktopRecovery.common.useLocal",useRemoteLabel:"Use Remote",useRemoteLabelKey:"onboarding.desktopRecovery.common.useRemote"};case"remote-unreachable":{const r=le(e,o);return{title:"Remote Server Unreachable",description:`Could not connect to "${r||"the remote server"}". Check your network connection and verify the server address.`,titleKey:"onboarding.desktopRecovery.remoteUnreachable.title",descriptionKey:"onboarding.desktopRecovery.remoteUnreachable.description",descriptionParams:r?{host:r}:void 0,iconKey:"remote",showRetry:!0,retryLabel:"Retry Connection",retryLabelKey:"onboarding.desktopRecovery.remoteUnreachable.retry",showUseLocal:!0,showUseRemote:!0,useLocalLabel:"Use Local",useLocalLabelKey:"onboarding.desktopRecovery.common.useLocal",useRemoteLabel:"Use Remote",useRemoteLabelKey:"onboarding.desktopRecovery.common.useRemote"}}case"remote-wrong-service":{const r=le(e,o);return{title:"Incompatible Server",description:`The server at "${r||"unknown"}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,titleKey:"onboarding.desktopRecovery.incompatibleServer.title",descriptionKey:"onboarding.desktopRecovery.incompatibleServer.description",descriptionParams:r?{host:r}:void 0,iconKey:"remote",showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:"Use Local",useLocalLabelKey:"onboarding.desktopRecovery.common.useLocal",useRemoteLabel:"Use Remote",useRemoteLabelKey:"onboarding.desktopRecovery.common.useRemote"}}case"remote-incompatible":{const r=le(e,o);return{title:"Server Update Required",description:`The OpenChamber server at "${r||"unknown"}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,titleKey:"onboarding.desktopRecovery.remoteIncompatible.title",descriptionKey:"onboarding.desktopRecovery.remoteIncompatible.description",descriptionParams:r?{host:r}:void 0,iconKey:"remote",showRetry:!0,retryLabel:"Retry Connection",retryLabelKey:"onboarding.desktopRecovery.remoteUnreachable.retry",showUseLocal:!0,showUseRemote:!0,useLocalLabel:"Use Local",useLocalLabelKey:"onboarding.desktopRecovery.common.useLocal",useRemoteLabel:"Use Remote",useRemoteLabelKey:"onboarding.desktopRecovery.common.useRemote"}}case"missing-default-host":return{title:"No Default Connection",description:"Your saved default connection could not be found. Choose how you want to connect.",titleKey:"onboarding.desktopRecovery.noDefaultConnection.title",descriptionKey:"onboarding.desktopRecovery.noDefaultConnection.description",iconKey:"local",showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:"Use Local",useLocalLabelKey:"onboarding.desktopRecovery.common.useLocal",useRemoteLabel:"Use Remote",useRemoteLabelKey:"onboarding.desktopRecovery.common.useRemote"};default:{const r=d;throw new Error(`Unknown recovery variant: ${r}`)}}}const Be="openchamber update";function $e(d){const e=ee.c(17),{state:o}=d,{t:r}=te();if(o.kind==="idle"||o.kind==="updating")return null;let n;e[0]!==o.kind||e[1]!==r?(n=o.kind==="refused"?r("onboarding.desktopRecovery.remoteIncompatible.updateRefused"):o.kind==="auth"?r("onboarding.desktopRecovery.remoteIncompatible.updateAuth"):r("onboarding.desktopRecovery.remoteIncompatible.updateTimeout"),e[0]=o.kind,e[1]=r,e[2]=n):n=e[2];const i=n;let u;e[3]!==i?(u=t.jsx("p",{className:"typography-meta text-[var(--status-error)]",children:i}),e[3]=i,e[4]=u):u=e[4];let a;e[5]!==o.error||e[6]!==o.kind?(a=o.kind==="refused"&&o.error&&t.jsx("p",{className:"typography-meta text-muted-foreground",children:o.error}),e[5]=o.error,e[6]=o.kind,e[7]=a):a=e[7];let s;e[8]!==r?(s=r("onboarding.desktopRecovery.remoteIncompatible.manualUpdate"),e[8]=r,e[9]=s):s=e[9];let h;e[10]!==s?(h=t.jsx("p",{className:"typography-meta text-muted-foreground",children:s}),e[10]=s,e[11]=h):h=e[11];let x;e[12]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsx("code",{className:"block select-text rounded-md border border-border bg-background/50 px-3 py-2 font-mono text-sm text-foreground",children:Be}),e[12]=x):x=e[12];let m;return e[13]!==u||e[14]!==a||e[15]!==h?(m=t.jsxs("div",{className:"space-y-2",children:[u,a,h,x]}),e[13]=u,e[14]=a,e[15]=h,e[16]=m):m=e[16],m}function We(d){switch(d){case"local":return t.jsx(F,{name:"macbook",className:"h-8 w-8"});case"remote":return t.jsx(F,{name:"server",className:"h-8 w-8"})}}function ze({variant:d,hostLabel:e,hostUrl:o,onRetry:r,onUseLocal:n,onUseRemote:i,isRetrying:u=!1,onUpdateServer:a,serverUpdate:s={kind:"idle"}}){const h=s.kind==="updating",{t:x}=te(),m=Pe(d,e,o),U=m.retryLabelKey??"onboarding.desktopRecovery.actions.retryConnection",R=c.useMemo(()=>{if(m.descriptionParams?.host)return m.descriptionParams;if(d==="remote-unreachable")return{host:x("onboarding.desktopRecovery.placeholders.remoteServer")};if(d==="remote-wrong-service"||d==="remote-incompatible")return{host:x("onboarding.desktopRecovery.placeholders.unknownServer")}},[m.descriptionParams,x,d]);return t.jsx("div",{className:"flex flex-col items-center justify-center h-full p-8",children:t.jsxs("div",{className:"w-full max-w-md space-y-6",children:[t.jsxs("div",{className:"flex flex-col items-center space-y-3 text-center",children:[t.jsx("div",{className:"p-3 rounded-full",style:{backgroundColor:"var(--status-warning)",opacity:.15},children:t.jsx("div",{style:{color:"var(--status-warning)"},children:We(m.iconKey)})}),t.jsx("h1",{className:"typography-ui-header text-xl font-semibold text-foreground",children:x(m.titleKey)}),t.jsx("p",{className:"text-muted-foreground text-sm max-w-sm",children:x(m.descriptionKey,R)})]}),o&&(d==="remote-unreachable"||d==="remote-wrong-service"||d==="remote-incompatible")&&t.jsxs("div",{className:"rounded-lg border border-border bg-background/50 p-3",children:[t.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:x("onboarding.remoteConnection.field.serverAddress")}),t.jsx("div",{className:"font-mono text-sm text-foreground truncate",children:ce(o)})]}),t.jsxs("div",{className:"flex flex-col gap-2",children:[a&&t.jsxs(t.Fragment,{children:[t.jsxs(L,{onClick:a,disabled:h||u,className:"w-full",children:[t.jsx(F,{name:h?"loader":"download",className:se("h-4 w-4",h&&"animate-spin")}),x(h?"onboarding.desktopRecovery.remoteIncompatible.updatingServer":"onboarding.desktopRecovery.remoteIncompatible.updateServer")]}),h&&t.jsx("p",{className:"typography-meta text-center text-muted-foreground",children:x("onboarding.desktopRecovery.remoteIncompatible.updatingHint")}),t.jsx($e,{state:s})]}),m.showRetry&&r&&t.jsxs(L,{onClick:r,disabled:u||h,variant:a?"outline":"default",className:"w-full",children:[t.jsx(F,{name:"refresh",className:se("h-4 w-4",u&&"animate-spin")}),x(u?"onboarding.desktopRecovery.actions.retrying":U)]}),t.jsxs("div",{className:"flex gap-2",children:[m.showUseLocal&&n&&t.jsxs(L,{variant:"outline",onClick:n,disabled:u||h,className:"flex-1",children:[t.jsx(F,{name:"macbook",className:"h-4 w-4"}),x(m.useLocalLabelKey)]}),m.showUseRemote&&i&&t.jsxs(L,{variant:"outline",onClick:i,disabled:u||h,className:"flex-1",children:[t.jsx(F,{name:"server",className:"h-4 w-4"}),x(m.useRemoteLabelKey)]})]})]})]})})}function pe(d,e){if(e==="use-remote")return{kind:"remote-form"};switch(d){case"local-unavailable":return{kind:"local-setup"};case"remote-unreachable":case"remote-incompatible":case"remote-wrong-service":case"remote-missing":case"missing-default-host":return{kind:"switch-default-to-local"};default:{const o=d;throw new Error(`Unhandled RecoveryVariant: ${o}`)}}}function Ve(d){const e=ee.c(39),{variant:o,hostUrl:r,hostLabel:n,hostId:i,onRetry:u,onChooseRemote:a,showRemoteForm:s,onCloseRemoteForm:h,onSwitchToLocalFromRemote:x,onEnterLocalSetup:m,isRetrying:U,localAvailable:R}=d,y=s===void 0?!1:s,b=U===void 0?!1:U,g=R===void 0?!0:R,S=qe;let C;e[0]!==u?(C=async()=>{if(q()){await Y();return}await Q("/api/config/reload",{method:"POST"}),u?.()},e[0]=u,e[1]=C):C=e[1];const T=C;let I;e[2]!==m||e[3]!==o?(I=async()=>{if(pe(o,"use-local").kind==="local-setup"){m?.();return}if(await S("local"),q()){await Y();return}window.location.reload()},e[2]=m,e[3]=o,e[4]=I):I=e[4];const D=I;let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w={kind:"idle"},e[5]=w):w=e[5];const[v,j]=c.useState(w),[k,K]=c.useState(null);let B,$;e[6]!==i||e[7]!==o?(B=()=>{if(K(null),o!=="remote-incompatible"||!i||!q())return;let _=!1;return G().then(H=>{const M=H.hosts.find(P=>P.id===i),X=Le(M?.apiUrl||M?.url||"");!_&&X&&K(i)}).catch(Ye),()=>{_=!0}},$=[o,i],e[6]=i,e[7]=o,e[8]=B,e[9]=$):(B=e[8],$=e[9]),c.useEffect(B,$);let W;e[10]===Symbol.for("react.memo_cache_sentinel")?(W=async _=>{j({kind:"updating"});try{const H=await Ue(_);if(H.status==="auth"){j({kind:"auth"});return}if(H.status==="failed"){j({kind:"refused",error:H.error});return}if(await Ie(_)==="timeout"){j({kind:"timeout"});return}await Y()||j({kind:"idle"})}catch{j({kind:"timeout"})}},e[10]=W):W=e[10];const f=W;let E;e[11]!==a||e[12]!==o?(E=()=>{pe(o,"use-remote").kind==="remote-form"&&a?.()},e[11]=a,e[12]=o,e[13]=E):E=e[13];const z=E;if(y){const _=o==="remote-wrong-service"?"":r||"",H=o==="remote-wrong-service"?"":n||"";let M;e[14]!==a||e[15]!==h?(M=h||(()=>a?.()),e[14]=a,e[15]=h,e[16]=M):M=e[16];const X=!g;let P;e[17]!==g||e[18]!==m||e[19]!==x?(P=g?x||(()=>{S("local").then(()=>{q()?Y():m?.()})}):void 0,e[17]=g,e[18]=m,e[19]=x,e[20]=P):P=e[20];let p;return e[21]!==H||e[22]!==_||e[23]!==M||e[24]!==X||e[25]!==P?(p=t.jsx(ve,{onBack:M,initialUrl:_,initialLabel:H,isRecoveryMode:!0,showInstancePicker:X,onSwitchToLocal:P}),e[21]=H,e[22]=_,e[23]=M,e[24]=X,e[25]=P,e[26]=p):p=e[26],p}const l=g?D:void 0;let N;e[27]!==k?(N=k?()=>{f(k)}:void 0,e[27]=k,e[28]=N):N=e[28];let O;return e[29]!==T||e[30]!==z||e[31]!==n||e[32]!==r||e[33]!==b||e[34]!==v||e[35]!==l||e[36]!==N||e[37]!==o?(O=t.jsx(ze,{variant:o,hostLabel:n,hostUrl:r,onRetry:T,onUseLocal:l,onUseRemote:z,isRetrying:b,onUpdateServer:N,serverUpdate:v}),e[29]=T,e[30]=z,e[31]=n,e[32]=r,e[33]=b,e[34]=v,e[35]=l,e[36]=N,e[37]=o,e[38]=O):O=e[38],O}function Ye(){}async function qe(d){if(!q())return;const e=await G();await J({...e,...d==="local"?{defaultHostId:"local"}:{},initialHostChoiceCompleted:!0})}function ko(d){const e=ee.c(30),{onBack:o,onCliAvailable:r,mode:n,recoveryVariant:i,recoveryHostUrl:u,recoveryHostLabel:a,recoveryHostId:s,onEnterLocalSetup:h,localAvailable:x}=d,m=n===void 0?"first-launch":n,U=i===void 0?"missing-default-host":i,R=x===void 0?!0:x,[y,b]=c.useState(!1),[g,S]=c.useState(!1);let C;e[0]===Symbol.for("react.memo_cache_sentinel")?(C=()=>{S(!1),b(!1)},e[0]=C):C=e[0];let T;e[1]!==m||e[2]!==a||e[3]!==u||e[4]!==U?(T=[m,U,u,a],e[1]=m,e[2]=a,e[3]=u,e[4]=U,e[5]=T):T=e[5],c.useEffect(C,T);const I=g?"local-setup":m;if(I==="recovery"){let w;e[6]===Symbol.for("react.memo_cache_sentinel")?(w=()=>b(!0),e[6]=w):w=e[6];let v,j;e[7]===Symbol.for("react.memo_cache_sentinel")?(v=()=>b(!1),j=()=>{b(!1),S(!0)},e[7]=v,e[8]=j):(v=e[7],j=e[8]);let k;e[9]!==h?(k=()=>{S(!0),h?.()},e[9]=h,e[10]=k):k=e[10];let K;return e[11]!==R||e[12]!==s||e[13]!==a||e[14]!==u||e[15]!==U||e[16]!==y||e[17]!==k?(K=t.jsx(Ve,{variant:U,hostUrl:u,hostLabel:a,hostId:s,onChooseRemote:w,showRemoteForm:y,onCloseRemoteForm:v,onSwitchToLocalFromRemote:j,onEnterLocalSetup:k,localAvailable:R}),e[11]=R,e[12]=s,e[13]=a,e[14]=u,e[15]=U,e[16]=y,e[17]=k,e[18]=K):K=e[18],K}if(I==="local-setup"){let w;e[19]!==o||e[20]!==g?(w=()=>{g?S(!1):o?.()},e[19]=o,e[20]=g,e[21]=w):w=e[21];let v;e[22]===Symbol.for("react.memo_cache_sentinel")?(v=()=>b(!0),e[22]=v):v=e[22];let j;return e[23]!==r||e[24]!==g||e[25]!==w?(j=t.jsx(Me,{onBack:w,onCliAvailable:r,isFromRecovery:g,onSwitchToRemote:v}),e[23]=r,e[24]=g,e[25]=w,e[26]=j):j=e[26],j}let D;return e[27]!==R||e[28]!==r?(D=t.jsx(Ae,{onCliAvailable:r,localAvailable:R}),e[27]=R,e[28]=r,e[29]=D):D=e[29],D}export{ko as OnboardingScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ls as X,lx as Y,lF as Z}from"./useAppFontEffects-DGlvOqP_.js";import{g as U,a as nn,p as en}from"./parseDiffFromFile-BUgn-T9p.js";import{M as tn,G as rn,u as ln,W as on,b as un,c as R,n as z,a as H,t as sn}from"./Virtualizer-CGNyscoc.js";import{j as c,r as f}from"./vendor-react-BUCujlKS.js";import{c as cn}from"./isDiffPlainText-Dgbw8VKk.js";import{V as fn,F as an}from"./VirtualizedFileDiff-CFpjL8Ns.js";function dn({hunkIndex:n,lineIndex:t,conflictIndex:e}){return`merge-conflict-action-${n}-${t}-${e}`}function hn(n,t){const e=t.hunks[n.hunkIndex];if(e!=null)return{hunkIndex:n.hunkIndex,lineIndex:pn(e,n.startContentIndex)}}function pn(n,t){let e=n.unifiedLineStart;for(let r=0;r<t;r++){const i=n.hunkContent[r];e+=i.type==="context"?i.lines:i.deletions+i.additions}return e}function mn(n){const t=X(n);if(t.length!==1)throw console.error(t),new Error("PatchDiff: Provided patch must include only 1 patch, with 1 diff");const{files:e}=t[0];if(e.length!==1)throw console.error(e),new Error("FileDiff: Provided patch must contain exactly 1 file diff");return e[0]}function xn({fileDiff:n,actions:t,renderCustomHeader:e,renderHeaderPrefix:r,renderHeaderFilenameSuffix:i,renderHeaderMetadata:o,renderAnnotation:u,renderGutterUtility:a,renderMergeConflictUtility:w,lineAnnotations:A,getHoveredLine:g,getInstance:p,getAnnotationSlotName:S=U}){const E=e?.(n),D=r?.(n),x=i?.(n),F=o?.(n);return c.jsxs(c.Fragment,{children:[E!=null?c.jsx("div",{slot:Y,children:E}):c.jsxs(c.Fragment,{children:[D!=null&&c.jsx("div",{slot:"header-prefix",children:D}),x!=null&&c.jsx("div",{slot:"header-filename-suffix",children:x}),F!=null&&c.jsx("div",{slot:"header-metadata",children:F})]}),u!=null&&A?.map((s,m)=>c.jsx("div",{slot:S(s),children:u(s)},m)),t!=null&&w!=null&&p!=null&&t.map(s=>{if(s==null)return;const m=gn(s,n);return c.jsx("div",{slot:m,style:tn,children:w(s,p)},m)}),a!=null&&c.jsx("div",{slot:"gutter-utility-slot",style:rn,children:a(g)})]})}function gn(n,t){const e=hn(n,t);return e!=null?dn({hunkIndex:e.hunkIndex,lineIndex:e.lineIndex,conflictIndex:n.conflictIndex}):void 0}const En=typeof window>"u"?f.useEffect:f.useLayoutEffect;function Dn({fileDiff:n,oldFile:t,newFile:e,options:r,editorOptions:i,editStateKey:o,lineAnnotations:u,selectedLines:a,prerenderedHTML:w,metrics:A,hasGutterRenderUtility:g,hasCustomHeader:p,disableWorkerPool:S,edit:E,onEditChange:D,onEditComplete:x}){const F=ln(),s=a!==void 0,m=f.useContext(on),y=un(),[C,O]=f.useState(),_=R(l=>D?.(l)),P=D!=null?_:void 0,j=f.useRef(null),G=R(l=>{const I=x?.(l)??"reject";return I==="accept"&&(j.current={fileDiff:{installed:l.fileDiff,stale:l.originalFileDiff},filePair:n==null?{fileDiff:l.fileDiff,installed:{oldFile:l.oldFile,newFile:l.newFile},stale:{oldFile:t??null,newFile:e??null}}:null,annotations:{installed:l.lineAnnotations,stale:l.originalLineAnnotations}}),I}),L=x!=null?G:void 0,M=Fn({acceptedCache:j,fileDiff:n,newFile:e,oldFile:t,parseDiffOptions:r?.parseDiffOptions}),d=f.useRef(null),v=f.useRef(null),h=f.useRef(null),W=R(()=>{if(y==null)throw new Error("FileDiff: EditContext is not attached");return y("file-diff",i??{},o)}),B=R(l=>{if(l!=null){if(d.current!=null)throw new Error("useFileDiffInstance: An instance should not already exist when a node is created");F!=null?d.current=new fn(b({controlledSelection:s,hasCustomHeader:p,hasGutterRenderUtility:g,onEditChange:P,onEditComplete:L,options:r}),F,A,S?void 0:m,!0):d.current=new an(b({controlledSelection:s,hasCustomHeader:p,hasGutterRenderUtility:g,onEditChange:P,onEditComplete:L,options:r}),S?void 0:m,!0),d.current.hydrate({fileDiff:M,fileContainer:l,lineAnnotations:u,prerenderedHTML:w})}else{if(d.current==null)throw new Error("useFileDiffInstance: A FileDiff instance should exist when unmounting");h.current=null,d.current.cleanUp(),d.current=null,v.current=null}});En(()=>{const{current:l}=d;if(l==null)return;const I=b({controlledSelection:s,hasCustomHeader:p,hasGutterRenderUtility:g,onEditChange:P,onEditComplete:L,options:r}),Q=I!==void 0&&!nn(l.options,I);if(l.setOptions(I),!E&&(h.current=null,v.current!=null)){const{current:V}=v;v.current=null,V()}const T=vn(M,u,j);if(l.render({forceRender:Q,fileDiff:T.fileDiff,lineAnnotations:T.lineAnnotations}),a!==void 0&&l.setSelectedLines(a),!E||v.current!=null)return;if(y==null)throw new Error("FileDiff: EditContext is not attached");const q=()=>{d.current!==l||v.current!=null||!l.__canAttachEditor()||(v.current=wn(l,W))};if(l.__canAttachEditor()){h.current=null,q();return}const k=l.__prepareForEditing();if(k==null){h.current=null;return}if(h.current?.promise===k)return;const N={promise:k};h.current=N,k.then(()=>{h.current===N&&(q(),h.current=null)}).catch(V=>{h.current===N&&(h.current=null,O(V))})});const J=f.useCallback(()=>d.current?.getHoveredLine(),[]),K=f.useCallback(l=>d.current?.getAnnotationSlotName(l)??U(l),[]);if(C!=null)throw C;return{fileDiff:M,ref:B,getHoveredLine:J,getAnnotationSlotName:K}}function Fn({acceptedCache:n,fileDiff:t,newFile:e,oldFile:r,parseDiffOptions:i}){return f.useMemo(()=>{if(t!=null)return t;const{current:o}=n,u=o?.filePair;if(o!=null&&u!=null){if($(r,e,u.stale)||$(r,e,u.installed))return u.fileDiff;o.filePair=null}return en(r??null,e??null,i)},[n,t,r,e,i])}function $(n,t,e){return H(n??void 0,e.oldFile??void 0)&&H(t??void 0,e.newFile??void 0)}function vn(n,t,e){const{current:r}=e;if(r==null)return{fileDiff:n,lineAnnotations:t};const{fileDiff:i,annotations:o}=r;let u=n;i!=null&&(cn(n,i.stale)?u=i.installed:r.fileDiff=null);let a=t;return o!=null&&(t===o.stale?a=o.installed:r.annotations=null),r.fileDiff==null&&r.annotations==null&&r.filePair==null&&(e.current=null),{fileDiff:u,lineAnnotations:a}}function b({options:n,controlledSelection:t,hasCustomHeader:e,hasGutterRenderUtility:r,onEditChange:i,onEditComplete:o}){return t||r||e||i!=null||o!=null?{...n,controlledSelection:t,renderCustomHeader:e?z:n?.renderCustomHeader,renderGutterUtility:r?z:n?.renderGutterUtility,onEditChange:i,onEditComplete:o}:n}function wn(n,t){const e=t();try{return e.edit(n)}catch(r){throw e.cleanUp(),r}}function kn({patch:n,options:t,editorOptions:e,editStateKey:r,metrics:i,lineAnnotations:o,selectedLines:u,className:a,style:w,prerenderedHTML:A,renderAnnotation:g,renderCustomHeader:p,renderHeaderPrefix:S,renderHeaderFilenameSuffix:E,renderHeaderMetadata:D,renderGutterUtility:x,disableWorkerPool:F=!1,edit:s=!1,onEditChange:m,onEditComplete:y}){const C=An(n),{ref:O,getHoveredLine:_,getAnnotationSlotName:P}=Dn({fileDiff:C,options:t,editorOptions:e,editStateKey:r,metrics:i,lineAnnotations:o,selectedLines:u,prerenderedHTML:A,hasGutterRenderUtility:x!=null,hasCustomHeader:p!=null,disableWorkerPool:F,edit:s,onEditChange:m,onEditComplete:y}),j=xn({fileDiff:C,renderCustomHeader:p,renderHeaderPrefix:S,renderHeaderFilenameSuffix:E,renderHeaderMetadata:D,renderAnnotation:g,lineAnnotations:o,renderGutterUtility:x,getHoveredLine:_,getAnnotationSlotName:P});return c.jsx(Z,{ref:O,className:a,style:w,children:sn(j,A)})}function An(n){return f.useMemo(()=>mn(n),[n])}export{kn as P};
|