@openchambery/web 1.18.2-beta.28 → 1.18.2-beta.29
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/dist/assets/AssistantView-Coj_BqNe.js +1 -0
- package/dist/assets/{ChatContainer-BMpzhPmB.js → ChatContainer-rXg0ZK5d.js} +23 -23
- package/dist/assets/{DiagramView-CrTRX9Y-.js → DiagramView-CmN3auk-.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-DfxE7s_1.js → MarkdownRendererImpl-BdH1ynSb.js} +2 -2
- package/dist/assets/{MobileDetailNavigation-C2LwNG8B.js → MobileDetailNavigation-DpfpKgPu.js} +1 -1
- package/dist/assets/MobileShareBridge-d58Vzm3O.js +4 -0
- package/dist/assets/MobileSurface-S6hr1_7p.js +2 -0
- package/dist/assets/{MultiRunWindow-AtCafW3t.js → MultiRunWindow-C4Ike8AX.js} +1 -1
- package/dist/assets/{OnboardingScreen-CYeRZznl.js → OnboardingScreen-CW21rCqC.js} +1 -1
- package/dist/assets/OverlayScrollbar-BsFmRX3b.js +1 -0
- package/dist/assets/{SettingsView-DAbUmMO3.js → SettingsView-DLxzV2rK.js} +12 -11
- package/dist/assets/{SettingsWindow-CF87lKID.js → SettingsWindow-B-iCDv5r.js} +1 -1
- package/dist/assets/{TerminalView-95i-ukyJ.js → TerminalView-jsjZJ-hn.js} +1 -1
- package/dist/assets/{ToolOutputDialog-6dyRcTiq.js → ToolOutputDialog-RCrRpjSt.js} +1 -1
- package/dist/assets/appThemeRegistry-CnlbpoIa.js +2 -0
- package/dist/assets/capgoAdapter-LvGrONDp.js +1 -0
- package/dist/assets/{clipboard-BnElHSnO.js → clipboard-ByPKHEt8.js} +1 -1
- package/dist/assets/{context-menu-C0ReF3zt.js → context-menu-CvnY05Eg.js} +1 -1
- package/dist/assets/{dialog-COrLBm9O.js → dialog-CQLvE6F6.js} +1 -1
- package/dist/assets/{es-DIVYdoxi.js → es-ZHyqPb3M.js} +1 -1
- package/dist/assets/{fr-CNTlVypq.js → fr-nXAAl4qu.js} +1 -1
- package/dist/assets/{gitApi-BHEXs_kS.js → gitApi-itjXkp9E.js} +6 -6
- package/dist/assets/insertionBoundaries-BumXctlh.js +1 -0
- package/dist/assets/{ja-C_eW5ZM8.js → ja-CLcxQZ5K.js} +1 -1
- package/dist/assets/{ko-CE3cOv7v.js → ko-KgjBt0nP.js} +1 -1
- package/dist/assets/main-BWyu53zj.js +172 -0
- package/dist/assets/main-Drfmhboy.js +2 -0
- package/dist/assets/miniChat-CC3awYO5.js +2 -0
- package/dist/assets/mobile-DbOR4vtC.js +2 -0
- package/dist/assets/multirun-CrlXzIhD.js +4 -0
- package/dist/assets/{pl-BZKZOE99.js → pl-ZJkD7N-8.js} +1 -1
- package/dist/assets/platform-G8Cxe5wN.js +2 -0
- package/dist/assets/{projectMeta-BXvk9v0Y.js → projectMeta-C-VsUy14.js} +1 -1
- package/dist/assets/{pt-BR-DHDgp8S3.js → pt-BR-B6nleSMM.js} +1 -1
- package/dist/assets/{radio-Bz3wW90q.js → radio-CaoU7Lu-.js} +1 -1
- package/dist/assets/renderElectronMiniChatApp-BX-vxTMr.js +2 -0
- package/dist/assets/renderMobileApp-CSH0JwGO.js +23 -0
- package/dist/assets/runtimeConfig-D6Btfpc2.js +2 -0
- package/dist/assets/runtimeEndpointReset-DfILEKXr.js +145 -0
- package/dist/assets/{sortable-tabs-strip-DA7w0nsV.js → sortable-tabs-strip-DULPi5Jt.js} +1 -1
- package/dist/assets/{src-7UHu0sNZ.css → src-F6gEZAFJ.css} +1 -1
- package/dist/assets/{store-CUWqzRt7.js → store-BDxgw-Hx.js} +2 -2
- package/dist/assets/terminalApi-os4uWEou.js +1 -0
- package/dist/assets/types-BuiqMmh_.js +1 -0
- package/dist/assets/{uk-CfQK6cz1.js → uk-KTDMzdyl.js} +1 -1
- package/dist/assets/{useAppFontEffects-CXaNayQ6.js → useAppFontEffects-DGq7jjOF.js} +5 -5
- package/dist/assets/{useDesktopWindowControlsLayout-DetZi3js.js → useDesktopWindowControlsLayout-DzesmOSh.js} +1 -1
- package/dist/assets/useEffectiveDirectory-BR3d8iyN.js +1 -0
- package/dist/assets/{useFontPreferences-92Qg-98H.js → useFontPreferences-B2QwnhAp.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-BNXbEV2M.js → useMobileNavigationStore-BSreVaq2.js} +11 -11
- package/dist/assets/useSessionAutoCleanup-BNXZ_4Tj.js +1 -0
- package/dist/assets/{useWorkerHighlightedLines-B4w2EJ5y.js → useWorkerHighlightedLines-BCqkyru3.js} +1 -1
- package/dist/assets/{zh-CN-DvY2fKWp.js → zh-CN-BilLDIh_.js} +1 -1
- package/dist/assets/{zh-TW-eWe0lm3-.js → zh-TW-DBDsyRLQ.js} +1 -1
- package/dist/index.html +7 -5
- package/dist/mini-chat.html +7 -5
- package/dist/mobile.html +7 -5
- package/package.json +1 -1
- package/dist/assets/AssistantView-B34kl4il.js +0 -1
- package/dist/assets/MobileShareBridge-DqhQSf8z.js +0 -4
- package/dist/assets/MobileSurface-C2silN2X.js +0 -2
- package/dist/assets/OverlayScrollbar-Dk1uExgz.js +0 -1
- package/dist/assets/appThemeRegistry-CCk0bHI-.js +0 -2
- package/dist/assets/gitApiHttp-BxGAFLTf.js +0 -2
- package/dist/assets/insertionBoundaries-DbDVnbDC.js +0 -1
- package/dist/assets/main-DvKUAYFu.js +0 -172
- package/dist/assets/main-L6WiOyvO.js +0 -2
- package/dist/assets/miniChat-C9jmbnFh.js +0 -2
- package/dist/assets/mobile-BOin_sXb.js +0 -2
- package/dist/assets/multirun-D-6xkHW1.js +0 -4
- package/dist/assets/renderElectronMiniChatApp-BjJgTBYX.js +0 -2
- package/dist/assets/renderMobileApp-C1Mx2Onb.js +0 -23
- package/dist/assets/runtimeConfig-BXCt7ZsQ.js +0 -1
- package/dist/assets/runtimeEndpointReset-Bpu5TCuK.js +0 -145
- package/dist/assets/terminalApi-DpiAJlil.js +0 -1
- package/dist/assets/useEffectiveDirectory-B45LYDwZ.js +0 -1
- package/dist/assets/useSessionAutoCleanup-DoCX9MkG.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={"settings.globalConfig.title":`Configuration globale`,"settings.globalConfig.description":`Modifiez les fichiers de configuration actifs dans ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Recharger le fichier`,"settings.globalConfig.restartHint":`Redémarrez OpenCode après l’enregistrement pour appliquer les modifications de configuration.`,"settings.globalConfig.toast.loadFailed":`Échec du chargement du fichier de configuration`,"settings.globalConfig.toast.saveFailed":`Échec de l’enregistrement du fichier de configuration`,"settings.globalConfig.toast.saved":`Configuration enregistrée. Redémarrez OpenCode pour l’appliquer.`,"settings.providers.page.openCodeGo.title":`Suivi de l’utilisation d’OpenCode Go`,"settings.providers.page.openCodeGo.description":`Connectez le tableau de bord OpenCode Go pour afficher les quotas glissant, hebdomadaire et mensuel.`,"settings.providers.page.openCodeGo.workspaceId":`ID de l’espace de travail`,"settings.providers.page.openCodeGo.authCookie":`Cookie d’authentification`,"settings.providers.page.openCodeGo.help":`Copiez l’ID depuis l’URL du tableau de bord et le cookie auth depuis les outils du navigateur. OpenChamber n’analyse jamais les cookies du navigateur.`,"settings.providers.page.openCodeGo.save":`Enregistrer et valider`,"settings.providers.page.openCodeGo.replace":`Remplacer`,"settings.providers.page.openCodeGo.validate":`Valider`,"settings.providers.page.openCodeGo.delete":`Supprimer`,"settings.providers.page.quotaCredentials.saved":`Identifiants de {provider} enregistrés.`,"settings.providers.page.openCodeGo.saveFailed":`Impossible de valider les identifiants OpenCode Go.`,"settings.providers.page.openCodeGo.valid":`Les identifiants OpenCode Go sont valides.`,"settings.providers.page.openCodeGo.invalid":`Les identifiants OpenCode Go sont invalides ou expirés.`,"settings.providers.page.openCodeGo.deleted":`Identifiants OpenCode Go supprimés.`,"settings.providers.page.openCodeGo.deleteFailed":`Impossible de supprimer les identifiants OpenCode Go.`,"settings.appearance.language.label":`Langue`,"settings.appearance.language.description":`Choisissez la langue de l'interface.`,"settings.appearance.language.select":`Sélectionnez la langue`,"settings.window.description":`Fenêtre des paramètres OpenChamber.`,"settings.view.home.title":`Paramètres`,"settings.view.home.description":`Accédez aux pages communes.`,"settings.view.home.cards.providers.title":`Fournisseurs`,"settings.view.home.cards.providers.description":`Connecter les modèles + les identifiants`,"settings.view.home.cards.agents.title":`Agents`,"settings.view.home.cards.agents.description":`Invites, outils, autorisations`,"settings.view.home.cards.skillsCatalog.title":`Catalogue de skills`,"settings.view.home.cards.skillsCatalog.description":`Installer des skills depuis des catalogues`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Configurer les serveurs MCP + connexions`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Gérer les plugins OpenCode`,"settings.view.home.cards.usage.title":`Usage`,"settings.view.home.cards.usage.description":`Quota + visibilité des dépenses`,"settings.view.unavailable.title":`Pas disponible`,"settings.view.unavailable.description":`Cette page de paramètres n'est pas disponible dans ce runtime.`,"settings.view.badge.beta":`bêta`,"settings.view.actions.reloadOpenCode":`Recharger OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Redémarrez OpenCode et rechargez sa configuration.`,"settings.view.actions.backToSettings":`Retour aux paramètres`,"settings.view.actions.closeSettings":`Fermer les paramètres`,"settings.view.actions.openSectionList":`Ouvrir la liste des sections`,"settings.view.actions.closeSettingsWithShortcut":`Fermer les paramètres ({shortcut}+,)`,"settings.view.actions.back":`Retour`,"settings.view.actions.resizeNavigation":`Redimensionner la navigation dans les paramètres`,"settings.view.navigation.groups.connection":`Connexion`,"settings.view.navigation.groups.personalization":`Personnalisation`,"settings.view.navigation.groups.workspace":`Espace de travail`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Contenu et automatisation`,"settings.view.navigation.groups.system":`Système`,"settings.page.projects.title":`Projets`,"settings.page.remoteInstances.title":`Instances distantes`,"settings.page.providers.title":`Fournisseurs`,"settings.page.usage.title":`Usage`,"settings.page.agents.title":`Agents`,"settings.page.commands.title":`Commandes`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Skills`,"settings.page.skillsCatalog.title":`Catalogue de skills`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Apparence`,"settings.page.chat.title":`Chat`,"settings.page.shortcuts.title":`Raccourcis`,"settings.page.sessions.title":`Sessions`,"settings.page.summaryAI.title":`Résumés IA`,"settings.page.magicPrompts.title":`Prompts magiques`,"settings.page.notifications.title":`Notifications`,"settings.page.voice.title":`Voix`,"settings.page.snippets.title":`Extraits`,"settings.snippets.sidebar.title":`Extraits`,"settings.snippets.sidebar.total":`Total : {count}`,"settings.snippets.sidebar.actions.create":`Créer un extrait`,"settings.snippets.sidebar.actions.more":`Plus de propositions pour {name}`,"settings.snippets.sidebar.toast.deleted":`Extrait supprimé`,"settings.snippets.sidebar.toast.deleteFailed":`Échec de la suppression de l'extrait`,"settings.snippets.sidebar.dialog.deleteTitle":`Supprimer l'extrait ?`,"settings.snippets.sidebar.dialog.deleteDescription":`Cela supprimera définitivement #{name}.`,"settings.snippets.page.empty.title":`Sélectionnez un extrait`,"settings.snippets.page.empty.description":`Choisissez un extrait dans la barre latérale pour le modifier.`,"settings.snippets.page.title.new":`Nouvel extrait`,"settings.snippets.page.field.namePlaceholder":`nom de l'extrait`,"settings.snippets.page.field.descriptionPlaceholder":`À quoi sert cet extrait`,"settings.snippets.page.field.aliases":`Alias`,"settings.snippets.page.field.aliasesPlaceholder":`en sécurité, prudent`,"settings.snippets.page.field.content":`Contenu`,"settings.snippets.page.field.contentPlaceholder":`Markdown de l'extrait...`,"settings.snippets.page.hint":`Utilisez #name dans les prompts. Prend en charge les alias et les blocs de pré-ajout/ajout compatibles avec les extraits de code opencode.`,"settings.snippets.page.toast.nameRequired":`Le nom de l'extrait est obligatoire`,"settings.snippets.page.toast.contentRequired":`Le contenu de l'extrait est requis`,"settings.snippets.page.toast.saveFailed":`Échec de l'enregistrement de l'extrait`,"settings.snippets.page.toast.saved":`Extrait enregistré`,"settings.page.promptTemplates.title":`Modèles de prompt`,"settings.promptTemplates.sidebar.title":`Modèles de prompt`,"settings.promptTemplates.sidebar.total":`Total : {count}`,"settings.promptTemplates.sidebar.empty.title":`Aucun modèle de prompt`,"settings.promptTemplates.sidebar.empty.description":`Créez un modèle de prompt pour commencer.`,"settings.promptTemplates.sidebar.toast.deleted":`Modèle "{name}" supprimé`,"settings.promptTemplates.sidebar.toast.deleteFailed":`Échec de la suppression du modèle`,"settings.promptTemplates.sidebar.toast.nameRequired":`Le nom du modèle est obligatoire`,"settings.promptTemplates.sidebar.toast.renamed":`Modèle renommé`,"settings.promptTemplates.sidebar.toast.renameFailed":`Échec du changement de nom du modèle`,"settings.promptTemplates.sidebar.dialog.deleteTitle":`Supprimer le modèle ?`,"settings.promptTemplates.sidebar.dialog.deleteDescription":`Cela supprimera définitivement "{name}". Cette action ne peut pas être annulée.`,"settings.promptTemplates.sidebar.renameDialog.title":`Renommer le modèle`,"settings.promptTemplates.sidebar.renameDialog.description":`Entrez un nouveau nom pour "{name}".`,"settings.promptTemplates.sidebar.renameDialog.placeholder":`Nom du modèle`,"settings.promptTemplates.sidebar.badge.default":`défaut`,"settings.promptTemplates.page.empty.title":`Sélectionnez un modèle`,"settings.promptTemplates.page.empty.description":`Choisissez un modèle dans la barre latérale pour le modifier.`,"settings.promptTemplates.page.title.new":`Nouveau modèle`,"settings.promptTemplates.page.subtitle.edit":`Modifier le modèle`,"settings.promptTemplates.page.subtitle.new":`Créer un nouveau modèle de prompt`,"settings.promptTemplates.page.section.identity":`Identité`,"settings.promptTemplates.page.field.name":`Nom`,"settings.promptTemplates.page.field.namePlaceholder":`Nom du modèle`,"settings.promptTemplates.page.section.template":`Modèle`,"settings.promptTemplates.page.field.templatePlaceholder":`Saisissez le texte du modèle de prompt...`,"settings.promptTemplates.page.templateHint":`Ce texte sera ajouté au début du prompt de l'utilisateur lorsqu'il est sélectionné dans un groupe multi-run.`,"settings.promptTemplates.page.toast.nameRequired":`Le nom du modèle est obligatoire`,"settings.promptTemplates.page.toast.updated":`Modèle mis à jour`,"settings.promptTemplates.page.toast.updateFailed":`Échec de la mise à jour du modèle`,"settings.promptTemplates.page.toast.created":`Modèle créé`,"settings.promptTemplates.page.toast.createFailed":`Échec de la création du modèle`,"settings.promptTemplates.page.toast.saveUnexpectedError":`Une erreur inattendue s'est produite lors de l'enregistrement`,"settings.magicPrompts.sidebar.title":`Prompts magiques`,"settings.magicPrompts.sidebar.description":`Sélectionnez un modèle de prompt à modifier.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`Planification`,"settings.magicPrompts.sidebar.group.session":`Session`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Génération de commit`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`Génération de PR`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Résolution des conflits de fusion/rebase`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Résolution des conflits par sélection`,"settings.magicPrompts.sidebar.item.githubPrReview":`Revue de PR`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Examen du problème`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`Examen des checks PR en échec`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`Examen des commentaires PR`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Examen des commentaires PR uniques`,"settings.magicPrompts.sidebar.item.planTodo":`Planification des tâches`,"settings.magicPrompts.sidebar.item.planImprove":`Améliorer le plan`,"settings.magicPrompts.sidebar.item.planImplement":`Plan de mise en œuvre`,"settings.magicPrompts.sidebar.item.sessionSummary":`Résumé de la session`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Examen de l'espace de travail`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Instances distantes`,"settings.remoteInstances.sidebar.description":`Connectez-vous à d’autres serveurs OpenChamber via un lien d’import ou SSH.`,"settings.remoteInstances.sidebar.empty":`Aucune instance distante pour le moment. Importez un lien ou ajoutez une connexion SSH.`,"settings.remoteInstances.channel.link":`Lien`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Total {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`Nouvelle instance SSH`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Ajouter une instance SSH`,"settings.remoteInstances.sidebar.actions.connect":`Connecter`,"settings.remoteInstances.sidebar.actions.disconnect":`Déconnecter`,"settings.remoteInstances.sidebar.actions.retry":`Réessayer`,"settings.remoteInstances.sidebar.actions.remove":`Retirer`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`Le port local est déjà utilisé. Choisir un port local gratuit et réessayer ?`,"settings.remoteInstances.sidebar.toast.createFailed":`Échec de la création de l'instance SSH`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Réessayé avec un port local aléatoire`,"settings.remoteInstances.sidebar.toast.connectFailed":`Échec de la connexion de l'instance`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`Échec de la déconnexion de l'instance`,"settings.remoteInstances.sidebar.toast.retryFailed":`Échec de la nouvelle tentative de connexion`,"settings.remoteInstances.sidebar.toast.removeFailed":`Échec de la suppression de l'instance`,"settings.remoteInstances.sidebar.phase.ready":`Prêt`,"settings.remoteInstances.sidebar.phase.error":`Erreur`,"settings.remoteInstances.sidebar.phase.reconnect":`Reconnecter`,"settings.remoteInstances.sidebar.phase.installing":`Installation`,"settings.remoteInstances.sidebar.phase.updating":`Mise à jour`,"settings.remoteInstances.sidebar.phase.forwarding":`Transfert`,"settings.remoteInstances.sidebar.phase.starting":`Démarrage`,"settings.remoteInstances.sidebar.phase.connecting":`Connexion`,"settings.remoteInstances.sidebar.phase.idle":`Inactif`,"settings.remoteInstances.page.section.instance":`Instance`,"settings.remoteInstances.page.section.instanceDescription":`Paramètres de base du SSH.`,"settings.remoteInstances.page.field.mode":`Mode`,"settings.remoteInstances.page.field.modeHint":`Installations/mises à jour gérées et démarrage de OpenChamber à distance. Externe suppose qu'il est déjà en cours d'exécution.`,"settings.remoteInstances.page.field.modePlaceholder":`Sélectionnez le mode`,"settings.remoteInstances.page.field.modeManaged":`Géré (démarrage automatique)`,"settings.remoteInstances.page.field.modeExternal":`Externe (déjà en cours d'exécution)`,"settings.remoteInstances.page.field.preferredRemotePort":`Port distant préféré`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Le port OpenChamber doit être utilisé sur l'hôte distant. Laissez vide pour laisser le runtime choisir.`,"settings.remoteInstances.page.field.keepServerRunning":`Maintenir le serveur en marche`,"settings.remoteInstances.page.field.keepServerRunningHint":`S'il est activé, le démon OpenChamber continue de s'exécuter à distance lorsque vous vous déconnectez.`,"settings.remoteInstances.page.field.bindHost":`Lier l'hôte`,"settings.remoteInstances.page.field.bindHostHint":`Interface réseau pour l’URL locale principale. Utilisez 127.0.0.1/localhost pour un accès uniquement local.`,"settings.remoteInstances.page.field.preferredLocalPort":`Port local préféré`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Port local préféré pour le tunnel principal OpenChamber. Laissez vide pour la sélection automatique.`,"settings.remoteInstances.page.field.forwardType":`Type de transfert`,"settings.remoteInstances.page.field.localListen":`Écoute locale`,"settings.remoteInstances.page.field.localTarget":`Cible locale`,"settings.remoteInstances.page.field.remoteListen":`Écoute distante`,"settings.remoteInstances.page.field.remoteTarget":`Cible distante`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Auto`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`La liaison à 0.0.0.0 expose les ports transférés à votre réseau local. Continuer?`,"settings.remoteInstances.page.preview.localSocks5":`(SOCKS5 local)`,"settings.remoteInstances.page.preview.local":`(local)`,"settings.remoteInstances.page.preview.remote":`(hôte distant)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`Échec de l'ouverture du point de terminaison local`,"settings.remoteInstances.page.toast.localUrlCopied":`URL locale copiée`,"settings.remoteInstances.page.actions.copyLocalUrl":`Copier l’URL locale`,"settings.remoteInstances.page.actions.open":`Ouvrir`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Instance sélectionnée`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} nécessite une destination concrète.`,"settings.remoteInstances.page.patternDialog.description":`Entrez la destination.`,"settings.common.actions.cancel":`Annuler`,"settings.common.actions.create":`Créer`,"settings.common.actions.delete":`Supprimer`,"settings.common.actions.reset":`Réinitialiser`,"settings.common.actions.rename":`Rebaptiser`,"settings.common.actions.duplicate":`Dupliquer`,"settings.common.actions.import":`Importer`,"settings.common.actions.copyAll":`Copier tout`,"settings.common.actions.clear":`Effacer`,"settings.common.actions.saving":`Enregistrement...`,"settings.common.actions.saveChanges":`Enregistrer les modifications`,"settings.common.scope.global":`Mondial`,"settings.common.scope.project":`Projet`,"settings.common.field.description":`Description`,"settings.common.badge.new":`Nouveau`,"settings.common.badge.modified":`Modifié`,"settings.common.permission.allow":`Permettre`,"settings.common.permission.ask":`Demander`,"settings.common.permission.deny":`Refuser`,"settings.common.state.comingSoon":`À venir...`,"settings.projects.actions.title":`Actions`,"settings.projects.actions.description":`Commandes par projet affichées dans l'en-tête à côté du nom du projet.`,"settings.projects.actions.validation.fillNameAndCommand":`Remplissez le nom de l'action et la commande avant d'enregistrer.`,"settings.projects.actions.state.loading":`Chargement...`,"settings.projects.actions.state.empty":`Aucune action configurée pour le moment.`,"settings.projects.actions.state.untitled":`Action sans titre`,"settings.projects.actions.state.noDesktopSshForwards":`Aucun transfert local SSH activé disponible.`,"settings.projects.actions.field.selectIconAria":`Sélectionner l'icône`,"settings.projects.actions.field.iconAria":`Icône {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Nom de l'action`,"settings.projects.actions.field.command":`Commande`,"settings.projects.actions.field.commandPlaceholder":`p. ex. bun install`,"settings.projects.actions.field.autoOpenUrl":`Ouverture automatique de l’URL`,"settings.projects.actions.field.autoOpenUrlForAria":`Ouverture automatique de l’URL pour {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Ouvrir l’URL détectée dans la sortie, ou l’URL personnalisée ci-dessous`,"settings.projects.actions.field.overrideUrlPlaceholder":`Remplacer URL (facultatif)`,"settings.projects.actions.field.overrideUrlTooltip":`Si ce champ est rempli, l’URL personnalisée est utilisée. Sinon, l'application ouvre la meilleure URL détectée dans la sortie.`,"settings.projects.actions.field.desktopSshForward":`Transfert SSH local`,"settings.projects.actions.field.useOutputManualUrl":`Utiliser l’URL de sortie ou l’URL manuelle`,"settings.projects.actions.actions.add":`Ajouter une action`,"settings.projects.actions.actions.save":`Enregistrer les actions`,"settings.projects.actions.toast.saveFailed":`Échec de l'enregistrement des actions`,"settings.projects.actions.toast.saved":`Actions du projet enregistrées`,"settings.openchamber.about.title":`À propos de OpenChamber`,"settings.openchamber.about.field.version":`Version`,"settings.openchamber.about.field.clientVersion":`Client`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.state.checking":`Vérification...`,"settings.openchamber.about.state.upToDate":`À jour`,"settings.openchamber.about.actions.checkUpdates":`Vérifier les mises à jour`,"settings.openchamber.about.actions.update":`Mise à jour`,"settings.openchamber.about.actions.updateToVersion":`Mise à jour vers {version}`,"settings.openchamber.about.actions.checkForUpdates":`Vérifier les mises à jour`,"settings.openchamber.about.toast.latestVersion":`Vous êtes sur la dernière version`,"settings.openchamber.about.toast.checkFailed":`Impossible de vérifier les mises à jour`,"settings.openchamber.about.diagnostics.label":`Journal de diagnostic`,"settings.openchamber.about.diagnostics.description":`Exporte les feat de diagnostic locaux pour analyser les problèmes d’affichage et de synchronisation. Aucun corps de message ni jeton n’est inclus.`,"settings.openchamber.about.diagnostics.export":`Exporter le journal`,"settings.openchamber.about.diagnostics.exporting":`Exportation…`,"settings.openchamber.about.diagnostics.enable":`Enregistrer les feat de diagnostic`,"settings.openchamber.about.diagnostics.enableHint":`Disponible dans les versions bêta. Enregistre sur cet appareil le cycle de synchronisation et d’affichage de la session, sans le corps du message.`,"settings.openchamber.about.diagnostics.toast.exported":`Journal de diagnostic exporté`,"settings.openchamber.about.diagnostics.toast.failed":`Impossible d’exporter le journal de diagnostic`,"settings.openchamber.about.diagnostics.toast.empty":`Journal de diagnostic exporté. Aucun événement n’a encore été enregistré.`,"settings.agents.sidebar.title":`Agents`,"settings.agents.sidebar.total":`Total {count}`,"settings.agents.sidebar.empty.title":`Aucun agent configuré`,"settings.agents.sidebar.empty.description":`Utilisez le bouton + ci-dessus pour en créer un`,"settings.agents.sidebar.section.builtIn":`Agents intégrés`,"settings.agents.sidebar.section.custom":`Agents personnalisés`,"settings.agents.sidebar.badge.system":`système`,"settings.agents.sidebar.dialog.deleteTitle":`Supprimer un agent`,"settings.agents.sidebar.dialog.resetTitle":`Agent de réinitialisation`,"settings.agents.sidebar.dialog.deleteDescription":`Etes-vous sûr de vouloir supprimer l'agent "{name}" ?`,"settings.agents.sidebar.dialog.resetDescription":`Êtes-vous sûr de vouloir réinitialiser l'agent «\xA0{name}\xA0» à sa configuration par défaut ?`,"settings.agents.sidebar.renameDialog.title":`Renommer l'agent`,"settings.agents.sidebar.renameDialog.description":`Entrez un nouveau nom pour l'agent "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`Nouveau nom d'agent...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Les agents intégrés ne peuvent pas être supprimés`,"settings.agents.sidebar.toast.agentDeleted":`Agent "{name}" supprimé avec succès`,"settings.agents.sidebar.toast.agentReset":`Agent "{name}" réinitialisé aux valeurs par défaut`,"settings.agents.sidebar.toast.deleteFailed":`Échec de la suppression de l'agent`,"settings.agents.sidebar.toast.definitionNotFound":`Définition de l’agent introuvable. Aucune modification effectuée.`,"settings.agents.sidebar.toast.resetFailed":`Échec de la réinitialisation de l'agent`,"settings.agents.sidebar.toast.agentNameRequired":`Le nom de l'agent est requis`,"settings.agents.sidebar.toast.agentExists":`Un agent portant ce nom existe déjà`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`Échec de la suppression de l'ancien agent après le changement de nom`,"settings.agents.sidebar.toast.renameFailed":`Échec du changement de nom de l'agent`,"settings.agents.sidebar.toast.agentRenamed":`Agent renommé en "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Le nom de l'autorisation est requis`,"settings.agents.page.toast.created":`Agent créé avec succès`,"settings.agents.page.toast.updated":`Agent mis à jour avec succès`,"settings.agents.page.toast.createFailed":`Échec de la création de l'agent`,"settings.agents.page.toast.updateFailed":`Échec de la mise à jour de l'agent`,"settings.agents.page.toast.saveUnexpectedError":`Une erreur s'est produite lors de l'enregistrement`,"settings.agents.page.toast.savedManualRestart":`Enregistré sur le disque. Redémarrez votre serveur OpenCode connecté pour appliquer les modifications.`,"settings.agents.page.empty.title":`Sélectionnez un agent dans la barre latérale`,"settings.agents.page.empty.description":`ou créez-en un nouveau`,"settings.agents.page.title.new":`Nouvel agent`,"settings.agents.page.subtitle.new":`Configurer un nouveau personnage d'assistant`,"settings.agents.page.subtitle.edit":`Modifier les paramètres de l'agent`,"settings.agents.page.section.identityRole":`Identité et rôle`,"settings.agents.page.section.modelParameters":`Modèle et paramètres`,"settings.agents.page.section.systemPrompt":`Prompt système`,"settings.agents.page.section.toolPermissions":`Autorisations des outils`,"settings.agents.page.field.agentName":`Nom de l'agent`,"settings.agents.page.field.agentNamePlaceholder":`nom-agent`,"settings.agents.page.field.scopePlaceholder":`Portée`,"settings.agents.page.field.descriptionPlaceholder":`Que fait cet agent ?`,"settings.agents.page.field.mode":`Mode`,"settings.agents.page.field.modeTooltip":`Visibilité principale et sous-agent`,"settings.agents.page.field.overrideModel":`Remplacer le modèle`,"settings.agents.page.field.variant":`Variante de réflexion`,"settings.agents.page.field.variantTooltip":`Optionnel. Si le modèle prend en charge le raisonnement, la variante contrôle la profondeur du raisonnement.`,"settings.agents.page.field.variantHint":`Spécifique au modèle (par ex. variante Anthropic)`,"settings.agents.page.field.variantPlaceholder":`par ex. high, max, low, none`,"settings.agents.page.field.temperature":`Température`,"settings.agents.page.field.temperatureTooltip":`Contrôle le caractère aléatoire. Plus élevé = créatif, Inférieur = concentré.`,"settings.agents.page.field.temperatureRange":`0.0 à 2.0`,"settings.agents.page.field.clearTemperatureAria":`Effacer le remplacement de la température`,"settings.agents.page.field.topP":`Haut P`,"settings.agents.page.field.topPTooltip":`Diversité d'échantillonnage du noyau. Inférieur = jetons probables uniquement.`,"settings.agents.page.field.topPRange":`0.0 à 1.0`,"settings.agents.page.field.clearTopPAria":`Effacer le remplacement p supérieur`,"settings.agents.page.field.systemPromptPlaceholder":`Vous êtes un assistant expert en codage...`,"settings.agents.page.mode.primary":`Primaire`,"settings.agents.page.mode.subagent":`Sous-agent`,"settings.agents.page.mode.all":`Tous`,"settings.agents.page.permissions.defaultLabel":`Défaut`,"settings.agents.page.permissions.hideEditor":`Masquer l'éditeur`,"settings.agents.page.permissions.advancedEditor":`Éditeur avancé`,"settings.agents.page.permissions.globalSummary":`Mondial : {summary}`,"settings.agents.page.permissions.rulesSummary":`Règles : {summary}`,"settings.agents.page.permissions.globalDefault":`Valeur par défaut globale`,"settings.agents.page.permissions.pattern":`Modèle`,"settings.agents.page.permissions.addCustomRule":`Ajouter une règle personnalisée`,"settings.agents.page.permissions.permissionPlaceholder":`Autorisation...`,"settings.agents.page.permissions.patternPlaceholder":`Modèle (e.g. *)`,"settings.page.behavior.title":`Comportement`,"settings.behavior.page.title":`Comportement`,"settings.behavior.page.warning.title":`Les règles globales sont combinées avec les règles du projet`,"settings.behavior.page.warning.description":`Les modifications apportées ici mettent à jour {path}. OpenCode inclut également toutes les règles AGENTS.md au niveau du projet lorsqu'elles existent.`,"settings.behavior.page.section.systemPrompt":`Mondial AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`Vous êtes un assistant IA utile...
|
|
1
|
+
var e={"settings.globalConfig.title":`Configuration globale`,"settings.globalConfig.description":`Modifiez les fichiers de configuration actifs dans ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Recharger le fichier`,"settings.globalConfig.restartHint":`Redémarrez OpenCode après l’enregistrement pour appliquer les modifications de configuration.`,"settings.globalConfig.toast.loadFailed":`Échec du chargement du fichier de configuration`,"settings.globalConfig.toast.saveFailed":`Échec de l’enregistrement du fichier de configuration`,"settings.globalConfig.toast.saved":`Configuration enregistrée. Redémarrez OpenCode pour l’appliquer.`,"settings.providers.page.openCodeGo.title":`Suivi de l’utilisation d’OpenCode Go`,"settings.providers.page.openCodeGo.description":`Connectez le tableau de bord OpenCode Go pour afficher les quotas glissant, hebdomadaire et mensuel.`,"settings.providers.page.openCodeGo.workspaceId":`ID de l’espace de travail`,"settings.providers.page.openCodeGo.authCookie":`Cookie d’authentification`,"settings.providers.page.openCodeGo.help":`Copiez l’ID depuis l’URL du tableau de bord et le cookie auth depuis les outils du navigateur. OpenChamber n’analyse jamais les cookies du navigateur.`,"settings.providers.page.openCodeGo.save":`Enregistrer et valider`,"settings.providers.page.openCodeGo.replace":`Remplacer`,"settings.providers.page.openCodeGo.validate":`Valider`,"settings.providers.page.openCodeGo.delete":`Supprimer`,"settings.providers.page.quotaCredentials.saved":`Identifiants de {provider} enregistrés.`,"settings.providers.page.openCodeGo.saveFailed":`Impossible de valider les identifiants OpenCode Go.`,"settings.providers.page.openCodeGo.valid":`Les identifiants OpenCode Go sont valides.`,"settings.providers.page.openCodeGo.invalid":`Les identifiants OpenCode Go sont invalides ou expirés.`,"settings.providers.page.openCodeGo.deleted":`Identifiants OpenCode Go supprimés.`,"settings.providers.page.openCodeGo.deleteFailed":`Impossible de supprimer les identifiants OpenCode Go.`,"settings.appearance.language.label":`Langue`,"settings.appearance.language.description":`Choisissez la langue de l'interface.`,"settings.appearance.language.select":`Sélectionnez la langue`,"settings.window.description":`Fenêtre des paramètres OpenChamber.`,"settings.view.home.title":`Paramètres`,"settings.view.home.description":`Accédez aux pages communes.`,"settings.view.home.cards.providers.title":`Fournisseurs`,"settings.view.home.cards.providers.description":`Connecter les modèles + les identifiants`,"settings.view.home.cards.agents.title":`Agents`,"settings.view.home.cards.agents.description":`Invites, outils, autorisations`,"settings.view.home.cards.skillsCatalog.title":`Catalogue de skills`,"settings.view.home.cards.skillsCatalog.description":`Installer des skills depuis des catalogues`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Configurer les serveurs MCP + connexions`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Gérer les plugins OpenCode`,"settings.view.home.cards.usage.title":`Usage`,"settings.view.home.cards.usage.description":`Quota + visibilité des dépenses`,"settings.view.unavailable.title":`Pas disponible`,"settings.view.unavailable.description":`Cette page de paramètres n'est pas disponible dans ce runtime.`,"settings.view.badge.beta":`bêta`,"settings.view.actions.reloadOpenCode":`Recharger OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Redémarrez OpenCode et rechargez sa configuration.`,"settings.view.actions.backToSettings":`Retour aux paramètres`,"settings.view.actions.closeSettings":`Fermer les paramètres`,"settings.view.actions.openSectionList":`Ouvrir la liste des sections`,"settings.view.actions.closeSettingsWithShortcut":`Fermer les paramètres ({shortcut}+,)`,"settings.view.actions.back":`Retour`,"settings.view.actions.resizeNavigation":`Redimensionner la navigation dans les paramètres`,"settings.view.navigation.groups.connection":`Connexion`,"settings.view.navigation.groups.personalization":`Personnalisation`,"settings.view.navigation.groups.workspace":`Espace de travail`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Contenu et automatisation`,"settings.view.navigation.groups.system":`Système`,"settings.page.projects.title":`Projets`,"settings.page.remoteInstances.title":`Instances distantes`,"settings.page.providers.title":`Fournisseurs`,"settings.page.usage.title":`Usage`,"settings.page.agents.title":`Agents`,"settings.page.commands.title":`Commandes`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Skills`,"settings.page.skillsCatalog.title":`Catalogue de skills`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Apparence`,"settings.page.chat.title":`Chat`,"settings.page.shortcuts.title":`Raccourcis`,"settings.page.sessions.title":`Sessions`,"settings.page.summaryAI.title":`Résumés IA`,"settings.page.magicPrompts.title":`Prompts magiques`,"settings.page.notifications.title":`Notifications`,"settings.page.voice.title":`Voix`,"settings.page.snippets.title":`Extraits`,"settings.snippets.sidebar.title":`Extraits`,"settings.snippets.sidebar.total":`Total : {count}`,"settings.snippets.sidebar.actions.create":`Créer un extrait`,"settings.snippets.sidebar.actions.more":`Plus de propositions pour {name}`,"settings.snippets.sidebar.toast.deleted":`Extrait supprimé`,"settings.snippets.sidebar.toast.deleteFailed":`Échec de la suppression de l'extrait`,"settings.snippets.sidebar.dialog.deleteTitle":`Supprimer l'extrait ?`,"settings.snippets.sidebar.dialog.deleteDescription":`Cela supprimera définitivement #{name}.`,"settings.snippets.page.empty.title":`Sélectionnez un extrait`,"settings.snippets.page.empty.description":`Choisissez un extrait dans la barre latérale pour le modifier.`,"settings.snippets.page.title.new":`Nouvel extrait`,"settings.snippets.page.field.namePlaceholder":`nom de l'extrait`,"settings.snippets.page.field.descriptionPlaceholder":`À quoi sert cet extrait`,"settings.snippets.page.field.aliases":`Alias`,"settings.snippets.page.field.aliasesPlaceholder":`en sécurité, prudent`,"settings.snippets.page.field.content":`Contenu`,"settings.snippets.page.field.contentPlaceholder":`Markdown de l'extrait...`,"settings.snippets.page.hint":`Utilisez #name dans les prompts. Prend en charge les alias et les blocs de pré-ajout/ajout compatibles avec les extraits de code opencode.`,"settings.snippets.page.toast.nameRequired":`Le nom de l'extrait est obligatoire`,"settings.snippets.page.toast.contentRequired":`Le contenu de l'extrait est requis`,"settings.snippets.page.toast.saveFailed":`Échec de l'enregistrement de l'extrait`,"settings.snippets.page.toast.saved":`Extrait enregistré`,"settings.page.promptTemplates.title":`Modèles de prompt`,"settings.promptTemplates.sidebar.title":`Modèles de prompt`,"settings.promptTemplates.sidebar.total":`Total : {count}`,"settings.promptTemplates.sidebar.empty.title":`Aucun modèle de prompt`,"settings.promptTemplates.sidebar.empty.description":`Créez un modèle de prompt pour commencer.`,"settings.promptTemplates.sidebar.toast.deleted":`Modèle "{name}" supprimé`,"settings.promptTemplates.sidebar.toast.deleteFailed":`Échec de la suppression du modèle`,"settings.promptTemplates.sidebar.toast.nameRequired":`Le nom du modèle est obligatoire`,"settings.promptTemplates.sidebar.toast.renamed":`Modèle renommé`,"settings.promptTemplates.sidebar.toast.renameFailed":`Échec du changement de nom du modèle`,"settings.promptTemplates.sidebar.dialog.deleteTitle":`Supprimer le modèle ?`,"settings.promptTemplates.sidebar.dialog.deleteDescription":`Cela supprimera définitivement "{name}". Cette action ne peut pas être annulée.`,"settings.promptTemplates.sidebar.renameDialog.title":`Renommer le modèle`,"settings.promptTemplates.sidebar.renameDialog.description":`Entrez un nouveau nom pour "{name}".`,"settings.promptTemplates.sidebar.renameDialog.placeholder":`Nom du modèle`,"settings.promptTemplates.sidebar.badge.default":`défaut`,"settings.promptTemplates.page.empty.title":`Sélectionnez un modèle`,"settings.promptTemplates.page.empty.description":`Choisissez un modèle dans la barre latérale pour le modifier.`,"settings.promptTemplates.page.title.new":`Nouveau modèle`,"settings.promptTemplates.page.subtitle.edit":`Modifier le modèle`,"settings.promptTemplates.page.subtitle.new":`Créer un nouveau modèle de prompt`,"settings.promptTemplates.page.section.identity":`Identité`,"settings.promptTemplates.page.field.name":`Nom`,"settings.promptTemplates.page.field.namePlaceholder":`Nom du modèle`,"settings.promptTemplates.page.section.template":`Modèle`,"settings.promptTemplates.page.field.templatePlaceholder":`Saisissez le texte du modèle de prompt...`,"settings.promptTemplates.page.templateHint":`Ce texte sera ajouté au début du prompt de l'utilisateur lorsqu'il est sélectionné dans un groupe multi-run.`,"settings.promptTemplates.page.toast.nameRequired":`Le nom du modèle est obligatoire`,"settings.promptTemplates.page.toast.updated":`Modèle mis à jour`,"settings.promptTemplates.page.toast.updateFailed":`Échec de la mise à jour du modèle`,"settings.promptTemplates.page.toast.created":`Modèle créé`,"settings.promptTemplates.page.toast.createFailed":`Échec de la création du modèle`,"settings.promptTemplates.page.toast.saveUnexpectedError":`Une erreur inattendue s'est produite lors de l'enregistrement`,"settings.magicPrompts.sidebar.title":`Prompts magiques`,"settings.magicPrompts.sidebar.description":`Sélectionnez un modèle de prompt à modifier.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`Planification`,"settings.magicPrompts.sidebar.group.session":`Session`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Génération de commit`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`Génération de PR`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Résolution des conflits de fusion/rebase`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Résolution des conflits par sélection`,"settings.magicPrompts.sidebar.item.githubPrReview":`Revue de PR`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Examen du problème`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`Examen des checks PR en échec`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`Examen des commentaires PR`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Examen des commentaires PR uniques`,"settings.magicPrompts.sidebar.item.planTodo":`Planification des tâches`,"settings.magicPrompts.sidebar.item.planImprove":`Améliorer le plan`,"settings.magicPrompts.sidebar.item.planImplement":`Plan de mise en œuvre`,"settings.magicPrompts.sidebar.item.sessionSummary":`Résumé de la session`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Examen de l'espace de travail`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Instances distantes`,"settings.remoteInstances.sidebar.description":`Connectez-vous à d’autres serveurs OpenChamber via un lien d’import ou SSH.`,"settings.remoteInstances.sidebar.empty":`Aucune instance distante pour le moment. Importez un lien ou ajoutez une connexion SSH.`,"settings.remoteInstances.channel.link":`Lien`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Total {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`Nouvelle instance SSH`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Ajouter une instance SSH`,"settings.remoteInstances.sidebar.actions.connect":`Connecter`,"settings.remoteInstances.sidebar.actions.disconnect":`Déconnecter`,"settings.remoteInstances.sidebar.actions.retry":`Réessayer`,"settings.remoteInstances.sidebar.actions.remove":`Retirer`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`Le port local est déjà utilisé. Choisir un port local gratuit et réessayer ?`,"settings.remoteInstances.sidebar.toast.createFailed":`Échec de la création de l'instance SSH`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Réessayé avec un port local aléatoire`,"settings.remoteInstances.sidebar.toast.connectFailed":`Échec de la connexion de l'instance`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`Échec de la déconnexion de l'instance`,"settings.remoteInstances.sidebar.toast.retryFailed":`Échec de la nouvelle tentative de connexion`,"settings.remoteInstances.sidebar.toast.removeFailed":`Échec de la suppression de l'instance`,"settings.remoteInstances.sidebar.phase.ready":`Prêt`,"settings.remoteInstances.sidebar.phase.error":`Erreur`,"settings.remoteInstances.sidebar.phase.reconnect":`Reconnecter`,"settings.remoteInstances.sidebar.phase.installing":`Installation`,"settings.remoteInstances.sidebar.phase.updating":`Mise à jour`,"settings.remoteInstances.sidebar.phase.forwarding":`Transfert`,"settings.remoteInstances.sidebar.phase.starting":`Démarrage`,"settings.remoteInstances.sidebar.phase.connecting":`Connexion`,"settings.remoteInstances.sidebar.phase.idle":`Inactif`,"settings.remoteInstances.page.section.instance":`Instance`,"settings.remoteInstances.page.section.instanceDescription":`Paramètres de base du SSH.`,"settings.remoteInstances.page.field.mode":`Mode`,"settings.remoteInstances.page.field.modeHint":`Installations/mises à jour gérées et démarrage de OpenChamber à distance. Externe suppose qu'il est déjà en cours d'exécution.`,"settings.remoteInstances.page.field.modePlaceholder":`Sélectionnez le mode`,"settings.remoteInstances.page.field.modeManaged":`Géré (démarrage automatique)`,"settings.remoteInstances.page.field.modeExternal":`Externe (déjà en cours d'exécution)`,"settings.remoteInstances.page.field.preferredRemotePort":`Port distant préféré`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Le port OpenChamber doit être utilisé sur l'hôte distant. Laissez vide pour laisser le runtime choisir.`,"settings.remoteInstances.page.field.keepServerRunning":`Maintenir le serveur en marche`,"settings.remoteInstances.page.field.keepServerRunningHint":`S'il est activé, le démon OpenChamber continue de s'exécuter à distance lorsque vous vous déconnectez.`,"settings.remoteInstances.page.field.bindHost":`Lier l'hôte`,"settings.remoteInstances.page.field.bindHostHint":`Interface réseau pour l’URL locale principale. Utilisez 127.0.0.1/localhost pour un accès uniquement local.`,"settings.remoteInstances.page.field.preferredLocalPort":`Port local préféré`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Port local préféré pour le tunnel principal OpenChamber. Laissez vide pour la sélection automatique.`,"settings.remoteInstances.page.field.forwardType":`Type de transfert`,"settings.remoteInstances.page.field.localListen":`Écoute locale`,"settings.remoteInstances.page.field.localTarget":`Cible locale`,"settings.remoteInstances.page.field.remoteListen":`Écoute distante`,"settings.remoteInstances.page.field.remoteTarget":`Cible distante`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Auto`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`La liaison à 0.0.0.0 expose les ports transférés à votre réseau local. Continuer?`,"settings.remoteInstances.page.preview.localSocks5":`(SOCKS5 local)`,"settings.remoteInstances.page.preview.local":`(local)`,"settings.remoteInstances.page.preview.remote":`(hôte distant)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`Échec de l'ouverture du point de terminaison local`,"settings.remoteInstances.page.toast.localUrlCopied":`URL locale copiée`,"settings.remoteInstances.page.actions.copyLocalUrl":`Copier l’URL locale`,"settings.remoteInstances.page.actions.open":`Ouvrir`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Instance sélectionnée`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} nécessite une destination concrète.`,"settings.remoteInstances.page.patternDialog.description":`Entrez la destination.`,"settings.common.actions.cancel":`Annuler`,"settings.common.actions.create":`Créer`,"settings.common.actions.delete":`Supprimer`,"settings.common.actions.reset":`Réinitialiser`,"settings.common.actions.rename":`Rebaptiser`,"settings.common.actions.duplicate":`Dupliquer`,"settings.common.actions.import":`Importer`,"settings.common.actions.copyAll":`Copier tout`,"settings.common.actions.clear":`Effacer`,"settings.common.actions.saving":`Enregistrement...`,"settings.common.actions.saveChanges":`Enregistrer les modifications`,"settings.common.scope.global":`Mondial`,"settings.common.scope.project":`Projet`,"settings.common.field.description":`Description`,"settings.common.badge.new":`Nouveau`,"settings.common.badge.modified":`Modifié`,"settings.common.permission.allow":`Permettre`,"settings.common.permission.ask":`Demander`,"settings.common.permission.deny":`Refuser`,"settings.common.state.comingSoon":`À venir...`,"settings.projects.actions.title":`Actions`,"settings.projects.actions.description":`Commandes par projet affichées dans l'en-tête à côté du nom du projet.`,"settings.projects.actions.validation.fillNameAndCommand":`Remplissez le nom de l'action et la commande avant d'enregistrer.`,"settings.projects.actions.state.loading":`Chargement...`,"settings.projects.actions.state.empty":`Aucune action configurée pour le moment.`,"settings.projects.actions.state.untitled":`Action sans titre`,"settings.projects.actions.state.noDesktopSshForwards":`Aucun transfert local SSH activé disponible.`,"settings.projects.actions.field.selectIconAria":`Sélectionner l'icône`,"settings.projects.actions.field.iconAria":`Icône {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Nom de l'action`,"settings.projects.actions.field.command":`Commande`,"settings.projects.actions.field.commandPlaceholder":`p. ex. bun install`,"settings.projects.actions.field.autoOpenUrl":`Ouverture automatique de l’URL`,"settings.projects.actions.field.autoOpenUrlForAria":`Ouverture automatique de l’URL pour {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Ouvrir l’URL détectée dans la sortie, ou l’URL personnalisée ci-dessous`,"settings.projects.actions.field.overrideUrlPlaceholder":`Remplacer URL (facultatif)`,"settings.projects.actions.field.overrideUrlTooltip":`Si ce champ est rempli, l’URL personnalisée est utilisée. Sinon, l'application ouvre la meilleure URL détectée dans la sortie.`,"settings.projects.actions.field.desktopSshForward":`Transfert SSH local`,"settings.projects.actions.field.useOutputManualUrl":`Utiliser l’URL de sortie ou l’URL manuelle`,"settings.projects.actions.actions.add":`Ajouter une action`,"settings.projects.actions.actions.save":`Enregistrer les actions`,"settings.projects.actions.toast.saveFailed":`Échec de l'enregistrement des actions`,"settings.projects.actions.toast.saved":`Actions du projet enregistrées`,"settings.openchamber.about.title":`À propos de OpenChamber`,"settings.openchamber.about.field.version":`Version`,"settings.openchamber.about.field.clientVersion":`Client`,"settings.openchamber.about.field.webBundle":`Bundle web`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.state.checking":`Vérification...`,"settings.openchamber.about.state.upToDate":`À jour`,"settings.openchamber.about.state.builtin":`intégré`,"settings.openchamber.about.actions.checkUpdates":`Vérifier les mises à jour`,"settings.openchamber.about.actions.update":`Mise à jour`,"settings.openchamber.about.actions.updateToVersion":`Mise à jour vers {version}`,"settings.openchamber.about.actions.checkForUpdates":`Vérifier les mises à jour`,"settings.openchamber.about.toast.latestVersion":`Vous êtes sur la dernière version`,"settings.openchamber.about.toast.checkFailed":`Impossible de vérifier les mises à jour`,"settings.openchamber.about.diagnostics.label":`Journal de diagnostic`,"settings.openchamber.about.diagnostics.description":`Exporte les feat de diagnostic locaux pour analyser les problèmes d’affichage et de synchronisation. Aucun corps de message ni jeton n’est inclus.`,"settings.openchamber.about.diagnostics.export":`Exporter le journal`,"settings.openchamber.about.diagnostics.exporting":`Exportation…`,"settings.openchamber.about.diagnostics.enable":`Enregistrer les feat de diagnostic`,"settings.openchamber.about.diagnostics.enableHint":`Disponible dans les versions bêta. Enregistre sur cet appareil le cycle de synchronisation et d’affichage de la session, sans le corps du message.`,"settings.openchamber.about.diagnostics.toast.exported":`Journal de diagnostic exporté`,"settings.openchamber.about.diagnostics.toast.failed":`Impossible d’exporter le journal de diagnostic`,"settings.openchamber.about.diagnostics.toast.empty":`Journal de diagnostic exporté. Aucun événement n’a encore été enregistré.`,"settings.agents.sidebar.title":`Agents`,"settings.agents.sidebar.total":`Total {count}`,"settings.agents.sidebar.empty.title":`Aucun agent configuré`,"settings.agents.sidebar.empty.description":`Utilisez le bouton + ci-dessus pour en créer un`,"settings.agents.sidebar.section.builtIn":`Agents intégrés`,"settings.agents.sidebar.section.custom":`Agents personnalisés`,"settings.agents.sidebar.badge.system":`système`,"settings.agents.sidebar.dialog.deleteTitle":`Supprimer un agent`,"settings.agents.sidebar.dialog.resetTitle":`Agent de réinitialisation`,"settings.agents.sidebar.dialog.deleteDescription":`Etes-vous sûr de vouloir supprimer l'agent "{name}" ?`,"settings.agents.sidebar.dialog.resetDescription":`Êtes-vous sûr de vouloir réinitialiser l'agent «\xA0{name}\xA0» à sa configuration par défaut ?`,"settings.agents.sidebar.renameDialog.title":`Renommer l'agent`,"settings.agents.sidebar.renameDialog.description":`Entrez un nouveau nom pour l'agent "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`Nouveau nom d'agent...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Les agents intégrés ne peuvent pas être supprimés`,"settings.agents.sidebar.toast.agentDeleted":`Agent "{name}" supprimé avec succès`,"settings.agents.sidebar.toast.agentReset":`Agent "{name}" réinitialisé aux valeurs par défaut`,"settings.agents.sidebar.toast.deleteFailed":`Échec de la suppression de l'agent`,"settings.agents.sidebar.toast.definitionNotFound":`Définition de l’agent introuvable. Aucune modification effectuée.`,"settings.agents.sidebar.toast.resetFailed":`Échec de la réinitialisation de l'agent`,"settings.agents.sidebar.toast.agentNameRequired":`Le nom de l'agent est requis`,"settings.agents.sidebar.toast.agentExists":`Un agent portant ce nom existe déjà`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`Échec de la suppression de l'ancien agent après le changement de nom`,"settings.agents.sidebar.toast.renameFailed":`Échec du changement de nom de l'agent`,"settings.agents.sidebar.toast.agentRenamed":`Agent renommé en "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Le nom de l'autorisation est requis`,"settings.agents.page.toast.created":`Agent créé avec succès`,"settings.agents.page.toast.updated":`Agent mis à jour avec succès`,"settings.agents.page.toast.createFailed":`Échec de la création de l'agent`,"settings.agents.page.toast.updateFailed":`Échec de la mise à jour de l'agent`,"settings.agents.page.toast.saveUnexpectedError":`Une erreur s'est produite lors de l'enregistrement`,"settings.agents.page.toast.savedManualRestart":`Enregistré sur le disque. Redémarrez votre serveur OpenCode connecté pour appliquer les modifications.`,"settings.agents.page.empty.title":`Sélectionnez un agent dans la barre latérale`,"settings.agents.page.empty.description":`ou créez-en un nouveau`,"settings.agents.page.title.new":`Nouvel agent`,"settings.agents.page.subtitle.new":`Configurer un nouveau personnage d'assistant`,"settings.agents.page.subtitle.edit":`Modifier les paramètres de l'agent`,"settings.agents.page.section.identityRole":`Identité et rôle`,"settings.agents.page.section.modelParameters":`Modèle et paramètres`,"settings.agents.page.section.systemPrompt":`Prompt système`,"settings.agents.page.section.toolPermissions":`Autorisations des outils`,"settings.agents.page.field.agentName":`Nom de l'agent`,"settings.agents.page.field.agentNamePlaceholder":`nom-agent`,"settings.agents.page.field.scopePlaceholder":`Portée`,"settings.agents.page.field.descriptionPlaceholder":`Que fait cet agent ?`,"settings.agents.page.field.mode":`Mode`,"settings.agents.page.field.modeTooltip":`Visibilité principale et sous-agent`,"settings.agents.page.field.overrideModel":`Remplacer le modèle`,"settings.agents.page.field.variant":`Variante de réflexion`,"settings.agents.page.field.variantTooltip":`Optionnel. Si le modèle prend en charge le raisonnement, la variante contrôle la profondeur du raisonnement.`,"settings.agents.page.field.variantHint":`Spécifique au modèle (par ex. variante Anthropic)`,"settings.agents.page.field.variantPlaceholder":`par ex. high, max, low, none`,"settings.agents.page.field.temperature":`Température`,"settings.agents.page.field.temperatureTooltip":`Contrôle le caractère aléatoire. Plus élevé = créatif, Inférieur = concentré.`,"settings.agents.page.field.temperatureRange":`0.0 à 2.0`,"settings.agents.page.field.clearTemperatureAria":`Effacer le remplacement de la température`,"settings.agents.page.field.topP":`Haut P`,"settings.agents.page.field.topPTooltip":`Diversité d'échantillonnage du noyau. Inférieur = jetons probables uniquement.`,"settings.agents.page.field.topPRange":`0.0 à 1.0`,"settings.agents.page.field.clearTopPAria":`Effacer le remplacement p supérieur`,"settings.agents.page.field.systemPromptPlaceholder":`Vous êtes un assistant expert en codage...`,"settings.agents.page.mode.primary":`Primaire`,"settings.agents.page.mode.subagent":`Sous-agent`,"settings.agents.page.mode.all":`Tous`,"settings.agents.page.permissions.defaultLabel":`Défaut`,"settings.agents.page.permissions.hideEditor":`Masquer l'éditeur`,"settings.agents.page.permissions.advancedEditor":`Éditeur avancé`,"settings.agents.page.permissions.globalSummary":`Mondial : {summary}`,"settings.agents.page.permissions.rulesSummary":`Règles : {summary}`,"settings.agents.page.permissions.globalDefault":`Valeur par défaut globale`,"settings.agents.page.permissions.pattern":`Modèle`,"settings.agents.page.permissions.addCustomRule":`Ajouter une règle personnalisée`,"settings.agents.page.permissions.permissionPlaceholder":`Autorisation...`,"settings.agents.page.permissions.patternPlaceholder":`Modèle (e.g. *)`,"settings.page.behavior.title":`Comportement`,"settings.behavior.page.title":`Comportement`,"settings.behavior.page.warning.title":`Les règles globales sont combinées avec les règles du projet`,"settings.behavior.page.warning.description":`Les modifications apportées ici mettent à jour {path}. OpenCode inclut également toutes les règles AGENTS.md au niveau du projet lorsqu'elles existent.`,"settings.behavior.page.section.systemPrompt":`Mondial AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`Vous êtes un assistant IA utile...
|
|
2
2
|
|
|
3
3
|
Utilisez cet espace pour définir des règles absolues sur la façon dont l'IA doit se comporter dans toutes les sessions et tous les fournisseurs.`,"settings.behavior.page.section.responseStyle":`Style de réponse`,"settings.behavior.page.responseStyle.tooltip":`Lorsqu'elles sont activées, ces instructions guident la manière dont l'assistant répond à chaque nouvelle conversation. Ils sont envoyés avec votre premier message et ne modifient pas vos règles globales AGENTS.md.`,"settings.behavior.page.responseStyle.enableAria":`Activer les instructions de style de réponse`,"settings.behavior.page.responseStyle.enable":`Ajouter des instructions de style de réponse aux nouvelles conversations`,"settings.behavior.page.responseStyle.preset":`Préréglage`,"settings.behavior.page.responseStyle.option.concise":`Concis`,"settings.behavior.page.responseStyle.option.detailed":`Détaillé`,"settings.behavior.page.responseStyle.option.mentor":`Mentor`,"settings.behavior.page.responseStyle.option.pushback":`Repoussement`,"settings.behavior.page.responseStyle.option.noFiller":`Pas de remplissage`,"settings.behavior.page.responseStyle.option.matchEnergy":`Correspond à mon énergie`,"settings.behavior.page.responseStyle.option.warmPeer":`Pair chaleureux`,"settings.behavior.page.responseStyle.option.custom":`Personnalisé`,"settings.behavior.page.responseStyle.customPlaceholder":`Écrivez l'instruction à ajouter au premier message...`,"settings.behavior.page.toast.saved":`Comportement enregistré avec succès`,"settings.behavior.page.toast.saveFailed":`Échec de l'enregistrement du comportement`,"settings.commands.sidebar.title":`Commandes`,"settings.commands.sidebar.total":`Total {count}`,"settings.commands.sidebar.empty.title":`Aucune commande configurée`,"settings.commands.sidebar.empty.description":`Utilisez le bouton + ci-dessus pour en créer un`,"settings.commands.sidebar.section.builtIn":`Commandes intégrées`,"settings.commands.sidebar.section.custom":`Commandes personnalisées`,"settings.commands.sidebar.dialog.deleteTitle":`Supprimer la commande`,"settings.commands.sidebar.dialog.resetTitle":`Commande de réinitialisation`,"settings.commands.sidebar.dialog.deleteDescription":`Etes-vous sûr de vouloir supprimer la commande «\xA0{name}\xA0» ?`,"settings.commands.sidebar.dialog.resetDescription":`Êtes-vous sûr de vouloir réinitialiser la commande «\xA0{name}\xA0» à sa configuration par défaut ?`,"settings.commands.sidebar.renameDialog.title":`Commande Renommer`,"settings.commands.sidebar.renameDialog.description":`Entrez un nouveau nom pour la commande "/{name}"`,"settings.commands.sidebar.renameDialog.placeholder":`Nouveau nom de commande...`,"settings.commands.sidebar.toast.builtInCannotDelete":`Les commandes intégrées ne peuvent pas être supprimées`,"settings.commands.sidebar.toast.commandDeleted":`Commande "{name}" supprimée avec succès`,"settings.commands.sidebar.toast.commandReset":`Commande "{name}" réinitialisée aux valeurs par défaut`,"settings.commands.sidebar.toast.deleteFailed":`Échec de la suppression de la commande`,"settings.commands.sidebar.toast.resetFailed":`Échec de la réinitialisation de la commande`,"settings.commands.sidebar.toast.commandNameRequired":`Le nom de la commande est obligatoire`,"settings.commands.sidebar.toast.commandExists":`Une commande portant ce nom existe déjà`,"settings.commands.sidebar.toast.removeOldAfterRenameFailed":`Échec de la suppression de l'ancienne commande après le changement de nom`,"settings.commands.sidebar.toast.renameFailed":`Échec du renommage de la commande`,"settings.commands.page.toast.templateRequired":`Le modèle de commande est requis`,"settings.commands.page.toast.created":`Commande créée avec succès`,"settings.commands.page.toast.updated":`Commande mise à jour avec succès`,"settings.commands.page.toast.createFailed":`Échec de la création de la commande`,"settings.commands.page.toast.updateFailed":`Échec de la mise à jour de la commande`,"settings.commands.page.toast.saveUnexpectedError":`Une erreur s'est produite lors de l'enregistrement`,"settings.commands.page.empty.title":`Sélectionnez une commande dans la barre latérale`,"settings.commands.page.empty.description":`ou créez-en un nouveau`,"settings.commands.page.title.new":`Nouvelle commande`,"settings.commands.page.subtitle.new":`Configurer une nouvelle commande slash`,"settings.commands.page.subtitle.edit":`Modifier les paramètres de la commande`,"settings.commands.page.section.identity":`Identité`,"settings.commands.page.section.executionContext":`Contexte d'exécution`,"settings.commands.page.section.template":`Modèle de commande`,"settings.commands.page.field.commandName":`Nom de la commande`,"settings.commands.page.field.commandNamePlaceholder":`nom-commande`,"settings.commands.page.field.descriptionPlaceholder":`Que fait cette commande ?`,"settings.commands.page.field.overrideAgent":`Remplacer l'agent`,"settings.commands.page.field.templatePlaceholder":`Votre modèle de commande ici...
|
|
4
4
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{kn as t,xn as n}from"./persistence-D1lIuyqO.js";import{
|
|
2
|
-
`).trim()};async function x(e){let t=y();return t?t.checkIsGitRepository(e):
|
|
3
|
-
`)||`--- ${t} (no textual diff available)`}catch{return`--- ${t} (diff unavailable)`}})),
|
|
4
|
-
[remaining diffs truncated]`;break}
|
|
1
|
+
import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{kn as t,xn as n}from"./persistence-D1lIuyqO.js";import{A as r,C as i,F as a,G as o,J as s,L as c,M as l,Mt as u,N as d,O as f,Q as p,R as m,S as h,T as ee,X as te,Y as ne,Z as re,_ as ie,_t as ae,b as oe,bt as se,c as ce,ct as le,d as ue,ft as de,h as fe,ht as pe,it as me,lt as he,m as ge,mt as _e,nt as ve,o as ye,q as be,rt as xe,tt as Se,u as Ce,v as we,vt as Te,w as Ee,x as De,z as Oe}from"./platform-G8Cxe5wN.js";import{Fa as ke,Hi as g,Xi as _,l as v,s as Ae}from"./useMobileNavigationStore-BSreVaq2.js";var je=e({applyGitStash:()=>W,checkIsGitRepository:()=>x,checkoutCommit:()=>Ke,cherryPick:()=>qe,countGitStashFiles:()=>H,createBranch:()=>q,createGitIdentity:()=>X,createGitWorktree:()=>R,deleteGitIdentity:()=>He,deleteGitWorktree:()=>z,deleteRemoteBranch:()=>A,discoverGitCredentials:()=>Q,discoverGitRepositories:()=>S,dropGitStash:()=>K,generateCommitMessage:()=>M,getCommitFileDiff:()=>J,getConflictDetails:()=>$,getGitBranches:()=>k,getGitIdentities:()=>Y,getGitStatus:()=>C,getGitWorktreeBootstrapStatus:()=>I,getGlobalGitIdentity:()=>Ue,git:()=>B,listGitStashes:()=>V,listGitWorktrees:()=>P,merge:()=>Ge,popGitStash:()=>G,previewGitWorktree:()=>L,rebase:()=>We,resetToCommit:()=>Ye,resolveGitPrimaryRoot:()=>w,resolveGitTopLevel:()=>Pe,revertCommit:()=>Je,stageGitFile:()=>T,stageGitFiles:()=>E,stashGitChanges:()=>U,unstageGitFile:()=>D,unstageGitFiles:()=>O,updateGitIdentity:()=>Z,validateGitWorktree:()=>F}),y=()=>n()?.git??null,Me=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},b=e=>{let t=e.trim(),n=(t.match(/```(?:json)?\s*([\s\S]*?)```/i)?.[1]??t).trim(),r=[n.indexOf(`{`)].filter(e=>e>=0);for(let e of r)for(let t=n.length;t>e;--t)if(n[t-1]===`}`)try{let r=JSON.parse(n.slice(e,t));if(r&&typeof r==`object`&&!Array.isArray(r))return r}catch{}return null},Ne=e=>{let t=e?.data;return(Array.isArray(t?.parts)?t.parts:[]).map(e=>{let t=e;return t.type===`text`?typeof t.text==`string`?t.text:typeof t.content==`string`?t.content:typeof t.value==`string`?t.value:``:``}).filter(e=>e.trim().length>0).join(`
|
|
2
|
+
`).trim()};async function x(e){let t=y();return t?t.checkIsGitRepository(e):ce(e)}async function S(e){return Ee(e)}async function C(e,t){let n=y();return n?n.getGitStatus(e,t):c(e,t)}async function w(e){return(await ve(e)).root}async function Pe(e){return(await xe(e)).root}async function T(e,t){let n=y();return n?.stageGitFile?n.stageGitFile(e,t):le(e,t)}async function E(e,t){let n=y();return n?.stageGitFiles?n.stageGitFiles(e,t):he(e,t)}async function D(e,t){let n=y();return n?.unstageGitFile?n.unstageGitFile(e,t):_e(e,t)}async function O(e,t){let n=y();return n?.unstageGitFiles?n.unstageGitFiles(e,t):pe(e,t)}async function k(e,t){let n=y();if(t?.signal?.throwIfAborted(),n){let r=await n.getGitBranches(e,t);return t?.signal?.throwIfAborted(),r}return l(e,t)}async function A(e,t){let n=y();return n?n.deleteRemoteBranch(e,t):h(e,t)}var Fe=30,Ie=12e4,Le=async(e,t)=>{let n=t.slice(0,Fe),r=await Promise.all(n.map(async t=>{try{let[n,r]=await Promise.all([d(e,{path:t,staged:!0}).catch(()=>null),d(e,{path:t,staged:!1}).catch(()=>null)]);return[n?.diff,r?.diff].filter(e=>typeof e==`string`&&e.trim().length>0).join(`
|
|
3
|
+
`)||`--- ${t} (no textual diff available)`}catch{return`--- ${t} (diff unavailable)`}})),i=``;for(let e of r){if(i.length+e.length>Ie){i+=`
|
|
4
|
+
[remaining diffs truncated]`;break}i+=(i?`
|
|
5
5
|
|
|
6
|
-
`:``)+e}return t.length>n.length&&(
|
|
7
|
-
`)});try{let r=await Le(e,n),{currentProviderId:s,currentModelId:c}=_.getState(),l=await t(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({purpose:`commit`,system:a,prompt:`${o}\n\nDiffs of the selected files:\n${r}`,directory:e,...s?{preferredProviderID:s}:{},...c?{preferredModelID:c}:{}})});if(l.status===404){let t=await Re(e,a,o);return Date.now()-i,t.message.subject.length,t.message.highlights.length,t}let u=await l.json().catch(()=>null);if(!l.ok||typeof u?.text!=`string`){let e=typeof u?.error==`string`?u.error:`HTTP ${l.status}`;throw Error(e)}let d={message:j(b(u.text))};return Date.now()-i,d.message.subject.length,d.message.highlights.length,d}catch(e){throw console.error(`[git-generation][browser] failed`,{transport:`small-model`,kind:`commit`,elapsedMs:Date.now()-i,message:e instanceof Error?e.message:String(e),error:e}),e}}var ze=`No default provider or model configured. Please select a provider and model in settings first.`;async function Be(){let e=N();if(e)return e;if(!v.getState().newSessionDraft?.open)throw Error(`Select existing session for generation`);let t=_.getState();if(!t.currentProviderId||!t.currentModelId)throw Error(ze);let n=await Ae({providerID:t.currentProviderId,modelID:t.currentModelId,agent:t.currentAgentName||void 0,variant:t.currentVariant||void 0});if(!n){let e=N();if(e)return e;throw Error(`Failed to create session for generation`)}return{sessionId:n.sessionId,providerID:t.currentProviderId,modelID:t.currentModelId,agent:n.agent,variant:t.currentVariant||void 0}}var N=()=>{let e=v.getState().currentSessionId;if(!e)return null;let t=ke.getState(),n=_.getState(),r=v.getState().getLastUserChoice(e),i=t.getSessionAgentSelection(e)||r?.agent||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=o||a||s||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=s&&s.providerId===c.providerId&&s.modelId===c.modelId?r?.variant:void 0,d=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0,f=l||u||d||void 0;return{sessionId:e,providerID:c.providerId,modelID:c.modelId,agent:i,variant:f}},Ve=async({directory:e,visiblePrompt:t,hiddenPrompt:n,generationSession:r,kind:i})=>{let a=Date.now();r.sessionId,r.providerID,r.modelID,r.agent,r.variant;let o=typeof e==`string`?e.trim():``,s=typeof t==`string`?t.trim():``,c=typeof n==`string`?n.trim():``,l=[];if(s&&l.push({type:`text`,text:c?`${s}\n\n`:s,synthetic:!1}),c&&l.push({type:`text`,text:c,synthetic:!0}),l.length===0)throw Error(`Generation prompts are empty`);Me(r.sessionId);let
|
|
6
|
+
`:``)+e}return t.length>n.length&&(i+=`\n[${t.length-n.length} more selected files omitted]`),i},j=e=>{let t=typeof e?.subject==`string`?e.subject.trim():``,n=Array.isArray(e?.highlights)?e.highlights.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean).slice(0,3):[];if(!t)throw Error(`Structured output missing subject`);return{subject:t,highlights:n}};async function Re(e,t,n){return{message:j(await Ve({directory:e,visiblePrompt:t,hiddenPrompt:n,generationSession:await Be(),kind:`commit`}))}}async function M(e,n,r){let i=Date.now();n.length;let a=await g(`git.commit.generate.visible`),o=await g(`git.commit.generate.instructions`,{selected_files:n.map(e=>`- ${e}`).join(`
|
|
7
|
+
`)});try{let r=await Le(e,n),{currentProviderId:s,currentModelId:c}=_.getState(),l=await t(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({purpose:`commit`,system:a,prompt:`${o}\n\nDiffs of the selected files:\n${r}`,directory:e,...s?{preferredProviderID:s}:{},...c?{preferredModelID:c}:{}})});if(l.status===404){let t=await Re(e,a,o);return Date.now()-i,t.message.subject.length,t.message.highlights.length,t}let u=await l.json().catch(()=>null);if(!l.ok||typeof u?.text!=`string`){let e=typeof u?.error==`string`?u.error:`HTTP ${l.status}`;throw Error(e)}let d={message:j(b(u.text))};return Date.now()-i,d.message.subject.length,d.message.highlights.length,d}catch(e){throw console.error(`[git-generation][browser] failed`,{transport:`small-model`,kind:`commit`,elapsedMs:Date.now()-i,message:e instanceof Error?e.message:String(e),error:e}),e}}var ze=`No default provider or model configured. Please select a provider and model in settings first.`;async function Be(){let e=N();if(e)return e;if(!v.getState().newSessionDraft?.open)throw Error(`Select existing session for generation`);let t=_.getState();if(!t.currentProviderId||!t.currentModelId)throw Error(ze);let n=await Ae({providerID:t.currentProviderId,modelID:t.currentModelId,agent:t.currentAgentName||void 0,variant:t.currentVariant||void 0});if(!n){let e=N();if(e)return e;throw Error(`Failed to create session for generation`)}return{sessionId:n.sessionId,providerID:t.currentProviderId,modelID:t.currentModelId,agent:n.agent,variant:t.currentVariant||void 0}}var N=()=>{let e=v.getState().currentSessionId;if(!e)return null;let t=ke.getState(),n=_.getState(),r=v.getState().getLastUserChoice(e),i=t.getSessionAgentSelection(e)||r?.agent||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=o||a||s||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=s&&s.providerId===c.providerId&&s.modelId===c.modelId?r?.variant:void 0,d=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0,f=l||u||d||void 0;return{sessionId:e,providerID:c.providerId,modelID:c.modelId,agent:i,variant:f}},Ve=async({directory:e,visiblePrompt:t,hiddenPrompt:n,generationSession:r,kind:i})=>{let a=Date.now();r.sessionId,r.providerID,r.modelID,r.agent,r.variant;let o=typeof e==`string`?e.trim():``,s=typeof t==`string`?t.trim():``,c=typeof n==`string`?n.trim():``,l=[];if(s&&l.push({type:`text`,text:c?`${s}\n\n`:s,synthetic:!1}),c&&l.push({type:`text`,text:c,synthetic:!0}),l.length===0)throw Error(`Generation prompts are empty`);Me(r.sessionId);let d=await u.withDirectory(e,async()=>u.getApiClient().session.prompt({sessionID:r.sessionId,...o.length>0?{directory:o}:{},model:{providerID:r.providerID,modelID:r.modelID},...r.agent?{agent:r.agent}:{},...r.variant?{variant:r.variant}:{},parts:l})),f=d?.error;if(!d?.data)throw Error(f?.message||`Failed to generate ${i} output`);let p=d.data.info,m=Ne(d),h=b(m);if(!h)throw console.error(`[git-generation][browser] invalid JSON output`,{kind:i,sessionId:r.sessionId,elapsedMs:Date.now()-a,finish:p?.finish,assistantText:m,messageInfo:d.data.info,messageParts:d.data.parts}),Error(`No JSON output returned by session`);return h};async function P(e){let t=y();if(!t)return s(e);let n=t.worktree?.list??t.listGitWorktrees;if(o(n))return s(e);let r=t.worktree?.list?t.worktree.list.bind(t.worktree):t.listGitWorktrees.bind(t);return se(()=>r(e))}async function F(e,t){let n=y();return n?.worktree?.validate?n.worktree.validate(e,t):n?.validateGitWorktree?n.validateGitWorktree(e,t):Te(e,t)}async function I(e){let t=y();return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):m(e)}async function L(e,t){let n=y();return n?.worktree?.preview?n.worktree.preview(e,t):n?.previewGitWorktree?n.previewGitWorktree(e,t):re(e,t)}async function R(e,t){let n=y();return n?.worktree?.create?n.worktree.create(e,t):n?.createGitWorktree?n.createGitWorktree(e,t):we(e,t)}async function z(e,t){let n=y();return n?.worktree?.remove?n.worktree.remove(e,t):n?.deleteGitWorktree?n.deleteGitWorktree(e,t):De(e,t)}var B={worktree:{list:P,validate:F,create:R,remove:z}};async function V(e){let t=y();return t?t.listGitStashes(e):be(e)}async function H(e,t){let n=y();return n?n.countGitStashFiles(e,t):ge(e,t)}async function U(e,t={}){let n=y();return n?n.stashGitChanges(e,t):de(e,t)}async function W(e,t){let n=y();return n?n.applyGitStash(e,t):ye(e,t)}async function G(e,t){let n=y();return n?n.popGitStash(e,t):te(e,t)}async function K(e,t){let n=y();return n?n.dropGitStash(e,t):ee(e,t)}async function q(e,t,n){let r=y();return r?r.createBranch(e,t,n):fe(e,t,n)}async function J(e,t,n,r){let i=y();return i?.getCommitFileDiff?i.getCommitFileDiff(e,t,n,r):f(e,t,n,r)}async function Y(){let e=y();return e?e.getGitIdentities():a()}async function X(e){let t=y();return t?t.createGitIdentity(e):ie(e)}async function Z(e,t){let n=y();return n?n.updateGitIdentity(e,t):ae(e,t)}async function He(e){let t=y();return t?t.deleteGitIdentity(e):oe(e)}async function Q(){let e=y();return e?.discoverGitCredentials?e.discoverGitCredentials():i()}async function Ue(){let e=y();return e?.getGlobalGitIdentity?e.getGlobalGitIdentity():Oe()}async function We(e,t){let n=y();return n?n.rebase(e,t):p(e,t)}async function Ge(e,t){let n=y();return n?n.merge(e,t):ne(e,t)}async function Ke(e,t){let n=y();return n?n.checkoutCommit(e,t):Ce(e,t)}async function qe(e,t){let n=y();return n?n.cherryPick(e,t):ue(e,t)}async function Je(e,t){let n=y();return n?n.revertCommit(e,t):me(e,t)}async function Ye(e,t,n,r){let i=y();return i?i.resetToCommit(e,t,n,r):Se(e,t,n,r)}async function $(e){let t=y();return t?.getConflictDetails?t.getConflictDetails(e):r(e)}export{Pe as A,V as C,We as D,L as E,D as F,O as I,Z as L,T as M,E as N,Ye as O,U as P,je as S,G as T,Y as _,H as a,Ue as b,He as c,S as d,K as f,k as g,$ as h,qe as i,Je as j,w as k,A as l,J as m,x as n,q as o,M as p,Ke as r,X as s,W as t,Q as u,C as v,Ge as w,B as x,I as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{D as t,b as n,j as r,t as i,y as a}from"./useUIStore-5agS8bsW.js";import{$t as o,D as s,d as c,k as l,u,xn as d}from"./persistence-D1lIuyqO.js";import{a as f,i as p,r as m}from"./vendor-zustand-B4dlGEM2.js";import{nt as h,rt as g}from"./vendor-base-ui-CnHfUmDN.js";import{B as _,M as v,St as y,jt as b}from"./platform-G8Cxe5wN.js";import{n as x}from"./vendor-react-DLPElpoQ.js";import{s as S}from"./vendor-tanstack-react-query-D7pys_c9.js";import{n as C}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as ee}from"./clipboard-ByPKHEt8.js";import{$a as te,Xi as ne,_ as w,b as re,ct as ie,en as ae,go as T,ho as oe,hr as E,l as D,ot as O,st as se,un as k}from"./useMobileNavigationStore-BSreVaq2.js";import{c as ce,t as A}from"./utils-BxJEIWv5.js";import{n as j}from"./Icon-DiIuWOuC.js";import{g as M,v as N}from"./gitApi-itjXkp9E.js";import{A as le,M as P,p as F,s as I}from"./projectMeta-C-VsUy14.js";var L=e(g(),1),R=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`),n=t.startsWith(`//`),r=t.replace(/\/+/g,`/`);n&&!r.startsWith(`//`)&&(r=`/${r}`);let i=r===`/`,a=/^[A-Za-z]:\/$/.test(r);return!i&&!a&&(r=r.replace(/\/+$/,``)),r},z=e=>/^[A-Za-z]:\//.test(e)?e.toLowerCase():e,B=(e,t)=>{let n=R(t),r=R(e);if(!n||!r)return!1;let i=z(n),a=z(r);return a===i||a.startsWith(`${i}/`)},ue=e=>{if(!e||typeof e!=`object`)return{};let t=e,n={};for(let[e,r]of Object.entries(t)){let t=R(e);if(!t||!r||typeof r!=`object`)continue;let i=r,a=Array.isArray(i.openPaths)?Array.from(new Set(i.openPaths.filter(e=>typeof e==`string`).map(e=>R(e)).filter(e=>B(e,t)))):[],o=Array.isArray(i.expandedPaths)?Array.from(new Set(i.expandedPaths.filter(e=>typeof e==`string`).map(e=>R(e)).filter(e=>B(e,t)))):[],s=typeof i.selectedPath==`string`?R(i.selectedPath):null,c=s&&B(s,t)?s:a[0]??null,l=typeof i.touchedAt==`number`&&Number.isFinite(i.touchedAt)?i.touchedAt:Date.now(),u=n[t];if(u){let e=Array.from(new Set([...u.openPaths,...a])),r=Array.from(new Set([...u.expandedPaths,...o]));n[t]={openPaths:e,selectedPath:u.selectedPath??c??e[0]??null,expandedPaths:r,touchedAt:Math.max(u.touchedAt,l)};continue}n[t]={openPaths:a,selectedPath:c,expandedPaths:o,touchedAt:l}}return n},V=(e,t)=>{let n=Object.entries(e);if(n.length<=t)return e;n.sort((e,t)=>(t[1]?.touchedAt??0)-(e[1]?.touchedAt??0));let r={};for(let[e,i]of n.slice(0,t))r[e]=i;return r},H=e=>e?{...e,touchedAt:Date.now()}:{openPaths:[],selectedPath:null,expandedPaths:[],touchedAt:Date.now()},de=f()(m(p((e,t)=>({byRoot:{},addOpenPath:(t,n,r)=>{let i=R((t||``).trim()),a=R((n||``).trim());!i||!a||!r?.allowOutsideRoot&&!B(a,i)||e(e=>{let t=e.byRoot[i],n=H(t),r=n.openPaths.includes(a),o=r?n.openPaths:[...n.openPaths,a],s=n.selectedPath??a;return t&&r&&t.selectedPath===s?e:{byRoot:V({...e.byRoot,[i]:{...n,openPaths:o,selectedPath:s}},20)}})},removeOpenPath:(t,n)=>{let r=R((t||``).trim()),i=R((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=z(i),a=e=>z(e)===n,o=t.selectedPath?a(t.selectedPath):!1;if(!t.openPaths.some(a)&&!o)return e;let s=t.openPaths.filter(e=>!a(e)),c=o?s[0]??null:t.selectedPath;return{byRoot:V({...e.byRoot,[r]:{...t,openPaths:s,selectedPath:c,touchedAt:Date.now()}},20)}})},removeOpenPathsByPrefix:(t,n)=>{let r=R((t||``).trim()),i=R((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=z(i),a=n.endsWith(`/`)?n:`${n}/`,o=e=>{let t=z(e);return t===n||t.startsWith(a)},s=t.openPaths.filter(e=>!o(e));if(s.length===t.openPaths.length)return e;let c=t.selectedPath&&o(t.selectedPath)?s[0]??null:t.selectedPath;return{byRoot:V({...e.byRoot,[r]:{...t,openPaths:s,selectedPath:c,touchedAt:Date.now()}},20)}})},removeExpandedPathsByPrefix:(t,n)=>{let r=R((t||``).trim()),i=R((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=z(i),a=n.endsWith(`/`)?n:`${n}/`,o=t.expandedPaths.filter(e=>{let t=z(e);return t!==n&&!t.startsWith(a)});return o.length===t.expandedPaths.length?e:{byRoot:V({...e.byRoot,[r]:{...t,expandedPaths:o,touchedAt:Date.now()}},20)}})},setSelectedPath:(t,n,r)=>{let i=R((t||``).trim()),a=n?R(n.trim()):null;!i||a&&!r?.allowOutsideRoot&&!B(a,i)||e(e=>{let t=e.byRoot[i],n=H(t),r=a&&!n.openPaths.includes(a)?[...n.openPaths,a]:n.openPaths;return t&&t.selectedPath===a&&r===t.openPaths?e:{byRoot:V({...e.byRoot,[i]:{...n,openPaths:r,selectedPath:a}},20)}})},ensureSelectedPath:e=>{let n=R((e||``).trim());if(!n)return;let r=t().byRoot[n];if(!r||r.selectedPath)return;let i=r.openPaths[0]??null;i&&t().setSelectedPath(n,i)},toggleExpandedPath:(t,n)=>{let r=R((t||``).trim()),i=R((n||``).trim());!r||!i||!B(i,r)||e(e=>{let t=e.byRoot[r],n=H(t),a=n.expandedPaths.includes(i)?n.expandedPaths.filter(e=>e!==i):[...n.expandedPaths,i];return t&&t.expandedPaths===a&&t.selectedPath===n.selectedPath&&t.openPaths===n.openPaths?e:{byRoot:V({...e.byRoot,[r]:{...n,expandedPaths:a}},20)}})},expandPath:(t,n)=>{let r=R((t||``).trim()),i=R((n||``).trim());!r||!i||!B(i,r)||e(e=>{let t=e.byRoot[r],n=H(t);return n.expandedPaths.includes(i)&&t?e:{byRoot:V({...e.byRoot,[r]:{...n,expandedPaths:[...n.expandedPaths,i]}},20)}})},expandPaths:(t,n)=>{let r=R((t||``).trim());if(!r||!n||n.length===0)return;let i=n.map(e=>R((e||``).trim())).filter(e=>e&&B(e,r));i.length!==0&&e(e=>{let t=e.byRoot[r],n=H(t),a=new Set(n.expandedPaths),o=i.filter(e=>!a.has(e));return o.length===0?e:{byRoot:V({...e.byRoot,[r]:{...n,expandedPaths:[...n.expandedPaths,...o]}},20)}})}}),{name:`files-view-tabs-store`,version:2,storage:a(),migrate:e=>{if(!e||typeof e!=`object`)return{byRoot:{}};let t=e.byRoot;return{byRoot:ue(t)}},partialize:e=>({byRoot:ue(e.byRoot)})}),{name:`files-view-tabs-store`})),U=x(),fe=(e,t)=>{let n=(0,U.c)(4),r=t===void 0?200:t,[i,a]=L.useState(e),o,s;return n[0]!==r||n[1]!==e?(o=()=>{let t=window.setTimeout(()=>{a(e)},r);return()=>{window.clearTimeout(t)}},s=[e,r],n[0]=r,n[1]=e,n[2]=o,n[3]=s):(o=n[2],s=n[3]),L.useEffect(o,s),i},pe=()=>{let e=(0,U.c)(17),t=D(W),n=k(),r;e[0]===t?r=e[1]:(r=e=>t?e.getAttachment(t):void 0,e[0]=t,e[1]=r);let i=re(r),a=D(G),o=D(K),s=T(me),c=T(he),l=y(ge);if(t){let r;e[2]===i?r=e[3]:(r=w(i),e[2]=i,e[3]=r);let o=r;if(o)return o;let s;e[4]!==t||e[5]!==a?(s=a.get(t),e[4]=t,e[5]=a,e[6]=s):s=e[6];let c=s;if(c?.path)return c.path;let l;if(e[7]!==t||e[8]!==n){let r;e[10]===t?r=e[11]:(r=e=>e.id===t,e[10]=t,e[11]=r),l=n.find(r),e[7]=t,e[8]=n,e[9]=l}else l=e[9];let u=l;if(u?.directory)return u.directory}if(o?.open&&(o.bootstrapPendingDirectory||o.directoryOverride))return(o.bootstrapPendingDirectory||o.directoryOverride)??void 0;if(s){let t;if(e[12]!==s||e[13]!==c){let n;e[15]===s?n=e[16]:(n=e=>e.id===s,e[15]=s,e[16]=n),t=c.find(n),e[12]=s,e[13]=c,e[14]=t}else t=e[14];let n=t;if(n?.path)return n.path}return l??void 0};function W(e){return e.currentSessionId}function G(e){return e.worktreeMetadata}function K(e){return e.newSessionDraft}function me(e){return e.activeProjectId}function he(e){return e.projects}function ge(e){return e.currentDirectory}var _e=.4,q=8,J=e=>{let t=e.gap??q,n=Math.max(0,e.popupBottom-e.boundaryTop-t),r=e.viewportHeight*_e,i=Math.floor(Math.min(n,r));return n>=120?Math.min(n,Math.max(120,i)):i},Y=(e,t=0)=>{let n=e.closest(`main`);if(!n)return null;let r=(e.closest(`.mobile-chat-screen__content`)?.parentElement??n.parentElement?.closest(`main`)??n).querySelector(`:scope > .oc-mobile-detail-navigation`)?.getBoundingClientRect().bottom,i=n.getBoundingClientRect().top;return Math.max(r===void 0?i:Math.max(r,i),t)},ve=(e,t)=>{let n=(0,U.c)(3),[r,i]=L.useState(void 0),a;return n[0]!==e||n[1]!==t?(a=()=>{if(!t)return;let n=()=>{let t=e.current;if(!t)return;let n=window.visualViewport,r=Y(t,n?.offsetTop??0);if(r===null)return;let a=n?.height??window.innerHeight,o=J({popupBottom:t.getBoundingClientRect().bottom,boundaryTop:r,viewportHeight:a});i(e=>e===o?e:o)};return n(),window.addEventListener(`resize`,n),window.addEventListener(`oc:keyboard-settled`,n),window.visualViewport?.addEventListener(`resize`,n),window.visualViewport?.addEventListener(`scroll`,n),()=>{window.removeEventListener(`resize`,n),window.removeEventListener(`oc:keyboard-settled`,n),window.visualViewport?.removeEventListener(`resize`,n),window.visualViewport?.removeEventListener(`scroll`,n)}},n[0]=e,n[1]=t,n[2]=a):a=n[2],L.useLayoutEffect(a),t?r:void 0},ye=()=>{let e=null,t=!1,n=!1;return{pointerDown:(n,r)=>{e={x:n,y:r},t=!1},pointerMove:(n,r)=>{e&&Math.hypot(n-e.x,r-e.y)>6&&(t=!0)},pointerCancel:()=>{e=null,t=!1},pointerUp:r=>{if(!e)return!1;let i=!t;return e=null,t=!1,i?(n=!0,r(),!0):(n=!0,!1)},click:e=>n?(n=!1,!1):(e(),!0)}},X=h(),Z=L.forwardRef(({searchQuery:e,onFileSelect:t,onAgentSelect:n,onSessionSelect:r,onClose:a,style:o},c)=>{let{t:u}=ee(),d=pe()??``,f=D(e=>e.currentSessionId),p=E(e=>e.activeSessions),m=T(e=>e.activeProjectId),h=T(e=>e.projects),g=L.useMemo(()=>h.find(e=>e.id===m)?.path??null,[m,h]),_=L.useMemo(()=>{let e=g||d;return e?e.replace(/\\/g,`/`).replace(/\/+$/,``):null},[g,d]),v=de(e=>_?e.byRoot[_]:void 0),y=ne(e=>e.getVisibleAgents),x=b(e=>e.searchFiles),S=fe(e,180),te=l(),w=s(),[re,ie]=L.useState([]),[ae,oe]=L.useState([]),[k,M]=L.useState(!1),[N,P]=L.useState(0),F=L.useRef(0),[I,R]=L.useState(360),[z,B]=L.useState({}),[ue,V]=L.useState({}),H=L.useRef([]),U=L.useRef([]),W=L.useRef([]),G=L.useRef(null),K=L.useRef(null);K.current||=ye();let me=i(e=>e.isMobile),he=ve(G,me),ge=(e??``).trim(),_e=L.useMemo(()=>{if(!_||!v)return[];let e=[v.selectedPath,...v.openPaths.slice().reverse()].filter(e=>typeof e==`string`&&e.length>0),t=new Set,n=ge.toLowerCase();return e.filter(e=>{if(t.has(e))return!1;t.add(e);let r=e.startsWith(`${_}/`)?e.slice(_.length+1):e;return!n||r.toLowerCase().includes(n)}).slice(0,6).map(e=>{let t=e.replace(/\\/g,`/`),n=t.split(`/`).filter(Boolean).pop()||t;return{name:n,path:t,relativePath:t.startsWith(`${_}/`)?t.slice(_.length+1):t,extension:n.includes(`.`)?n.split(`.`).pop()?.toLowerCase():void 0}})},[ge,_,v]),q=L.useMemo(()=>ge.length>0?ae:ae.slice(0,2),[ae,ge.length]),J=L.useMemo(()=>r?O({sessions:p,currentSessionId:f,searchQuery:ge}):[],[p,f,ge,r]),Y=_e,Z=re;L.useEffect(()=>{let e=e=>{let t=e.target;!t||!G.current||G.current.contains(t)||a()};return document.addEventListener(`pointerdown`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0)}},[a]),L.useEffect(()=>{if(!d){ie([]);return}let e=(S??``).trim().replace(/^\.\//,``).replace(/^\/+/,``).toLowerCase();if(!e){ie([]);return}let t=!1;M(!0);let n={includeHidden:te,respectGitignore:!w};return Promise.all([x(d,e,80,{...n,type:`file`}),x(d,e,40,{...n,type:`directory`})]).then(([n,r])=>{if(t)return;let i=new Set(_e.map(e=>e.path));ie(se({files:n,directories:r,query:e,excludePaths:i,limit:20}))}).catch(()=>{t||ie([])}).finally(()=>{t||M(!1)}),()=>{t=!0}},[d,S,_e,x,te,w]),L.useEffect(()=>{let t=y(),n=(e??``).trim().toLowerCase(),r=t.filter(e=>e.mode&&e.mode!==`primary`).filter(e=>!n||`${e.name} ${e.description??``}`.toLowerCase().includes(n)).map(e=>({name:e.name,description:e.description,mode:e.mode})).sort((e,t)=>e.name.localeCompare(t.name));oe(r)},[y,e]),L.useEffect(()=>{P(0),B({}),V({})},[Z,Y.length,q.length,J.length]),L.useEffect(()=>{F.current=N},[N]),L.useEffect(()=>{H.current[N]?.scrollIntoView({block:`nearest`})},[N]),L.useEffect(()=>{let e=null,t=()=>{e!==null&&cancelAnimationFrame(e),e=requestAnimationFrame(()=>{let e={},t={};U.current.forEach((n,r)=>{if(!n)return;let i=W.current[r]?.offsetWidth??n.scrollWidth,a=Math.max(0,i-n.clientWidth),o=a>8;if(e[r]=o,o){let e=Math.max(.6,a/110);t[r]=e}}),B(e),V(t)})};return t(),window.addEventListener(`resize`,t),()=>{e!==null&&cancelAnimationFrame(e),window.removeEventListener(`resize`,t)}},[Z,Y]),L.useEffect(()=>{let e=U.current[N];if(!e)return;let t=()=>{let t=e.clientWidth;t>0&&R(t)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[N]);let be=C(e=>{t(e)}),xe=C(e=>{n?.(e)}),Se=C(e=>{r?.(e)}),Ce=(e,t)=>({onMouseDown:e=>e.preventDefault(),onPointerDown:e=>{e.pointerType===`touch`&&K.current?.pointerDown(e.clientX,e.clientY)},onPointerMove:e=>{e.pointerType===`touch`&&K.current?.pointerMove(e.clientX,e.clientY)},onPointerUp:e=>{e.pointerType===`touch`&&(K.current?.pointerUp(t)??!1)&&(e.preventDefault(),e.stopPropagation())},onPointerCancel:()=>K.current?.pointerCancel(),onClick:()=>{K.current?.click(t)},onMouseMove:()=>P(e)});L.useImperativeHandle(c,()=>({handleKeyDown:e=>{if(e===`Escape`){a();return}let t=q.length+J.length+Y.length+Z.length;if(t!==0){if(e===`ArrowDown`){P(e=>(e+1)%t);return}if(e===`ArrowUp`){P(e=>(e-1+t)%t);return}if(e===`Enter`||e===`Tab`){let e=(F.current%t+t)%t;if(e<q.length){let t=q[e];t&&xe(t.name);return}let n=e-q.length;if(n<J.length){let e=J[n];e&&Se(e);return}let r=n-J.length,i=r<Y.length?Y[r]:Z[r-Y.length];i&&be(i)}}}}),[Z,Y,q,J,a,be,xe,Se]);let we=e=>{if(e.isDirectory)return(0,X.jsx)(j,{name:`folder-3-fill`,className:`h-3.5 w-3.5 text-current`});switch(e.extension?.toLowerCase()){case`ts`:case`tsx`:case`js`:case`jsx`:return(0,X.jsx)(j,{name:`code`,className:`h-3.5 w-3.5 text-current`});case`json`:return(0,X.jsx)(j,{name:`code`,className:`h-3.5 w-3.5 text-current`});case`md`:case`mdx`:return(0,X.jsx)(j,{name:`file`,className:`h-3.5 w-3.5 text-current`});case`png`:case`jpg`:case`jpeg`:case`gif`:case`svg`:return(0,X.jsx)(j,{name:`file-image`,className:`h-3.5 w-3.5 text-current`});default:return(0,X.jsx)(j,{name:`file-pdf`,className:`h-3.5 w-3.5 text-current`})}};return(0,X.jsxs)(`div`,{ref:G,className:`absolute z-[100] min-w-0 w-full max-w-[640px] max-h-64 bg-background border-2 border-border/60 rounded-xl shadow-none bottom-full mb-2 left-0 flex flex-col`,style:he===void 0?o:{...o,maxHeight:he},children:[(0,X.jsx)(le,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0`,children:(0,X.jsxs)(`div`,{className:`pb-2`,children:[q.length>0&&(0,X.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.groups.agents`)}),q.map((e,t)=>(0,X.jsx)(`div`,{ref:e=>{H.current[t]=e},className:A(`flex items-start gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,me&&`min-h-11`,N===t&&`bg-interactive-selection text-interactive-selection-foreground`),...Ce(t,()=>xe(e.name)),children:(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`font-semibold truncate`,children:[`@`,e.name]}),e.description&&!me?(0,X.jsx)(`div`,{className:`typography-meta text-muted-foreground truncate`,children:e.description}):null]})},`agent-${e.name}`)),q.length===2&&ge.length===0&&ae.length>2&&(0,X.jsx)(`div`,{className:`px-3 py-1 typography-meta text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.searchMoreAgents`)}),J.length>0&&(0,X.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.groups.sessions`)}),J.map((e,t)=>{let n=q.length+t;return(0,X.jsxs)(`div`,{ref:e=>{H.current[n]=e},className:A(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,me&&`min-h-11`,N===n&&`bg-interactive-selection text-interactive-selection-foreground`),...Ce(n,()=>Se(e)),children:[(0,X.jsx)(j,{name:`chat-thread`,className:`h-4 w-4 flex-shrink-0 text-[var(--primary-base)]`}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.title||u(`chat.fileMentionAutocomplete.untitledSession`),children:e.title||u(`chat.fileMentionAutocomplete.untitledSession`)}),me?null:(0,X.jsx)(`span`,{className:`flex-shrink-0 typography-meta text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.sessionType`)})]},`session-${e.id}`)}),Y.length>0&&(0,X.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.groups.recentFiles`)}),Y.map((e,t)=>{let n=q.length+J.length+t,r=e.relativePath||e.name,i=ce(r,{maxLength:60}),a=N===n,o=z[n]??!1,s=ue[n]??2.6;return(0,X.jsxs)(`div`,{ref:e=>{H.current[n]=e},className:A(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,me&&`min-h-11`,a&&`bg-interactive-selection text-interactive-selection-foreground`),...Ce(n,()=>be(e)),children:[we(e),(0,X.jsxs)(`span`,{ref:e=>{U.current[n]=e},className:`relative flex-1 min-w-0 overflow-hidden file-mention-marquee-container`,style:a?{"--file-mention-marquee-width":`${I}px`,"--file-mention-marquee-duration":`${s}s`}:void 0,"aria-label":r,children:[(0,X.jsx)(`span`,{ref:e=>{W.current[n]=e},className:`absolute invisible whitespace-nowrap pointer-events-none`,"aria-hidden":!0,children:r}),o&&a?(0,X.jsx)(`span`,{className:`inline-block whitespace-nowrap file-mention-marquee`,children:r}):(0,X.jsx)(`span`,{className:`block truncate`,children:i})]})]},`recent-${e.path}`)}),Z.length>0&&(0,X.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.groups.files`)}),Z.map((e,t)=>{let n=q.length+J.length+Y.length+t,r=e.relativePath||e.name,i=ce(r,{maxLength:60}),a=N===n,o=z[n]??!1,s=ue[n]??2.6;return(0,X.jsxs)(`div`,{ref:e=>{H.current[n]=e},className:A(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,me&&`min-h-11`,a&&`bg-interactive-selection text-interactive-selection-foreground`),...Ce(n,()=>be(e)),children:[we(e),(0,X.jsxs)(`span`,{ref:e=>{U.current[n]=e},className:`relative flex-1 min-w-0 overflow-hidden file-mention-marquee-container`,style:a?{"--file-mention-marquee-width":`${I}px`,"--file-mention-marquee-duration":`${s}s`}:void 0,"aria-label":r,children:[(0,X.jsx)(`span`,{ref:e=>{W.current[n]=e},className:`absolute invisible whitespace-nowrap pointer-events-none`,"aria-hidden":!0,children:r}),o&&a?(0,X.jsx)(`span`,{className:`inline-block whitespace-nowrap file-mention-marquee`,children:r}):(0,X.jsx)(`span`,{className:`block truncate`,children:i})]})]},e.path)}),k&&Z.length===0?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,X.jsx)(j,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})}):null,!k&&Z.length===0&&Y.length===0&&q.length===0&&J.length===0&&(0,X.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:u(`chat.fileMentionAutocomplete.empty`)})]})}),!me&&(0,X.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:u(`chat.autocomplete.keyboardHint`)})]})}),be=new Set([`new`,`fork`,`compact`,`undo`,`redo`,`model`,`goal`]),xe=(e,t)=>{if(!t||e.isSkill)return!1;let n=e.name?.trim().toLowerCase();return!!(n&&be.has(n))},Se=(e,t)=>!e||t({name:e}),Ce=` `,we=(e,t)=>{let n=Math.max(0,Math.min(t,e.length)),r=n;for(;r>0&&!/\s/.test(e[r-1]);)--r;return r>=2&&e[r-1]===Ce&&e[r-2]===`/`&&(r-=2),e[r]===`/`?{start:r,end:n}:null},Te=`text-[10px] leading-none uppercase font-bold tracking-tight px-1.5 py-1 rounded border flex-shrink-0`,Ee=A(Te,`bg-[color-mix(in_srgb,var(--primary-base)_12%,transparent)] text-[color-mix(in_srgb,var(--primary-base)_70%,transparent)] border-[color-mix(in_srgb,var(--primary-base)_24%,transparent)]`),De=A(Te,`bg-[color-mix(in_srgb,var(--status-success)_12%,transparent)] text-[color-mix(in_srgb,var(--status-success)_70%,transparent)] border-[color-mix(in_srgb,var(--status-success)_24%,transparent)]`),Oe=A(Te,`bg-[color-mix(in_srgb,var(--status-info)_12%,transparent)] text-[color-mix(in_srgb,var(--status-info)_70%,transparent)] border-[color-mix(in_srgb,var(--status-info)_24%,transparent)]`),ke=A(Te,`bg-[var(--surface-muted)] text-muted-foreground border-[var(--interactive-border)]/60`),Ae=(e,t)=>{let n=t.trim();if(!n)return[...e].sort((e,t)=>e.isBuiltIn===t.isBuiltIn?e.name.localeCompare(t.name):e.isBuiltIn?-1:1);let r=ie(e,n,e=>[e.name,e.description??``]);return r.sort((e,t)=>e.score===t.score?e.item.isBuiltIn===t.item.isBuiltIn?e.item.name.localeCompare(t.item.name):e.item.isBuiltIn?-1:1:e.score-t.score),r.map(e=>e.item)},je=(e,t)=>{let n=!!e.sessionID;return{hasSession:n,canStartSessionCommand:n||e.hasNewDraft,canUseReviewHandoffFlow:n&&!t&&!o()}},Me=L.forwardRef(({searchQuery:e,onCommandSelect:t,onClose:n,directory:r,style:a,commandPolicy:o,commandContext:s},c)=>{let{t:l}=ee(),u=i(e=>e.isMobile),d=D(e=>e.currentSessionId),f=D(e=>!!e.newSessionDraft?.open),p=D(L.useCallback(e=>d?e.getDirectoryForSession(d):void 0,[d])),m=ae(d??``,p??void 0),h=L.useMemo(()=>s??{sessionID:d??null,hasMessages:m.length>0,hasNewDraft:f},[s,d,m.length,f]),{hasSession:g,canStartSessionCommand:_,canUseReviewHandoffFlow:v}=L.useMemo(()=>je(h,u),[h,u]),y=h.hasMessages,[b,x]=L.useState([]),[S,C]=L.useState(!1),ne=oe({directory:r}),w=L.useMemo(()=>ne.data??[],[ne.data]),re=ne.isFetching,ie=te({directory:r}),T=L.useMemo(()=>ie.data??[],[ie.data]),[E,O]=L.useState(0),se=L.useRef(0),k=L.useRef(!1),ce=L.useRef([]),M=L.useRef(null),N=ve(M,u),P=L.useRef(!1),F=L.useRef(null),I=L.useRef(!1);L.useEffect(()=>{let e=e=>{let t=e.target;!t||!M.current||M.current.contains(t)||n()};return document.addEventListener(`pointerdown`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0)}},[n]),L.useEffect(()=>{(async()=>{C(re);try{let t=w.map((e,t)=>({id:`opencode:${e.scope??`global`}:${e.name}:${e.agent??``}:${e.model??``}:${t}`,name:e.name,source:`opencode`,description:e.description,agent:e.agent??void 0,model:e.model??void 0,isBuiltIn:e.isBuiltIn,isSkill:e.source===`skill`,scope:e.scope,reference:e.reference})),n=T.map((e,t)=>({id:`skill:${e.scope}:${e.source??`opencode`}:${e.name}:${t}`,name:e.name,source:`skill`,description:e.description,isSkill:!0,scope:e.scope})),r=[{id:`openchamber:new`,name:`new`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.newDescription`),isBuiltIn:!0},...g&&!y?[{id:`openchamber:init`,name:`init`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.initDescription`),isBuiltIn:!0}]:[],...g?[{id:`openchamber:undo`,name:`undo`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.undoDescription`),isBuiltIn:!0},{id:`openchamber:redo`,name:`redo`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.redoDescription`),isBuiltIn:!0},{id:`openchamber:fork`,name:`fork`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.forkDescription`),isBuiltIn:!0},{id:`openchamber:timeline`,name:`timeline`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.timelineDescription`),isBuiltIn:!0}]:[],{id:`openchamber:model`,name:`model`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.modelDescription`),isBuiltIn:!0},{id:`openchamber:compact`,name:`compact`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.compactDescription`),isBuiltIn:!0},...g?[{id:`openchamber:summary`,name:`summary`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.summaryDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:workspace-review`,name:`workspace-review`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.workspaceReviewDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:handoff-review`,name:`handoff-review`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.handoffReviewDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:plan-feature`,name:`plan-feature`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.featurePlanDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:craft-goal`,name:`craft-goal`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.craftGoalDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:goal`,name:`goal`,source:`openchamber`,description:l(`chat.goal.button.armAria`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:catch-up`,name:`catch-up`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.catchUpDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:debug`,name:`debug`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.debugDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:weigh`,name:`weigh`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.weighDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:explore`,name:`explore`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.exploreDescription`),isOpenChamber:!0}]:[],...t,...n],i=!y,a=r.filter(e=>(i||e.name!==`init`)&&(o?.(e)??!0));x(Ae(a,e))}catch{let t=!y,n=[{id:`openchamber:new`,name:`new`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.newDescription`),isBuiltIn:!0},...g&&!y?[{id:`openchamber:init`,name:`init`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.initDescription`),isBuiltIn:!0}]:[],...g?[{id:`openchamber:undo`,name:`undo`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.undoDescription`),isBuiltIn:!0},{id:`openchamber:redo`,name:`redo`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.redoDescription`),isBuiltIn:!0},{id:`openchamber:fork`,name:`fork`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.forkDescription`),isBuiltIn:!0},{id:`openchamber:timeline`,name:`timeline`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.timelineDescription`),isBuiltIn:!0}]:[],{id:`openchamber:model`,name:`model`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.modelDescription`),isBuiltIn:!0},{id:`openchamber:compact`,name:`compact`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.compactDescription`),isBuiltIn:!0},...g?[{id:`openchamber:summary`,name:`summary`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.summaryDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:workspace-review`,name:`workspace-review`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.workspaceReviewDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:handoff-review`,name:`handoff-review`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.handoffReviewDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:plan-feature`,name:`plan-feature`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.featurePlanDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:craft-goal`,name:`craft-goal`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.craftGoalDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:goal`,name:`goal`,source:`openchamber`,description:l(`chat.goal.button.armAria`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:catch-up`,name:`catch-up`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.catchUpDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:debug`,name:`debug`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.debugDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:weigh`,name:`weigh`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.weighDescription`),isOpenChamber:!0}]:[],..._?[{id:`openchamber:explore`,name:`explore`,source:`openchamber`,description:l(`chat.commandAutocomplete.command.exploreDescription`),isOpenChamber:!0}]:[]].filter(e=>(t||e.name!==`init`)&&(o?.(e)??!0));x(Ae(n,e))}finally{C(!1)}})()},[e,y,g,_,v,w,re,T,l,o]),L.useEffect(()=>{O(0)},[b]),L.useEffect(()=>{se.current=E},[E]),L.useEffect(()=>{ce.current[E]?.scrollIntoView({block:`nearest`})},[E]),L.useImperativeHandle(c,()=>({handleKeyDown:e=>{let r=b.length;if(e===`Escape`){n();return}if(r!==0){if(e===`ArrowDown`){k.current=!0,O(e=>(e+1)%r);return}if(e===`ArrowUp`){k.current=!0,O(e=>(e-1+r)%r);return}if(e===`Enter`||e===`Tab`){let n=(se.current%r+r)%r,i=b[n];i&&t(i,xe(i,e===`Enter`))}}}}),[b,n,t]);let R=e=>{switch(e.name){case`new`:return(0,X.jsx)(j,{name:`add`,className:`h-3.5 w-3.5`});case`init`:return(0,X.jsx)(j,{name:`file`,className:`h-3.5 w-3.5 text-green-500`});case`undo`:return(0,X.jsx)(j,{name:`arrow-go-back`,className:`h-3.5 w-3.5 text-orange-500`});case`redo`:return(0,X.jsx)(j,{name:`arrow-go-forward`,className:`h-3.5 w-3.5 text-orange-500`});case`timeline`:return(0,X.jsx)(j,{name:`time`,className:`h-3.5 w-3.5`});case`compact`:return(0,X.jsx)(j,{name:`scissors`,className:`h-3.5 w-3.5 text-purple-500`});case`goal`:return(0,X.jsx)(j,{name:`target`,className:`h-3.5 w-3.5`});case`review`:return(0,X.jsx)(j,{name:`search-eye`,className:`h-3.5 w-3.5 text-blue-500`});case`test`:case`build`:case`run`:return(0,X.jsx)(j,{name:`terminal-box`,className:`h-3.5 w-3.5 text-cyan-500`});default:return e.isBuiltIn?(0,X.jsx)(j,{name:`flashlight`,className:`h-3.5 w-3.5 text-yellow-500`}):(0,X.jsx)(j,{name:`command`,className:`h-3.5 w-3.5 text-muted-foreground`})}};return(0,X.jsxs)(`div`,{ref:M,className:`absolute z-[100] min-w-0 w-full max-w-[450px] max-h-64 bg-background border-2 border-border/60 rounded-xl shadow-none bottom-full mb-2 left-0 flex flex-col`,style:N===void 0?a:{...a,maxHeight:N},children:[(0,X.jsx)(le,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0 pb-2`,children:S?(0,X.jsx)(`div`,{className:`flex items-center justify-center py-4`,children:(0,X.jsx)(j,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})}):(0,X.jsxs)(`div`,{children:[b.map((e,n)=>{let r=e.isBuiltIn,i=e.isOpenChamber;return(0,X.jsxs)(`div`,{ref:e=>{ce.current[n]=e},className:A(`flex gap-2 px-3 py-2 cursor-pointer rounded-lg`,u?`items-center`:`items-start`,n===E&&`bg-interactive-selection`),onMouseDown:e=>e.preventDefault(),onPointerDown:e=>{e.pointerType===`touch`&&(F.current={x:e.clientX,y:e.clientY},I.current=!1)},onPointerMove:e=>{if(e.pointerType!==`touch`||!F.current)return;let t=e.clientX-F.current.x,n=e.clientY-F.current.y;Math.hypot(t,n)>6&&(I.current=!0)},onPointerUp:n=>{if(n.pointerType!==`touch`)return;let r=I.current;F.current=null,I.current=!1,!r&&(n.preventDefault(),n.stopPropagation(),P.current=!0,t(e,xe(e,u)))},onPointerCancel:()=>{F.current=null,I.current=!1},onClick:()=>{if(P.current){P.current=!1;return}t(e,xe(e,u))},onMouseMove:()=>{k.current=!1,O(n)},children:[(0,X.jsx)(`div`,{className:A(!u&&`mt-0.5`),children:R(e)}),(0,X.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsxs)(`span`,{className:`typography-ui-label font-medium`,children:[`/`,e.name]}),e.isSkill?(0,X.jsx)(`span`,{className:Ee,children:l(`chat.commandAutocomplete.badge.skill`)}):(0,X.jsx)(`span`,{className:Ee,children:l(`chat.commandAutocomplete.badge.command`)}),i?(0,X.jsx)(`span`,{className:ke,children:`OpenChamber`}):r?(0,X.jsx)(`span`,{className:ke,children:l(`chat.commandAutocomplete.badge.system`)}):e.scope?(0,X.jsx)(`span`,{className:e.scope===`project`?Oe:De,children:e.scope}):null,e.agent&&(0,X.jsx)(`span`,{className:ke,children:e.agent})]}),e.description&&!u&&(0,X.jsx)(`div`,{className:`typography-meta text-muted-foreground mt-0.5 truncate`,children:e.description})]})]},e.id)}),b.length===0&&(0,X.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:l(`chat.commandAutocomplete.empty`)})]})}),!u&&(0,X.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:l(`chat.autocomplete.keyboardHint`)})]})});Me.displayName=`CommandAutocomplete`;function Ne(e){return(e.description||e.content).replace(/\s+/g,` `).trim().slice(0,120)}var Pe=L.forwardRef((e,t)=>{let n=(0,U.c)(63),{searchQuery:r,onSnippetSelect:a,onClose:o,style:s}=e,{t:c}=ee(),l=L.useRef(null),u=i(Fe),d=ve(l,u),[f,p]=L.useState(0),m=L.useRef(0),h;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=[],n[0]=h):h=n[0];let[g,_]=L.useState(h),v;n[1]===Symbol.for(`react.memo_cache_sentinel`)?(v=[],n[1]=v):v=n[1];let y=L.useRef(v),b=P(Ie),x=P(Le),S=P(Re),C=P(ze),te=i(Be),ne=i(Ve),w,re;n[2]===x?(w=n[3],re=n[4]):(w=()=>{x()},re=[x],n[2]=x,n[3]=w,n[4]=re),L.useEffect(w,re);let ae,T;n[5]!==r||n[6]!==b?(ae=()=>{let e=r.trim();if(!e.length){let e=[...b].sort(He);_(e),p(+!!e.length);return}let t=ie(b,e,Ue);t.sort(We);let n=t.map(Ge);_(n),p(+!!n.length)},T=[r,b],n[5]=r,n[6]=b,n[7]=ae,n[8]=T):(ae=n[7],T=n[8]),L.useEffect(ae,T);let oe,E;n[9]===f?(oe=n[10],E=n[11]):(oe=()=>{m.current=f,y.current[f]?.scrollIntoView({block:`nearest`})},E=[f],n[9]=f,n[10]=oe,n[11]=E),L.useEffect(oe,E);let D,O;n[12]===o?(D=n[13],O=n[14]):(O=()=>{let e=e=>{let t=e.target;t&&l.current&&!l.current.contains(t)&&o()};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},D=[o],n[12]=o,n[13]=D,n[14]=O),L.useEffect(O,D);let se;n[15]!==a||n[16]!==r?(se=e=>{let t=r.trim(),n=e.aliases.includes(t)?t:e.name;a(e,n)},n[15]=a,n[16]=r,n[17]=se):se=n[17];let k=se,ce;n[18]!==o||n[19]!==C||n[20]!==te||n[21]!==ne||n[22]!==S||n[23]!==b?(ce=()=>{let e=new Set(b.map(Ke)),t=`new-snippet`,n=1;for(;e.has(t);)t=`new-snippet-${n++}`;S({name:t,scope:`global`}),C(t),ne(`snippets`),te(!0),o()},n[18]=o,n[19]=C,n[20]=te,n[21]=ne,n[22]=S,n[23]=b,n[24]=ce):ce=n[24];let M=ce,N,F;n[25]!==k||n[26]!==g||n[27]!==o||n[28]!==M?(N=()=>({handleKeyDown:e=>{if(e===`Escape`){o();return}let t=g.length+1;if(e===`ArrowDown`){p(e=>(e+1)%t);return}if(e===`ArrowUp`){p(e=>(e-1+t)%t);return}if(e===`Enter`||e===`Tab`){if(m.current===0){M();return}let e=g[m.current-1];e&&k(e)}}}),F=[k,g,o,M],n[25]=k,n[26]=g,n[27]=o,n[28]=M,n[29]=N,n[30]=F):(N=n[29],F=n[30]),L.useImperativeHandle(t,N,F);let I;n[31]!==d||n[32]!==s?(I=d===void 0?s:{...s,maxHeight:d},n[31]=d,n[32]=s,n[33]=I):I=n[33];let R;n[34]===Symbol.for(`react.memo_cache_sentinel`)?(R=e=>{y.current[0]=e},n[34]=R):R=n[34];let z=f===0&&`bg-interactive-selection`,B;n[35]===z?B=n[36]:(B=A(`flex items-center gap-2 px-3 py-1.5 cursor-pointer rounded-lg typography-ui-label`,z),n[35]=z,n[36]=B);let ue,V;n[37]===Symbol.for(`react.memo_cache_sentinel`)?(ue=()=>p(0),V=(0,X.jsx)(j,{name:`add`,className:`h-3.5 w-3.5 text-muted-foreground`}),n[37]=ue,n[38]=V):(ue=n[37],V=n[38]);let H;n[39]===c?H=n[40]:(H=c(`chat.snippetAutocomplete.action.addNew`),n[39]=c,n[40]=H);let de;n[41]===H?de=n[42]:(de=(0,X.jsx)(`span`,{className:`font-medium text-foreground`,children:H}),n[41]=H,n[42]=de);let fe;n[43]!==M||n[44]!==B||n[45]!==de?(fe=(0,X.jsxs)(`div`,{ref:R,className:B,onClick:M,onMouseMove:ue,children:[V,de]}),n[43]=M,n[44]=B,n[45]=de,n[46]=fe):fe=n[46];let pe;n[47]!==k||n[48]!==g||n[49]!==u||n[50]!==f||n[51]!==c?(pe=g.length?g.map((e,t)=>(0,X.jsx)(`div`,{ref:e=>{y.current[t+1]=e},className:A(`flex gap-2 px-3 py-1.5 cursor-pointer rounded-lg typography-ui-label`,u?`items-center`:`items-start`,t+1===f&&`bg-interactive-selection`),onClick:()=>k(e),onMouseMove:()=>p(t+1),children:(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsxs)(`span`,{className:`font-semibold truncate`,children:[`#`,e.name]}),(0,X.jsx)(`span`,{className:`text-[10px] leading-none uppercase font-bold tracking-tight px-1.5 py-1 rounded border flex-shrink-0 bg-[var(--surface-muted)] text-muted-foreground border-[var(--interactive-border)]/60`,children:c(`snippets.source.${e.source}`)})]}),!u&&(0,X.jsx)(`div`,{className:`typography-meta text-muted-foreground mt-0.5 truncate`,children:Ne(e)})]})},`${e.source}:${e.filePath}`)):(0,X.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:c(`chat.snippetAutocomplete.empty`)}),n[47]=k,n[48]=g,n[49]=u,n[50]=f,n[51]=c,n[52]=pe):pe=n[52];let W;n[53]!==fe||n[54]!==pe?(W=(0,X.jsxs)(le,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0 pb-2`,children:[fe,pe]}),n[53]=fe,n[54]=pe,n[55]=W):W=n[55];let G;n[56]!==u||n[57]!==c?(G=!u&&(0,X.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:c(`chat.snippetAutocomplete.footer`)}),n[56]=u,n[57]=c,n[58]=G):G=n[58];let K;return n[59]!==I||n[60]!==W||n[61]!==G?(K=(0,X.jsxs)(`div`,{ref:l,className:`absolute z-[100] min-w-0 w-full max-w-[450px] max-h-60 bg-background border-2 border-border/60 rounded-xl shadow-none bottom-full mb-2 left-0 flex flex-col`,style:I,children:[W,G]}),n[59]=I,n[60]=W,n[61]=G,n[62]=K):K=n[62],K});Pe.displayName=`SnippetAutocomplete`;function Fe(e){return e.isMobile}function Ie(e){return e.snippets}function Le(e){return e.loadSnippets}function Re(e){return e.setSnippetDraft}function ze(e){return e.setSelectedSnippet}function Be(e){return e.setSettingsDialogOpen}function Ve(e){return e.setSettingsPage}function He(e,t){return e.source===`project`&&t.source!==`project`?-1:e.source!==`project`&&t.source===`project`?1:e.name.localeCompare(t.name)}function Ue(e){return[e.name,...e.aliases]}function We(e,t){return e.score===t.score?e.item.source===`project`&&t.item.source!==`project`?-1:e.item.source!==`project`&&t.item.source===`project`?1:e.item.name.localeCompare(t.item.name):e.score-t.score}function Ge(e){return e.item}function Ke(e){return e.name}var qe=2,Je=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Ye=e=>{let t=e?.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Xe=e=>Je(e)&&Array.isArray(e.all)&&e.all.every(e=>typeof e==`string`)&&typeof e.current==`string`&&Je(e.branches),Ze=(e,t)=>JSON.stringify([e,t]),Qe=e=>`version`in e&&e.version===qe&&Je(e.entries),$e=e=>{if(!e)return null;try{let t=JSON.parse(e);return Je(t)?t.version===qe&&Je(t.entries)?{version:qe,entries:t.entries}:t:null}catch{return null}},et=(e,t)=>{try{e.setItem(`oc.gitBranchCache`,JSON.stringify(t))}catch{}},tt=(e,t,n)=>{let r=Ye(e);if(!r||!t)return null;let i;try{i=n.getItem(`oc.gitBranchCache`)}catch{return null}let a=$e(i);if(!a)return null;if(Qe(a))return Xe(a.entries[Ze(t,r)])?a.entries[Ze(t,r)]:null;let o={};for(let[e,n]of Object.entries(a)){let r=Ye(e);r&&Xe(n)&&(o[Ze(t,r)]=n)}return et(n,{version:qe,entries:o}),o[Ze(t,r)]??null},nt=(e,t,n,r)=>{let i=Ye(e);if(!i||!t||!Xe(n))return;let a=null;try{a=r.getItem(`oc.gitBranchCache`)}catch{return}let o=$e(a);et(r,{version:qe,entries:{...o&&Qe(o)?o.entries:{},[Ze(t,i)]:n}})},rt=3e4,it=Ye,at=(e,n=t())=>c.git.branches(it(e),n),ot=(e,n=t())=>c.git.remotes(it(e),n),st=async(e,t,n)=>{n.throwIfAborted();let r=d()?.git,i=t?.getGitBranches?await t.getGitBranches(e,{signal:n}):r?await r.getGitBranches(e,{signal:n}):await v(e,{signal:n});return n.throwIfAborted(),i},ct=async(e,t,n)=>{n.throwIfAborted();let r=d()?.git,i=t?.getRemotes?await t.getRemotes(e,{signal:n}):r?await r.getRemotes(e,{signal:n}):await _(e,{signal:n});return n.throwIfAborted(),i},lt=(e,r,i=t(),a=n())=>{let o=it(e),s=r;return{queryKey:at(o,i),queryFn:async({signal:e})=>{if(!o)throw Error(`Git branches require a directory`);let t=await st(o,s,e);return nt(o,i,t,a),t},staleTime:rt,gcTime:1/0,initialData:()=>tt(o,i,a)??void 0,initialDataUpdatedAt:0}},ut=(e,n,r=t())=>{let i=it(e),a=n;return{queryKey:ot(i,r),queryFn:({signal:e})=>{if(!i)throw Error(`Git remotes require a directory`);return ct(i,a,e)},staleTime:rt,gcTime:1/0}},dt=(e,n,i)=>{let a=(0,U.c)(9),o=i===void 0||i,s=L.useSyncExternalStore(r,t,t),c,l,u;a[0]!==e||a[1]!==n||a[2]!==s?(c=it(e),u=S,l=lt(c,n,s),a[0]=e,a[1]=n,a[2]=s,a[3]=c,a[4]=l,a[5]=u):(c=a[3],l=a[4],u=a[5]);let d=o&&!!c,f;return a[6]!==l||a[7]!==d?(f={...l,enabled:d},a[6]=l,a[7]=d,a[8]=f):f=a[8],u(f)},ft=(e,n,i)=>{let a=(0,U.c)(9),o=i===void 0||i,s=L.useSyncExternalStore(r,t,t),c,l,u;a[0]!==e||a[1]!==n||a[2]!==s?(c=it(e),u=S,l=ut(c,n,s),a[0]=e,a[1]=n,a[2]=s,a[3]=c,a[4]=l,a[5]=u):(c=a[3],l=a[4],u=a[5]);let d=o&&!!c,f;return a[6]!==l||a[7]!==d?(f={...l,enabled:d},a[6]=l,a[7]=d,a[8]=f):f=a[8],u(f)},pt=(e,n,r=u,i=t())=>r.fetchQuery(lt(e,n,i)),mt=(e,n,r=u,i=t())=>r.fetchQuery({...lt(e,n,i),staleTime:0}),ht=e=>e instanceof Error?e.name===`AbortError`||e.name===`CancelledError`||e.name===`Error`&&e.message===`CancelledError`:!1,gt=1e4,_t=6e4,vt=5e3,yt=3e4,bt=6e4,xt=25,St=40,Ct=2,wt=15e3,Tt=500,Et=30,Dt=20971520,Ot=new Map,kt=new Map,At=new Map,jt=new Map,Mt=new Map,Nt=(e,t)=>`${t}:${e}`,Pt=e=>kt.get(e)??0,Ft=e=>{let t=Pt(e)+1;return kt.set(e,t),t},It=e=>{let t=(At.get(e)??0)+1;return At.set(e,t),t},Lt=e=>{let t=Ot.get(e);if(t)return t;let n=new Set;return Ot.set(e,n),n},Q=()=>({isGitRepo:null,status:null,branches:null,branchesTransportIdentity:null,log:null,identity:null,diffCache:new Map,indexRevision:0,lastRepoCheckAt:0,lastStatusFetch:0,lastStatusChange:0,lastLogFetch:0,lastBranchesFetch:0,lastIdentityFetch:0,logMaxCount:25,isLoadingStatus:!1,isLoadingLog:!1,isLoadingBranches:!1,isLoadingIdentity:!1}),Rt=(e,t=Et,n=Dt)=>{let r=0;for(let t of e.values())r+=(t.original?.length??0)+(t.modified?.length??0);if(e.size<=t&&r<=n)return e;let i=Array.from(e.entries()).sort((e,t)=>e[1].fetchedAt-t[1].fetchedAt),a=new Map,o=0;for(let e=i.length-1;e>=0;e--){let[r,s]=i[e],c=(s.original?.length??0)+(s.modified?.length??0);if(a.size>=t)break;o+c>n&&a.size>0||(a.set(r,s),o+=c)}return a},zt=(e,t)=>{if(!e&&!t)return!1;if(!e||!t)return!0;let n=new Set([...Object.keys(e),...Object.keys(t)]);for(let r of n){let n=e[r],i=t[r];if(!(!n&&!i)&&(!n||!i||n.insertions!==i.insertions||n.deletions!==i.deletions))return!0}return!1},Bt=(e,t)=>!e&&!t?!1:!e||!t||e.remote!==t.remote||e.branch!==t.branch||e.ahead!==t.ahead||e.behind!==t.behind,Vt=(e,t)=>{if(!e&&!t)return!1;if(!e||!t)return!0;let n=e.files??[],r=t.files??[];if(n.length!==r.length||e.ahead!==t.ahead||e.behind!==t.behind||e.current!==t.current||e.tracking!==t.tracking||e.isClean!==t.isClean||t.upstreamComparison!==void 0&&Bt(e.upstreamComparison,t.upstreamComparison))return!0;let i=new Set(n.map(e=>`${e.path}:${e.index}:${e.working_dir}`));for(let e of r)if(!i.has(`${e.path}:${e.index}:${e.working_dir}`))return!0;return!!(t.diffStats!==void 0&&zt(e.diffStats,t.diffStats))},Ht=(e,t)=>{let n=new Set;if(!t)return n;let r=e?.files??[],i=t.files??[],a=new Map(r.map(e=>[e.path,e])),o=new Map(i.map(e=>[e.path,e])),s=new Set([...a.keys(),...o.keys()]);for(let e of s){let t=a.get(e),r=o.get(e);if(!t||!r){n.add(e);continue}if(t.index!==r.index||t.working_dir!==r.working_dir){n.add(e);continue}}if(t.diffStats!==void 0){let r=e?.diffStats??{},i=t.diffStats??{},a=new Set([...Object.keys(r),...Object.keys(i)]);for(let e of a){let t=r[e],a=i[e];if(!t||!a){n.add(e);continue}(t.insertions!==a.insertions||t.deletions!==a.deletions)&&n.add(e)}}return n},Ut=(e,t)=>{if(!e&&!t)return!1;if(!e||!t)return!0;let n=e.files??[],r=t.files??[],i=e=>{let t=e?.trim()??``;return t===`?`?``:t},a=new Map(n.map(e=>[e.path,i(e.index)])),o=new Map(r.map(e=>[e.path,i(e.index)])),s=new Set([...a.keys(),...o.keys()]);for(let e of s)if((a.get(e)??``)!==(o.get(e)??``))return!0;return!1},Wt=e=>!e||e.trim().length===0,Gt=e=>(e||``).trim()===`U`,Kt=e=>{let t=(e.index||``).trim(),n=(e.working_dir||``).trim();if(Gt(t)||Gt(n))return e;let r=t===`?`||n===`?`?`A`:t||n||` `;return{...e,index:r,working_dir:` `}},qt=e=>{let t=(e.index||``).trim(),n=(e.working_dir||``).trim();if(Gt(t)||Gt(n))return e;let r=n||(t===`A`||t===`?`?`?`:t)||` `;return{...e,index:` `,working_dir:r}},Jt=e=>Wt(e.index)&&Wt(e.working_dir),$=f()(m((e,n)=>({directories:new Map,activeDirectory:null,setActiveDirectory:t=>{let{activeDirectory:r,directories:i}=n();if(r!==t)if(r&&Ft(r),t&&Ft(t),t&&!i.has(t)){let n=new Map(i);n.set(t,Q()),e({activeDirectory:t,directories:n})}else e({activeDirectory:t})},getDirectoryState:e=>n().directories.get(e)??null,fetchStatus:async(t,r,i={})=>{let a=i.mode??`full`,o=Nt(t,a),s=jt.get(o)??(a===`light`?jt.get(Nt(t,`full`)):void 0);if(s)return s;let c=(async()=>{let{silent:a=!1}=i,{directories:o}=n(),s=o.get(t);if(s||=Q(),!a){let r=new Map(n().directories),i=r.get(t)??Q();r.set(t,{...i,isLoadingStatus:!0}),e({directories:r})}let c=!1;try{let a=Date.now(),o=s.isGitRepo!==!0||a-(s.lastRepoCheckAt||0)>_t,l=s.isGitRepo===!0;if(o&&(l=await r.checkIsGitRepository(t)),!l){let r=new Map(n().directories),i=r.get(t)??s;return r.set(t,{...i,isGitRepo:!1,status:null,isLoadingStatus:!1,lastRepoCheckAt:a,lastStatusFetch:a}),e({directories:r}),!1}let u=await r.getGitStatus(t,i.mode?{mode:i.mode}:void 0);if(Vt(s.status,u)){c=!0;let r=new Map(n().directories),i=r.get(t)??Q(),s=Ht(i.status,u),l=Ut(i.status,u),d=new Set((i.status?.files??[]).map(e=>e.path)),f=new Set((u.files??[]).map(e=>e.path)),p=new Map(i.diffCache);for(let e of d)f.has(e)||p.delete(e);for(let e of s)p.delete(e);let m=s.size>0;m&&Ft(t);let h={...u,diffStats:u.diffStats===void 0&&i.status?.diffStats!==void 0?i.status.diffStats:u.diffStats,upstreamComparison:u.upstreamComparison===void 0?i.status?.upstreamComparison:u.upstreamComparison};r.set(t,{...i,isGitRepo:!0,status:h,diffCache:p,indexRevision:l?i.indexRevision+1:i.indexRevision,lastRepoCheckAt:o?a:i.lastRepoCheckAt,lastStatusFetch:Date.now(),lastStatusChange:m?Date.now():i.lastStatusChange}),e({directories:r})}else{let r=new Map(n().directories),i=r.get(t)??Q();r.set(t,{...i,isGitRepo:!0,lastRepoCheckAt:o?a:i.lastRepoCheckAt,lastStatusFetch:Date.now(),lastStatusChange:i.lastStatusChange}),e({directories:r})}}catch(e){console.error(`Failed to fetch git status:`,e)}finally{if(!a){let r=new Map(n().directories),i=r.get(t)??Q();r.set(t,{...i,isLoadingStatus:!1}),e({directories:r})}}return c})();jt.set(o,c);try{return await c}finally{jt.get(o)===c&&jt.delete(o)}},moveStatusPathsOptimistically:(t,r,i)=>{let a=new Set(r.map(e=>e.trim()).filter(Boolean));if(a.size===0)return null;let{directories:o}=n(),s=o.get(t),c=s?.status??null;if(!s||!c)return c;let l=!1,u=[];for(let e of c.files){if(!a.has(e.path)){u.push(e);continue}let t=i===`stage`?Kt(e):qt(e);t!==e&&(l=!0),Jt(t)?l=!0:u.push(t)}if(!l)return c;let d=new Map(o);return d.set(t,{...s,status:{...c,files:u,isClean:u.length===0},indexRevision:s.indexRevision+1,lastStatusChange:Date.now()}),e({directories:d}),c},restoreStatus:(t,r)=>{let{directories:i}=n(),a=i.get(t);if(!a)return;let o=new Map(i);o.set(t,{...a,status:r,indexRevision:a.indexRevision+1,lastStatusChange:Date.now()}),e({directories:o})},bumpIndexRevision:t=>{let{directories:r}=n(),i=r.get(t);if(!i)return;let a=new Map(r);a.set(t,{...i,indexRevision:i.indexRevision+1}),e({directories:a})},fetchBranches:async(r,i,a={})=>{let o=t(),s=It(r);{let t=new Map(n().directories),i=t.get(r)??Q();t.set(r,{...i,isLoadingBranches:!0}),e({directories:t})}try{let c=a.force?await mt(r,i,void 0,o):await pt(r,i,void 0,o);if(s!==At.get(r)||o!==t())return;let l=new Map(n().directories),u=l.get(r)??Q();l.set(r,{...u,branches:c,branchesTransportIdentity:o,isLoadingBranches:!1,lastBranchesFetch:Date.now()}),e({directories:l})}catch(i){if(ht(i)||console.error(`Failed to fetch git branches:`,i),s!==At.get(r)||o!==t())return;let a=new Map(n().directories),c=a.get(r)??Q();a.set(r,{...c,isLoadingBranches:!1}),e({directories:a})}},fetchLog:async(t,r,i)=>{let{directories:a}=n(),o=a.get(t),s=i??o?.logMaxCount??25;{let r=new Map(n().directories),i=r.get(t)??Q();r.set(t,{...i,isLoadingLog:!0}),e({directories:r})}try{let i=await r.getGitLog(t,{maxCount:s}),a=new Map(n().directories),o=a.get(t)??Q();a.set(t,{...o,log:i,isLoadingLog:!1,lastLogFetch:Date.now(),logMaxCount:s}),e({directories:a})}catch(r){console.error(`Failed to fetch git log:`,r);let i=new Map(n().directories),a=i.get(t)??Q();i.set(t,{...a,isLoadingLog:!1}),e({directories:i})}},fetchIdentity:async(t,r)=>{{let r=new Map(n().directories),i=r.get(t)??Q();r.set(t,{...i,isLoadingIdentity:!0}),e({directories:r})}try{let i=await r.getCurrentGitIdentity(t),a=new Map(n().directories),o=a.get(t)??Q();a.set(t,{...o,identity:i,isLoadingIdentity:!1,lastIdentityFetch:Date.now()}),e({directories:a})}catch(r){console.error(`Failed to fetch git identity:`,r);let i=new Map(n().directories),a=i.get(t)??Q();i.set(t,{...a,isLoadingIdentity:!1}),e({directories:i})}},fetchAll:async(t,r,i={})=>{let{directories:a}=n(),o=a.get(t);if(!o){o=Q();let n=new Map(a);n.set(t,o),e({directories:n})}let{force:s=!1,silentIfCached:c=!1}=i,l=Date.now();await n().fetchStatus(t,r,{silent:c&&!!o?.status});let u=n().directories.get(t);if(!u?.isGitRepo)return;await n().fetchBranches(t,r,{force:s});let d=l-(u.lastLogFetch||0);(s||d>gt||!u.log)&&await n().fetchLog(t,r),await n().fetchIdentity(t,r)},getDiff:(e,t)=>n().directories.get(e)?.diffCache.get(t)??null,setDiff:(t,r,i)=>{let a=new Map(n().directories),o=a.get(t)??Q(),s=new Map(o.diffCache);s.set(r,{...i,fetchedAt:Date.now()});let c=Rt(s);a.set(t,{...o,diffCache:c}),e({directories:a})},clearDiffCache:t=>{Ft(t);let r=new Map(n().directories),i=r.get(t);i&&(r.set(t,{...i,diffCache:new Map}),e({directories:r}))},fetchAllDiffs:async(e,t)=>{let r=n().directories.get(e);if(!r?.status?.files||r.status.files.length===0)return;let i=r.status.files.map(e=>e.path).slice(0,xt);await n().prefetchDiffs(e,t,i,{maxFiles:xt})},prefetchDiffs:async(t,r,i,a={})=>{let o=n().directories.get(t);if(!o?.status?.files||o.status.files.length===0||i.length===0)return;let{maxFiles:s=St}=a,c=new Set(o.status.files.map(e=>e.path)),l=o.status.diffStats,u=Lt(t),d=[],f=new Set;for(let e of i){if(!e||f.has(e)||(f.add(e),!c.has(e))||o.diffCache.has(e)||u.has(e))continue;let t=l?.[e];t&&t.insertions+t.deletions>Tt||d.push(e)}let p=d.slice(0,Math.max(1,s));if(p.length===0)return;let m=Pt(t);if(typeof document<`u`&&document.hidden)return;p.forEach(e=>u.add(e));let h=0,g=[],_=()=>{let e=h;return h+=1,e<p.length?p[e]:null},v=async e=>{let n=r.getGitFileDiff(t,{path:e}),i=new Promise((e,t)=>{setTimeout(()=>t(Error(`Timed out after ${wt}ms`)),wt)}),a=await Promise.race([n,i]);return{path:e,diff:{original:a.original??``,modified:a.modified??``,isBinary:a.isBinary}}},y=async()=>{for(;;){if(m!==Pt(t))return;let e=_();if(!e)return;try{g.push(await v(e))}catch{}finally{u.delete(e)}}},b=Math.min(Ct,p.length);if(await Promise.allSettled(Array.from({length:b},()=>y())),p.forEach(e=>u.delete(e)),m!==Pt(t))return;let x=new Map(n().directories),S=x.get(t);if(!S)return;let C=new Map(S.diffCache),ee=Date.now();g.forEach(e=>{C.set(e.path,{...e.diff,fetchedAt:ee})});let te=Rt(C);x.set(t,{...S,diffCache:te}),e({directories:x})},setLogMaxCount:(t,r)=>{let i=new Map(n().directories),a=i.get(t)??Q();i.set(t,{...a,logMaxCount:r}),e({directories:i})},ensureStatus:async(e,t)=>{let r=n().directories.get(e),i=Date.now();r?.status&&i-r.lastStatusFetch<vt||await n().fetchStatus(e,t,{silent:!!r?.status})},ensureAll:(e,t)=>{let r=Mt.get(e);if(r)return r;let i=(async()=>{let r=n().directories.get(e),i=Date.now();(!r?.status||r.status.diffStats===void 0||i-(r?.lastStatusFetch??0)>=vt)&&await n().fetchStatus(e,t,{silent:!!r?.status});let a=n().directories.get(e);if(!a?.isGitRepo)return;let o=[];(!a.branches||i-a.lastBranchesFetch>=yt)&&o.push(n().fetchBranches(e,t)),(!a.log||i-a.lastLogFetch>=gt)&&o.push(n().fetchLog(e,t)),(!a.identity||i-a.lastIdentityFetch>=bt)&&o.push(n().fetchIdentity(e,t)),o.length>0&&await Promise.all(o)})();return Mt.set(e,i),i.finally(()=>{Mt.get(e)===i&&Mt.delete(e)}),i},refresh:async(e,t={})=>{let{activeDirectory:r}=n();r&&await n().fetchAll(r,e,t)}}),{name:`git-store`})),Yt=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.status??null:null,t[0]=e,t[1]=n),$(n)},Xt=e=>{let n=(0,U.c)(3),i=L.useSyncExternalStore(r,t,t),a;return n[0]!==e||n[1]!==i?(a=t=>{if(!e)return null;let n=t.directories.get(e);return n?.branchesTransportIdentity===i?n.branches:null},n[0]=e,n[1]=i,n[2]=a):a=n[2],$(a)},Zt=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.log??null:null,t[0]=e,t[1]=n),$(n)},Qt=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.isGitRepo??null:null,t[0]=e,t[1]=n),$(n)},$t=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.status?.current?.trim()??null:null,t[0]=e,t[1]=n),$(n)},en={current:new Map},tn=()=>$(sn),nn=e=>{let t=(0,U.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=new Map,t[0]=n):n=t[0];let r=L.useRef(n),i;return t[1]===e?i=t[2]:(i=t=>{let n=r.current,i=n.size===e.length;if(i)for(let r of e){let e=t.directories.get(r),a=n.get(r);if(!a||(e?.isGitRepo??null)!==a.isGitRepo||(e?.status?.current??null)!==a.branch){i=!1;break}}if(i)return n;let a=new Map;for(let n of e){let e=t.directories.get(n);a.set(n,{isGitRepo:e?.isGitRepo??null,branch:e?.status?.current??null})}return r.current=a,a},t[1]=e,t[2]=i),$(i)},rn=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.isLoadingStatus??!1:!1,t[0]=e,t[1]=n),$(n)},an=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.isLoadingLog??!1:!1,t[0]=e,t[1]=n),$(n)},on=e=>{let t=(0,U.c)(2),n;return t[0]===e?n=t[1]:(n=t=>e?t.directories.get(e)?.isLoadingBranches??!1:!1,t[0]=e,t[1]=n),$(n)};function sn(e){let t=en.current,n=t.size===e.directories.size;if(n){for(let[r,i]of e.directories)if(t.get(r)!==(i.status?.current??null)){n=!1;break}}if(n)return t;let r=new Map;for(let[t,n]of e.directories)r.set(t,n.status?.current??null);return en.current=r,r}var cn=e=>{let t=String(e||``).trim().replace(/^remotes\//,``);if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{remote:t.slice(0,n),branch:t.slice(n+1)}},ln=e=>String(e||``).trim().replace(/^refs\/heads\//,``).replace(/^heads\//,``).replace(/^remotes\//,``),un=e=>e.branchName?ln(e.branchName):e.mode===`existing`?ln(e.existingBranch||e.preferredName||``):ln(e.preferredName||``),dn=async e=>{let t=await F(e);try{let n=cn((await M(e)).branches?.[t]?.tracking||null);if(n?.remote)return n.remote}catch{}try{let t=cn((await N(e)).tracking);if(t?.remote)return t.remote}catch{}return null},fn=async(e,t)=>{let n=await dn(e),r=ln(t);return!n||!r?null:{setUpstream:!0,upstreamRemote:n,upstreamBranch:r}},pn=async(e,t,n)=>{let r=un(t),i=n?.resolvedRootTrackingRemote,a=i===void 0?await fn(e,r):i&&ln(r)?{setUpstream:!0,upstreamRemote:i,upstreamBranch:ln(r)}:null;return a?{...t,setUpstream:t.setUpstream??a.setUpstream,upstreamRemote:t.upstreamRemote||a.upstreamRemote,upstreamBranch:t.upstreamBranch||a.upstreamBranch}:t},mn=async(e,t,n)=>{let r=await pn(e.path,t,n);return I(e,r)},hn=`oc:lastWorktreeSourceBranch`,gn=({mode:e,sourceBranch:t,linkedPr:n,selectedBranch:r})=>e===`existing-branch`?r||null:n?null:t||null,_n=({branches:e,savedSourceBranch:t,rootBranch:n})=>t&&e.includes(t)&&t?{sourceBranch:t,shouldClearSavedSourceBranch:!1}:{sourceBranch:n&&e.includes(n)?n:e.includes(`main`)?`main`:e.includes(`master`)?`master`:e[0]??``,shouldClearSavedSourceBranch:!!t},vn=(e,t,n)=>{if(!e)return e;let r=t.length>0&&!/\s$/.test(t)&&!/^\s/.test(e)&&!/[([{]$/.test(t),i=n.length>0&&!/\s$/.test(e)&&!/^\s/.test(n)&&!/^[\])}.,;:!?]/.test(n);return`${r?` `:``}${e}${i?` `:``}`},yn=(e,t,n)=>{let r=vn(e,t,n);return`${t.length===0&&!/^\s/.test(r)?` `:``}${r}${n.length===0&&!/\s$/.test(r)?` `:``}`},bn=(e,t,n,r)=>{let i=e.slice(0,t),a=e.slice(n),o=yn(r,i,a),s=Math.max(0,o.indexOf(r)),c=i.length+s;return{text:`${i}${o}${a}`,caret:i.length+o.length,start:c,end:c+r.length}},xn=(e,t)=>{let n=e=>`${e.kind}:${e.value}:${e.range.start}:${e.range.end}`;return new Set(e.map(n)).has(n(t))?[...e]:[...e,t]},Sn=(e,t)=>t<e.length&&e[t]===` `?t+1:t;export{ve as A,dt as C,we as D,Me as E,fe as M,de as N,Se as O,mt as S,Pe as T,Zt as _,hn as a,$ as b,mn as c,tn as d,$t as f,rn as g,an as h,yn as i,pe as j,Z as k,dn as l,on as m,xn as n,_n as o,Xt as p,bn as r,gn as s,Sn as t,pn as u,nn as v,ft as w,Qt as x,Yt as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={"settings.globalConfig.title":`グローバル設定`,"settings.globalConfig.description":`~/.config/opencode で現在使われている設定ファイルを編集します。`,"settings.globalConfig.actions.reload":`ファイルを再読み込み`,"settings.globalConfig.restartHint":`保存後に OpenCode を再起動すると、設定変更が反映されます。`,"settings.globalConfig.toast.loadFailed":`設定ファイルの読み込みに失敗しました`,"settings.globalConfig.toast.saveFailed":`設定ファイルの保存に失敗しました`,"settings.globalConfig.toast.saved":`設定を保存しました。OpenCode を再起動すると反映されます。`,"settings.providers.page.openCodeGo.title":`OpenCode Go 使用量追跡`,"settings.providers.page.openCodeGo.description":`OpenCode Go ダッシュボードを接続して、ローリング、週間、月間のクォータを表示します。`,"settings.providers.page.openCodeGo.workspaceId":`ワークスペース ID`,"settings.providers.page.openCodeGo.authCookie":`認証 Cookie`,"settings.providers.page.openCodeGo.help":`ダッシュボード URL からワークスペース ID を、ブラウザーの開発者ツールから auth Cookie をコピーしてください。OpenChamber がブラウザーの Cookie を走査することはありません。`,"settings.providers.page.openCodeGo.save":`保存して検証`,"settings.providers.page.openCodeGo.replace":`置換`,"settings.providers.page.openCodeGo.validate":`検証`,"settings.providers.page.openCodeGo.delete":`削除`,"settings.providers.page.quotaCredentials.saved":`{provider} の認証情報を保存しました。`,"settings.providers.page.openCodeGo.saveFailed":`OpenCode Go の認証情報を検証できませんでした。`,"settings.providers.page.openCodeGo.valid":`OpenCode Go の認証情報は有効です。`,"settings.providers.page.openCodeGo.invalid":`OpenCode Go の認証情報が無効または期限切れです。`,"settings.providers.page.openCodeGo.deleted":`OpenCode Go の認証情報を削除しました。`,"settings.providers.page.openCodeGo.deleteFailed":`OpenCode Go の認証情報を削除できませんでした。`,"settings.appearance.language.label":`言語`,"settings.appearance.language.description":`インターフェース言語を選択します。`,"settings.appearance.language.select":`言語を選択`,"settings.window.description":`OpenChamber 設定ウィンドウ。`,"settings.view.home.title":`設定`,"settings.view.home.description":`よく使うページにジャンプします。`,"settings.view.home.cards.providers.title":`プロバイダー`,"settings.view.home.cards.providers.description":`モデル + 認証情報を接続`,"settings.view.home.cards.agents.title":`エージェント`,"settings.view.home.cards.agents.description":`プロンプト、ツール、権限`,"settings.view.home.cards.skillsCatalog.title":`スキルカタログ`,"settings.view.home.cards.skillsCatalog.description":`カタログからスキルをインストール`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`MCP サーバーと接続を設定`,"settings.view.home.cards.plugins.title":`プラグイン`,"settings.view.home.cards.plugins.description":`opencode のプラグインを管理`,"settings.view.home.cards.usage.title":`使用量`,"settings.view.home.cards.usage.description":`割り当てと支出の表示`,"settings.view.unavailable.title":`利用できません`,"settings.view.unavailable.description":`このランタイムではこの設定ページは利用できません。`,"settings.view.badge.beta":`ベータ`,"settings.view.actions.reloadOpenCode":`OpenCode を再読み込み`,"settings.view.actions.reloadOpenCodeTooltip":`OpenCode を再起動して設定を再読み込みします。`,"settings.view.actions.backToSettings":`設定に戻る`,"settings.view.actions.closeSettings":`設定を閉じる`,"settings.view.actions.openSectionList":`セクション一覧を開く`,"settings.view.actions.closeSettingsWithShortcut":`設定を閉じる ({shortcut}+,)`,"settings.view.actions.back":`戻る`,"settings.view.actions.resizeNavigation":`設定ナビゲーションのサイズ変更`,"settings.view.navigation.groups.connection":`接続`,"settings.view.navigation.groups.personalization":`パーソナライズ`,"settings.view.navigation.groups.workspace":`ワークスペース`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`コンテンツと自動化`,"settings.view.navigation.groups.system":`システム`,"settings.view.search.placeholder":`設定を検索`,"settings.view.search.aria":`設定を検索`,"settings.view.search.clear":`設定検索をクリア`,"settings.view.search.noResults":`該当する設定がありません`,"settings.page.projects.title":`プロジェクト`,"settings.page.remoteInstances.title":`リモートインスタンス`,"settings.page.providers.title":`プロバイダー`,"settings.page.usage.title":`使用量`,"settings.page.agents.title":`エージェント`,"settings.page.commands.title":`コマンド`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`プラグイン`,"settings.page.skills.title":`スキル`,"settings.page.skillsCatalog.title":`スキルカタログ`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`外観`,"settings.page.chat.title":`チャット`,"settings.page.shortcuts.title":`ショートカット`,"settings.page.sessions.title":`セッション`,"settings.page.summaryAI.title":`AI 要約`,"settings.page.magicPrompts.title":`マジックプロンプト`,"settings.page.notifications.title":`通知`,"settings.page.voice.title":`音声`,"settings.page.about.title":`概要`,"settings.page.snippets.title":`スニペット`,"settings.snippets.sidebar.title":`スニペット`,"settings.snippets.sidebar.total":`合計: {count}`,"settings.snippets.sidebar.actions.create":`Snippet を作成`,"settings.snippets.sidebar.actions.more":`{name} のその他の操作`,"settings.snippets.sidebar.toast.deleted":`Snippet を削除しました`,"settings.snippets.sidebar.toast.deleteFailed":`Snippet の削除に失敗しました`,"settings.snippets.sidebar.dialog.deleteTitle":`Snippet を削除しますか?`,"settings.snippets.sidebar.dialog.deleteDescription":`#{name} は完全に削除されます。`,"settings.snippets.page.empty.title":`Snippet を選択`,"settings.snippets.page.empty.description":`サイドバーから編集する Snippet を選択してください。`,"settings.snippets.page.title.new":`新しい Snippet`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`この Snippet の説明`,"settings.snippets.page.field.aliases":`エイリアス`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`内容`,"settings.snippets.page.field.contentPlaceholder":`Snippet の Markdown...`,"settings.snippets.page.hint":`プロンプトで #name を使用します。Aliases と opencode-snippets 互換の prepend/append ブロックをサポートします。`,"settings.snippets.page.toast.nameRequired":`Snippet 名が必要です`,"settings.snippets.page.toast.contentRequired":`Snippet の内容が必要です`,"settings.snippets.page.toast.saveFailed":`Snippet の保存に失敗しました`,"settings.snippets.page.toast.saved":`Snippet を保存しました`,"settings.page.promptTemplates.title":`プロンプトテンプレート`,"settings.promptTemplates.sidebar.title":`プロンプトテンプレート`,"settings.promptTemplates.sidebar.total":`合計: {count}`,"settings.promptTemplates.sidebar.empty.title":`Prompt Template がありません`,"settings.promptTemplates.sidebar.empty.description":`Prompt Template を作成して始めましょう。`,"settings.promptTemplates.sidebar.toast.deleted":`Template "{name}" を削除しました`,"settings.promptTemplates.sidebar.toast.deleteFailed":`Template の削除に失敗しました`,"settings.promptTemplates.sidebar.toast.nameRequired":`Template 名が必要です`,"settings.promptTemplates.sidebar.toast.renamed":`Template の名前を変更しました`,"settings.promptTemplates.sidebar.toast.renameFailed":`Template の名前変更に失敗しました`,"settings.promptTemplates.sidebar.dialog.deleteTitle":`Template を削除しますか?`,"settings.promptTemplates.sidebar.dialog.deleteDescription":`"{name}" は完全に削除されます。この操作は元に戻せません。`,"settings.promptTemplates.sidebar.renameDialog.title":`Template の名前を変更`,"settings.promptTemplates.sidebar.renameDialog.description":`"{name}" の新しい名前を入力してください。`,"settings.promptTemplates.sidebar.renameDialog.placeholder":`Template 名`,"settings.promptTemplates.sidebar.badge.default":`デフォルト`,"settings.promptTemplates.page.empty.title":`Template を選択`,"settings.promptTemplates.page.empty.description":`サイドバーから編集する Template を選択してください。`,"settings.promptTemplates.page.title.new":`新しい Template`,"settings.promptTemplates.page.subtitle.edit":`Template を編集`,"settings.promptTemplates.page.subtitle.new":`新しい Prompt Template を作成`,"settings.promptTemplates.page.section.identity":`識別情報`,"settings.promptTemplates.page.field.name":`名前`,"settings.promptTemplates.page.field.namePlaceholder":`Template 名`,"settings.promptTemplates.page.section.template":`テンプレート`,"settings.promptTemplates.page.field.templatePlaceholder":`Prompt Template のテキストを入力...`,"settings.promptTemplates.page.templateHint":`このテキストはマルチラングループで選択されたときにユーザーのプロンプトの前に追加されます。`,"settings.promptTemplates.page.toast.nameRequired":`Template 名が必要です`,"settings.promptTemplates.page.toast.updated":`Template を更新しました`,"settings.promptTemplates.page.toast.updateFailed":`Template の更新に失敗しました`,"settings.promptTemplates.page.toast.created":`Template を作成しました`,"settings.promptTemplates.page.toast.createFailed":`Template の作成に失敗しました`,"settings.promptTemplates.page.toast.saveUnexpectedError":`保存中に予期しないエラーが発生しました`,"settings.magicPrompts.sidebar.title":`マジックプロンプト`,"settings.magicPrompts.sidebar.description":`編集する Prompt Template を選択してください。`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`計画`,"settings.magicPrompts.sidebar.group.session":`セッション`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Commit 生成`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`PR 生成`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Merge/Rebase 競合解決`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Cherry-pick 競合解決`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR レビュー`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Issue レビュー`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`PR 失敗チェックレビュー`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`PR コメントレビュー`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`単一 PR コメントレビュー`,"settings.magicPrompts.sidebar.item.planTodo":`Todo 計画`,"settings.magicPrompts.sidebar.item.planImprove":`計画の改善`,"settings.magicPrompts.sidebar.item.planImplement":`計画の実装`,"settings.magicPrompts.sidebar.item.sessionSummary":`Session サマリー`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Workspace レビュー`,"settings.magicPrompts.sidebar.item.sessionExplore":`コードベースツアー`,"settings.magicPrompts.sidebar.item.sessionFeaturePlan":`機能計画`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Goal の作成`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Goal の作成`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`/craft-goal スラッシュコマンドで使用するプロンプト: 表示ユーザーメッセージ + 非表示指示。ガイド付き対話でアイデアやタスクを明確で証拠により検証可能な Goal に変換します。`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`キャッチアップ`,"settings.magicPrompts.sidebar.item.sessionDebug":`デバッグ`,"settings.magicPrompts.sidebar.item.sessionWeigh":`選択肢の比較`,"settings.magicPrompts.sidebar.item.sessionFusion":`統合`,"settings.remoteInstances.sidebar.title":`リモートインスタンス`,"settings.remoteInstances.sidebar.description":`インポートリンクまたは SSH で他の OpenChamber サーバーに接続します。`,"settings.remoteInstances.sidebar.empty":`リモートインスタンスはまだありません。リンクをインポートするか SSH 接続を追加してください。`,"settings.remoteInstances.channel.link":`リンク`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`合計 {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`新しい SSH 接続`,"settings.remoteInstances.sidebar.actions.addSshInstance":`SSH 接続を追加`,"settings.remoteInstances.sidebar.actions.connect":`接続`,"settings.remoteInstances.sidebar.actions.disconnect":`切断`,"settings.remoteInstances.sidebar.actions.retry":`再試行`,"settings.remoteInstances.sidebar.actions.remove":`削除`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`ローカルポートは既に使用中です。ランダムな空きローカルポートを選んで再試行しますか?`,"settings.remoteInstances.sidebar.toast.createFailed":`SSH 接続の作成に失敗しました`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`ランダムなポートで再試行しました`,"settings.remoteInstances.sidebar.toast.connectFailed":`インスタンスの接続に失敗しました`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`インスタンスの切断に失敗しました`,"settings.remoteInstances.sidebar.toast.retryFailed":`接続の再試行に失敗しました`,"settings.remoteInstances.sidebar.toast.removeFailed":`インスタンスの削除に失敗しました`,"settings.remoteInstances.direct.sidebarTitle":`サーバーリンク`,"settings.remoteInstances.direct.sidebarDescription":`ペアリングリンクで接続`,"settings.remoteInstances.direct.title":`その他の OpenChamber サーバー`,"settings.remoteInstances.direct.description":`このアプリが切り替えられるサーバーです。相手サーバーからペアリングリンクを取り込みます。`,"settings.remoteInstances.direct.import.description":`別の OpenChamber サーバーからの接続リンクを貼り付けてください。`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`リンクをインポート`,"settings.remoteInstances.direct.error.invalidConnectLink":`無効な OpenChamber 接続リンクです。`,"settings.remoteInstances.direct.state.loading":`インスタンスを読み込み中...`,"settings.remoteInstances.direct.state.empty":`まだサーバーがインポートされていません。`,"settings.remoteInstances.clientAuth.title":`このサーバーに接続`,"settings.remoteInstances.clientAuth.description":`OpenChamber Desktop がこのサーバーに接続できるように、安全なリンクまたは Token を作成します。`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`インスタンス名 — 例: 自宅の Mac`,"settings.remoteInstances.clientAuth.field.labelHint":`接続先のデバイスはこの名前でこのサーバーを表示します。`,"settings.remoteInstances.clientAuth.actions.create":`Token を作成`,"settings.remoteInstances.clientAuth.actions.pair":`リンクを作成`,"settings.remoteInstances.clientAuth.actions.revoke":`無効化`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`無効化済みをクリア`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber 接続 QR コード`,"settings.remoteInstances.clientAuth.qrEnlarge":`QR コードを拡大`,"settings.remoteInstances.clientAuth.qrScanHint":`別のデバイスの OpenChamber アプリでスキャンしてください。1 回限りで期限切れになります。`,"settings.remoteInstances.clientAuth.qrDialogTitle":`スキャンして接続`,"settings.remoteInstances.clientAuth.actions.addDevice":`デバイスを追加`,"settings.remoteInstances.clientAuth.actions.copied":`コピーしました`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`このデバイスをどこで使いますか?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`このサーバーに別のデバイスを接続する使い捨てQRコードを作成します。`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`このコンピュータのみ`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`同じマシン上のアプリ用です。`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`自宅ネットワークのみ`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Wi-Fi経由で直接接続します。このネットワークの外では使えません。`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`どこでも`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`自宅でも外出先でも使えます。外出先の通信は、エンドツーエンド暗号化トンネルのOpenChamber Private Relayを経由します。設定は不要です。`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`外出先では暗号化リレー経由の接続も許可`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`可能なときは自宅の直接接続を優先`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Relay サーバー`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`OpenChamber 公式 Relay を使用するか、独自の ws:// または wss:// エンドポイントを入力します。端末は QR コード内のエンドポイントを保存します。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`自分の Relay をデプロイできます。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`このサーバーでは OPENCHAMBER_RELAY_URL により Relay エンドポイントが固定されています。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`ws:// または wss:// で始まる有効な Relay エンドポイントを入力してください。`,"settings.remoteInstances.clientAuth.addDevice.create":`QRコードを作成`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`対象インスタンス`,"settings.remoteInstances.clientAuth.addDevice.target.local":`このデスクトップ`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`接続中の SSH インスタンスがありません`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`先に SSH インスタンスへ接続してください`,"settings.remoteInstances.sidebar.actions.mobileConnect":`スマホ接続`,"settings.remoteInstances.sidebar.actions.mobileConnectAria":`{instance} のスマホペアリング QR を作成`,"settings.remoteInstances.sidebar.actions.mobileConnectDisabled":`スマホをペアリングする前に SSH インスタンスへ接続してください`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`設定を同期するには、このインスタンスに接続してください`,"settings.remoteInstances.sidebar.actions.syncConfig":`設定を同期`,"settings.remoteInstances.clientAuth.addDevice.done":`完了`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`デバイスを接続しました。`,"settings.remoteInstances.clientAuth.pairingUrl":`接続リンク`,"settings.remoteInstances.clientAuth.createdToken":`この Token を今すぐコピーしてください。セキュリティのため、再表示されません。`,"settings.remoteInstances.clientAuth.state.loading":`Token を読み込み中...`,"settings.remoteInstances.clientAuth.state.empty":`まだデバイスが接続されていません。`,"settings.remoteInstances.clientAuth.state.revoked":`無効化済み`,"settings.remoteInstances.clientAuth.state.thisDevice":`このデバイス`,"settings.remoteInstances.clientAuth.state.pending":`接続を待機中…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`接続中 · ローカルネットワーク`,"settings.remoteInstances.clientAuth.state.connectedRelay":`接続中 · リレー`,"settings.remoteInstances.clientAuth.lastUsed":`最終使用 {date}`,"settings.remoteInstances.clientAuth.neverUsed":`未使用`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`リレー経由でデバイスをペアリングすると自動的に有効になります。`,"settings.remoteInstances.relay.description":`ポートを開放せずに、他のデバイスからどこからでも接続できます。通信はエンドツーエンドで暗号化され、リレーは内容を読めません。`,"settings.remoteInstances.relay.enableHint":`このサーバーでリレーを有効にするまで、何も共有されません。`,"settings.remoteInstances.relay.actions.enable":`リレーを有効にする`,"settings.remoteInstances.relay.actions.disable":`無効にする`,"settings.remoteInstances.relay.confirm.disable":`リレーを無効にしますか?リレー経由で接続中のデバイスは即座に切断されます。`,"settings.remoteInstances.relay.state.loading":`リレーの状態を確認中...`,"settings.remoteInstances.relay.state.disabled":`無効`,"settings.remoteInstances.relay.state.connecting":`接続中`,"settings.remoteInstances.relay.state.connected":`接続済み`,"settings.remoteInstances.relay.state.reconnecting":`再接続中`,"settings.remoteInstances.relay.state.error":`エラー`,"settings.remoteInstances.relay.status.clientsOne":`{count} 台のデバイスが接続中`,"settings.remoteInstances.relay.status.clientsMany":`{count} 台のデバイスが接続中`,"settings.remoteInstances.relay.pair.title":`デバイスをペアリング`,"settings.remoteInstances.relay.pair.labelPlaceholder":`デバイス名(任意)`,"settings.remoteInstances.relay.pair.includeToken":`アクセストークンを含める(1回のスキャンでペアリング)`,"settings.remoteInstances.relay.pair.noTokenHint":`トークンなしの場合、デバイスは接続後にこのサーバーのUIパスワードでサインインします。`,"settings.remoteInstances.relay.pair.generate":`ペアリングリンクを作成`,"settings.remoteInstances.relay.pair.requiresConnected":`ペアリングはリレーの接続後に利用できます。`,"settings.remoteInstances.relay.pair.linkLabel":`ペアリングリンク`,"settings.remoteInstances.relay.pair.warning":`このリンクはこのサーバーへのアクセスを許可します。共有しないでください。`,"settings.remoteInstances.relay.pair.qrAlt":`リレーペアリング用QRコード`,"settings.remoteInstances.relay.pair.showQr":`QRコードを表示`,"settings.remoteInstances.relay.pair.qrDialogTitle":`スキャンしてペアリング`,"settings.remoteInstances.relay.pair.qrDialogDescription":`他のデバイスのOpenChamberアプリでこのQRコードをスキャンします。`,"settings.remoteInstances.relay.pair.manageHint":`ペアリング済みデバイスの管理や取り消しは、上の「このサーバーへの接続」一覧で行えます。`,"settings.remoteInstances.relay.toast.enableFailed":`リレーを有効にできませんでした`,"settings.remoteInstances.relay.toast.disableFailed":`リレーを無効にできませんでした`,"settings.remoteInstances.relay.toast.offerFailed":`ペアリングリンクを作成できませんでした`,"settings.remoteInstances.relay.toast.linkCopied":`ペアリングリンクをコピーしました`,"settings.remoteInstances.sidebar.phase.ready":`準備完了`,"settings.remoteInstances.sidebar.phase.error":`エラー`,"settings.remoteInstances.sidebar.phase.reconnect":`再接続`,"settings.remoteInstances.sidebar.phase.installing":`インストール中`,"settings.remoteInstances.sidebar.phase.updating":`更新中`,"settings.remoteInstances.sidebar.phase.forwarding":`転送中`,"settings.remoteInstances.sidebar.phase.starting":`起動中`,"settings.remoteInstances.sidebar.phase.connecting":`接続中`,"settings.remoteInstances.sidebar.phase.idle":`アイドル`,"settings.remoteInstances.page.section.instance":`インスタンス`,"settings.remoteInstances.page.section.instanceDescription":`この接続の SSH コマンドと表示名を選択します。`,"settings.remoteInstances.page.field.mode":`モード`,"settings.remoteInstances.page.field.modeHint":`OpenChamber にサーバーを起動させるか、既に実行中のサーバーに接続するかを選択します。`,"settings.remoteInstances.page.field.modePlaceholder":`モードを選択`,"settings.remoteInstances.page.field.modeManaged":`自動起動`,"settings.remoteInstances.page.field.modeExternal":`既に実行中`,"settings.remoteInstances.page.field.preferredRemotePort":`優先リモートポート`,"settings.remoteInstances.page.field.preferredRemotePortHint":`リモートマシンで使用するポート。空の場合は自動的に選択されます。`,"settings.remoteInstances.page.field.keepServerRunning":`サーバーを実行したままにする`,"settings.remoteInstances.page.field.keepServerRunningHint":`切断後もリモートマシンで OpenChamber を実行し続けます。`,"settings.remoteInstances.page.field.bindHost":`バインドホスト`,"settings.remoteInstances.page.field.bindHostHint":`ローカル接続の待受先。LAN アクセスが必要でない限り、127.0.0.1 または localhost を使用してください。`,"settings.remoteInstances.page.field.preferredLocalPort":`優先ローカルポート`,"settings.remoteInstances.page.field.preferredLocalPortHint":`この接続に使用するローカルポート。空の場合は自動的に選択されます。`,"settings.remoteInstances.page.field.forwardType":`転送タイプ`,"settings.remoteInstances.page.field.localListen":`ローカルリッスン`,"settings.remoteInstances.page.field.localTarget":`ローカルターゲット`,"settings.remoteInstances.page.field.remoteListen":`リモートリッスン`,"settings.remoteInstances.page.field.remoteTarget":`リモートターゲット`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`自動`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`0.0.0.0 にバインドすると、転送されたポートがローカルネットワークに公開されます。続行しますか?`,"settings.remoteInstances.page.preview.localSocks5":`(ローカル SOCKS5)`,"settings.remoteInstances.page.preview.local":`(ローカル)`,"settings.remoteInstances.page.preview.remote":`(リモート)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`ローカルアドレスのオープンに失敗しました`,"settings.remoteInstances.page.toast.localUrlCopied":`ローカル URL をコピーしました`,"settings.remoteInstances.page.actions.copyLocalUrl":`ローカル URL をコピー`,"settings.remoteInstances.page.actions.open":`開く`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`選択したインスタンス`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} には具体的な接続先が必要です。`,"settings.remoteInstances.page.patternDialog.description":`接続先を入力してください。`,"settings.common.actions.cancel":`キャンセル`,"settings.common.actions.create":`作成`,"settings.common.actions.delete":`削除`,"settings.common.actions.reset":`リセット`,"settings.common.actions.rename":`名前変更`,"settings.common.actions.duplicate":`複製`,"settings.common.actions.import":`インポート`,"settings.common.actions.copyAll":`すべてコピー`,"settings.common.actions.clear":`クリア`,"settings.common.actions.saving":`保存中...`,"settings.common.actions.saveChanges":`変更を保存`,"settings.common.scope.global":`グローバル`,"settings.common.scope.project":`プロジェクト`,"settings.common.field.description":`説明`,"settings.common.badge.new":`新規`,"settings.common.badge.modified":`変更済み`,"settings.common.permission.allow":`許可`,"settings.common.permission.ask":`確認`,"settings.common.permission.deny":`拒否`,"settings.common.state.comingSoon":`近日公開...`,"settings.projects.actions.title":`アクション`,"settings.projects.actions.description":`ヘッダーのプロジェクト名の横に表示されるプロジェクトごとのコマンド。`,"settings.projects.actions.validation.fillNameAndCommand":`保存する前にアクション名とコマンドを入力してください。`,"settings.projects.actions.state.loading":`読み込み中...`,"settings.projects.actions.state.empty":`まだアクションが設定されていません。`,"settings.projects.actions.state.untitled":`名前なしアクション`,"settings.projects.actions.state.noDesktopSshForwards":`有効なローカル SSH 転送がありません。`,"settings.projects.actions.field.selectIconAria":`アイコンを選択`,"settings.projects.actions.field.iconAria":`アイコン {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`アクション名`,"settings.projects.actions.field.command":`コマンド`,"settings.projects.actions.field.commandPlaceholder":`例: bun run lint`,"settings.projects.actions.field.autoOpenUrl":`URL を自動開く`,"settings.projects.actions.field.autoOpenUrlForAria":`{title} の URL を自動開く`,"settings.projects.actions.field.autoOpenUrlDescription":`出力または以下のカスタム URL から URL を開く`,"settings.projects.actions.field.overrideUrlPlaceholder":`上書き URL(任意)`,"settings.projects.actions.field.overrideUrlTooltip":`このフィールドが入力されている場合、カスタム URL が使用されます。空の場合、アプリは出力から最適な URL を開きます。`,"settings.projects.actions.field.desktopSshForward":`Desktop SSH 転送`,"settings.projects.actions.field.useOutputManualUrl":`出力/手動 URL を使用`,"settings.projects.actions.actions.add":`アクションを追加`,"settings.projects.actions.actions.save":`アクションを保存`,"settings.projects.actions.toast.saveFailed":`アクションの保存に失敗しました`,"settings.projects.actions.toast.saved":`プロジェクトアクションを保存しました`,"settings.openchamber.about.title":`OpenChamber について`,"settings.openchamber.about.field.version":`バージョン`,"settings.openchamber.about.field.clientVersion":`クライアント`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`OpenCode バージョン`,"settings.openchamber.about.state.checking":`確認中...`,"settings.openchamber.about.state.upToDate":`最新です`,"settings.openchamber.about.state.unknown":`不明`,"settings.openchamber.about.actions.checkUpdates":`アップデートを確認`,"settings.openchamber.about.actions.update":`アップデート`,"settings.openchamber.about.actions.updateToVersion":`{version} にアップデート`,"settings.openchamber.about.actions.checkForUpdates":`アップデートを確認`,"settings.openchamber.about.toast.latestVersion":`最新バージョンです`,"settings.openchamber.about.toast.checkFailed":`更新を確認できませんでした`,"settings.openchamber.about.diagnostics.label":`診断ログ`,"settings.openchamber.about.diagnostics.description":`表示や同期の問題を調べるためのローカル診断 feat を書き出します。メッセージ本文やトークンは含まれません。`,"settings.openchamber.about.diagnostics.export":`ログを書き出す`,"settings.openchamber.about.diagnostics.exporting":`書き出し中…`,"settings.openchamber.about.diagnostics.enable":`診断 feat を記録`,"settings.openchamber.about.diagnostics.enableHint":`ベータ版でのみ利用できます。この端末にセッション同期と表示のライフサイクルを記録します。本文は含みません。`,"settings.openchamber.about.diagnostics.toast.exported":`診断ログを書き出しました`,"settings.openchamber.about.diagnostics.toast.failed":`診断ログを書き出せませんでした`,"settings.openchamber.about.diagnostics.toast.empty":`診断ログを書き出しました。まだイベントは記録されていません。`,"settings.agents.sidebar.title":`エージェント`,"settings.agents.sidebar.total":`合計 {count}`,"settings.agents.sidebar.empty.title":`Agent が設定されていません`,"settings.agents.sidebar.empty.description":`上の + ボタンを使用して作成してください`,"settings.agents.sidebar.section.builtIn":`ビルトイン Agent`,"settings.agents.sidebar.section.custom":`カスタム Agent`,"settings.agents.sidebar.badge.system":`システム`,"settings.agents.sidebar.dialog.deleteTitle":`Agent を削除`,"settings.agents.sidebar.dialog.resetTitle":`Agent をリセット`,"settings.agents.sidebar.dialog.deleteDescription":`Agent "{name}" を削除してもよろしいですか?`,"settings.agents.sidebar.dialog.resetDescription":`Agent "{name}" をデフォルト設定にリセットしてもよろしいですか?`,"settings.agents.sidebar.renameDialog.title":`Agent の名前変更`,"settings.agents.sidebar.renameDialog.description":`Agent "@{name}" の新しい名前を入力してください`,"settings.agents.sidebar.renameDialog.placeholder":`新しい Agent 名...`,"settings.agents.sidebar.toast.builtInCannotDelete":`ビルトイン Agent は削除できません`,"settings.agents.sidebar.toast.agentDeleted":`Agent "{name}" を削除しました`,"settings.agents.sidebar.toast.agentReset":`Agent "{name}" をデフォルトにリセットしました`,"settings.agents.sidebar.toast.deleteFailed":`Agent の削除に失敗しました`,"settings.agents.sidebar.toast.definitionNotFound":`Agent 定義が見つかりませんでした。変更は行われませんでした。`,"settings.agents.sidebar.toast.resetFailed":`Agent のリセットに失敗しました`,"settings.agents.sidebar.toast.agentNameRequired":`Agent 名が必要です`,"settings.agents.sidebar.toast.agentExists":`同じ名前の Agent が既に存在します`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`名前変更後に古い Agent の削除に失敗しました`,"settings.agents.sidebar.toast.renameFailed":`Agent の名前変更に失敗しました`,"settings.agents.sidebar.toast.agentRenamed":`Agent の名前を「{name}」に変更しました`,"settings.agents.page.toast.permissionNameRequired":`権限名が必要です`,"settings.agents.page.toast.created":`Agent を作成しました`,"settings.agents.page.toast.updated":`Agent を更新しました`,"settings.agents.page.toast.createFailed":`Agent の作成に失敗しました`,"settings.agents.page.toast.updateFailed":`Agent の更新に失敗しました`,"settings.agents.page.toast.saveUnexpectedError":`保存中にエラーが発生しました`,"settings.agents.page.toast.savedManualRestart":`ディスクに保存しました。変更を適用するには接続中の OpenCode サーバーを再起動してください。`,"settings.agents.page.empty.title":`サイドバーから Agent を選択してください`,"settings.agents.page.empty.description":`または新しいものを作成`,"settings.agents.page.title.new":`新しい Agent`,"settings.agents.page.subtitle.new":`新しいアシスタントペルソナを設定`,"settings.agents.page.subtitle.edit":`Agent 設定を編集`,"settings.agents.page.section.identityRole":`識別情報と役割`,"settings.agents.page.section.modelParameters":`モデルとパラメーター`,"settings.agents.page.section.systemPrompt":`システムプロンプト`,"settings.agents.page.section.toolPermissions":`ツール権限`,"settings.agents.page.field.agentName":`Agent 名`,"settings.agents.page.field.agentNamePlaceholder":`agent-name`,"settings.agents.page.field.scopePlaceholder":`スコープ`,"settings.agents.page.field.descriptionPlaceholder":`この Agent は何をしますか?`,"settings.agents.page.field.mode":`モード`,"settings.agents.page.field.modeTooltip":`プライマリと Subagent の表示設定`,"settings.agents.page.field.overrideModel":`モデルを上書き`,"settings.agents.page.field.temperature":`温度`,"settings.agents.page.field.temperatureTooltip":`ランダム性を制御します。高い = 創造的、低い = 集中的。`,"settings.agents.page.field.temperatureRange":`0.0 ~ 2.0`,"settings.agents.page.field.clearTemperatureAria":`Temperature の上書きをクリア`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Nucleus サンプリングの多様性。低い = 確率の高い Token のみ。`,"settings.agents.page.field.topPRange":`0.0 ~ 1.0`,"settings.agents.page.field.clearTopPAria":`Top P の上書きをクリア`,"settings.agents.page.field.variant":`思考バリアント`,"settings.agents.page.field.variantTooltip":`この Agent の思考/推論の深さを制御します。プロバイダー固有のパラメーター(例: Anthropic variant、OpenAI reasoning effort)に対応します。`,"settings.agents.page.field.variantHint":`例: high、max、low`,"settings.agents.page.field.variantPlaceholder":`デフォルト`,"settings.agents.page.field.systemPromptPlaceholder":`あなたは熟練したコーディングアシスタントです...`,"settings.agents.page.mode.primary":`プライマリ`,"settings.agents.page.mode.subagent":`サブエージェント`,"settings.agents.page.mode.all":`すべて`,"settings.agents.page.permissions.defaultLabel":`デフォルト`,"settings.agents.page.permissions.hideEditor":`エディターを非表示`,"settings.agents.page.permissions.advancedEditor":`高度なエディター`,"settings.agents.page.permissions.globalSummary":`グローバル: {summary}`,"settings.agents.page.permissions.rulesSummary":`ルール: {summary}`,"settings.agents.page.permissions.globalDefault":`グローバルデフォルト`,"settings.agents.page.permissions.pattern":`パターン`,"settings.agents.page.permissions.addCustomRule":`カスタムルールを追加`,"settings.agents.page.permissions.permissionPlaceholder":`権限...`,"settings.agents.page.permissions.patternPlaceholder":`パターン(例: *)`,"settings.page.behavior.title":`動作`,"settings.behavior.page.title":`動作`,"settings.behavior.page.warning.title":`グローバルルールはプロジェクトルールと組み合わされます`,"settings.behavior.page.warning.description":`ここでの変更は {path} を更新します。OpenCode はプロジェクトレベルの AGENTS.md ルールも存在する場合は含めます。`,"settings.behavior.page.section.systemPrompt":`グローバル AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`あなたは役立つ AI アシスタントです...
|
|
1
|
+
var e={"settings.globalConfig.title":`グローバル設定`,"settings.globalConfig.description":`~/.config/opencode で現在使われている設定ファイルを編集します。`,"settings.globalConfig.actions.reload":`ファイルを再読み込み`,"settings.globalConfig.restartHint":`保存後に OpenCode を再起動すると、設定変更が反映されます。`,"settings.globalConfig.toast.loadFailed":`設定ファイルの読み込みに失敗しました`,"settings.globalConfig.toast.saveFailed":`設定ファイルの保存に失敗しました`,"settings.globalConfig.toast.saved":`設定を保存しました。OpenCode を再起動すると反映されます。`,"settings.providers.page.openCodeGo.title":`OpenCode Go 使用量追跡`,"settings.providers.page.openCodeGo.description":`OpenCode Go ダッシュボードを接続して、ローリング、週間、月間のクォータを表示します。`,"settings.providers.page.openCodeGo.workspaceId":`ワークスペース ID`,"settings.providers.page.openCodeGo.authCookie":`認証 Cookie`,"settings.providers.page.openCodeGo.help":`ダッシュボード URL からワークスペース ID を、ブラウザーの開発者ツールから auth Cookie をコピーしてください。OpenChamber がブラウザーの Cookie を走査することはありません。`,"settings.providers.page.openCodeGo.save":`保存して検証`,"settings.providers.page.openCodeGo.replace":`置換`,"settings.providers.page.openCodeGo.validate":`検証`,"settings.providers.page.openCodeGo.delete":`削除`,"settings.providers.page.quotaCredentials.saved":`{provider} の認証情報を保存しました。`,"settings.providers.page.openCodeGo.saveFailed":`OpenCode Go の認証情報を検証できませんでした。`,"settings.providers.page.openCodeGo.valid":`OpenCode Go の認証情報は有効です。`,"settings.providers.page.openCodeGo.invalid":`OpenCode Go の認証情報が無効または期限切れです。`,"settings.providers.page.openCodeGo.deleted":`OpenCode Go の認証情報を削除しました。`,"settings.providers.page.openCodeGo.deleteFailed":`OpenCode Go の認証情報を削除できませんでした。`,"settings.appearance.language.label":`言語`,"settings.appearance.language.description":`インターフェース言語を選択します。`,"settings.appearance.language.select":`言語を選択`,"settings.window.description":`OpenChamber 設定ウィンドウ。`,"settings.view.home.title":`設定`,"settings.view.home.description":`よく使うページにジャンプします。`,"settings.view.home.cards.providers.title":`プロバイダー`,"settings.view.home.cards.providers.description":`モデル + 認証情報を接続`,"settings.view.home.cards.agents.title":`エージェント`,"settings.view.home.cards.agents.description":`プロンプト、ツール、権限`,"settings.view.home.cards.skillsCatalog.title":`スキルカタログ`,"settings.view.home.cards.skillsCatalog.description":`カタログからスキルをインストール`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`MCP サーバーと接続を設定`,"settings.view.home.cards.plugins.title":`プラグイン`,"settings.view.home.cards.plugins.description":`opencode のプラグインを管理`,"settings.view.home.cards.usage.title":`使用量`,"settings.view.home.cards.usage.description":`割り当てと支出の表示`,"settings.view.unavailable.title":`利用できません`,"settings.view.unavailable.description":`このランタイムではこの設定ページは利用できません。`,"settings.view.badge.beta":`ベータ`,"settings.view.actions.reloadOpenCode":`OpenCode を再読み込み`,"settings.view.actions.reloadOpenCodeTooltip":`OpenCode を再起動して設定を再読み込みします。`,"settings.view.actions.backToSettings":`設定に戻る`,"settings.view.actions.closeSettings":`設定を閉じる`,"settings.view.actions.openSectionList":`セクション一覧を開く`,"settings.view.actions.closeSettingsWithShortcut":`設定を閉じる ({shortcut}+,)`,"settings.view.actions.back":`戻る`,"settings.view.actions.resizeNavigation":`設定ナビゲーションのサイズ変更`,"settings.view.navigation.groups.connection":`接続`,"settings.view.navigation.groups.personalization":`パーソナライズ`,"settings.view.navigation.groups.workspace":`ワークスペース`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`コンテンツと自動化`,"settings.view.navigation.groups.system":`システム`,"settings.view.search.placeholder":`設定を検索`,"settings.view.search.aria":`設定を検索`,"settings.view.search.clear":`設定検索をクリア`,"settings.view.search.noResults":`該当する設定がありません`,"settings.page.projects.title":`プロジェクト`,"settings.page.remoteInstances.title":`リモートインスタンス`,"settings.page.providers.title":`プロバイダー`,"settings.page.usage.title":`使用量`,"settings.page.agents.title":`エージェント`,"settings.page.commands.title":`コマンド`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`プラグイン`,"settings.page.skills.title":`スキル`,"settings.page.skillsCatalog.title":`スキルカタログ`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`外観`,"settings.page.chat.title":`チャット`,"settings.page.shortcuts.title":`ショートカット`,"settings.page.sessions.title":`セッション`,"settings.page.summaryAI.title":`AI 要約`,"settings.page.magicPrompts.title":`マジックプロンプト`,"settings.page.notifications.title":`通知`,"settings.page.voice.title":`音声`,"settings.page.about.title":`概要`,"settings.page.snippets.title":`スニペット`,"settings.snippets.sidebar.title":`スニペット`,"settings.snippets.sidebar.total":`合計: {count}`,"settings.snippets.sidebar.actions.create":`Snippet を作成`,"settings.snippets.sidebar.actions.more":`{name} のその他の操作`,"settings.snippets.sidebar.toast.deleted":`Snippet を削除しました`,"settings.snippets.sidebar.toast.deleteFailed":`Snippet の削除に失敗しました`,"settings.snippets.sidebar.dialog.deleteTitle":`Snippet を削除しますか?`,"settings.snippets.sidebar.dialog.deleteDescription":`#{name} は完全に削除されます。`,"settings.snippets.page.empty.title":`Snippet を選択`,"settings.snippets.page.empty.description":`サイドバーから編集する Snippet を選択してください。`,"settings.snippets.page.title.new":`新しい Snippet`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`この Snippet の説明`,"settings.snippets.page.field.aliases":`エイリアス`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`内容`,"settings.snippets.page.field.contentPlaceholder":`Snippet の Markdown...`,"settings.snippets.page.hint":`プロンプトで #name を使用します。Aliases と opencode-snippets 互換の prepend/append ブロックをサポートします。`,"settings.snippets.page.toast.nameRequired":`Snippet 名が必要です`,"settings.snippets.page.toast.contentRequired":`Snippet の内容が必要です`,"settings.snippets.page.toast.saveFailed":`Snippet の保存に失敗しました`,"settings.snippets.page.toast.saved":`Snippet を保存しました`,"settings.page.promptTemplates.title":`プロンプトテンプレート`,"settings.promptTemplates.sidebar.title":`プロンプトテンプレート`,"settings.promptTemplates.sidebar.total":`合計: {count}`,"settings.promptTemplates.sidebar.empty.title":`Prompt Template がありません`,"settings.promptTemplates.sidebar.empty.description":`Prompt Template を作成して始めましょう。`,"settings.promptTemplates.sidebar.toast.deleted":`Template "{name}" を削除しました`,"settings.promptTemplates.sidebar.toast.deleteFailed":`Template の削除に失敗しました`,"settings.promptTemplates.sidebar.toast.nameRequired":`Template 名が必要です`,"settings.promptTemplates.sidebar.toast.renamed":`Template の名前を変更しました`,"settings.promptTemplates.sidebar.toast.renameFailed":`Template の名前変更に失敗しました`,"settings.promptTemplates.sidebar.dialog.deleteTitle":`Template を削除しますか?`,"settings.promptTemplates.sidebar.dialog.deleteDescription":`"{name}" は完全に削除されます。この操作は元に戻せません。`,"settings.promptTemplates.sidebar.renameDialog.title":`Template の名前を変更`,"settings.promptTemplates.sidebar.renameDialog.description":`"{name}" の新しい名前を入力してください。`,"settings.promptTemplates.sidebar.renameDialog.placeholder":`Template 名`,"settings.promptTemplates.sidebar.badge.default":`デフォルト`,"settings.promptTemplates.page.empty.title":`Template を選択`,"settings.promptTemplates.page.empty.description":`サイドバーから編集する Template を選択してください。`,"settings.promptTemplates.page.title.new":`新しい Template`,"settings.promptTemplates.page.subtitle.edit":`Template を編集`,"settings.promptTemplates.page.subtitle.new":`新しい Prompt Template を作成`,"settings.promptTemplates.page.section.identity":`識別情報`,"settings.promptTemplates.page.field.name":`名前`,"settings.promptTemplates.page.field.namePlaceholder":`Template 名`,"settings.promptTemplates.page.section.template":`テンプレート`,"settings.promptTemplates.page.field.templatePlaceholder":`Prompt Template のテキストを入力...`,"settings.promptTemplates.page.templateHint":`このテキストはマルチラングループで選択されたときにユーザーのプロンプトの前に追加されます。`,"settings.promptTemplates.page.toast.nameRequired":`Template 名が必要です`,"settings.promptTemplates.page.toast.updated":`Template を更新しました`,"settings.promptTemplates.page.toast.updateFailed":`Template の更新に失敗しました`,"settings.promptTemplates.page.toast.created":`Template を作成しました`,"settings.promptTemplates.page.toast.createFailed":`Template の作成に失敗しました`,"settings.promptTemplates.page.toast.saveUnexpectedError":`保存中に予期しないエラーが発生しました`,"settings.magicPrompts.sidebar.title":`マジックプロンプト`,"settings.magicPrompts.sidebar.description":`編集する Prompt Template を選択してください。`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`計画`,"settings.magicPrompts.sidebar.group.session":`セッション`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Commit 生成`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`PR 生成`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Merge/Rebase 競合解決`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Cherry-pick 競合解決`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR レビュー`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Issue レビュー`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`PR 失敗チェックレビュー`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`PR コメントレビュー`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`単一 PR コメントレビュー`,"settings.magicPrompts.sidebar.item.planTodo":`Todo 計画`,"settings.magicPrompts.sidebar.item.planImprove":`計画の改善`,"settings.magicPrompts.sidebar.item.planImplement":`計画の実装`,"settings.magicPrompts.sidebar.item.sessionSummary":`Session サマリー`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Workspace レビュー`,"settings.magicPrompts.sidebar.item.sessionExplore":`コードベースツアー`,"settings.magicPrompts.sidebar.item.sessionFeaturePlan":`機能計画`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Goal の作成`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Goal の作成`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`/craft-goal スラッシュコマンドで使用するプロンプト: 表示ユーザーメッセージ + 非表示指示。ガイド付き対話でアイデアやタスクを明確で証拠により検証可能な Goal に変換します。`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`キャッチアップ`,"settings.magicPrompts.sidebar.item.sessionDebug":`デバッグ`,"settings.magicPrompts.sidebar.item.sessionWeigh":`選択肢の比較`,"settings.magicPrompts.sidebar.item.sessionFusion":`統合`,"settings.remoteInstances.sidebar.title":`リモートインスタンス`,"settings.remoteInstances.sidebar.description":`インポートリンクまたは SSH で他の OpenChamber サーバーに接続します。`,"settings.remoteInstances.sidebar.empty":`リモートインスタンスはまだありません。リンクをインポートするか SSH 接続を追加してください。`,"settings.remoteInstances.channel.link":`リンク`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`合計 {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`新しい SSH 接続`,"settings.remoteInstances.sidebar.actions.addSshInstance":`SSH 接続を追加`,"settings.remoteInstances.sidebar.actions.connect":`接続`,"settings.remoteInstances.sidebar.actions.disconnect":`切断`,"settings.remoteInstances.sidebar.actions.retry":`再試行`,"settings.remoteInstances.sidebar.actions.remove":`削除`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`ローカルポートは既に使用中です。ランダムな空きローカルポートを選んで再試行しますか?`,"settings.remoteInstances.sidebar.toast.createFailed":`SSH 接続の作成に失敗しました`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`ランダムなポートで再試行しました`,"settings.remoteInstances.sidebar.toast.connectFailed":`インスタンスの接続に失敗しました`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`インスタンスの切断に失敗しました`,"settings.remoteInstances.sidebar.toast.retryFailed":`接続の再試行に失敗しました`,"settings.remoteInstances.sidebar.toast.removeFailed":`インスタンスの削除に失敗しました`,"settings.remoteInstances.direct.sidebarTitle":`サーバーリンク`,"settings.remoteInstances.direct.sidebarDescription":`ペアリングリンクで接続`,"settings.remoteInstances.direct.title":`その他の OpenChamber サーバー`,"settings.remoteInstances.direct.description":`このアプリが切り替えられるサーバーです。相手サーバーからペアリングリンクを取り込みます。`,"settings.remoteInstances.direct.import.description":`別の OpenChamber サーバーからの接続リンクを貼り付けてください。`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`リンクをインポート`,"settings.remoteInstances.direct.error.invalidConnectLink":`無効な OpenChamber 接続リンクです。`,"settings.remoteInstances.direct.state.loading":`インスタンスを読み込み中...`,"settings.remoteInstances.direct.state.empty":`まだサーバーがインポートされていません。`,"settings.remoteInstances.clientAuth.title":`このサーバーに接続`,"settings.remoteInstances.clientAuth.description":`OpenChamber Desktop がこのサーバーに接続できるように、安全なリンクまたは Token を作成します。`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`インスタンス名 — 例: 自宅の Mac`,"settings.remoteInstances.clientAuth.field.labelHint":`接続先のデバイスはこの名前でこのサーバーを表示します。`,"settings.remoteInstances.clientAuth.actions.create":`Token を作成`,"settings.remoteInstances.clientAuth.actions.pair":`リンクを作成`,"settings.remoteInstances.clientAuth.actions.revoke":`無効化`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`無効化済みをクリア`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber 接続 QR コード`,"settings.remoteInstances.clientAuth.qrEnlarge":`QR コードを拡大`,"settings.remoteInstances.clientAuth.qrScanHint":`別のデバイスの OpenChamber アプリでスキャンしてください。1 回限りで期限切れになります。`,"settings.remoteInstances.clientAuth.qrDialogTitle":`スキャンして接続`,"settings.remoteInstances.clientAuth.actions.addDevice":`デバイスを追加`,"settings.remoteInstances.clientAuth.actions.copied":`コピーしました`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`このデバイスをどこで使いますか?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`このサーバーに別のデバイスを接続する使い捨てQRコードを作成します。`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`このコンピュータのみ`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`同じマシン上のアプリ用です。`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`自宅ネットワークのみ`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Wi-Fi経由で直接接続します。このネットワークの外では使えません。`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`どこでも`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`自宅でも外出先でも使えます。外出先の通信は、エンドツーエンド暗号化トンネルのOpenChamber Private Relayを経由します。設定は不要です。`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`外出先では暗号化リレー経由の接続も許可`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`可能なときは自宅の直接接続を優先`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Relay サーバー`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`OpenChamber 公式 Relay を使用するか、独自の ws:// または wss:// エンドポイントを入力します。端末は QR コード内のエンドポイントを保存します。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`自分の Relay をデプロイできます。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`このサーバーでは OPENCHAMBER_RELAY_URL により Relay エンドポイントが固定されています。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`ws:// または wss:// で始まる有効な Relay エンドポイントを入力してください。`,"settings.remoteInstances.clientAuth.addDevice.create":`QRコードを作成`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`対象インスタンス`,"settings.remoteInstances.clientAuth.addDevice.target.local":`このデスクトップ`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`接続中の SSH インスタンスがありません`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`先に SSH インスタンスへ接続してください`,"settings.remoteInstances.sidebar.actions.mobileConnect":`スマホ接続`,"settings.remoteInstances.sidebar.actions.mobileConnectAria":`{instance} のスマホペアリング QR を作成`,"settings.remoteInstances.sidebar.actions.mobileConnectDisabled":`スマホをペアリングする前に SSH インスタンスへ接続してください`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`設定を同期するには、このインスタンスに接続してください`,"settings.remoteInstances.sidebar.actions.syncConfig":`設定を同期`,"settings.remoteInstances.clientAuth.addDevice.done":`完了`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`デバイスを接続しました。`,"settings.remoteInstances.clientAuth.pairingUrl":`接続リンク`,"settings.remoteInstances.clientAuth.createdToken":`この Token を今すぐコピーしてください。セキュリティのため、再表示されません。`,"settings.remoteInstances.clientAuth.state.loading":`Token を読み込み中...`,"settings.remoteInstances.clientAuth.state.empty":`まだデバイスが接続されていません。`,"settings.remoteInstances.clientAuth.state.revoked":`無効化済み`,"settings.remoteInstances.clientAuth.state.thisDevice":`このデバイス`,"settings.remoteInstances.clientAuth.state.pending":`接続を待機中…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`接続中 · ローカルネットワーク`,"settings.remoteInstances.clientAuth.state.connectedRelay":`接続中 · リレー`,"settings.remoteInstances.clientAuth.lastUsed":`最終使用 {date}`,"settings.remoteInstances.clientAuth.neverUsed":`未使用`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`リレー経由でデバイスをペアリングすると自動的に有効になります。`,"settings.remoteInstances.relay.description":`ポートを開放せずに、他のデバイスからどこからでも接続できます。通信はエンドツーエンドで暗号化され、リレーは内容を読めません。`,"settings.remoteInstances.relay.enableHint":`このサーバーでリレーを有効にするまで、何も共有されません。`,"settings.remoteInstances.relay.actions.enable":`リレーを有効にする`,"settings.remoteInstances.relay.actions.disable":`無効にする`,"settings.remoteInstances.relay.confirm.disable":`リレーを無効にしますか?リレー経由で接続中のデバイスは即座に切断されます。`,"settings.remoteInstances.relay.state.loading":`リレーの状態を確認中...`,"settings.remoteInstances.relay.state.disabled":`無効`,"settings.remoteInstances.relay.state.connecting":`接続中`,"settings.remoteInstances.relay.state.connected":`接続済み`,"settings.remoteInstances.relay.state.reconnecting":`再接続中`,"settings.remoteInstances.relay.state.error":`エラー`,"settings.remoteInstances.relay.status.clientsOne":`{count} 台のデバイスが接続中`,"settings.remoteInstances.relay.status.clientsMany":`{count} 台のデバイスが接続中`,"settings.remoteInstances.relay.pair.title":`デバイスをペアリング`,"settings.remoteInstances.relay.pair.labelPlaceholder":`デバイス名(任意)`,"settings.remoteInstances.relay.pair.includeToken":`アクセストークンを含める(1回のスキャンでペアリング)`,"settings.remoteInstances.relay.pair.noTokenHint":`トークンなしの場合、デバイスは接続後にこのサーバーのUIパスワードでサインインします。`,"settings.remoteInstances.relay.pair.generate":`ペアリングリンクを作成`,"settings.remoteInstances.relay.pair.requiresConnected":`ペアリングはリレーの接続後に利用できます。`,"settings.remoteInstances.relay.pair.linkLabel":`ペアリングリンク`,"settings.remoteInstances.relay.pair.warning":`このリンクはこのサーバーへのアクセスを許可します。共有しないでください。`,"settings.remoteInstances.relay.pair.qrAlt":`リレーペアリング用QRコード`,"settings.remoteInstances.relay.pair.showQr":`QRコードを表示`,"settings.remoteInstances.relay.pair.qrDialogTitle":`スキャンしてペアリング`,"settings.remoteInstances.relay.pair.qrDialogDescription":`他のデバイスのOpenChamberアプリでこのQRコードをスキャンします。`,"settings.remoteInstances.relay.pair.manageHint":`ペアリング済みデバイスの管理や取り消しは、上の「このサーバーへの接続」一覧で行えます。`,"settings.remoteInstances.relay.toast.enableFailed":`リレーを有効にできませんでした`,"settings.remoteInstances.relay.toast.disableFailed":`リレーを無効にできませんでした`,"settings.remoteInstances.relay.toast.offerFailed":`ペアリングリンクを作成できませんでした`,"settings.remoteInstances.relay.toast.linkCopied":`ペアリングリンクをコピーしました`,"settings.remoteInstances.sidebar.phase.ready":`準備完了`,"settings.remoteInstances.sidebar.phase.error":`エラー`,"settings.remoteInstances.sidebar.phase.reconnect":`再接続`,"settings.remoteInstances.sidebar.phase.installing":`インストール中`,"settings.remoteInstances.sidebar.phase.updating":`更新中`,"settings.remoteInstances.sidebar.phase.forwarding":`転送中`,"settings.remoteInstances.sidebar.phase.starting":`起動中`,"settings.remoteInstances.sidebar.phase.connecting":`接続中`,"settings.remoteInstances.sidebar.phase.idle":`アイドル`,"settings.remoteInstances.page.section.instance":`インスタンス`,"settings.remoteInstances.page.section.instanceDescription":`この接続の SSH コマンドと表示名を選択します。`,"settings.remoteInstances.page.field.mode":`モード`,"settings.remoteInstances.page.field.modeHint":`OpenChamber にサーバーを起動させるか、既に実行中のサーバーに接続するかを選択します。`,"settings.remoteInstances.page.field.modePlaceholder":`モードを選択`,"settings.remoteInstances.page.field.modeManaged":`自動起動`,"settings.remoteInstances.page.field.modeExternal":`既に実行中`,"settings.remoteInstances.page.field.preferredRemotePort":`優先リモートポート`,"settings.remoteInstances.page.field.preferredRemotePortHint":`リモートマシンで使用するポート。空の場合は自動的に選択されます。`,"settings.remoteInstances.page.field.keepServerRunning":`サーバーを実行したままにする`,"settings.remoteInstances.page.field.keepServerRunningHint":`切断後もリモートマシンで OpenChamber を実行し続けます。`,"settings.remoteInstances.page.field.bindHost":`バインドホスト`,"settings.remoteInstances.page.field.bindHostHint":`ローカル接続の待受先。LAN アクセスが必要でない限り、127.0.0.1 または localhost を使用してください。`,"settings.remoteInstances.page.field.preferredLocalPort":`優先ローカルポート`,"settings.remoteInstances.page.field.preferredLocalPortHint":`この接続に使用するローカルポート。空の場合は自動的に選択されます。`,"settings.remoteInstances.page.field.forwardType":`転送タイプ`,"settings.remoteInstances.page.field.localListen":`ローカルリッスン`,"settings.remoteInstances.page.field.localTarget":`ローカルターゲット`,"settings.remoteInstances.page.field.remoteListen":`リモートリッスン`,"settings.remoteInstances.page.field.remoteTarget":`リモートターゲット`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`自動`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`0.0.0.0 にバインドすると、転送されたポートがローカルネットワークに公開されます。続行しますか?`,"settings.remoteInstances.page.preview.localSocks5":`(ローカル SOCKS5)`,"settings.remoteInstances.page.preview.local":`(ローカル)`,"settings.remoteInstances.page.preview.remote":`(リモート)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`ローカルアドレスのオープンに失敗しました`,"settings.remoteInstances.page.toast.localUrlCopied":`ローカル URL をコピーしました`,"settings.remoteInstances.page.actions.copyLocalUrl":`ローカル URL をコピー`,"settings.remoteInstances.page.actions.open":`開く`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`選択したインスタンス`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} には具体的な接続先が必要です。`,"settings.remoteInstances.page.patternDialog.description":`接続先を入力してください。`,"settings.common.actions.cancel":`キャンセル`,"settings.common.actions.create":`作成`,"settings.common.actions.delete":`削除`,"settings.common.actions.reset":`リセット`,"settings.common.actions.rename":`名前変更`,"settings.common.actions.duplicate":`複製`,"settings.common.actions.import":`インポート`,"settings.common.actions.copyAll":`すべてコピー`,"settings.common.actions.clear":`クリア`,"settings.common.actions.saving":`保存中...`,"settings.common.actions.saveChanges":`変更を保存`,"settings.common.scope.global":`グローバル`,"settings.common.scope.project":`プロジェクト`,"settings.common.field.description":`説明`,"settings.common.badge.new":`新規`,"settings.common.badge.modified":`変更済み`,"settings.common.permission.allow":`許可`,"settings.common.permission.ask":`確認`,"settings.common.permission.deny":`拒否`,"settings.common.state.comingSoon":`近日公開...`,"settings.projects.actions.title":`アクション`,"settings.projects.actions.description":`ヘッダーのプロジェクト名の横に表示されるプロジェクトごとのコマンド。`,"settings.projects.actions.validation.fillNameAndCommand":`保存する前にアクション名とコマンドを入力してください。`,"settings.projects.actions.state.loading":`読み込み中...`,"settings.projects.actions.state.empty":`まだアクションが設定されていません。`,"settings.projects.actions.state.untitled":`名前なしアクション`,"settings.projects.actions.state.noDesktopSshForwards":`有効なローカル SSH 転送がありません。`,"settings.projects.actions.field.selectIconAria":`アイコンを選択`,"settings.projects.actions.field.iconAria":`アイコン {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`アクション名`,"settings.projects.actions.field.command":`コマンド`,"settings.projects.actions.field.commandPlaceholder":`例: bun run lint`,"settings.projects.actions.field.autoOpenUrl":`URL を自動開く`,"settings.projects.actions.field.autoOpenUrlForAria":`{title} の URL を自動開く`,"settings.projects.actions.field.autoOpenUrlDescription":`出力または以下のカスタム URL から URL を開く`,"settings.projects.actions.field.overrideUrlPlaceholder":`上書き URL(任意)`,"settings.projects.actions.field.overrideUrlTooltip":`このフィールドが入力されている場合、カスタム URL が使用されます。空の場合、アプリは出力から最適な URL を開きます。`,"settings.projects.actions.field.desktopSshForward":`Desktop SSH 転送`,"settings.projects.actions.field.useOutputManualUrl":`出力/手動 URL を使用`,"settings.projects.actions.actions.add":`アクションを追加`,"settings.projects.actions.actions.save":`アクションを保存`,"settings.projects.actions.toast.saveFailed":`アクションの保存に失敗しました`,"settings.projects.actions.toast.saved":`プロジェクトアクションを保存しました`,"settings.openchamber.about.title":`OpenChamber について`,"settings.openchamber.about.field.version":`バージョン`,"settings.openchamber.about.field.clientVersion":`クライアント`,"settings.openchamber.about.field.webBundle":`Web バンドル`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`OpenCode バージョン`,"settings.openchamber.about.state.checking":`確認中...`,"settings.openchamber.about.state.upToDate":`最新です`,"settings.openchamber.about.state.unknown":`不明`,"settings.openchamber.about.state.builtin":`組み込み`,"settings.openchamber.about.actions.checkUpdates":`アップデートを確認`,"settings.openchamber.about.actions.update":`アップデート`,"settings.openchamber.about.actions.updateToVersion":`{version} にアップデート`,"settings.openchamber.about.actions.checkForUpdates":`アップデートを確認`,"settings.openchamber.about.toast.latestVersion":`最新バージョンです`,"settings.openchamber.about.toast.checkFailed":`更新を確認できませんでした`,"settings.openchamber.about.diagnostics.label":`診断ログ`,"settings.openchamber.about.diagnostics.description":`表示や同期の問題を調べるためのローカル診断 feat を書き出します。メッセージ本文やトークンは含まれません。`,"settings.openchamber.about.diagnostics.export":`ログを書き出す`,"settings.openchamber.about.diagnostics.exporting":`書き出し中…`,"settings.openchamber.about.diagnostics.enable":`診断 feat を記録`,"settings.openchamber.about.diagnostics.enableHint":`ベータ版でのみ利用できます。この端末にセッション同期と表示のライフサイクルを記録します。本文は含みません。`,"settings.openchamber.about.diagnostics.toast.exported":`診断ログを書き出しました`,"settings.openchamber.about.diagnostics.toast.failed":`診断ログを書き出せませんでした`,"settings.openchamber.about.diagnostics.toast.empty":`診断ログを書き出しました。まだイベントは記録されていません。`,"settings.agents.sidebar.title":`エージェント`,"settings.agents.sidebar.total":`合計 {count}`,"settings.agents.sidebar.empty.title":`Agent が設定されていません`,"settings.agents.sidebar.empty.description":`上の + ボタンを使用して作成してください`,"settings.agents.sidebar.section.builtIn":`ビルトイン Agent`,"settings.agents.sidebar.section.custom":`カスタム Agent`,"settings.agents.sidebar.badge.system":`システム`,"settings.agents.sidebar.dialog.deleteTitle":`Agent を削除`,"settings.agents.sidebar.dialog.resetTitle":`Agent をリセット`,"settings.agents.sidebar.dialog.deleteDescription":`Agent "{name}" を削除してもよろしいですか?`,"settings.agents.sidebar.dialog.resetDescription":`Agent "{name}" をデフォルト設定にリセットしてもよろしいですか?`,"settings.agents.sidebar.renameDialog.title":`Agent の名前変更`,"settings.agents.sidebar.renameDialog.description":`Agent "@{name}" の新しい名前を入力してください`,"settings.agents.sidebar.renameDialog.placeholder":`新しい Agent 名...`,"settings.agents.sidebar.toast.builtInCannotDelete":`ビルトイン Agent は削除できません`,"settings.agents.sidebar.toast.agentDeleted":`Agent "{name}" を削除しました`,"settings.agents.sidebar.toast.agentReset":`Agent "{name}" をデフォルトにリセットしました`,"settings.agents.sidebar.toast.deleteFailed":`Agent の削除に失敗しました`,"settings.agents.sidebar.toast.definitionNotFound":`Agent 定義が見つかりませんでした。変更は行われませんでした。`,"settings.agents.sidebar.toast.resetFailed":`Agent のリセットに失敗しました`,"settings.agents.sidebar.toast.agentNameRequired":`Agent 名が必要です`,"settings.agents.sidebar.toast.agentExists":`同じ名前の Agent が既に存在します`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`名前変更後に古い Agent の削除に失敗しました`,"settings.agents.sidebar.toast.renameFailed":`Agent の名前変更に失敗しました`,"settings.agents.sidebar.toast.agentRenamed":`Agent の名前を「{name}」に変更しました`,"settings.agents.page.toast.permissionNameRequired":`権限名が必要です`,"settings.agents.page.toast.created":`Agent を作成しました`,"settings.agents.page.toast.updated":`Agent を更新しました`,"settings.agents.page.toast.createFailed":`Agent の作成に失敗しました`,"settings.agents.page.toast.updateFailed":`Agent の更新に失敗しました`,"settings.agents.page.toast.saveUnexpectedError":`保存中にエラーが発生しました`,"settings.agents.page.toast.savedManualRestart":`ディスクに保存しました。変更を適用するには接続中の OpenCode サーバーを再起動してください。`,"settings.agents.page.empty.title":`サイドバーから Agent を選択してください`,"settings.agents.page.empty.description":`または新しいものを作成`,"settings.agents.page.title.new":`新しい Agent`,"settings.agents.page.subtitle.new":`新しいアシスタントペルソナを設定`,"settings.agents.page.subtitle.edit":`Agent 設定を編集`,"settings.agents.page.section.identityRole":`識別情報と役割`,"settings.agents.page.section.modelParameters":`モデルとパラメーター`,"settings.agents.page.section.systemPrompt":`システムプロンプト`,"settings.agents.page.section.toolPermissions":`ツール権限`,"settings.agents.page.field.agentName":`Agent 名`,"settings.agents.page.field.agentNamePlaceholder":`agent-name`,"settings.agents.page.field.scopePlaceholder":`スコープ`,"settings.agents.page.field.descriptionPlaceholder":`この Agent は何をしますか?`,"settings.agents.page.field.mode":`モード`,"settings.agents.page.field.modeTooltip":`プライマリと Subagent の表示設定`,"settings.agents.page.field.overrideModel":`モデルを上書き`,"settings.agents.page.field.temperature":`温度`,"settings.agents.page.field.temperatureTooltip":`ランダム性を制御します。高い = 創造的、低い = 集中的。`,"settings.agents.page.field.temperatureRange":`0.0 ~ 2.0`,"settings.agents.page.field.clearTemperatureAria":`Temperature の上書きをクリア`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Nucleus サンプリングの多様性。低い = 確率の高い Token のみ。`,"settings.agents.page.field.topPRange":`0.0 ~ 1.0`,"settings.agents.page.field.clearTopPAria":`Top P の上書きをクリア`,"settings.agents.page.field.variant":`思考バリアント`,"settings.agents.page.field.variantTooltip":`この Agent の思考/推論の深さを制御します。プロバイダー固有のパラメーター(例: Anthropic variant、OpenAI reasoning effort)に対応します。`,"settings.agents.page.field.variantHint":`例: high、max、low`,"settings.agents.page.field.variantPlaceholder":`デフォルト`,"settings.agents.page.field.systemPromptPlaceholder":`あなたは熟練したコーディングアシスタントです...`,"settings.agents.page.mode.primary":`プライマリ`,"settings.agents.page.mode.subagent":`サブエージェント`,"settings.agents.page.mode.all":`すべて`,"settings.agents.page.permissions.defaultLabel":`デフォルト`,"settings.agents.page.permissions.hideEditor":`エディターを非表示`,"settings.agents.page.permissions.advancedEditor":`高度なエディター`,"settings.agents.page.permissions.globalSummary":`グローバル: {summary}`,"settings.agents.page.permissions.rulesSummary":`ルール: {summary}`,"settings.agents.page.permissions.globalDefault":`グローバルデフォルト`,"settings.agents.page.permissions.pattern":`パターン`,"settings.agents.page.permissions.addCustomRule":`カスタムルールを追加`,"settings.agents.page.permissions.permissionPlaceholder":`権限...`,"settings.agents.page.permissions.patternPlaceholder":`パターン(例: *)`,"settings.page.behavior.title":`動作`,"settings.behavior.page.title":`動作`,"settings.behavior.page.warning.title":`グローバルルールはプロジェクトルールと組み合わされます`,"settings.behavior.page.warning.description":`ここでの変更は {path} を更新します。OpenCode はプロジェクトレベルの AGENTS.md ルールも存在する場合は含めます。`,"settings.behavior.page.section.systemPrompt":`グローバル AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`あなたは役立つ AI アシスタントです...
|
|
2
2
|
|
|
3
3
|
このスペースを使用して、すべての Session と Provider にわたって AI の動作方法に関する絶対的なルールを定義してください。`,"settings.behavior.page.section.responseStyle":`応答スタイル`,"settings.behavior.page.responseStyle.tooltip":`有効にすると、これらの指示は新しい会話ごとにアシスタントの応答方法をガイドします。最初のメッセージとともに送信され、グローバル AGENTS.md ルールは変更しません。`,"settings.behavior.page.responseStyle.enableAria":`応答スタイルの指示を有効化`,"settings.behavior.page.responseStyle.enable":`新しい会話に応答スタイルの指示を追加`,"settings.behavior.page.responseStyle.preset":`プリセット`,"settings.behavior.page.responseStyle.option.concise":`簡潔`,"settings.behavior.page.responseStyle.option.detailed":`詳細`,"settings.behavior.page.responseStyle.option.mentor":`メンター`,"settings.behavior.page.responseStyle.option.pushback":`反論`,"settings.behavior.page.responseStyle.option.noFiller":`無駄なし`,"settings.behavior.page.responseStyle.option.matchEnergy":`テンションに合わせる`,"settings.behavior.page.responseStyle.option.warmPeer":`親しみやすい同僚`,"settings.behavior.page.responseStyle.option.custom":`カスタム`,"settings.behavior.page.responseStyle.customPlaceholder":`最初のメッセージに追加する指示を記述...`,"settings.behavior.page.toast.saved":`動作設定を保存しました`,"settings.behavior.page.toast.saveFailed":`動作設定の保存に失敗しました`,"settings.commands.sidebar.title":`コマンド`,"settings.commands.sidebar.total":`合計 {count}`,"settings.commands.sidebar.empty.title":`Command が設定されていません`,"settings.commands.sidebar.empty.description":`上の + ボタンを使用して作成してください`,"settings.commands.sidebar.section.builtIn":`ビルトイン Command`,"settings.commands.sidebar.section.custom":`カスタム Command`,"settings.commands.sidebar.dialog.deleteTitle":`Command を削除`,"settings.commands.sidebar.dialog.resetTitle":`Command をリセット`,"settings.commands.sidebar.dialog.deleteDescription":`Command "{name}" を削除してもよろしいですか?`,"settings.commands.sidebar.dialog.resetDescription":`Command "{name}" をデフォルト設定にリセットしてもよろしいですか?`,"settings.commands.sidebar.renameDialog.title":`Command の名前変更`,"settings.commands.sidebar.renameDialog.description":`Command "/{name}" の新しい名前を入力してください`,"settings.commands.sidebar.renameDialog.placeholder":`新しい Command 名...`,"settings.commands.sidebar.toast.builtInCannotDelete":`ビルトイン Command は削除できません`,"settings.commands.sidebar.toast.commandDeleted":`Command "{name}" を削除しました`,"settings.commands.sidebar.toast.commandReset":`Command "{name}" をデフォルトにリセットしました`,"settings.commands.sidebar.toast.deleteFailed":`Command の削除に失敗しました`,"settings.commands.sidebar.toast.resetFailed":`Command のリセットに失敗しました`,"settings.commands.sidebar.toast.commandNameRequired":`Command 名が必要です`,"settings.commands.sidebar.toast.commandExists":`同じ名前の Command が既に存在します`,"settings.commands.sidebar.toast.removeOldAfterRenameFailed":`名前変更後に古い Command の削除に失敗しました`,"settings.commands.sidebar.toast.renameFailed":`Command の名前変更に失敗しました`,"settings.commands.page.toast.templateRequired":`Command Template が必要です`,"settings.commands.page.toast.created":`Command を作成しました`,"settings.commands.page.toast.updated":`Command を更新しました`,"settings.commands.page.toast.createFailed":`Command の作成に失敗しました`,"settings.commands.page.toast.updateFailed":`Command の更新に失敗しました`,"settings.commands.page.toast.saveUnexpectedError":`保存中にエラーが発生しました`,"settings.commands.page.empty.title":`サイドバーから Command を選択してください`,"settings.commands.page.empty.description":`または新しいものを作成`,"settings.commands.page.title.new":`新しい Command`,"settings.commands.page.subtitle.new":`新しいスラッシュ Command を設定`,"settings.commands.page.subtitle.edit":`Command 設定を編集`,"settings.commands.page.section.identity":`識別情報`,"settings.commands.page.section.executionContext":`実行コンテキスト`,"settings.commands.page.section.template":`コマンドテンプレート`,"settings.commands.page.field.commandName":`Command 名`,"settings.commands.page.field.commandNamePlaceholder":`command-name`,"settings.commands.page.field.descriptionPlaceholder":`この Command は何をしますか?`,"settings.commands.page.field.overrideAgent":`Agent を上書き`,"settings.commands.page.field.templatePlaceholder":`ここに Command Template を記述...
|
|
4
4
|
|