@openchambery/web 2.0.0-beta.34 → 2.0.0-beta.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/assets/{AgentAvatar-39ZQdUMb.js → AgentAvatar-C1MGZ7qC.js} +1 -1
  2. package/dist/assets/{AssistantView-ClCvt9pu.js → AssistantView-BKnFUgRh.js} +3 -3
  3. package/dist/assets/{DiagramView-NRDIf-NO.js → DiagramView-Cr5TV-NS.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-D8_HoWJW.js → FadeInOnReveal-BMSk_tY-.js} +1 -1
  5. package/dist/assets/{Icon-CE66hJdc.js → Icon-BdzPRCSy.js} +1 -1
  6. package/dist/assets/{MarkdownRenderer-DJ-O-M6C.js → MarkdownRenderer-CG9_rNLi.js} +2 -2
  7. package/dist/assets/{MarkdownRendererImpl-C3TQXSSZ.js → MarkdownRendererImpl-C1VOfbVp.js} +1 -1
  8. package/dist/assets/{MarkstreamRendererImpl-DOWtMoIJ.js → MarkstreamRendererImpl-D3gH92YL.js} +1 -1
  9. package/dist/assets/{MobileDetailNavigation-D7R5SJbS.js → MobileDetailNavigation-BgcsB7yg.js} +1 -1
  10. package/dist/assets/{MobileShareBridge-DU_FyiQD.js → MobileShareBridge-C_Ju_iYd.js} +1 -1
  11. package/dist/assets/{MobileSurface-D9_7c6Cn.js → MobileSurface-BVefleA5.js} +1 -1
  12. package/dist/assets/{MultiRunWindow-CpR2em-Q.js → MultiRunWindow-59umt4aL.js} +1 -1
  13. package/dist/assets/{OnboardingScreen-AVTF1Yzw.js → OnboardingScreen-yRdQTR1M.js} +1 -1
  14. package/dist/assets/{OverlayScrollbar-BpIZ26ys.js → OverlayScrollbar-BUjtqnxn.js} +1 -1
  15. package/dist/assets/SettingsView-lFcZNczX.js +25 -0
  16. package/dist/assets/{SettingsWindow-CPD77cLX.js → SettingsWindow-DyCotof2.js} +1 -1
  17. package/dist/assets/{TerminalView-BG-1CW4K.js → TerminalView-2or3pf8m.js} +1 -1
  18. package/dist/assets/{ToolOutputDialog-cAJocSiM.js → ToolOutputDialog-8cuS3S8r.js} +1 -1
  19. package/dist/assets/{appThemeRegistry-Yr9QxYQy.js → appThemeRegistry-DBN3cBJz.js} +1 -1
  20. package/dist/assets/{button-ChCnZLEt.js → button-CUwjpv-i.js} +1 -1
  21. package/dist/assets/{collapsible-BASDiUrS.js → collapsible-paItOH3A.js} +1 -1
  22. package/dist/assets/{context-menu-ZRX9X1ME.js → context-menu-K6zNumqN.js} +1 -1
  23. package/dist/assets/{diagram-Ces9ucuK.js → diagram-D6nY5hbD.js} +1 -1
  24. package/dist/assets/{dialog-ceLSQusF.js → dialog-PjKWayIU.js} +1 -1
  25. package/dist/assets/{es-C0ZcgPDN.js → es-BBbon7SL.js} +1 -1
  26. package/dist/assets/{fileMentionTouchSelection-CIOhB1P5.js → fileMentionTouchSelection-Basgzi-b.js} +1 -1
  27. package/dist/assets/{fr-BILFhfo6.js → fr-BsKj2CTi.js} +1 -1
  28. package/dist/assets/{gitApi-sTW95QwU.js → gitApi-CgrQrPVW.js} +1 -1
  29. package/dist/assets/{input-Dtqk4nzm.js → input-BeVw4D0W.js} +1 -1
  30. package/dist/assets/{insertionBoundaries-DEEn0bys.js → insertionBoundaries-BTSp06NL.js} +1 -1
  31. package/dist/assets/{ja-BP2JyAsN.js → ja-1mgxunoM.js} +1 -1
  32. package/dist/assets/{ko-DAAaN7rn.js → ko-Ra9znPcL.js} +1 -1
  33. package/dist/assets/{main-BJ08nweY.js → main-3g2Cz2xH.js} +4 -4
  34. package/dist/assets/{main-CgThlpB4.js → main-Bwq-Skqc.js} +2 -2
  35. package/dist/assets/{markdownHeightCache-CdSRADBK.js → markdownHeightCache-CGCWmHgq.js} +1 -1
  36. package/dist/assets/{mcpQueries-Dhk49pVS.js → mcpQueries-CTwCARbw.js} +1 -1
  37. package/dist/assets/{miniChat-BO47U_8_.js → miniChat-B4Ta8R-q.js} +2 -2
  38. package/dist/assets/{mobile-chV-DzPQ.js → mobile-D8uJUpOE.js} +2 -2
  39. package/dist/assets/{multirun-F73TTl9d.js → multirun-Wvh0ZyuC.js} +1 -1
  40. package/dist/assets/{pl-CFOOW0Ji.js → pl-B714sdql.js} +1 -1
  41. package/dist/assets/{projectMeta-5PY-PuWR.js → projectMeta-CqE63PAd.js} +1 -1
  42. package/dist/assets/{pt-BR-CwdlvB83.js → pt-BR-DVoT_I7_.js} +1 -1
  43. package/dist/assets/{renderElectronMiniChatApp-9we9CFeV.js → renderElectronMiniChatApp-DzIQ-fbt.js} +2 -2
  44. package/dist/assets/{renderMobileApp-D0AO-nmX.js → renderMobileApp-BHYyPgy8.js} +4 -4
  45. package/dist/assets/{runtimeConfig-ZPmdzse-.js → runtimeConfig-BK1Ljkw4.js} +1 -1
  46. package/dist/assets/{runtimeEndpointReset-DsjRfaID.js → runtimeEndpointReset-Y7SpEFt6.js} +1 -1
  47. package/dist/assets/{sessionChangeSummary-BdwNVcG2.js → sessionChangeSummary-CSsr5fCL.js} +1 -1
  48. package/dist/assets/{sessionLookup-BPK2yNTc.js → sessionLookup-Biu-S0oB.js} +1 -1
  49. package/dist/assets/{sortable-tabs-strip-yfS8hmwd.js → sortable-tabs-strip-D611LPyd.js} +1 -1
  50. package/dist/assets/src-TBM7scxy.css +2 -0
  51. package/dist/assets/{store-DZyICLn6.js → store-l_X_jQNz.js} +2 -2
  52. package/dist/assets/{textarea-Cyj3BlDq.js → textarea-QtZjf4L8.js} +1 -1
  53. package/dist/assets/{tooltip-C-I1W_fN.js → tooltip-DDNnmcXI.js} +1 -1
  54. package/dist/assets/{uk-C-8fQjL5.js → uk-ChNnTgKP.js} +1 -1
  55. package/dist/assets/{useAppFontEffects-CUqVLYn5.js → useAppFontEffects-EhAd1HUV.js} +6 -6
  56. package/dist/assets/{useDesktopWindowControlsLayout-CXnrUYUp.js → useDesktopWindowControlsLayout-CLka_bUe.js} +1 -1
  57. package/dist/assets/{useEffectiveDirectory-ChlCpeY2.js → useEffectiveDirectory-BDpuRwyR.js} +1 -1
  58. package/dist/assets/{useMobileNavigationStore-Dj346HEs.js → useMobileNavigationStore-BeQSkvGH.js} +6 -6
  59. package/dist/assets/{useSessionAutoCleanup-CKZ4ko2R.js → useSessionAutoCleanup-CJcgkAQt.js} +1 -1
  60. package/dist/assets/{useWorkerHighlightedLines-DXmWifj1.js → useWorkerHighlightedLines-BA84J2Gf.js} +1 -1
  61. package/dist/assets/{zh-CN-Brts9G8b.js → zh-CN-DHEFf4u1.js} +1 -1
  62. package/dist/assets/{zh-TW-B7ACkXT3.js → zh-TW-rdSa8atW.js} +1 -1
  63. package/dist/index.html +3 -3
  64. package/dist/mini-chat.html +3 -3
  65. package/dist/mobile.html +3 -3
  66. package/package.json +1 -1
  67. package/dist/assets/SettingsView-CoSEUf9E.js +0 -25
  68. package/dist/assets/src-BsXLdO-L.css +0 -2
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{c as t,i as n}from"./runtime-switch-BJM2k_uH.js";import{A as r,M as i,On as a,d as o,f as s,on as c}from"./persistence-Dnj1QOdX.js";import{a as l,i as u,r as d}from"./vendor-zustand-DzRqcymP.js";import{nt as f,rt as p}from"./vendor-base-ui-CnHfUmDN.js";import{B as m,Ct as h,M as g,Mt as _}from"./platform-jCZ3KfMQ.js";import{b as v,n as ee,x as y}from"./useUIStore-Dfx6TKvi.js";import{n as b}from"./vendor-react-DLPElpoQ.js";import{s as x}from"./vendor-tanstack-react-query-D7pys_c9.js";import{n as S}from"./vendor-reactuses-core-Dq5ocTF8.js";import{f as te,r as C,u as ne}from"./button-ChCnZLEt.js";import{Dr as re,Ra as ie,S as ae,Vt as oe,_t as w,br as se,cn as ce,d as T,dt as le,eo as ue,ft as de,mt as fe,pa as pe,pt as me,to as E,vn as D,y as he,zn as ge}from"./useMobileNavigationStore-Dj346HEs.js";import{n as O}from"./Icon-CE66hJdc.js";import{g as _e,v as ve}from"./gitApi-sTW95QwU.js";import{f as ye,o as be}from"./projectMeta-5PY-PuWR.js";import{n as xe}from"./textarea-Cyj3BlDq.js";import{n as Se,r as Ce,t as we}from"./fileMentionTouchSelection-CIOhB1P5.js";var Te=e=>{switch(e.name){case`new`:return`add`;case`init`:return`file`;case`undo`:return`arrow-go-back`;case`redo`:return`arrow-go-forward`;case`timeline`:return`time`;case`compact`:return`scissors`;case`reload`:return`refresh`;case`goal`:return`target`;case`review`:return`search-eye`;case`test`:case`build`:case`run`:return`terminal-box`;default:return e.isBuiltIn?`flashlight`:`command`}},Ee=()=>`book-open`,De=e=>{if(e.isDirectory)return`folder-3-fill`;switch(e.extension?.toLowerCase()){case`ts`:case`tsx`:case`js`:case`jsx`:case`json`:return`code`;case`md`:case`mdx`:return`file`;case`png`:case`jpg`:case`jpeg`:case`gif`:case`svg`:return`file-image`;default:return`file-pdf`}},k=()=>`ai-agent`,Oe=()=>`chat-thread`,ke=(e,t)=>e.map(e=>{let n=e.isSkill?t.skill:e.isOpenChamber?`OpenChamber`:e.isBuiltIn?t.system:e.scope||e.agent||t.command;return{id:e.id,title:`/${e.name}`,subtitle:e.description,badge:n,iconName:Te(e)}}),Ae=({skills:e=[],agents:t,sessions:n,recentFiles:r,pathHits:i,untitledSession:a,sessionBadge:o,skillBadge:s})=>{let c=[];for(let t of e)c.push({id:`skill:${t.name}-${t.scope}`,title:`@${t.name}`,subtitle:t.description,badge:s??t.scope,iconName:Ee()});for(let e of t)c.push({id:`agent:${e.name}`,title:`@${e.name}`,subtitle:e.description,iconName:k()});for(let e of n)c.push({id:`session:${e.id}`,title:e.title||a,badge:o,iconName:Oe()});for(let e of r)c.push({id:`recent:${e.path}`,title:e.relativePath||e.name,iconName:De(e)});for(let e of i)c.push({id:`file:${e.path}`,title:e.relativePath||e.name,iconName:De(e)});return c},je=(e,t)=>{let n=t.trim();if(!n.length)return[...e].sort((e,t)=>e.scope===`project`&&t.scope!==`project`?-1:e.scope!==`project`&&t.scope===`project`?1:e.name.localeCompare(t.name));let r=ge([...e],n,e=>[e.name,e.description??``]);return r.sort((e,t)=>e.score===t.score?e.item.scope===`project`&&t.item.scope!==`project`?-1:e.item.scope!==`project`&&t.item.scope===`project`?1:e.item.name.localeCompare(t.item.name):e.score-t.score),r.map(e=>e.item)},Me=(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=ge([...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)},Ne=(e,t)=>e===t||e.length===t.length&&e.every((e,n)=>{let r=t[n];return r!=null&&e.id===r.id&&e.title===r.title&&(e.subtitle??``)===(r.subtitle??``)&&(e.badge??``)===(r.badge??``)&&e.iconName===r.iconName}),Pe=(e,t)=>e.highlightedIndex===t.highlightedIndex&&Ne(e.rows,t.rows),Fe=(e,t)=>Ne(e,t)?e:t.slice(),Ie=(e,t,n)=>{e&&(t.current&&Pe(t.current,n)||(t.current=n,e(n)))},Le=(e,t)=>{t.current=null,e?.({rows:[],highlightedIndex:0})},A=e(p(),1),j=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},M=e=>/^[A-Za-z]:\//.test(e)?e.toLowerCase():e,N=(e,t)=>{let n=j(t),r=j(e);if(!n||!r)return!1;let i=M(n),a=M(r);return a===i||a.startsWith(`${i}/`)},Re=e=>{if(!e||typeof e!=`object`)return{};let t=e,n={};for(let[e,r]of Object.entries(t)){let t=j(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=>j(e)).filter(e=>N(e,t)))):[],o=Array.isArray(i.expandedPaths)?Array.from(new Set(i.expandedPaths.filter(e=>typeof e==`string`).map(e=>j(e)).filter(e=>N(e,t)))):[],s=typeof i.selectedPath==`string`?j(i.selectedPath):null,c=s&&N(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},P=(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},F=e=>e?{...e,touchedAt:Date.now()}:{openPaths:[],selectedPath:null,expandedPaths:[],touchedAt:Date.now()},ze=l()(d(u((e,t)=>({byRoot:{},addOpenPath:(t,n,r)=>{let i=j((t||``).trim()),a=j((n||``).trim());!i||!a||!r?.allowOutsideRoot&&!N(a,i)||e(e=>{let t=e.byRoot[i],n=F(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:P({...e.byRoot,[i]:{...n,openPaths:o,selectedPath:s}},20)}})},removeOpenPath:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=M(i),a=e=>M(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:P({...e.byRoot,[r]:{...t,openPaths:s,selectedPath:c,touchedAt:Date.now()}},20)}})},removeOpenPathsByPrefix:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=M(i),a=n.endsWith(`/`)?n:`${n}/`,o=e=>{let t=M(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:P({...e.byRoot,[r]:{...t,openPaths:s,selectedPath:c,touchedAt:Date.now()}},20)}})},removeExpandedPathsByPrefix:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=M(i),a=n.endsWith(`/`)?n:`${n}/`,o=t.expandedPaths.filter(e=>{let t=M(e);return t!==n&&!t.startsWith(a)});return o.length===t.expandedPaths.length?e:{byRoot:P({...e.byRoot,[r]:{...t,expandedPaths:o,touchedAt:Date.now()}},20)}})},setSelectedPath:(t,n,r)=>{let i=j((t||``).trim()),a=n?j(n.trim()):null;!i||a&&!r?.allowOutsideRoot&&!N(a,i)||e(e=>{let t=e.byRoot[i],n=F(t),r=a&&!n.openPaths.includes(a)?[...n.openPaths,a]:n.openPaths;return t&&t.selectedPath===a&&r===t.openPaths?e:{byRoot:P({...e.byRoot,[i]:{...n,openPaths:r,selectedPath:a}},20)}})},ensureSelectedPath:e=>{let n=j((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=j((t||``).trim()),i=j((n||``).trim());!r||!i||!N(i,r)||e(e=>{let t=e.byRoot[r],n=F(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:P({...e.byRoot,[r]:{...n,expandedPaths:a}},20)}})},expandPath:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||!N(i,r)||e(e=>{let t=e.byRoot[r],n=F(t);return n.expandedPaths.includes(i)&&t?e:{byRoot:P({...e.byRoot,[r]:{...n,expandedPaths:[...n.expandedPaths,i]}},20)}})},expandPaths:(t,n)=>{let r=j((t||``).trim());if(!r||!n||n.length===0)return;let i=n.map(e=>j((e||``).trim())).filter(e=>e&&N(e,r));i.length!==0&&e(e=>{let t=e.byRoot[r],n=F(t),a=new Set(n.expandedPaths),o=i.filter(e=>!a.has(e));return o.length===0?e:{byRoot:P({...e.byRoot,[r]:{...n,expandedPaths:[...n.expandedPaths,...o]}},20)}})}}),{name:`files-view-tabs-store`,version:2,storage:v(),migrate:e=>{if(!e||typeof e!=`object`)return{byRoot:{}};let t=e.byRoot;return{byRoot:Re(t)}},partialize:e=>({byRoot:Re(e.byRoot)})}),{name:`files-view-tabs-store`})),I=b(),Be=(e,t)=>{let n=(0,I.c)(4),r=t===void 0?200:t,[i,a]=A.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]),A.useEffect(o,s),i},Ve=()=>{let e=(0,I.c)(17),t=T(L),n=D(),r;e[0]===t?r=e[1]:(r=e=>t?e.getAttachment(t):void 0,e[0]=t,e[1]=r);let i=ae(r),a=T(R),o=T(z),s=E(He),c=E(B),l=h(Ue);if(t){let r;e[2]===i?r=e[3]:(r=he(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 L(e){return e.currentSessionId}function R(e){return e.worktreeMetadata}function z(e){return e.newSessionDraft}function He(e){return e.activeProjectId}function B(e){return e.projects}function Ue(e){return e.currentDirectory}var V=f(),H=`bg-transparent font-[inherit] text-[var(--primary-base)]`,U=(e,t)=>{let n=t.trim().toLowerCase();if(!n)return e;let r=e.toLowerCase();if(!r.includes(n))return e;let i=[],a=0,o=r.indexOf(n);for(;o!==-1;)o>a&&i.push(e.slice(a,o)),i.push((0,V.jsx)(`mark`,{className:H,children:e.slice(o,o+n.length)},`${o}-${n}`)),a=o+n.length,o=r.indexOf(n,a);return a<e.length&&i.push(e.slice(a)),i},W=A.forwardRef(({searchQuery:e,onFileSelect:t,onAgentSelect:n,onSkillSelect:a,onSessionSelect:o,onClose:s,style:c,onRowsChange:l},u)=>{let{t:d}=te(),f=Ve()??``,p=T(e=>e.currentSessionId),m=re(e=>e.activeSessions),h=oe({enabled:!!o}),g=E(e=>e.activeProjectId),v=E(e=>e.projects),y=A.useMemo(()=>v.find(e=>e.id===g)?.path??null,[g,v]),b=A.useMemo(()=>{let e=y||f;return e?e.replace(/\\/g,`/`).replace(/\/+$/,``):null},[y,f]),x=ze(e=>b?e.byRoot[b]:void 0),ae=pe(e=>e.getVisibleAgents),ce=_(e=>e.searchFiles),ue=Be(e,180),D=i(),he=r(),[ge,_e]=A.useState([]),[ve,ye]=A.useState([]),[be,Te]=A.useState(!1),[k,Oe]=A.useState(0),ke=A.useRef(0),[Me,Ne]=A.useState(360),[Pe,Fe]=A.useState({}),[j,M]=A.useState({}),N=A.useRef([]),Re=A.useRef([]),P=A.useRef([]),F=A.useRef(null),I=A.useRef(null),L=A.useRef(null);L.current||=we();let R=ee(e=>e.isMobile),z=(e??``).trim(),He=ie({directory:f||null}),B=A.useMemo(()=>a?je(He.data??[],z):[],[z,a,He.data]),Ue=A.useMemo(()=>{if(!b||!x)return[];let e=[x.selectedPath,...x.openPaths.slice().reverse()].filter(e=>typeof e==`string`&&e.length>0),t=new Set,n=[];for(let r of e){if(t.has(r))continue;t.add(r);let e=r.replace(/\\/g,`/`),i=e.split(`/`).filter(Boolean).pop()||e,a=e.startsWith(`${b}/`)?e.slice(b.length+1):e;n.push({name:i,path:e,relativePath:a,extension:i.includes(`.`)?i.split(`.`).pop()?.toLowerCase():void 0})}return fe(n,z,{limit:6})},[z,b,x]),H=A.useMemo(()=>z.length>0?ve:ve.slice(0,2),[ve,z.length]),W=A.useMemo(()=>o?le({sessions:se(m,h),currentSessionId:p,searchQuery:z}):[],[m,p,h,z,o]),G=Ue,K=ge;A.useEffect(()=>{let e=e=>{let t=e.target;!t||!F.current||F.current.contains(t)||s()};return document.addEventListener(`pointerdown`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0)}},[s]),A.useEffect(()=>{if(!f){_e([]);return}let e=(ue??``).trim(),t=w(e);if(!t){_e([]);return}let n=!1;Te(!0);let r={includeHidden:D,respectGitignore:!he};return Promise.all([ce(f,t,80,{...r,type:`file`}),ce(f,t,40,{...r,type:`directory`})]).then(([t,r])=>{if(n)return;let i=new Set(Ue.map(e=>e.path));_e(de({files:t,directories:r,query:e,excludePaths:i,limit:20}))}).catch(()=>{n||_e([])}).finally(()=>{n||Te(!1)}),()=>{n=!0}},[f,ue,Ue,ce,D,he]),A.useEffect(()=>{let t=ae().filter(e=>e.mode&&e.mode!==`primary`).map(e=>({name:e.name,description:e.description,mode:e.mode}));ye(me(t,e??``))},[ae,e]),A.useEffect(()=>{Oe(0),Fe({}),M({})},[K,G.length,H.length,W.length,B.length]),A.useEffect(()=>{ke.current=k},[k]),A.useEffect(()=>{N.current[k]?.scrollIntoView({block:`nearest`})},[k]),A.useEffect(()=>{let e=null,t=()=>{e!==null&&cancelAnimationFrame(e),e=requestAnimationFrame(()=>{let e={},t={};Re.current.forEach((n,r)=>{if(!n)return;let i=P.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}}),Fe(e),M(t)})};return t(),window.addEventListener(`resize`,t),()=>{e!==null&&cancelAnimationFrame(e),window.removeEventListener(`resize`,t)}},[K,G]),A.useEffect(()=>{let e=Re.current[k];if(!e)return;let t=()=>{let t=e.clientWidth;t>0&&Ne(t)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[k]);let We=S(e=>{t(e)}),Ge=S(e=>{n?.(e)}),Ke=S(e=>{o?.(e)}),q=S(e=>{a?.(e)}),J=B.length,qe=J,Je=qe+H.length,Y=Je+W.length,Ye=Y+G.length,Xe=(e,t)=>({onMouseDown:e=>e.preventDefault(),onPointerDown:e=>{e.pointerType===`touch`&&L.current?.pointerDown(e.clientX,e.clientY)},onPointerMove:e=>{e.pointerType===`touch`&&L.current?.pointerMove(e.clientX,e.clientY)},onPointerUp:e=>{e.pointerType===`touch`&&(L.current?.pointerUp(t)??!1)&&(e.preventDefault(),e.stopPropagation())},onPointerCancel:()=>L.current?.pointerCancel(),onClick:()=>{L.current?.click(t)},onMouseMove:()=>Oe(e)}),Ze=e=>{let t=J+H.length+W.length+G.length+K.length;if(t===0)return;let n=(e%t+t)%t;if(n<J){let e=B[n];e&&q(e);return}if(n<Je){let e=H[n-qe];e&&Ge(e.name);return}if(n<Y){let e=W[n-Je];e&&Ke(e);return}let r=n-Y,i=r<G.length?G[r]:K[r-G.length];i&&We(i)};A.useEffect(()=>{Ie(l,I,{rows:Ae({skills:B,agents:H,sessions:W,recentFiles:G,pathHits:K,untitledSession:d(`chat.fileMentionAutocomplete.untitledSession`),sessionBadge:d(`chat.fileMentionAutocomplete.sessionType`),skillBadge:d(`chat.commandAutocomplete.badge.skill`)}),highlightedIndex:k})},[l,k,d,H,K,G,W,B]);let X=A.useRef(l);X.current=l,A.useEffect(()=>()=>{Le(X.current,I)},[]),A.useImperativeHandle(u,()=>({acceptIndex:e=>{Ze(e)},handleKeyDown:e=>{if(e===`Escape`){s();return}let t=J+H.length+W.length+G.length+K.length;if(t!==0){if(e===`ArrowDown`){Oe(e=>(e+1)%t);return}if(e===`ArrowUp`){Oe(e=>(e-1+t)%t);return}(e===`Enter`||e===`Tab`)&&Ze(ke.current)}}}),[J,K,G,H,W,B,s,We,Ge,Ke,q]);let Z=e=>(0,V.jsx)(O,{name:De(e),className:`h-3.5 w-3.5 text-current`});return(0,V.jsxs)(Se,{ref:F,isMobile:R,className:`max-w-[640px] max-h-64`,style:c,children:[(0,V.jsx)(xe,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0`,children:(0,V.jsxs)(`div`,{className:`pb-2`,children:[B.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.skills`)}),B.map((e,t)=>{let n=k===t;return(0,V.jsx)(`div`,{ref:e=>{N.current[t]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,n),!R&&n&&`text-interactive-selection-foreground`),...Xe(t,()=>q(e)),children:(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(O,{name:Ee(),className:`h-3.5 w-3.5 translate-y-px flex-shrink-0 text-current`}),(0,V.jsxs)(`span`,{className:`min-w-0 truncate`,children:[`@`,U(e.name,z)]}),R?null:(0,V.jsx)(`span`,{className:`flex-shrink-0 typography-meta text-muted-foreground`,children:e.scope})]}),e.description?(0,V.jsx)(`div`,{className:C(`pl-5.5 truncate text-muted-foreground`,R?`typography-micro`:`typography-meta`),children:U(e.description,z)}):null]})},`skill-${e.name}-${e.scope}`)}),H.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.agents`)}),H.map((e,t)=>{let n=qe+t,r=k===n;return(0,V.jsx)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-start gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,r),!R&&r&&`text-interactive-selection-foreground`),...Xe(n,()=>Ge(e.name)),children:(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`div`,{className:`truncate`,children:[`@`,U(e.name,z)]}),e.description&&!R?(0,V.jsx)(`div`,{className:`typography-meta text-muted-foreground truncate`,children:U(e.description,z)}):null]})},`agent-${e.name}`)}),H.length===2&&z.length===0&&ve.length>2&&(0,V.jsx)(`div`,{className:`px-3 py-1 typography-meta text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.searchMoreAgents`)}),W.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.sessions`)}),W.map((e,t)=>{let n=Je+t,r=k===n;return(0,V.jsxs)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,r),!R&&r&&`text-interactive-selection-foreground`),...Xe(n,()=>Ke(e)),children:[(0,V.jsx)(O,{name:`chat-thread`,className:`h-4 w-4 flex-shrink-0 text-[var(--primary-base)]`}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.title||d(`chat.fileMentionAutocomplete.untitledSession`),children:U(e.title||d(`chat.fileMentionAutocomplete.untitledSession`),z)}),R?null:(0,V.jsx)(`span`,{className:`flex-shrink-0 typography-meta text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.sessionType`)})]},`session-${e.id}`)}),G.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.recentFiles`)}),G.map((e,t)=>{let n=Y+t,r=e.relativePath||e.name,i=ne(r,{maxLength:60}),a=k===n,o=Pe[n]??!1,s=j[n]??2.6;return(0,V.jsxs)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,a),!R&&a&&`text-interactive-selection-foreground`),...Xe(n,()=>We(e)),children:[Z(e),(0,V.jsxs)(`span`,{ref:e=>{Re.current[n]=e},className:`relative flex-1 min-w-0 overflow-hidden file-mention-marquee-container`,style:a?{"--file-mention-marquee-width":`${Me}px`,"--file-mention-marquee-duration":`${s}s`}:void 0,"aria-label":r,children:[(0,V.jsx)(`span`,{ref:e=>{P.current[n]=e},className:`absolute invisible whitespace-nowrap pointer-events-none`,"aria-hidden":!0,children:r}),o&&a?(0,V.jsx)(`span`,{className:`inline-block whitespace-nowrap file-mention-marquee`,children:U(r,z)}):(0,V.jsx)(`span`,{className:`block truncate`,children:U(i,z)})]})]},`recent-${e.path}`)}),K.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.files`)}),K.map((e,t)=>{let n=Ye+t,r=e.relativePath||e.name,i=ne(r,{maxLength:60}),a=k===n,o=Pe[n]??!1,s=j[n]??2.6;return(0,V.jsxs)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,a),!R&&a&&`text-interactive-selection-foreground`),...Xe(n,()=>We(e)),children:[Z(e),(0,V.jsxs)(`span`,{ref:e=>{Re.current[n]=e},className:`relative flex-1 min-w-0 overflow-hidden file-mention-marquee-container`,style:a?{"--file-mention-marquee-width":`${Me}px`,"--file-mention-marquee-duration":`${s}s`}:void 0,"aria-label":r,children:[(0,V.jsx)(`span`,{ref:e=>{P.current[n]=e},className:`absolute invisible whitespace-nowrap pointer-events-none`,"aria-hidden":!0,children:r}),o&&a?(0,V.jsx)(`span`,{className:`inline-block whitespace-nowrap file-mention-marquee`,children:U(r,z)}):(0,V.jsx)(`span`,{className:`block truncate`,children:U(i,z)})]})]},e.path)}),be&&K.length===0?(0,V.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,V.jsx)(O,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})}):null,!be&&K.length===0&&G.length===0&&H.length===0&&W.length===0&&B.length===0&&(0,V.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.empty`)})]})}),!R&&(0,V.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:d(`chat.autocomplete.keyboardHint`)})]})}),G=new Set([`new`,`fork`,`compact`,`reload`,`undo`,`redo`,`model`,`goal`,`btw`]),K=(e,t)=>{if(!t||e.isSkill)return!1;let n=e.name?.trim().toLowerCase();return!!(n&&G.has(n))},We=(e,t)=>!e||t({name:e}),Ge=` `,Ke=(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]===Ge&&e[r-2]===`/`&&(r-=2),e[r]===`/`?{start:r,end:n}:null},q=`text-[10px] leading-none uppercase font-bold tracking-tight px-1.5 py-1 rounded border flex-shrink-0`,J=C(q,`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)]`),qe=C(q,`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)]`),Je=C(q,`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)]`),Y=C(q,`bg-[var(--surface-muted)] text-muted-foreground border-[var(--interactive-border)]/60`),Ye=(e,t)=>e.length===t.length&&e.every((e,n)=>e.id===t[n]?.id&&e.description===t[n]?.description),Xe=(e,t)=>{let n=!!e.sessionID;return{hasSession:n,canStartSessionCommand:n||e.hasNewDraft,canUseReviewHandoffFlow:n&&!t&&!c()}},Ze=A.forwardRef(({searchQuery:e,onCommandSelect:t,onClose:n,directory:r,style:i,commandPolicy:a,commandContext:o,onRowsChange:s},l)=>{let{t:u}=te(),d=ee(e=>e.isMobile),f=T(e=>e.currentSessionId),p=T(e=>!!e.newSessionDraft?.open),m=T(A.useCallback(e=>f?e.getDirectoryForSession(f):void 0,[f])),h=ce(f??``,m??void 0),g=A.useMemo(()=>o??{sessionID:f??null,hasMessages:h.length>0,hasNewDraft:p},[o,f,h.length,p]),{hasSession:_,canStartSessionCommand:v,canUseReviewHandoffFlow:y}=A.useMemo(()=>Xe(g,d),[g,d]),b=g.hasMessages,[x,S]=A.useState([]),[ne,re]=A.useState(!1),ie=ue({directory:r}),ae=A.useMemo(()=>ie.data??[],[ie.data]),oe=ie.isFetching,[w,se]=A.useState(0),le=A.useRef(0),de=A.useRef(!1),fe=A.useRef([]),pe=A.useRef(null),me=A.useRef(!1),E=A.useRef(null),D=A.useRef(!1),he=A.useRef(null);A.useEffect(()=>{let e=e=>{let t=e.target;!t||!pe.current||pe.current.contains(t)||n()};return document.addEventListener(`pointerdown`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0)}},[n]),A.useEffect(()=>{(async()=>{re(oe);try{let t=ae.flatMap((e,t)=>e.source===`skill`?[]:[{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,scope:e.scope,reference:e.reference}]),n=[{id:`openchamber:new`,name:`new`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.newDescription`),isBuiltIn:!0},..._&&!b?[{id:`openchamber:init`,name:`init`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.initDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:btw`,name:`btw`,source:`openchamber`,description:u(`chat.btw.description`),isBuiltIn:!0},{id:`openchamber:undo`,name:`undo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.undoDescription`),isBuiltIn:!0},{id:`openchamber:redo`,name:`redo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.redoDescription`),isBuiltIn:!0},{id:`openchamber:fork`,name:`fork`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.forkDescription`),isBuiltIn:!0},{id:`openchamber:timeline`,name:`timeline`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.timelineDescription`),isBuiltIn:!0}]:[],{id:`openchamber:model`,name:`model`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.modelDescription`),isBuiltIn:!0},{id:`openchamber:compact`,name:`compact`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.compactDescription`),isBuiltIn:!0},...c()?[{id:`openchamber:reload`,name:`reload`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.reloadDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:summary`,name:`summary`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.summaryDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:workspace-review`,name:`workspace-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.workspaceReviewDescription`),isOpenChamber:!0}]:[],...y?[{id:`openchamber:handoff-review`,name:`handoff-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.handoffReviewDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:craft-goal`,name:`craft-goal`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.craftGoalDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:goal`,name:`goal`,source:`openchamber`,description:u(`chat.goal.button.armAria`),isBuiltIn:!0}]:[],...v?[{id:`openchamber:catch-up`,name:`catch-up`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.catchUpDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:debug`,name:`debug`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.debugDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:weigh`,name:`weigh`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.weighDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:explore`,name:`explore`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.exploreDescription`),isOpenChamber:!0}]:[],...t],r=!b,i=Me(n.filter(e=>(r||e.name!==`init`)&&(a?.(e)??!0)),e);S(e=>Ye(e,i)?e:i)}catch{let t=!b,n=Me([{id:`openchamber:new`,name:`new`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.newDescription`),isBuiltIn:!0},..._&&!b?[{id:`openchamber:init`,name:`init`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.initDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:btw`,name:`btw`,source:`openchamber`,description:u(`chat.btw.description`),isBuiltIn:!0},{id:`openchamber:undo`,name:`undo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.undoDescription`),isBuiltIn:!0},{id:`openchamber:redo`,name:`redo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.redoDescription`),isBuiltIn:!0},{id:`openchamber:fork`,name:`fork`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.forkDescription`),isBuiltIn:!0},{id:`openchamber:timeline`,name:`timeline`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.timelineDescription`),isBuiltIn:!0}]:[],{id:`openchamber:model`,name:`model`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.modelDescription`),isBuiltIn:!0},{id:`openchamber:compact`,name:`compact`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.compactDescription`),isBuiltIn:!0},...c()?[{id:`openchamber:reload`,name:`reload`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.reloadDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:summary`,name:`summary`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.summaryDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:workspace-review`,name:`workspace-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.workspaceReviewDescription`),isOpenChamber:!0}]:[],...y?[{id:`openchamber:handoff-review`,name:`handoff-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.handoffReviewDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:craft-goal`,name:`craft-goal`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.craftGoalDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:goal`,name:`goal`,source:`openchamber`,description:u(`chat.goal.button.armAria`),isBuiltIn:!0}]:[],...v?[{id:`openchamber:catch-up`,name:`catch-up`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.catchUpDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:debug`,name:`debug`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.debugDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:weigh`,name:`weigh`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.weighDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:explore`,name:`explore`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.exploreDescription`),isOpenChamber:!0}]:[]].filter(e=>(t||e.name!==`init`)&&(a?.(e)??!0)),e);S(e=>Ye(e,n)?e:n)}finally{re(!1)}})()},[e,b,_,v,y,ae,oe,u,a]),A.useEffect(()=>{se(0)},[x]),A.useEffect(()=>{le.current=w},[w]),A.useEffect(()=>{fe.current[w]?.scrollIntoView({block:`nearest`})},[w]),A.useEffect(()=>{Ie(s,he,{rows:ke(x,{skill:u(`chat.commandAutocomplete.badge.skill`),command:u(`chat.commandAutocomplete.badge.command`),system:u(`chat.commandAutocomplete.badge.system`)}),highlightedIndex:w})},[x,s,w,u]);let ge=A.useRef(s);ge.current=s,A.useEffect(()=>()=>{Le(ge.current,he)},[]),A.useImperativeHandle(l,()=>({acceptIndex:(e,n=!0)=>{let r=x[e];r&&t(r,K(r,n))},handleKeyDown:e=>{let r=x.length;if(e===`Escape`){n();return}if(r!==0){if(e===`ArrowDown`){de.current=!0,se(e=>(e+1)%r);return}if(e===`ArrowUp`){de.current=!0,se(e=>(e-1+r)%r);return}if(e===`Enter`||e===`Tab`){let n=(le.current%r+r)%r,i=x[n];i&&t(i,K(i,e===`Enter`))}}}}),[x,n,t]);let _e=e=>{let t=Te(e);switch(e.name){case`new`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5`});case`init`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-green-500`});case`undo`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-orange-500`});case`redo`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-orange-500`});case`timeline`:case`reload`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5`});case`compact`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-purple-500`});case`goal`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5`});case`review`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-blue-500`});case`test`:case`build`:case`run`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-cyan-500`});default:return e.isBuiltIn?(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-yellow-500`}):(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-muted-foreground`})}};return(0,V.jsxs)(Se,{ref:pe,isMobile:d,className:`max-w-[450px] max-h-64`,style:i,children:[(0,V.jsx)(xe,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0 py-1.5`,children:ne?(0,V.jsx)(`div`,{className:`flex items-center justify-center py-4`,children:(0,V.jsx)(O,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})}):(0,V.jsxs)(`div`,{children:[x.map((n,r)=>{let i=n.isBuiltIn,a=n.isOpenChamber;return(0,V.jsxs)(`div`,{ref:e=>{fe.current[r]=e},className:C(`flex gap-2 px-2 py-2 cursor-pointer rounded-lg`,d?`items-center`:`items-start`,Ce(d,r===w),!d&&r===w&&`bg-interactive-selection/35`),onMouseDown:e=>e.preventDefault(),onPointerDown:e=>{e.pointerType===`touch`&&(E.current={x:e.clientX,y:e.clientY},D.current=!1)},onPointerMove:e=>{if(e.pointerType!==`touch`||!E.current)return;let t=e.clientX-E.current.x,n=e.clientY-E.current.y;Math.hypot(t,n)>6&&(D.current=!0)},onPointerUp:e=>{if(e.pointerType!==`touch`)return;let r=D.current;E.current=null,D.current=!1,!r&&(e.preventDefault(),e.stopPropagation(),me.current=!0,t(n,K(n,d)))},onPointerCancel:()=>{E.current=null,D.current=!1},onClick:()=>{if(me.current){me.current=!1;return}t(n,K(n,d))},onMouseMove:()=>{de.current=!1,se(r)},children:[(0,V.jsx)(`div`,{className:C(!d&&`mt-0.5`),children:_e(n)}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsxs)(`span`,{className:`typography-ui-label font-medium`,children:[`/`,U(n.name,e)]}),n.isSkill?(0,V.jsx)(`span`,{className:J,children:u(`chat.commandAutocomplete.badge.skill`)}):(0,V.jsx)(`span`,{className:J,children:u(`chat.commandAutocomplete.badge.command`)}),a?(0,V.jsx)(`span`,{className:Y,children:`OpenChamber`}):i?(0,V.jsx)(`span`,{className:Y,children:u(`chat.commandAutocomplete.badge.system`)}):n.scope?(0,V.jsx)(`span`,{className:n.scope===`project`?Je:qe,children:n.scope}):null,n.agent&&(0,V.jsx)(`span`,{className:Y,children:n.agent})]}),n.description&&!d&&(0,V.jsx)(`div`,{className:`typography-meta text-muted-foreground mt-0.5 truncate`,children:U(n.description,e)})]})]},n.id)}),x.length===0&&(0,V.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:u(`chat.commandAutocomplete.empty`)})]})}),!d&&(0,V.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:u(`chat.autocomplete.keyboardHint`)})]})});Ze.displayName=`CommandAutocomplete`;var X=2,Z=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Qe=e=>{let t=e?.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},$e=e=>Z(e)&&Array.isArray(e.all)&&e.all.every(e=>typeof e==`string`)&&typeof e.current==`string`&&Z(e.branches),et=(e,t)=>JSON.stringify([e,t]),tt=e=>`version`in e&&e.version===X&&Z(e.entries),nt=e=>{if(!e)return null;try{let t=JSON.parse(e);return Z(t)?t.version===X&&Z(t.entries)?{version:X,entries:t.entries}:t:null}catch{return null}},rt=(e,t)=>{try{e.setItem(`oc.gitBranchCache`,JSON.stringify(t))}catch{}},it=(e,t,n)=>{let r=Qe(e);if(!r||!t)return null;let i;try{i=n.getItem(`oc.gitBranchCache`)}catch{return null}let a=nt(i);if(!a)return null;if(tt(a))return $e(a.entries[et(t,r)])?a.entries[et(t,r)]:null;let o={};for(let[e,n]of Object.entries(a)){let r=Qe(e);r&&$e(n)&&(o[et(t,r)]=n)}return rt(n,{version:X,entries:o}),o[et(t,r)]??null},at=(e,t,n,r)=>{let i=Qe(e);if(!i||!t||!$e(n))return;let a=null;try{a=r.getItem(`oc.gitBranchCache`)}catch{return}let o=nt(a);rt(r,{version:X,entries:{...o&&tt(o)?o.entries:{},[et(t,i)]:n}})},ot=3e4,st=Qe,ct=(e,t=n())=>s.git.branches(st(e),t),lt=(e,t=n())=>s.git.remotes(st(e),t),ut=async(e,t,n)=>{n.throwIfAborted();let r=a()?.git,i=t?.getGitBranches?await t.getGitBranches(e,{signal:n}):r?await r.getGitBranches(e,{signal:n}):await g(e,{signal:n});return n.throwIfAborted(),i},dt=async(e,t,n)=>{n.throwIfAborted();let r=a()?.git,i=t?.getRemotes?await t.getRemotes(e,{signal:n}):r?await r.getRemotes(e,{signal:n}):await m(e,{signal:n});return n.throwIfAborted(),i},ft=(e,t,r=n(),i=y())=>{let a=st(e),o=t;return{queryKey:ct(a,r),queryFn:async({signal:e})=>{if(!a)throw Error(`Git branches require a directory`);let t=await ut(a,o,e);return at(a,r,t,i),t},staleTime:ot,gcTime:1/0,initialData:()=>it(a,r,i)??void 0,initialDataUpdatedAt:0}},pt=(e,t,r=n())=>{let i=st(e),a=t;return{queryKey:lt(i,r),queryFn:({signal:e})=>{if(!i)throw Error(`Git remotes require a directory`);return dt(i,a,e)},staleTime:ot,gcTime:1/0}},mt=(e,r,i)=>{let a=(0,I.c)(9),o=i===void 0||i,s=A.useSyncExternalStore(t,n,n),c,l,u;a[0]!==e||a[1]!==r||a[2]!==s?(c=st(e),u=x,l=ft(c,r,s),a[0]=e,a[1]=r,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)},ht=(e,r,i)=>{let a=(0,I.c)(9),o=i===void 0||i,s=A.useSyncExternalStore(t,n,n),c,l,u;a[0]!==e||a[1]!==r||a[2]!==s?(c=st(e),u=x,l=pt(c,r,s),a[0]=e,a[1]=r,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)},gt=(e,t,r=o,i=n())=>r.fetchQuery(ft(e,t,i)),_t=(e,t,r=o,i=n())=>r.fetchQuery({...ft(e,t,i),staleTime:0}),vt=e=>e instanceof Error?e.name===`AbortError`||e.name===`CancelledError`||e.name===`Error`&&e.message===`CancelledError`:!1,yt=1e4,bt=6e4,xt=5e3,St=3e4,Ct=6e4,wt=25,Tt=40,Et=2,Dt=15e3,Ot=500,kt=30,At=20971520,jt=new Map,Mt=new Map,Nt=new Map,Pt=new Map,Ft=new Map,It=(e,t)=>`${t}:${e}`,Lt=e=>Mt.get(e)??0,Rt=e=>{let t=Lt(e)+1;return Mt.set(e,t),t},zt=e=>{let t=(Nt.get(e)??0)+1;return Nt.set(e,t),t},Bt=e=>{let t=jt.get(e);if(t)return t;let n=new Set;return jt.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}),Vt=(e,t=kt,n=At)=>{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},Ht=(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},Ut=(e,t)=>!e&&!t?!1:!e||!t||e.remote!==t.remote||e.branch!==t.branch||e.ahead!==t.ahead||e.behind!==t.behind,Wt=(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&&Ut(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&&Ht(e.diffStats,t.diffStats))},Gt=(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},Kt=(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},qt=e=>!e||e.trim().length===0,Jt=e=>(e||``).trim()===`U`,Yt=e=>{let t=(e.index||``).trim(),n=(e.working_dir||``).trim();if(Jt(t)||Jt(n))return e;let r=t===`?`||n===`?`?`A`:t||n||` `;return{...e,index:r,working_dir:` `}},Xt=e=>{let t=(e.index||``).trim(),n=(e.working_dir||``).trim();if(Jt(t)||Jt(n))return e;let r=n||(t===`A`||t===`?`?`?`:t)||` `;return{...e,index:` `,working_dir:r}},Zt=e=>qt(e.index)&&qt(e.working_dir),$=l()(d((e,t)=>({directories:new Map,activeDirectory:null,setActiveDirectory:n=>{let{activeDirectory:r,directories:i}=t();if(r!==n)if(r&&Rt(r),n&&Rt(n),n&&!i.has(n)){let t=new Map(i);t.set(n,Q()),e({activeDirectory:n,directories:t})}else e({activeDirectory:n})},getDirectoryState:e=>t().directories.get(e)??null,fetchStatus:async(n,r,i={})=>{let a=i.mode??`full`,o=It(n,a),s=Pt.get(o)??(a===`light`?Pt.get(It(n,`full`)):void 0);if(s)return s;let c=(async()=>{let{silent:a=!1}=i,{directories:o}=t(),s=o.get(n);if(s||=Q(),!a){let r=new Map(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingStatus:!0}),e({directories:r})}let c=!1;try{let a=Date.now(),o=s.isGitRepo!==!0||a-(s.lastRepoCheckAt||0)>bt,l=s.isGitRepo===!0;if(o&&(l=await r.checkIsGitRepository(n)),!l){let r=new Map(t().directories),i=r.get(n)??s;return r.set(n,{...i,isGitRepo:!1,status:null,isLoadingStatus:!1,lastRepoCheckAt:a,lastStatusFetch:a}),e({directories:r}),!1}let u=await r.getGitStatus(n,i.mode?{mode:i.mode}:void 0);if(Wt(s.status,u)){c=!0;let r=new Map(t().directories),i=r.get(n)??Q(),s=Gt(i.status,u),l=Kt(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&&Rt(n);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(n,{...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(t().directories),i=r.get(n)??Q();r.set(n,{...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(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingStatus:!1}),e({directories:r})}}return c})();Pt.set(o,c);try{return await c}finally{Pt.get(o)===c&&Pt.delete(o)}},moveStatusPathsOptimistically:(n,r,i)=>{let a=new Set(r.map(e=>e.trim()).filter(Boolean));if(a.size===0)return null;let{directories:o}=t(),s=o.get(n),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`?Yt(e):Xt(e);t!==e&&(l=!0),Zt(t)?l=!0:u.push(t)}if(!l)return c;let d=new Map(o);return d.set(n,{...s,status:{...c,files:u,isClean:u.length===0},indexRevision:s.indexRevision+1,lastStatusChange:Date.now()}),e({directories:d}),c},restoreStatus:(n,r)=>{let{directories:i}=t(),a=i.get(n);if(!a)return;let o=new Map(i);o.set(n,{...a,status:r,indexRevision:a.indexRevision+1,lastStatusChange:Date.now()}),e({directories:o})},bumpIndexRevision:n=>{let{directories:r}=t(),i=r.get(n);if(!i)return;let a=new Map(r);a.set(n,{...i,indexRevision:i.indexRevision+1}),e({directories:a})},fetchBranches:async(r,i,a={})=>{let o=n(),s=zt(r);{let n=new Map(t().directories),i=n.get(r)??Q();n.set(r,{...i,isLoadingBranches:!0}),e({directories:n})}try{let c=a.force?await _t(r,i,void 0,o):await gt(r,i,void 0,o);if(s!==Nt.get(r)||o!==n())return;let l=new Map(t().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(vt(i)||console.error(`Failed to fetch git branches:`,i),s!==Nt.get(r)||o!==n())return;let a=new Map(t().directories),c=a.get(r)??Q();a.set(r,{...c,isLoadingBranches:!1}),e({directories:a})}},fetchLog:async(n,r,i)=>{let{directories:a}=t(),o=a.get(n),s=i??o?.logMaxCount??25;{let r=new Map(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingLog:!0}),e({directories:r})}try{let i=await r.getGitLog(n,{maxCount:s}),a=new Map(t().directories),o=a.get(n)??Q();a.set(n,{...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(t().directories),a=i.get(n)??Q();i.set(n,{...a,isLoadingLog:!1}),e({directories:i})}},fetchIdentity:async(n,r)=>{{let r=new Map(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingIdentity:!0}),e({directories:r})}try{let i=await r.getCurrentGitIdentity(n),a=new Map(t().directories),o=a.get(n)??Q();a.set(n,{...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(t().directories),a=i.get(n)??Q();i.set(n,{...a,isLoadingIdentity:!1}),e({directories:i})}},fetchAll:async(n,r,i={})=>{let{directories:a}=t(),o=a.get(n);if(!o){o=Q();let t=new Map(a);t.set(n,o),e({directories:t})}let{force:s=!1,silentIfCached:c=!1}=i,l=Date.now();await t().fetchStatus(n,r,{silent:c&&!!o?.status});let u=t().directories.get(n);if(!u?.isGitRepo)return;await t().fetchBranches(n,r,{force:s});let d=l-(u.lastLogFetch||0);(s||d>yt||!u.log)&&await t().fetchLog(n,r),await t().fetchIdentity(n,r)},getDiff:(e,n)=>t().directories.get(e)?.diffCache.get(n)??null,setDiff:(n,r,i)=>{let a=new Map(t().directories),o=a.get(n)??Q(),s=new Map(o.diffCache);s.set(r,{...i,fetchedAt:Date.now()});let c=Vt(s);a.set(n,{...o,diffCache:c}),e({directories:a})},clearDiffCache:n=>{Rt(n);let r=new Map(t().directories),i=r.get(n);i&&(r.set(n,{...i,diffCache:new Map}),e({directories:r}))},fetchAllDiffs:async(e,n)=>{let r=t().directories.get(e);if(!r?.status?.files||r.status.files.length===0)return;let i=r.status.files.map(e=>e.path).slice(0,wt);await t().prefetchDiffs(e,n,i,{maxFiles:wt})},prefetchDiffs:async(n,r,i,a={})=>{let o=t().directories.get(n);if(!o?.status?.files||o.status.files.length===0||i.length===0)return;let{maxFiles:s=Tt}=a,c=new Set(o.status.files.map(e=>e.path)),l=o.status.diffStats,u=Bt(n),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>Ot||d.push(e)}let p=d.slice(0,Math.max(1,s));if(p.length===0)return;let m=Lt(n);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 t=r.getGitFileDiff(n,{path:e}),i=new Promise((e,t)=>{setTimeout(()=>t(Error(`Timed out after ${Dt}ms`)),Dt)}),a=await Promise.race([t,i]);return{path:e,diff:{original:a.original??``,modified:a.modified??``,isBinary:a.isBinary}}},ee=async()=>{for(;;){if(m!==Lt(n))return;let e=_();if(!e)return;try{g.push(await v(e))}catch{}finally{u.delete(e)}}},y=Math.min(Et,p.length);if(await Promise.allSettled(Array.from({length:y},()=>ee())),p.forEach(e=>u.delete(e)),m!==Lt(n))return;let b=new Map(t().directories),x=b.get(n);if(!x)return;let S=new Map(x.diffCache),te=Date.now();g.forEach(e=>{!e.diff.isBinary&&e.diff.original===``&&e.diff.modified===``||S.set(e.path,{...e.diff,fetchedAt:te})});let C=Vt(S);b.set(n,{...x,diffCache:C}),e({directories:b})},setLogMaxCount:(n,r)=>{let i=new Map(t().directories),a=i.get(n)??Q();i.set(n,{...a,logMaxCount:r}),e({directories:i})},ensureStatus:async(e,n)=>{let r=t().directories.get(e),i=Date.now();r?.status&&i-r.lastStatusFetch<xt||await t().fetchStatus(e,n,{silent:!!r?.status})},ensureAll:(e,n)=>{let r=Ft.get(e);if(r)return r;let i=(async()=>{let r=t().directories.get(e),i=Date.now();(!r?.status||r.status.diffStats===void 0||i-(r?.lastStatusFetch??0)>=xt)&&await t().fetchStatus(e,n,{silent:!!r?.status});let a=t().directories.get(e);if(!a?.isGitRepo)return;let o=[];(!a.branches||i-a.lastBranchesFetch>=St)&&o.push(t().fetchBranches(e,n)),(!a.log||i-a.lastLogFetch>=yt)&&o.push(t().fetchLog(e,n)),(!a.identity||i-a.lastIdentityFetch>=Ct)&&o.push(t().fetchIdentity(e,n)),o.length>0&&await Promise.all(o)})();return Ft.set(e,i),i.finally(()=>{Ft.get(e)===i&&Ft.delete(e)}),i},refresh:async(e,n={})=>{let{activeDirectory:r}=t();r&&await t().fetchAll(r,e,n)}}),{name:`git-store`})),Qt=e=>{let t=(0,I.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)},$t=e=>{let r=(0,I.c)(3),i=A.useSyncExternalStore(t,n,n),a;return r[0]!==e||r[1]!==i?(a=t=>{if(!e)return null;let n=t.directories.get(e);return n?.branchesTransportIdentity===i?n.branches:null},r[0]=e,r[1]=i,r[2]=a):a=r[2],$(a)},en=e=>{let t=(0,I.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)},tn=e=>{let t=(0,I.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)},nn=e=>{let t=(0,I.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)},rn=e=>{let t=(0,I.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=new Map,t[0]=n):n=t[0];let r=A.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)},an=e=>{let t=(0,I.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)},on=e=>{let t=(0,I.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)},sn=e=>{let t=(0,I.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)},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 ye(e);try{let n=cn((await _e(e)).branches?.[t]?.tracking||null);if(n?.remote)return n.remote}catch{}try{let t=cn((await ve(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 be(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.some(e=>e.range.start<t.range.end&&t.range.start<e.range.end)?[...e]:[...e,t]},Sn=(e,t)=>t<e.length&&e[t]===` `?t+1:t;export{ze as A,ht as C,W as D,We as E,Ve as O,mt as S,Ke as T,rn as _,hn as a,tn as b,mn as c,nn as d,$t as f,en as g,an as h,yn as i,Fe as j,Be as k,dn as l,on as m,xn as n,_n as o,sn as p,bn as r,gn as s,Sn as t,pn as u,Qt as v,Ze as w,_t as x,$ as y};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{c as t,i as n}from"./runtime-switch-BJM2k_uH.js";import{A as r,M as i,On as a,d as o,f as s,on as c}from"./persistence-Dnj1QOdX.js";import{a as l,i as u,r as d}from"./vendor-zustand-DzRqcymP.js";import{nt as f,rt as p}from"./vendor-base-ui-CnHfUmDN.js";import{B as m,Ct as h,M as g,Mt as _}from"./platform-jCZ3KfMQ.js";import{b as v,n as ee,x as y}from"./useUIStore-Dfx6TKvi.js";import{n as b}from"./vendor-react-DLPElpoQ.js";import{s as x}from"./vendor-tanstack-react-query-D7pys_c9.js";import{n as S}from"./vendor-reactuses-core-Dq5ocTF8.js";import{f as te,r as C,u as ne}from"./button-CUwjpv-i.js";import{Dr as re,Ra as ie,S as ae,Vt as oe,_t as w,br as se,cn as ce,d as T,dt as le,eo as ue,ft as de,mt as fe,pa as pe,pt as me,to as E,vn as D,y as he,zn as ge}from"./useMobileNavigationStore-BeQSkvGH.js";import{n as O}from"./Icon-BdzPRCSy.js";import{g as _e,v as ve}from"./gitApi-CgrQrPVW.js";import{f as ye,o as be}from"./projectMeta-CqE63PAd.js";import{n as xe}from"./textarea-QtZjf4L8.js";import{n as Se,r as Ce,t as we}from"./fileMentionTouchSelection-Basgzi-b.js";var Te=e=>{switch(e.name){case`new`:return`add`;case`init`:return`file`;case`undo`:return`arrow-go-back`;case`redo`:return`arrow-go-forward`;case`timeline`:return`time`;case`compact`:return`scissors`;case`reload`:return`refresh`;case`goal`:return`target`;case`review`:return`search-eye`;case`test`:case`build`:case`run`:return`terminal-box`;default:return e.isBuiltIn?`flashlight`:`command`}},Ee=()=>`book-open`,De=e=>{if(e.isDirectory)return`folder-3-fill`;switch(e.extension?.toLowerCase()){case`ts`:case`tsx`:case`js`:case`jsx`:case`json`:return`code`;case`md`:case`mdx`:return`file`;case`png`:case`jpg`:case`jpeg`:case`gif`:case`svg`:return`file-image`;default:return`file-pdf`}},k=()=>`ai-agent`,Oe=()=>`chat-thread`,ke=(e,t)=>e.map(e=>{let n=e.isSkill?t.skill:e.isOpenChamber?`OpenChamber`:e.isBuiltIn?t.system:e.scope||e.agent||t.command;return{id:e.id,title:`/${e.name}`,subtitle:e.description,badge:n,iconName:Te(e)}}),Ae=({skills:e=[],agents:t,sessions:n,recentFiles:r,pathHits:i,untitledSession:a,sessionBadge:o,skillBadge:s})=>{let c=[];for(let t of e)c.push({id:`skill:${t.name}-${t.scope}`,title:`@${t.name}`,subtitle:t.description,badge:s??t.scope,iconName:Ee()});for(let e of t)c.push({id:`agent:${e.name}`,title:`@${e.name}`,subtitle:e.description,iconName:k()});for(let e of n)c.push({id:`session:${e.id}`,title:e.title||a,badge:o,iconName:Oe()});for(let e of r)c.push({id:`recent:${e.path}`,title:e.relativePath||e.name,iconName:De(e)});for(let e of i)c.push({id:`file:${e.path}`,title:e.relativePath||e.name,iconName:De(e)});return c},je=(e,t)=>{let n=t.trim();if(!n.length)return[...e].sort((e,t)=>e.scope===`project`&&t.scope!==`project`?-1:e.scope!==`project`&&t.scope===`project`?1:e.name.localeCompare(t.name));let r=ge([...e],n,e=>[e.name,e.description??``]);return r.sort((e,t)=>e.score===t.score?e.item.scope===`project`&&t.item.scope!==`project`?-1:e.item.scope!==`project`&&t.item.scope===`project`?1:e.item.name.localeCompare(t.item.name):e.score-t.score),r.map(e=>e.item)},Me=(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=ge([...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)},Ne=(e,t)=>e===t||e.length===t.length&&e.every((e,n)=>{let r=t[n];return r!=null&&e.id===r.id&&e.title===r.title&&(e.subtitle??``)===(r.subtitle??``)&&(e.badge??``)===(r.badge??``)&&e.iconName===r.iconName}),Pe=(e,t)=>e.highlightedIndex===t.highlightedIndex&&Ne(e.rows,t.rows),Fe=(e,t)=>Ne(e,t)?e:t.slice(),Ie=(e,t,n)=>{e&&(t.current&&Pe(t.current,n)||(t.current=n,e(n)))},Le=(e,t)=>{t.current=null,e?.({rows:[],highlightedIndex:0})},A=e(p(),1),j=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},M=e=>/^[A-Za-z]:\//.test(e)?e.toLowerCase():e,N=(e,t)=>{let n=j(t),r=j(e);if(!n||!r)return!1;let i=M(n),a=M(r);return a===i||a.startsWith(`${i}/`)},Re=e=>{if(!e||typeof e!=`object`)return{};let t=e,n={};for(let[e,r]of Object.entries(t)){let t=j(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=>j(e)).filter(e=>N(e,t)))):[],o=Array.isArray(i.expandedPaths)?Array.from(new Set(i.expandedPaths.filter(e=>typeof e==`string`).map(e=>j(e)).filter(e=>N(e,t)))):[],s=typeof i.selectedPath==`string`?j(i.selectedPath):null,c=s&&N(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},P=(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},F=e=>e?{...e,touchedAt:Date.now()}:{openPaths:[],selectedPath:null,expandedPaths:[],touchedAt:Date.now()},ze=l()(d(u((e,t)=>({byRoot:{},addOpenPath:(t,n,r)=>{let i=j((t||``).trim()),a=j((n||``).trim());!i||!a||!r?.allowOutsideRoot&&!N(a,i)||e(e=>{let t=e.byRoot[i],n=F(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:P({...e.byRoot,[i]:{...n,openPaths:o,selectedPath:s}},20)}})},removeOpenPath:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=M(i),a=e=>M(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:P({...e.byRoot,[r]:{...t,openPaths:s,selectedPath:c,touchedAt:Date.now()}},20)}})},removeOpenPathsByPrefix:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=M(i),a=n.endsWith(`/`)?n:`${n}/`,o=e=>{let t=M(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:P({...e.byRoot,[r]:{...t,openPaths:s,selectedPath:c,touchedAt:Date.now()}},20)}})},removeExpandedPathsByPrefix:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||e(e=>{let t=e.byRoot[r];if(!t)return e;let n=M(i),a=n.endsWith(`/`)?n:`${n}/`,o=t.expandedPaths.filter(e=>{let t=M(e);return t!==n&&!t.startsWith(a)});return o.length===t.expandedPaths.length?e:{byRoot:P({...e.byRoot,[r]:{...t,expandedPaths:o,touchedAt:Date.now()}},20)}})},setSelectedPath:(t,n,r)=>{let i=j((t||``).trim()),a=n?j(n.trim()):null;!i||a&&!r?.allowOutsideRoot&&!N(a,i)||e(e=>{let t=e.byRoot[i],n=F(t),r=a&&!n.openPaths.includes(a)?[...n.openPaths,a]:n.openPaths;return t&&t.selectedPath===a&&r===t.openPaths?e:{byRoot:P({...e.byRoot,[i]:{...n,openPaths:r,selectedPath:a}},20)}})},ensureSelectedPath:e=>{let n=j((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=j((t||``).trim()),i=j((n||``).trim());!r||!i||!N(i,r)||e(e=>{let t=e.byRoot[r],n=F(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:P({...e.byRoot,[r]:{...n,expandedPaths:a}},20)}})},expandPath:(t,n)=>{let r=j((t||``).trim()),i=j((n||``).trim());!r||!i||!N(i,r)||e(e=>{let t=e.byRoot[r],n=F(t);return n.expandedPaths.includes(i)&&t?e:{byRoot:P({...e.byRoot,[r]:{...n,expandedPaths:[...n.expandedPaths,i]}},20)}})},expandPaths:(t,n)=>{let r=j((t||``).trim());if(!r||!n||n.length===0)return;let i=n.map(e=>j((e||``).trim())).filter(e=>e&&N(e,r));i.length!==0&&e(e=>{let t=e.byRoot[r],n=F(t),a=new Set(n.expandedPaths),o=i.filter(e=>!a.has(e));return o.length===0?e:{byRoot:P({...e.byRoot,[r]:{...n,expandedPaths:[...n.expandedPaths,...o]}},20)}})}}),{name:`files-view-tabs-store`,version:2,storage:v(),migrate:e=>{if(!e||typeof e!=`object`)return{byRoot:{}};let t=e.byRoot;return{byRoot:Re(t)}},partialize:e=>({byRoot:Re(e.byRoot)})}),{name:`files-view-tabs-store`})),I=b(),Be=(e,t)=>{let n=(0,I.c)(4),r=t===void 0?200:t,[i,a]=A.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]),A.useEffect(o,s),i},Ve=()=>{let e=(0,I.c)(17),t=T(L),n=D(),r;e[0]===t?r=e[1]:(r=e=>t?e.getAttachment(t):void 0,e[0]=t,e[1]=r);let i=ae(r),a=T(R),o=T(z),s=E(He),c=E(B),l=h(Ue);if(t){let r;e[2]===i?r=e[3]:(r=he(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 L(e){return e.currentSessionId}function R(e){return e.worktreeMetadata}function z(e){return e.newSessionDraft}function He(e){return e.activeProjectId}function B(e){return e.projects}function Ue(e){return e.currentDirectory}var V=f(),H=`bg-transparent font-[inherit] text-[var(--primary-base)]`,U=(e,t)=>{let n=t.trim().toLowerCase();if(!n)return e;let r=e.toLowerCase();if(!r.includes(n))return e;let i=[],a=0,o=r.indexOf(n);for(;o!==-1;)o>a&&i.push(e.slice(a,o)),i.push((0,V.jsx)(`mark`,{className:H,children:e.slice(o,o+n.length)},`${o}-${n}`)),a=o+n.length,o=r.indexOf(n,a);return a<e.length&&i.push(e.slice(a)),i},W=A.forwardRef(({searchQuery:e,onFileSelect:t,onAgentSelect:n,onSkillSelect:a,onSessionSelect:o,onClose:s,style:c,onRowsChange:l},u)=>{let{t:d}=te(),f=Ve()??``,p=T(e=>e.currentSessionId),m=re(e=>e.activeSessions),h=oe({enabled:!!o}),g=E(e=>e.activeProjectId),v=E(e=>e.projects),y=A.useMemo(()=>v.find(e=>e.id===g)?.path??null,[g,v]),b=A.useMemo(()=>{let e=y||f;return e?e.replace(/\\/g,`/`).replace(/\/+$/,``):null},[y,f]),x=ze(e=>b?e.byRoot[b]:void 0),ae=pe(e=>e.getVisibleAgents),ce=_(e=>e.searchFiles),ue=Be(e,180),D=i(),he=r(),[ge,_e]=A.useState([]),[ve,ye]=A.useState([]),[be,Te]=A.useState(!1),[k,Oe]=A.useState(0),ke=A.useRef(0),[Me,Ne]=A.useState(360),[Pe,Fe]=A.useState({}),[j,M]=A.useState({}),N=A.useRef([]),Re=A.useRef([]),P=A.useRef([]),F=A.useRef(null),I=A.useRef(null),L=A.useRef(null);L.current||=we();let R=ee(e=>e.isMobile),z=(e??``).trim(),He=ie({directory:f||null}),B=A.useMemo(()=>a?je(He.data??[],z):[],[z,a,He.data]),Ue=A.useMemo(()=>{if(!b||!x)return[];let e=[x.selectedPath,...x.openPaths.slice().reverse()].filter(e=>typeof e==`string`&&e.length>0),t=new Set,n=[];for(let r of e){if(t.has(r))continue;t.add(r);let e=r.replace(/\\/g,`/`),i=e.split(`/`).filter(Boolean).pop()||e,a=e.startsWith(`${b}/`)?e.slice(b.length+1):e;n.push({name:i,path:e,relativePath:a,extension:i.includes(`.`)?i.split(`.`).pop()?.toLowerCase():void 0})}return fe(n,z,{limit:6})},[z,b,x]),H=A.useMemo(()=>z.length>0?ve:ve.slice(0,2),[ve,z.length]),W=A.useMemo(()=>o?le({sessions:se(m,h),currentSessionId:p,searchQuery:z}):[],[m,p,h,z,o]),G=Ue,K=ge;A.useEffect(()=>{let e=e=>{let t=e.target;!t||!F.current||F.current.contains(t)||s()};return document.addEventListener(`pointerdown`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0)}},[s]),A.useEffect(()=>{if(!f){_e([]);return}let e=(ue??``).trim(),t=w(e);if(!t){_e([]);return}let n=!1;Te(!0);let r={includeHidden:D,respectGitignore:!he};return Promise.all([ce(f,t,80,{...r,type:`file`}),ce(f,t,40,{...r,type:`directory`})]).then(([t,r])=>{if(n)return;let i=new Set(Ue.map(e=>e.path));_e(de({files:t,directories:r,query:e,excludePaths:i,limit:20}))}).catch(()=>{n||_e([])}).finally(()=>{n||Te(!1)}),()=>{n=!0}},[f,ue,Ue,ce,D,he]),A.useEffect(()=>{let t=ae().filter(e=>e.mode&&e.mode!==`primary`).map(e=>({name:e.name,description:e.description,mode:e.mode}));ye(me(t,e??``))},[ae,e]),A.useEffect(()=>{Oe(0),Fe({}),M({})},[K,G.length,H.length,W.length,B.length]),A.useEffect(()=>{ke.current=k},[k]),A.useEffect(()=>{N.current[k]?.scrollIntoView({block:`nearest`})},[k]),A.useEffect(()=>{let e=null,t=()=>{e!==null&&cancelAnimationFrame(e),e=requestAnimationFrame(()=>{let e={},t={};Re.current.forEach((n,r)=>{if(!n)return;let i=P.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}}),Fe(e),M(t)})};return t(),window.addEventListener(`resize`,t),()=>{e!==null&&cancelAnimationFrame(e),window.removeEventListener(`resize`,t)}},[K,G]),A.useEffect(()=>{let e=Re.current[k];if(!e)return;let t=()=>{let t=e.clientWidth;t>0&&Ne(t)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[k]);let We=S(e=>{t(e)}),Ge=S(e=>{n?.(e)}),Ke=S(e=>{o?.(e)}),q=S(e=>{a?.(e)}),J=B.length,qe=J,Je=qe+H.length,Y=Je+W.length,Ye=Y+G.length,Xe=(e,t)=>({onMouseDown:e=>e.preventDefault(),onPointerDown:e=>{e.pointerType===`touch`&&L.current?.pointerDown(e.clientX,e.clientY)},onPointerMove:e=>{e.pointerType===`touch`&&L.current?.pointerMove(e.clientX,e.clientY)},onPointerUp:e=>{e.pointerType===`touch`&&(L.current?.pointerUp(t)??!1)&&(e.preventDefault(),e.stopPropagation())},onPointerCancel:()=>L.current?.pointerCancel(),onClick:()=>{L.current?.click(t)},onMouseMove:()=>Oe(e)}),Ze=e=>{let t=J+H.length+W.length+G.length+K.length;if(t===0)return;let n=(e%t+t)%t;if(n<J){let e=B[n];e&&q(e);return}if(n<Je){let e=H[n-qe];e&&Ge(e.name);return}if(n<Y){let e=W[n-Je];e&&Ke(e);return}let r=n-Y,i=r<G.length?G[r]:K[r-G.length];i&&We(i)};A.useEffect(()=>{Ie(l,I,{rows:Ae({skills:B,agents:H,sessions:W,recentFiles:G,pathHits:K,untitledSession:d(`chat.fileMentionAutocomplete.untitledSession`),sessionBadge:d(`chat.fileMentionAutocomplete.sessionType`),skillBadge:d(`chat.commandAutocomplete.badge.skill`)}),highlightedIndex:k})},[l,k,d,H,K,G,W,B]);let X=A.useRef(l);X.current=l,A.useEffect(()=>()=>{Le(X.current,I)},[]),A.useImperativeHandle(u,()=>({acceptIndex:e=>{Ze(e)},handleKeyDown:e=>{if(e===`Escape`){s();return}let t=J+H.length+W.length+G.length+K.length;if(t!==0){if(e===`ArrowDown`){Oe(e=>(e+1)%t);return}if(e===`ArrowUp`){Oe(e=>(e-1+t)%t);return}(e===`Enter`||e===`Tab`)&&Ze(ke.current)}}}),[J,K,G,H,W,B,s,We,Ge,Ke,q]);let Z=e=>(0,V.jsx)(O,{name:De(e),className:`h-3.5 w-3.5 text-current`});return(0,V.jsxs)(Se,{ref:F,isMobile:R,className:`max-w-[640px] max-h-64`,style:c,children:[(0,V.jsx)(xe,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0`,children:(0,V.jsxs)(`div`,{className:`pb-2`,children:[B.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.skills`)}),B.map((e,t)=>{let n=k===t;return(0,V.jsx)(`div`,{ref:e=>{N.current[t]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,n),!R&&n&&`text-interactive-selection-foreground`),...Xe(t,()=>q(e)),children:(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(O,{name:Ee(),className:`h-3.5 w-3.5 translate-y-px flex-shrink-0 text-current`}),(0,V.jsxs)(`span`,{className:`min-w-0 truncate`,children:[`@`,U(e.name,z)]}),R?null:(0,V.jsx)(`span`,{className:`flex-shrink-0 typography-meta text-muted-foreground`,children:e.scope})]}),e.description?(0,V.jsx)(`div`,{className:C(`pl-5.5 truncate text-muted-foreground`,R?`typography-micro`:`typography-meta`),children:U(e.description,z)}):null]})},`skill-${e.name}-${e.scope}`)}),H.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.agents`)}),H.map((e,t)=>{let n=qe+t,r=k===n;return(0,V.jsx)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-start gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,r),!R&&r&&`text-interactive-selection-foreground`),...Xe(n,()=>Ge(e.name)),children:(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`div`,{className:`truncate`,children:[`@`,U(e.name,z)]}),e.description&&!R?(0,V.jsx)(`div`,{className:`typography-meta text-muted-foreground truncate`,children:U(e.description,z)}):null]})},`agent-${e.name}`)}),H.length===2&&z.length===0&&ve.length>2&&(0,V.jsx)(`div`,{className:`px-3 py-1 typography-meta text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.searchMoreAgents`)}),W.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.sessions`)}),W.map((e,t)=>{let n=Je+t,r=k===n;return(0,V.jsxs)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,r),!R&&r&&`text-interactive-selection-foreground`),...Xe(n,()=>Ke(e)),children:[(0,V.jsx)(O,{name:`chat-thread`,className:`h-4 w-4 flex-shrink-0 text-[var(--primary-base)]`}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.title||d(`chat.fileMentionAutocomplete.untitledSession`),children:U(e.title||d(`chat.fileMentionAutocomplete.untitledSession`),z)}),R?null:(0,V.jsx)(`span`,{className:`flex-shrink-0 typography-meta text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.sessionType`)})]},`session-${e.id}`)}),G.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.recentFiles`)}),G.map((e,t)=>{let n=Y+t,r=e.relativePath||e.name,i=ne(r,{maxLength:60}),a=k===n,o=Pe[n]??!1,s=j[n]??2.6;return(0,V.jsxs)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,a),!R&&a&&`text-interactive-selection-foreground`),...Xe(n,()=>We(e)),children:[Z(e),(0,V.jsxs)(`span`,{ref:e=>{Re.current[n]=e},className:`relative flex-1 min-w-0 overflow-hidden file-mention-marquee-container`,style:a?{"--file-mention-marquee-width":`${Me}px`,"--file-mention-marquee-duration":`${s}s`}:void 0,"aria-label":r,children:[(0,V.jsx)(`span`,{ref:e=>{P.current[n]=e},className:`absolute invisible whitespace-nowrap pointer-events-none`,"aria-hidden":!0,children:r}),o&&a?(0,V.jsx)(`span`,{className:`inline-block whitespace-nowrap file-mention-marquee`,children:U(r,z)}):(0,V.jsx)(`span`,{className:`block truncate`,children:U(i,z)})]})]},`recent-${e.path}`)}),K.length>0&&(0,V.jsx)(`div`,{className:`px-3 pb-1 pt-2 typography-meta font-medium text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.groups.files`)}),K.map((e,t)=>{let n=Ye+t,r=e.relativePath||e.name,i=ne(r,{maxLength:60}),a=k===n,o=Pe[n]??!1,s=j[n]??2.6;return(0,V.jsxs)(`div`,{ref:e=>{N.current[n]=e},className:C(`flex items-center gap-2 px-3 py-1.5 cursor-pointer typography-ui-label rounded-lg`,R&&`min-h-11`,Ce(R,a),!R&&a&&`text-interactive-selection-foreground`),...Xe(n,()=>We(e)),children:[Z(e),(0,V.jsxs)(`span`,{ref:e=>{Re.current[n]=e},className:`relative flex-1 min-w-0 overflow-hidden file-mention-marquee-container`,style:a?{"--file-mention-marquee-width":`${Me}px`,"--file-mention-marquee-duration":`${s}s`}:void 0,"aria-label":r,children:[(0,V.jsx)(`span`,{ref:e=>{P.current[n]=e},className:`absolute invisible whitespace-nowrap pointer-events-none`,"aria-hidden":!0,children:r}),o&&a?(0,V.jsx)(`span`,{className:`inline-block whitespace-nowrap file-mention-marquee`,children:U(r,z)}):(0,V.jsx)(`span`,{className:`block truncate`,children:U(i,z)})]})]},e.path)}),be&&K.length===0?(0,V.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,V.jsx)(O,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})}):null,!be&&K.length===0&&G.length===0&&H.length===0&&W.length===0&&B.length===0&&(0,V.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:d(`chat.fileMentionAutocomplete.empty`)})]})}),!R&&(0,V.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:d(`chat.autocomplete.keyboardHint`)})]})}),G=new Set([`new`,`fork`,`compact`,`reload`,`undo`,`redo`,`model`,`goal`,`btw`]),K=(e,t)=>{if(!t||e.isSkill)return!1;let n=e.name?.trim().toLowerCase();return!!(n&&G.has(n))},We=(e,t)=>!e||t({name:e}),Ge=` `,Ke=(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]===Ge&&e[r-2]===`/`&&(r-=2),e[r]===`/`?{start:r,end:n}:null},q=`text-[10px] leading-none uppercase font-bold tracking-tight px-1.5 py-1 rounded border flex-shrink-0`,J=C(q,`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)]`),qe=C(q,`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)]`),Je=C(q,`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)]`),Y=C(q,`bg-[var(--surface-muted)] text-muted-foreground border-[var(--interactive-border)]/60`),Ye=(e,t)=>e.length===t.length&&e.every((e,n)=>e.id===t[n]?.id&&e.description===t[n]?.description),Xe=(e,t)=>{let n=!!e.sessionID;return{hasSession:n,canStartSessionCommand:n||e.hasNewDraft,canUseReviewHandoffFlow:n&&!t&&!c()}},Ze=A.forwardRef(({searchQuery:e,onCommandSelect:t,onClose:n,directory:r,style:i,commandPolicy:a,commandContext:o,onRowsChange:s},l)=>{let{t:u}=te(),d=ee(e=>e.isMobile),f=T(e=>e.currentSessionId),p=T(e=>!!e.newSessionDraft?.open),m=T(A.useCallback(e=>f?e.getDirectoryForSession(f):void 0,[f])),h=ce(f??``,m??void 0),g=A.useMemo(()=>o??{sessionID:f??null,hasMessages:h.length>0,hasNewDraft:p},[o,f,h.length,p]),{hasSession:_,canStartSessionCommand:v,canUseReviewHandoffFlow:y}=A.useMemo(()=>Xe(g,d),[g,d]),b=g.hasMessages,[x,S]=A.useState([]),[ne,re]=A.useState(!1),ie=ue({directory:r}),ae=A.useMemo(()=>ie.data??[],[ie.data]),oe=ie.isFetching,[w,se]=A.useState(0),le=A.useRef(0),de=A.useRef(!1),fe=A.useRef([]),pe=A.useRef(null),me=A.useRef(!1),E=A.useRef(null),D=A.useRef(!1),he=A.useRef(null);A.useEffect(()=>{let e=e=>{let t=e.target;!t||!pe.current||pe.current.contains(t)||n()};return document.addEventListener(`pointerdown`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0)}},[n]),A.useEffect(()=>{(async()=>{re(oe);try{let t=ae.flatMap((e,t)=>e.source===`skill`?[]:[{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,scope:e.scope,reference:e.reference}]),n=[{id:`openchamber:new`,name:`new`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.newDescription`),isBuiltIn:!0},..._&&!b?[{id:`openchamber:init`,name:`init`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.initDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:btw`,name:`btw`,source:`openchamber`,description:u(`chat.btw.description`),isBuiltIn:!0},{id:`openchamber:undo`,name:`undo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.undoDescription`),isBuiltIn:!0},{id:`openchamber:redo`,name:`redo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.redoDescription`),isBuiltIn:!0},{id:`openchamber:fork`,name:`fork`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.forkDescription`),isBuiltIn:!0},{id:`openchamber:timeline`,name:`timeline`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.timelineDescription`),isBuiltIn:!0}]:[],{id:`openchamber:model`,name:`model`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.modelDescription`),isBuiltIn:!0},{id:`openchamber:compact`,name:`compact`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.compactDescription`),isBuiltIn:!0},...c()?[{id:`openchamber:reload`,name:`reload`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.reloadDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:summary`,name:`summary`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.summaryDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:workspace-review`,name:`workspace-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.workspaceReviewDescription`),isOpenChamber:!0}]:[],...y?[{id:`openchamber:handoff-review`,name:`handoff-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.handoffReviewDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:craft-goal`,name:`craft-goal`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.craftGoalDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:goal`,name:`goal`,source:`openchamber`,description:u(`chat.goal.button.armAria`),isBuiltIn:!0}]:[],...v?[{id:`openchamber:catch-up`,name:`catch-up`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.catchUpDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:debug`,name:`debug`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.debugDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:weigh`,name:`weigh`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.weighDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:explore`,name:`explore`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.exploreDescription`),isOpenChamber:!0}]:[],...t],r=!b,i=Me(n.filter(e=>(r||e.name!==`init`)&&(a?.(e)??!0)),e);S(e=>Ye(e,i)?e:i)}catch{let t=!b,n=Me([{id:`openchamber:new`,name:`new`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.newDescription`),isBuiltIn:!0},..._&&!b?[{id:`openchamber:init`,name:`init`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.initDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:btw`,name:`btw`,source:`openchamber`,description:u(`chat.btw.description`),isBuiltIn:!0},{id:`openchamber:undo`,name:`undo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.undoDescription`),isBuiltIn:!0},{id:`openchamber:redo`,name:`redo`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.redoDescription`),isBuiltIn:!0},{id:`openchamber:fork`,name:`fork`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.forkDescription`),isBuiltIn:!0},{id:`openchamber:timeline`,name:`timeline`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.timelineDescription`),isBuiltIn:!0}]:[],{id:`openchamber:model`,name:`model`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.modelDescription`),isBuiltIn:!0},{id:`openchamber:compact`,name:`compact`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.compactDescription`),isBuiltIn:!0},...c()?[{id:`openchamber:reload`,name:`reload`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.reloadDescription`),isBuiltIn:!0}]:[],..._?[{id:`openchamber:summary`,name:`summary`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.summaryDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:workspace-review`,name:`workspace-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.workspaceReviewDescription`),isOpenChamber:!0}]:[],...y?[{id:`openchamber:handoff-review`,name:`handoff-review`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.handoffReviewDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:craft-goal`,name:`craft-goal`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.craftGoalDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:goal`,name:`goal`,source:`openchamber`,description:u(`chat.goal.button.armAria`),isBuiltIn:!0}]:[],...v?[{id:`openchamber:catch-up`,name:`catch-up`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.catchUpDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:debug`,name:`debug`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.debugDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:weigh`,name:`weigh`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.weighDescription`),isOpenChamber:!0}]:[],...v?[{id:`openchamber:explore`,name:`explore`,source:`openchamber`,description:u(`chat.commandAutocomplete.command.exploreDescription`),isOpenChamber:!0}]:[]].filter(e=>(t||e.name!==`init`)&&(a?.(e)??!0)),e);S(e=>Ye(e,n)?e:n)}finally{re(!1)}})()},[e,b,_,v,y,ae,oe,u,a]),A.useEffect(()=>{se(0)},[x]),A.useEffect(()=>{le.current=w},[w]),A.useEffect(()=>{fe.current[w]?.scrollIntoView({block:`nearest`})},[w]),A.useEffect(()=>{Ie(s,he,{rows:ke(x,{skill:u(`chat.commandAutocomplete.badge.skill`),command:u(`chat.commandAutocomplete.badge.command`),system:u(`chat.commandAutocomplete.badge.system`)}),highlightedIndex:w})},[x,s,w,u]);let ge=A.useRef(s);ge.current=s,A.useEffect(()=>()=>{Le(ge.current,he)},[]),A.useImperativeHandle(l,()=>({acceptIndex:(e,n=!0)=>{let r=x[e];r&&t(r,K(r,n))},handleKeyDown:e=>{let r=x.length;if(e===`Escape`){n();return}if(r!==0){if(e===`ArrowDown`){de.current=!0,se(e=>(e+1)%r);return}if(e===`ArrowUp`){de.current=!0,se(e=>(e-1+r)%r);return}if(e===`Enter`||e===`Tab`){let n=(le.current%r+r)%r,i=x[n];i&&t(i,K(i,e===`Enter`))}}}}),[x,n,t]);let _e=e=>{let t=Te(e);switch(e.name){case`new`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5`});case`init`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-green-500`});case`undo`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-orange-500`});case`redo`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-orange-500`});case`timeline`:case`reload`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5`});case`compact`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-purple-500`});case`goal`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5`});case`review`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-blue-500`});case`test`:case`build`:case`run`:return(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-cyan-500`});default:return e.isBuiltIn?(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-yellow-500`}):(0,V.jsx)(O,{name:t,className:`h-3.5 w-3.5 text-muted-foreground`})}};return(0,V.jsxs)(Se,{ref:pe,isMobile:d,className:`max-w-[450px] max-h-64`,style:i,children:[(0,V.jsx)(xe,{preventOverscroll:!0,outerClassName:`flex-1 min-h-0`,className:`px-0 py-1.5`,children:ne?(0,V.jsx)(`div`,{className:`flex items-center justify-center py-4`,children:(0,V.jsx)(O,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})}):(0,V.jsxs)(`div`,{children:[x.map((n,r)=>{let i=n.isBuiltIn,a=n.isOpenChamber;return(0,V.jsxs)(`div`,{ref:e=>{fe.current[r]=e},className:C(`flex gap-2 px-2 py-2 cursor-pointer rounded-lg`,d?`items-center`:`items-start`,Ce(d,r===w),!d&&r===w&&`bg-interactive-selection/35`),onMouseDown:e=>e.preventDefault(),onPointerDown:e=>{e.pointerType===`touch`&&(E.current={x:e.clientX,y:e.clientY},D.current=!1)},onPointerMove:e=>{if(e.pointerType!==`touch`||!E.current)return;let t=e.clientX-E.current.x,n=e.clientY-E.current.y;Math.hypot(t,n)>6&&(D.current=!0)},onPointerUp:e=>{if(e.pointerType!==`touch`)return;let r=D.current;E.current=null,D.current=!1,!r&&(e.preventDefault(),e.stopPropagation(),me.current=!0,t(n,K(n,d)))},onPointerCancel:()=>{E.current=null,D.current=!1},onClick:()=>{if(me.current){me.current=!1;return}t(n,K(n,d))},onMouseMove:()=>{de.current=!1,se(r)},children:[(0,V.jsx)(`div`,{className:C(!d&&`mt-0.5`),children:_e(n)}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsxs)(`span`,{className:`typography-ui-label font-medium`,children:[`/`,U(n.name,e)]}),n.isSkill?(0,V.jsx)(`span`,{className:J,children:u(`chat.commandAutocomplete.badge.skill`)}):(0,V.jsx)(`span`,{className:J,children:u(`chat.commandAutocomplete.badge.command`)}),a?(0,V.jsx)(`span`,{className:Y,children:`OpenChamber`}):i?(0,V.jsx)(`span`,{className:Y,children:u(`chat.commandAutocomplete.badge.system`)}):n.scope?(0,V.jsx)(`span`,{className:n.scope===`project`?Je:qe,children:n.scope}):null,n.agent&&(0,V.jsx)(`span`,{className:Y,children:n.agent})]}),n.description&&!d&&(0,V.jsx)(`div`,{className:`typography-meta text-muted-foreground mt-0.5 truncate`,children:U(n.description,e)})]})]},n.id)}),x.length===0&&(0,V.jsx)(`div`,{className:`px-3 py-2 typography-ui-label text-muted-foreground`,children:u(`chat.commandAutocomplete.empty`)})]})}),!d&&(0,V.jsx)(`div`,{className:`px-3 pt-1 pb-1.5 border-t typography-meta text-muted-foreground`,children:u(`chat.autocomplete.keyboardHint`)})]})});Ze.displayName=`CommandAutocomplete`;var X=2,Z=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Qe=e=>{let t=e?.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},$e=e=>Z(e)&&Array.isArray(e.all)&&e.all.every(e=>typeof e==`string`)&&typeof e.current==`string`&&Z(e.branches),et=(e,t)=>JSON.stringify([e,t]),tt=e=>`version`in e&&e.version===X&&Z(e.entries),nt=e=>{if(!e)return null;try{let t=JSON.parse(e);return Z(t)?t.version===X&&Z(t.entries)?{version:X,entries:t.entries}:t:null}catch{return null}},rt=(e,t)=>{try{e.setItem(`oc.gitBranchCache`,JSON.stringify(t))}catch{}},it=(e,t,n)=>{let r=Qe(e);if(!r||!t)return null;let i;try{i=n.getItem(`oc.gitBranchCache`)}catch{return null}let a=nt(i);if(!a)return null;if(tt(a))return $e(a.entries[et(t,r)])?a.entries[et(t,r)]:null;let o={};for(let[e,n]of Object.entries(a)){let r=Qe(e);r&&$e(n)&&(o[et(t,r)]=n)}return rt(n,{version:X,entries:o}),o[et(t,r)]??null},at=(e,t,n,r)=>{let i=Qe(e);if(!i||!t||!$e(n))return;let a=null;try{a=r.getItem(`oc.gitBranchCache`)}catch{return}let o=nt(a);rt(r,{version:X,entries:{...o&&tt(o)?o.entries:{},[et(t,i)]:n}})},ot=3e4,st=Qe,ct=(e,t=n())=>s.git.branches(st(e),t),lt=(e,t=n())=>s.git.remotes(st(e),t),ut=async(e,t,n)=>{n.throwIfAborted();let r=a()?.git,i=t?.getGitBranches?await t.getGitBranches(e,{signal:n}):r?await r.getGitBranches(e,{signal:n}):await g(e,{signal:n});return n.throwIfAborted(),i},dt=async(e,t,n)=>{n.throwIfAborted();let r=a()?.git,i=t?.getRemotes?await t.getRemotes(e,{signal:n}):r?await r.getRemotes(e,{signal:n}):await m(e,{signal:n});return n.throwIfAborted(),i},ft=(e,t,r=n(),i=y())=>{let a=st(e),o=t;return{queryKey:ct(a,r),queryFn:async({signal:e})=>{if(!a)throw Error(`Git branches require a directory`);let t=await ut(a,o,e);return at(a,r,t,i),t},staleTime:ot,gcTime:1/0,initialData:()=>it(a,r,i)??void 0,initialDataUpdatedAt:0}},pt=(e,t,r=n())=>{let i=st(e),a=t;return{queryKey:lt(i,r),queryFn:({signal:e})=>{if(!i)throw Error(`Git remotes require a directory`);return dt(i,a,e)},staleTime:ot,gcTime:1/0}},mt=(e,r,i)=>{let a=(0,I.c)(9),o=i===void 0||i,s=A.useSyncExternalStore(t,n,n),c,l,u;a[0]!==e||a[1]!==r||a[2]!==s?(c=st(e),u=x,l=ft(c,r,s),a[0]=e,a[1]=r,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)},ht=(e,r,i)=>{let a=(0,I.c)(9),o=i===void 0||i,s=A.useSyncExternalStore(t,n,n),c,l,u;a[0]!==e||a[1]!==r||a[2]!==s?(c=st(e),u=x,l=pt(c,r,s),a[0]=e,a[1]=r,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)},gt=(e,t,r=o,i=n())=>r.fetchQuery(ft(e,t,i)),_t=(e,t,r=o,i=n())=>r.fetchQuery({...ft(e,t,i),staleTime:0}),vt=e=>e instanceof Error?e.name===`AbortError`||e.name===`CancelledError`||e.name===`Error`&&e.message===`CancelledError`:!1,yt=1e4,bt=6e4,xt=5e3,St=3e4,Ct=6e4,wt=25,Tt=40,Et=2,Dt=15e3,Ot=500,kt=30,At=20971520,jt=new Map,Mt=new Map,Nt=new Map,Pt=new Map,Ft=new Map,It=(e,t)=>`${t}:${e}`,Lt=e=>Mt.get(e)??0,Rt=e=>{let t=Lt(e)+1;return Mt.set(e,t),t},zt=e=>{let t=(Nt.get(e)??0)+1;return Nt.set(e,t),t},Bt=e=>{let t=jt.get(e);if(t)return t;let n=new Set;return jt.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}),Vt=(e,t=kt,n=At)=>{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},Ht=(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},Ut=(e,t)=>!e&&!t?!1:!e||!t||e.remote!==t.remote||e.branch!==t.branch||e.ahead!==t.ahead||e.behind!==t.behind,Wt=(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&&Ut(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&&Ht(e.diffStats,t.diffStats))},Gt=(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},Kt=(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},qt=e=>!e||e.trim().length===0,Jt=e=>(e||``).trim()===`U`,Yt=e=>{let t=(e.index||``).trim(),n=(e.working_dir||``).trim();if(Jt(t)||Jt(n))return e;let r=t===`?`||n===`?`?`A`:t||n||` `;return{...e,index:r,working_dir:` `}},Xt=e=>{let t=(e.index||``).trim(),n=(e.working_dir||``).trim();if(Jt(t)||Jt(n))return e;let r=n||(t===`A`||t===`?`?`?`:t)||` `;return{...e,index:` `,working_dir:r}},Zt=e=>qt(e.index)&&qt(e.working_dir),$=l()(d((e,t)=>({directories:new Map,activeDirectory:null,setActiveDirectory:n=>{let{activeDirectory:r,directories:i}=t();if(r!==n)if(r&&Rt(r),n&&Rt(n),n&&!i.has(n)){let t=new Map(i);t.set(n,Q()),e({activeDirectory:n,directories:t})}else e({activeDirectory:n})},getDirectoryState:e=>t().directories.get(e)??null,fetchStatus:async(n,r,i={})=>{let a=i.mode??`full`,o=It(n,a),s=Pt.get(o)??(a===`light`?Pt.get(It(n,`full`)):void 0);if(s)return s;let c=(async()=>{let{silent:a=!1}=i,{directories:o}=t(),s=o.get(n);if(s||=Q(),!a){let r=new Map(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingStatus:!0}),e({directories:r})}let c=!1;try{let a=Date.now(),o=s.isGitRepo!==!0||a-(s.lastRepoCheckAt||0)>bt,l=s.isGitRepo===!0;if(o&&(l=await r.checkIsGitRepository(n)),!l){let r=new Map(t().directories),i=r.get(n)??s;return r.set(n,{...i,isGitRepo:!1,status:null,isLoadingStatus:!1,lastRepoCheckAt:a,lastStatusFetch:a}),e({directories:r}),!1}let u=await r.getGitStatus(n,i.mode?{mode:i.mode}:void 0);if(Wt(s.status,u)){c=!0;let r=new Map(t().directories),i=r.get(n)??Q(),s=Gt(i.status,u),l=Kt(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&&Rt(n);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(n,{...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(t().directories),i=r.get(n)??Q();r.set(n,{...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(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingStatus:!1}),e({directories:r})}}return c})();Pt.set(o,c);try{return await c}finally{Pt.get(o)===c&&Pt.delete(o)}},moveStatusPathsOptimistically:(n,r,i)=>{let a=new Set(r.map(e=>e.trim()).filter(Boolean));if(a.size===0)return null;let{directories:o}=t(),s=o.get(n),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`?Yt(e):Xt(e);t!==e&&(l=!0),Zt(t)?l=!0:u.push(t)}if(!l)return c;let d=new Map(o);return d.set(n,{...s,status:{...c,files:u,isClean:u.length===0},indexRevision:s.indexRevision+1,lastStatusChange:Date.now()}),e({directories:d}),c},restoreStatus:(n,r)=>{let{directories:i}=t(),a=i.get(n);if(!a)return;let o=new Map(i);o.set(n,{...a,status:r,indexRevision:a.indexRevision+1,lastStatusChange:Date.now()}),e({directories:o})},bumpIndexRevision:n=>{let{directories:r}=t(),i=r.get(n);if(!i)return;let a=new Map(r);a.set(n,{...i,indexRevision:i.indexRevision+1}),e({directories:a})},fetchBranches:async(r,i,a={})=>{let o=n(),s=zt(r);{let n=new Map(t().directories),i=n.get(r)??Q();n.set(r,{...i,isLoadingBranches:!0}),e({directories:n})}try{let c=a.force?await _t(r,i,void 0,o):await gt(r,i,void 0,o);if(s!==Nt.get(r)||o!==n())return;let l=new Map(t().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(vt(i)||console.error(`Failed to fetch git branches:`,i),s!==Nt.get(r)||o!==n())return;let a=new Map(t().directories),c=a.get(r)??Q();a.set(r,{...c,isLoadingBranches:!1}),e({directories:a})}},fetchLog:async(n,r,i)=>{let{directories:a}=t(),o=a.get(n),s=i??o?.logMaxCount??25;{let r=new Map(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingLog:!0}),e({directories:r})}try{let i=await r.getGitLog(n,{maxCount:s}),a=new Map(t().directories),o=a.get(n)??Q();a.set(n,{...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(t().directories),a=i.get(n)??Q();i.set(n,{...a,isLoadingLog:!1}),e({directories:i})}},fetchIdentity:async(n,r)=>{{let r=new Map(t().directories),i=r.get(n)??Q();r.set(n,{...i,isLoadingIdentity:!0}),e({directories:r})}try{let i=await r.getCurrentGitIdentity(n),a=new Map(t().directories),o=a.get(n)??Q();a.set(n,{...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(t().directories),a=i.get(n)??Q();i.set(n,{...a,isLoadingIdentity:!1}),e({directories:i})}},fetchAll:async(n,r,i={})=>{let{directories:a}=t(),o=a.get(n);if(!o){o=Q();let t=new Map(a);t.set(n,o),e({directories:t})}let{force:s=!1,silentIfCached:c=!1}=i,l=Date.now();await t().fetchStatus(n,r,{silent:c&&!!o?.status});let u=t().directories.get(n);if(!u?.isGitRepo)return;await t().fetchBranches(n,r,{force:s});let d=l-(u.lastLogFetch||0);(s||d>yt||!u.log)&&await t().fetchLog(n,r),await t().fetchIdentity(n,r)},getDiff:(e,n)=>t().directories.get(e)?.diffCache.get(n)??null,setDiff:(n,r,i)=>{let a=new Map(t().directories),o=a.get(n)??Q(),s=new Map(o.diffCache);s.set(r,{...i,fetchedAt:Date.now()});let c=Vt(s);a.set(n,{...o,diffCache:c}),e({directories:a})},clearDiffCache:n=>{Rt(n);let r=new Map(t().directories),i=r.get(n);i&&(r.set(n,{...i,diffCache:new Map}),e({directories:r}))},fetchAllDiffs:async(e,n)=>{let r=t().directories.get(e);if(!r?.status?.files||r.status.files.length===0)return;let i=r.status.files.map(e=>e.path).slice(0,wt);await t().prefetchDiffs(e,n,i,{maxFiles:wt})},prefetchDiffs:async(n,r,i,a={})=>{let o=t().directories.get(n);if(!o?.status?.files||o.status.files.length===0||i.length===0)return;let{maxFiles:s=Tt}=a,c=new Set(o.status.files.map(e=>e.path)),l=o.status.diffStats,u=Bt(n),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>Ot||d.push(e)}let p=d.slice(0,Math.max(1,s));if(p.length===0)return;let m=Lt(n);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 t=r.getGitFileDiff(n,{path:e}),i=new Promise((e,t)=>{setTimeout(()=>t(Error(`Timed out after ${Dt}ms`)),Dt)}),a=await Promise.race([t,i]);return{path:e,diff:{original:a.original??``,modified:a.modified??``,isBinary:a.isBinary}}},ee=async()=>{for(;;){if(m!==Lt(n))return;let e=_();if(!e)return;try{g.push(await v(e))}catch{}finally{u.delete(e)}}},y=Math.min(Et,p.length);if(await Promise.allSettled(Array.from({length:y},()=>ee())),p.forEach(e=>u.delete(e)),m!==Lt(n))return;let b=new Map(t().directories),x=b.get(n);if(!x)return;let S=new Map(x.diffCache),te=Date.now();g.forEach(e=>{!e.diff.isBinary&&e.diff.original===``&&e.diff.modified===``||S.set(e.path,{...e.diff,fetchedAt:te})});let C=Vt(S);b.set(n,{...x,diffCache:C}),e({directories:b})},setLogMaxCount:(n,r)=>{let i=new Map(t().directories),a=i.get(n)??Q();i.set(n,{...a,logMaxCount:r}),e({directories:i})},ensureStatus:async(e,n)=>{let r=t().directories.get(e),i=Date.now();r?.status&&i-r.lastStatusFetch<xt||await t().fetchStatus(e,n,{silent:!!r?.status})},ensureAll:(e,n)=>{let r=Ft.get(e);if(r)return r;let i=(async()=>{let r=t().directories.get(e),i=Date.now();(!r?.status||r.status.diffStats===void 0||i-(r?.lastStatusFetch??0)>=xt)&&await t().fetchStatus(e,n,{silent:!!r?.status});let a=t().directories.get(e);if(!a?.isGitRepo)return;let o=[];(!a.branches||i-a.lastBranchesFetch>=St)&&o.push(t().fetchBranches(e,n)),(!a.log||i-a.lastLogFetch>=yt)&&o.push(t().fetchLog(e,n)),(!a.identity||i-a.lastIdentityFetch>=Ct)&&o.push(t().fetchIdentity(e,n)),o.length>0&&await Promise.all(o)})();return Ft.set(e,i),i.finally(()=>{Ft.get(e)===i&&Ft.delete(e)}),i},refresh:async(e,n={})=>{let{activeDirectory:r}=t();r&&await t().fetchAll(r,e,n)}}),{name:`git-store`})),Qt=e=>{let t=(0,I.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)},$t=e=>{let r=(0,I.c)(3),i=A.useSyncExternalStore(t,n,n),a;return r[0]!==e||r[1]!==i?(a=t=>{if(!e)return null;let n=t.directories.get(e);return n?.branchesTransportIdentity===i?n.branches:null},r[0]=e,r[1]=i,r[2]=a):a=r[2],$(a)},en=e=>{let t=(0,I.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)},tn=e=>{let t=(0,I.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)},nn=e=>{let t=(0,I.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)},rn=e=>{let t=(0,I.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=new Map,t[0]=n):n=t[0];let r=A.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)},an=e=>{let t=(0,I.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)},on=e=>{let t=(0,I.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)},sn=e=>{let t=(0,I.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)},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 ye(e);try{let n=cn((await _e(e)).branches?.[t]?.tracking||null);if(n?.remote)return n.remote}catch{}try{let t=cn((await ve(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 be(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.some(e=>e.range.start<t.range.end&&t.range.start<e.range.end)?[...e]:[...e,t]},Sn=(e,t)=>t<e.length&&e[t]===` `?t+1:t;export{ze as A,ht as C,W as D,We as E,Ve as O,mt as S,Ke as T,rn as _,hn as a,tn as b,mn as c,nn as d,$t as f,en as g,an as h,yn as i,Fe as j,Be as k,dn as l,on as m,xn as n,_n as o,sn as p,bn as r,gn as s,Sn as t,pn as u,Qt as v,Ze as w,_t as x,$ as y};
@@ -1,4 +1,4 @@
1
- var e={"chat.chatInput.stopUnconfirmed":`停止をまだ確認できていません。もう一度お試しください。`,"chat.response.rateLimit":`プロバイダーのリクエスト頻度制限に達しました`,"chat.response.auth":`プロバイダーの認証に失敗しました。再度ログインしてお試しください。`,"chat.response.quota":`プロバイダーの利用枠を使い切りました`,"chat.response.contentFilter":`プロバイダーが応答をブロックしました`,"chat.response.transport":`プロバイダーへの接続に失敗しました`,"chat.response.internal":`プロバイダーの内部エラー`,"chat.response.invalidOutput":`プロバイダーから無効な応答が返されました`,"chat.response.invalidRequest":`プロバイダーがリクエストを拒否しました`,"chat.response.unsupportedOperation":`プロバイダーはこの操作に対応していません`,"chat.response.noRoute":`モデルまたはプロバイダーの設定を利用できません`,"chat.response.providerUnknown":`プロバイダーエラー`,"chat.response.timeout":`プロバイダーへのリクエストがタイムアウトしました`,"chat.response.permissionRejected":`権限が拒否されました`,"chat.response.toolExecution":`ツールの実行に失敗しました`,"chat.response.compactionFailed":`コンテキストの圧縮に失敗しました`,"chat.response.compactionUnavailable":`圧縮できる内容がまだありません`,"chat.response.compactionInterrupted":`コンテキストの圧縮が中断されました`,"chat.response.compactionCancelled":`コンテキストの圧縮がキャンセルされました`,"chat.response.stopped":`ユーザーが生成を停止しました`,"chat.response.interrupted":`応答が中断されました`,"chat.response.toolInterrupted":`ツールの実行が中断されました`,"chat.response.resumeExhausted":`中断が繰り返されたため、自動復旧を停止しました`,"chat.response.retrying":`自動で再試行中`,"chat.response.failed":`実行に失敗しました`,"chat.response.continuingAfterRestart":`再起動後に続行`,"chat.queuedMessage.inheritsSessionSelection":`実行時にセッションのモデル、エージェント、バリアントを引き継ぎます。`,"chat.sessionRecovery.awaitingConfirmation":`サービスが再起動しました。タスク状態の確認を待っています。`,"chat.btw.title":`Side Chat`,"chat.btw.failed":`回答の生成に失敗しました。再試行してください。`,"chat.btw.description":`会話の履歴をそのまま保ち、現在の会話について質問します。`,"chat.btw.placeholder":`Side Chat で質問…`,"chat.btw.removeQuoteAria":`引用を削除`,"chat.message.conversationQuotesLabel":`会話からの引用`,"chat.btw.sessionRequired":`既存の会話を開いてから Side Chat を始めてください。`,"chat.btw.plainTextRequired":`プレーンテキストで質問してください。参照は入力欄に保持されます。`,"chat.btw.pending":`回答を準備しています…`,"chat.btw.cancelled":`回答をキャンセルしました。再試行で質問し直せます。`,"chat.btw.resize":`Side Chat パネルのサイズを変更`,"settings.remoteInstances.clientAuth.edit.action":`編集`,"settings.remoteInstances.clientAuth.edit.name":`デバイス名`,"settings.openchamber.about.opencodeGuidance.manualGlobal":`対応するパッケージマネージャーで設定済みの OpenCode CLI を更新し、サービスを再起動してください。`,"settings.openchamber.about.opencodeGuidance.manualExternal":`外部 OpenCode サービスの管理者を通じて更新と再起動を行ってください。`,"settings.openchamber.about.opencodeGuidance.bundled":`OpenChamber デスクトップアプリを更新すると、同梱の OpenCode も更新されます。`,"settings.chat.questionDelegate.label":`未回答の質問を自動で委任`,"settings.chat.questionDelegate.description":`30秒間回答がない場合、モデルに判断と続行を依頼します。質問カードを操作すると、その質問のカウントダウンが一時停止します。`,"settings.chat.questionDelegate.saveFailed":`自動委任の設定を保存できませんでした。現在の状態を確認して再試行してください。`,"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":`設定を保存しました。`,"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.consoleSignIn":`OpenCode Console でログイン`,"settings.providers.page.openCodeGo.consoleConnected":`OpenCode Console は接続済みです。OpenCode Go はこの認証情報を使えます。`,"settings.providers.page.openCodeGo.consoleHint":`OpenCode Go は OpenCode Console からログインします。下のサービスアカウントキーも引き続き使えます。`,"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.archivedSessions.title":`アーカイブ済みセッション`,"settings.page.summaryAI.title":`AI 要約`,"settings.page.magicPrompts.title":`マジックプロンプト`,"settings.page.notifications.title":`通知`,"settings.page.voice.title":`音声`,"settings.page.about.title":`概要`,"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.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.sessionSummary":`Session サマリー`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Workspace レビュー`,"settings.magicPrompts.sidebar.item.sessionExplore":`コードベースツアー`,"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.relayUrlRemoteHostHint":`接続先ホストにより設定されます。ペアリングにはそのホストの現在の Relay エンドポイントを使用します。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlCustomOption":`カスタムエンドポイント…`,"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.switchInstanceDisabled":`切り替える前に 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.opencodeVersionWithManagement":`{version}({management})`,"settings.openchamber.about.opencodeManagement.manual-global":`グローバル CLI — 手動でアップグレード`,"settings.openchamber.about.opencodeManagement.manual-external":`外部 serve — アプリ外で管理`,"settings.openchamber.about.opencodeManagement.bundled":`アプリに同梱`,"settings.openchamber.about.opencodeManagement.in-app":`OpenChamber が管理`,"settings.openchamber.about.opencodeManagement.none":`所有権不明`,"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.applyOtaToVersion":`{version} に今すぐ更新`,"settings.openchamber.about.actions.installNativeToVersion":`{version} をインストール`,"settings.openchamber.about.actions.checkForUpdates":`アップデートを確認`,"settings.openchamber.about.actions.submitFeedback":`フィードバックを送信`,"settings.openchamber.about.toast.latestVersion":`最新バージョンです`,"settings.openchamber.about.toast.checkFailed":`更新を確認できませんでした`,"settings.openchamber.about.betaUpdates.label":`ベータ更新に参加`,"settings.openchamber.about.betaUpdates.description":`このデバイスでアプリの更新を先行して受け取ります。`,"settings.openchamber.about.betaUpdates.rollback.title":`安定版に戻しますか?`,"settings.openchamber.about.betaUpdates.rollback.description":`現在ベータ版を実行しています。ベータ更新をオフにすると、OpenChamber は安定版 v{version} に戻ります。変更を適用するにはアプリを再起動してください。`,"settings.openchamber.about.betaUpdates.rollback.actions.cancel":`ベータ版を維持`,"settings.openchamber.about.betaUpdates.rollback.actions.confirm":`安定版に戻す`,"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.badge.disabled":`無効`,"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.runtime":`実行`,"settings.agents.page.field.steps":`ステップ上限`,"settings.agents.page.field.stepsHint":`空欄は無制限です。上限に達すると、次のリクエストはテキストのみになります。`,"settings.agents.page.field.hidden":`非表示`,"settings.agents.page.field.hiddenHint":`メインの切り替えと @ メンションから隠します。権限が許せばタスクは引き続き呼び出せます。`,"settings.agents.page.field.disabled":`無効`,"settings.agents.page.field.disabledHint":`カタログから外します。オフにして保存すると一覧に戻ります。`,"settings.agents.page.field.color":`色`,"settings.agents.page.field.colorHint":`16進数の色です。例: #FF6B6B。`,"settings.agents.page.field.colorInvalid":`#FF6B6B のような16進数の色を入力してください。`,"settings.agents.page.field.clearColorAria":`色をクリア`,"settings.agents.page.field.modelHint":`空欄なら呼び出し元のモデルを使います。バリアントはモデルと一緒に保存されます。`,"settings.agents.page.system.inheritHint":`空欄なら組み込みプロンプトを残します。ここに書いた文字がそのプロンプトを置き換えます。プロジェクトの指示はその後に追加されます。`,"settings.agents.page.apply.hint":`次のリクエストと新しいセッションに適用されます。実行中のセッションは現在のモデルのままです。`,"settings.agents.page.legacy.convertible":`保存すると、このエージェントファイルは現在の形式に変換されます。`,"settings.agents.page.legacy.dropped":`これらの項目は残りません: {fields}。次のリクエストには影響しません。`,"settings.agents.page.legacy.confirmDrop":`変換してこれらの項目を捨てる`,"settings.agents.page.toast.savedNextRequest":`保存しました。次のリクエストと新しいセッションがこのエージェントを使います。実行中のセッションは現在のモデルのままです。`,"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.scope":`範囲`,"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.shell":`シェル`,"settings.agents.page.permissions.subagent":`サブエージェント`,"settings.agents.page.permissions.edit":`編集`,"settings.agents.page.permissions.externalDirectory":`外部ディレクトリ`,"settings.agents.page.permissions.question":`質問`,"settings.agents.page.permissions.read":`読み取り`,"settings.agents.page.permissions.glob":`ファイル検索`,"settings.agents.page.permissions.grep":`内容検索`,"settings.agents.page.permissions.skill":`スキル`,"settings.agents.page.permissions.webfetch":`URL 取得`,"settings.agents.page.permissions.websearch":`Web 検索`,"settings.agents.page.permissions.execute":`コード実行`,"settings.agents.page.permissions.browser":`ブラウザ`,"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.permissions.saved.retry":`再試行`,"settings.permissions.saved.title":`保存済みのプロジェクト権限`,"settings.permissions.saved.empty":`このプロジェクトに保存済みの権限はありません`,"settings.permissions.saved.delete":`削除`,"settings.permissions.saved.deleteFailed":`保存済み権限を削除できませんでした`,"settings.permissions.saved.loadFailed":`保存済み権限を読み込めませんでした`,"settings.agents.page.permissions.lastMatchHint":`最後に一致したルールが優先されます`,"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={"chat.chatInput.stopUnconfirmed":`停止をまだ確認できていません。もう一度お試しください。`,"chat.response.rateLimit":`プロバイダーのリクエスト頻度制限に達しました`,"chat.response.auth":`プロバイダーの認証に失敗しました。再度ログインしてお試しください。`,"chat.response.quota":`プロバイダーの利用枠を使い切りました`,"chat.response.contentFilter":`プロバイダーが応答をブロックしました`,"chat.response.transport":`プロバイダーへの接続に失敗しました`,"chat.response.internal":`プロバイダーの内部エラー`,"chat.response.invalidOutput":`プロバイダーから無効な応答が返されました`,"chat.response.invalidRequest":`プロバイダーがリクエストを拒否しました`,"chat.response.unsupportedOperation":`プロバイダーはこの操作に対応していません`,"chat.response.noRoute":`モデルまたはプロバイダーの設定を利用できません`,"chat.response.providerUnknown":`プロバイダーエラー`,"chat.response.timeout":`プロバイダーへのリクエストがタイムアウトしました`,"chat.response.permissionRejected":`権限が拒否されました`,"chat.response.toolExecution":`ツールの実行に失敗しました`,"chat.response.compactionFailed":`コンテキストの圧縮に失敗しました`,"chat.response.compactionUnavailable":`圧縮できる内容がまだありません`,"chat.response.compactionInterrupted":`コンテキストの圧縮が中断されました`,"chat.response.compactionCancelled":`コンテキストの圧縮がキャンセルされました`,"chat.response.stopped":`ユーザーが生成を停止しました`,"chat.response.interrupted":`応答が中断されました`,"chat.response.toolInterrupted":`ツールの実行が中断されました`,"chat.response.resumeExhausted":`中断が繰り返されたため、自動復旧を停止しました`,"chat.response.retrying":`自動で再試行中`,"chat.response.failed":`実行に失敗しました`,"chat.response.continuingAfterRestart":`再起動後に続行`,"chat.queuedMessage.inheritsSessionSelection":`実行時にセッションのモデル、エージェント、バリアントを引き継ぎます。`,"chat.sessionRecovery.awaitingConfirmation":`サービスが再起動しました。タスク状態の確認を待っています。`,"chat.btw.title":`Side Chat`,"chat.btw.failed":`回答の生成に失敗しました。再試行してください。`,"chat.btw.description":`会話の履歴をそのまま保ち、現在の会話について質問します。`,"chat.btw.placeholder":`Side Chat で質問…`,"chat.btw.removeQuoteAria":`引用を削除`,"chat.message.conversationQuotesLabel":`会話からの引用`,"chat.btw.sessionRequired":`既存の会話を開いてから Side Chat を始めてください。`,"chat.btw.plainTextRequired":`プレーンテキストで質問してください。参照は入力欄に保持されます。`,"chat.btw.pending":`回答を準備しています…`,"chat.btw.cancelled":`回答をキャンセルしました。再試行で質問し直せます。`,"chat.btw.resize":`Side Chat パネルのサイズを変更`,"settings.remoteInstances.clientAuth.edit.title":`デバイスを編集`,"settings.remoteInstances.clientAuth.edit.action":`編集`,"settings.remoteInstances.clientAuth.edit.name":`デバイス名`,"settings.openchamber.about.opencodeGuidance.manualGlobal":`対応するパッケージマネージャーで設定済みの OpenCode CLI を更新し、サービスを再起動してください。`,"settings.openchamber.about.opencodeGuidance.manualExternal":`外部 OpenCode サービスの管理者を通じて更新と再起動を行ってください。`,"settings.openchamber.about.opencodeGuidance.bundled":`OpenChamber デスクトップアプリを更新すると、同梱の OpenCode も更新されます。`,"settings.chat.questionDelegate.label":`未回答の質問を自動で委任`,"settings.chat.questionDelegate.description":`30秒間回答がない場合、モデルに判断と続行を依頼します。質問カードを操作すると、その質問のカウントダウンが一時停止します。`,"settings.chat.questionDelegate.saveFailed":`自動委任の設定を保存できませんでした。現在の状態を確認して再試行してください。`,"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":`設定を保存しました。`,"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.consoleSignIn":`OpenCode Console でログイン`,"settings.providers.page.openCodeGo.consoleConnected":`OpenCode Console は接続済みです。OpenCode Go はこの認証情報を使えます。`,"settings.providers.page.openCodeGo.consoleHint":`OpenCode Go は OpenCode Console からログインします。下のサービスアカウントキーも引き続き使えます。`,"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.archivedSessions.title":`アーカイブ済みセッション`,"settings.page.summaryAI.title":`AI 要約`,"settings.page.magicPrompts.title":`マジックプロンプト`,"settings.page.notifications.title":`通知`,"settings.page.voice.title":`音声`,"settings.page.about.title":`概要`,"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.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.sessionSummary":`Session サマリー`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Workspace レビュー`,"settings.magicPrompts.sidebar.item.sessionExplore":`コードベースツアー`,"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.relayUrlRemoteHostHint":`接続先ホストにより設定されます。ペアリングにはそのホストの現在の Relay エンドポイントを使用します。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlCustomOption":`カスタムエンドポイント…`,"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.switchInstanceDisabled":`切り替える前に 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.opencodeVersionWithManagement":`{version}({management})`,"settings.openchamber.about.opencodeManagement.manual-global":`グローバル CLI — 手動でアップグレード`,"settings.openchamber.about.opencodeManagement.manual-external":`外部 serve — アプリ外で管理`,"settings.openchamber.about.opencodeManagement.bundled":`アプリに同梱`,"settings.openchamber.about.opencodeManagement.in-app":`OpenChamber が管理`,"settings.openchamber.about.opencodeManagement.none":`所有権不明`,"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.applyOtaToVersion":`{version} に今すぐ更新`,"settings.openchamber.about.actions.installNativeToVersion":`{version} をインストール`,"settings.openchamber.about.actions.checkForUpdates":`アップデートを確認`,"settings.openchamber.about.actions.submitFeedback":`フィードバックを送信`,"settings.openchamber.about.toast.latestVersion":`最新バージョンです`,"settings.openchamber.about.toast.checkFailed":`更新を確認できませんでした`,"settings.openchamber.about.betaUpdates.label":`ベータ更新に参加`,"settings.openchamber.about.betaUpdates.description":`このデバイスでアプリの更新を先行して受け取ります。`,"settings.openchamber.about.betaUpdates.rollback.title":`安定版に戻しますか?`,"settings.openchamber.about.betaUpdates.rollback.description":`現在ベータ版を実行しています。ベータ更新をオフにすると、OpenChamber は安定版 v{version} に戻ります。変更を適用するにはアプリを再起動してください。`,"settings.openchamber.about.betaUpdates.rollback.actions.cancel":`ベータ版を維持`,"settings.openchamber.about.betaUpdates.rollback.actions.confirm":`安定版に戻す`,"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.badge.disabled":`無効`,"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.runtime":`実行`,"settings.agents.page.field.steps":`ステップ上限`,"settings.agents.page.field.stepsHint":`空欄は無制限です。上限に達すると、次のリクエストはテキストのみになります。`,"settings.agents.page.field.hidden":`非表示`,"settings.agents.page.field.hiddenHint":`メインの切り替えと @ メンションから隠します。権限が許せばタスクは引き続き呼び出せます。`,"settings.agents.page.field.disabled":`無効`,"settings.agents.page.field.disabledHint":`カタログから外します。オフにして保存すると一覧に戻ります。`,"settings.agents.page.field.color":`色`,"settings.agents.page.field.colorHint":`16進数の色です。例: #FF6B6B。`,"settings.agents.page.field.colorInvalid":`#FF6B6B のような16進数の色を入力してください。`,"settings.agents.page.field.clearColorAria":`色をクリア`,"settings.agents.page.field.modelHint":`空欄なら呼び出し元のモデルを使います。バリアントはモデルと一緒に保存されます。`,"settings.agents.page.system.inheritHint":`空欄なら組み込みプロンプトを残します。ここに書いた文字がそのプロンプトを置き換えます。プロジェクトの指示はその後に追加されます。`,"settings.agents.page.apply.hint":`次のリクエストと新しいセッションに適用されます。実行中のセッションは現在のモデルのままです。`,"settings.agents.page.legacy.convertible":`保存すると、このエージェントファイルは現在の形式に変換されます。`,"settings.agents.page.legacy.dropped":`これらの項目は残りません: {fields}。次のリクエストには影響しません。`,"settings.agents.page.legacy.confirmDrop":`変換してこれらの項目を捨てる`,"settings.agents.page.toast.savedNextRequest":`保存しました。次のリクエストと新しいセッションがこのエージェントを使います。実行中のセッションは現在のモデルのままです。`,"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.scope":`範囲`,"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.shell":`シェル`,"settings.agents.page.permissions.subagent":`サブエージェント`,"settings.agents.page.permissions.edit":`編集`,"settings.agents.page.permissions.externalDirectory":`外部ディレクトリ`,"settings.agents.page.permissions.question":`質問`,"settings.agents.page.permissions.read":`読み取り`,"settings.agents.page.permissions.glob":`ファイル検索`,"settings.agents.page.permissions.grep":`内容検索`,"settings.agents.page.permissions.skill":`スキル`,"settings.agents.page.permissions.webfetch":`URL 取得`,"settings.agents.page.permissions.websearch":`Web 検索`,"settings.agents.page.permissions.execute":`コード実行`,"settings.agents.page.permissions.browser":`ブラウザ`,"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.permissions.saved.retry":`再試行`,"settings.permissions.saved.title":`保存済みのプロジェクト権限`,"settings.permissions.saved.empty":`このプロジェクトに保存済みの権限はありません`,"settings.permissions.saved.delete":`削除`,"settings.permissions.saved.deleteFailed":`保存済み権限を削除できませんでした`,"settings.permissions.saved.loadFailed":`保存済み権限を読み込めませんでした`,"settings.agents.page.permissions.lastMatchHint":`最後に一致したルールが優先されます`,"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