hive-am 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/package.json +1 -1
  3. package/server/dist/context.js +62 -0
  4. package/server/dist/db/migrations.js +7 -0
  5. package/server/dist/db.js +4 -4
  6. package/server/dist/history/claude.js +8 -2
  7. package/server/dist/http/routes/agents.js +1 -1
  8. package/server/dist/http/validate.js +2 -0
  9. package/server/dist/instructions.js +4 -0
  10. package/server/dist/models.js +2 -0
  11. package/server/dist/providers/claude.js +13 -1
  12. package/server/dist/providers/opencode-server.js +59 -0
  13. package/server/dist/providers/opencode.js +4 -1
  14. package/server/dist/stats.js +15 -3
  15. package/web/.next/BUILD_ID +1 -1
  16. package/web/.next/app-build-manifest.json +70 -70
  17. package/web/.next/app-path-routes-manifest.json +7 -7
  18. package/web/.next/build-manifest.json +2 -2
  19. package/web/.next/prerender-manifest.json +49 -49
  20. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/_not-found.html +1 -1
  22. package/web/.next/server/app/_not-found.rsc +3 -3
  23. package/web/.next/server/app/agents/[id]/page.js +3 -3
  24. package/web/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  25. package/web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  26. package/web/.next/server/app/agents/page.js +1 -1
  27. package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/agents.html +1 -1
  29. package/web/.next/server/app/agents.rsc +4 -4
  30. package/web/.next/server/app/connections/page.js +1 -1
  31. package/web/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/connections.html +1 -1
  33. package/web/.next/server/app/connections.rsc +4 -4
  34. package/web/.next/server/app/index.html +1 -1
  35. package/web/.next/server/app/index.rsc +4 -4
  36. package/web/.next/server/app/page.js +1 -1
  37. package/web/.next/server/app/page.js.nft.json +1 -1
  38. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/relations/page.js +1 -1
  40. package/web/.next/server/app/relations/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/relations.html +1 -1
  42. package/web/.next/server/app/relations.rsc +4 -4
  43. package/web/.next/server/app/resources/[id]/page.js +1 -1
  44. package/web/.next/server/app/resources/[id]/page.js.nft.json +1 -1
  45. package/web/.next/server/app/resources/[id]/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/resources/page.js +1 -1
  47. package/web/.next/server/app/resources/page.js.nft.json +1 -1
  48. package/web/.next/server/app/resources/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/resources.html +1 -1
  50. package/web/.next/server/app/resources.rsc +4 -4
  51. package/web/.next/server/app/schedules/page.js +1 -1
  52. package/web/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/schedules.html +1 -1
  54. package/web/.next/server/app/schedules.rsc +4 -4
  55. package/web/.next/server/app/sessions/page.js +1 -1
  56. package/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/sessions.html +1 -1
  58. package/web/.next/server/app/sessions.rsc +4 -4
  59. package/web/.next/server/app/skills/page.js +1 -1
  60. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/skills.html +1 -1
  62. package/web/.next/server/app/skills.rsc +4 -4
  63. package/web/.next/server/app/types/page.js +1 -1
  64. package/web/.next/server/app/types/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/types.html +1 -1
  66. package/web/.next/server/app/types.rsc +4 -4
  67. package/web/.next/server/app-paths-manifest.json +7 -7
  68. package/web/.next/server/chunks/143.js +1 -1
  69. package/web/.next/server/chunks/274.js +1 -1
  70. package/web/.next/server/chunks/306.js +1 -1
  71. package/web/.next/server/chunks/451.js +1 -0
  72. package/web/.next/server/chunks/505.js +1 -1
  73. package/web/.next/server/chunks/612.js +1 -1
  74. package/web/.next/server/chunks/716.js +2 -2
  75. package/web/.next/server/pages/404.html +1 -1
  76. package/web/.next/server/pages/500.html +1 -1
  77. package/web/.next/server/server-reference-manifest.json +1 -1
  78. package/web/.next/static/chunks/281-d8a0dcfaa6d064e4.js +1 -0
  79. package/web/.next/static/chunks/{291-efae53ea5f7ee92d.js → 291-23f314877fa39054.js} +1 -1
  80. package/web/.next/static/chunks/304-681348099f874a30.js +1 -0
  81. package/web/.next/static/chunks/350-0fe82e622e7a670f.js +1 -0
  82. package/web/.next/static/chunks/{491-6b4e6201f5110dff.js → 491-28f093772bd460ac.js} +1 -1
  83. package/web/.next/static/chunks/517-373a80c8ba432bdc.js +1 -0
  84. package/web/.next/static/chunks/654-92a63b3c4b412666.js +1 -0
  85. package/web/.next/static/chunks/705-780e48e55b0346bd.js +1 -0
  86. package/web/.next/static/chunks/{844-fe55292e0701f436.js → 844-519177e6198ca84f.js} +1 -1
  87. package/web/.next/static/chunks/app/agents/[id]/page-c005161cec5527d8.js +1 -0
  88. package/web/.next/static/chunks/app/agents/{page-f4c4c80f955f3967.js → page-9bb8cba69776c719.js} +1 -1
  89. package/web/.next/static/chunks/app/connections/{page-0936beaf02d863c6.js → page-eb11cfb1ffeab3ca.js} +1 -1
  90. package/web/.next/static/chunks/app/{layout-99620746d028dda8.js → layout-49b46c9b5aa512a8.js} +1 -1
  91. package/web/.next/static/chunks/app/{page-a7f292117b7d76bf.js → page-da042d146caeeab6.js} +1 -1
  92. package/web/.next/static/chunks/app/relations/{page-fba25393c8688714.js → page-a44fd515a3b0525e.js} +1 -1
  93. package/web/.next/static/chunks/app/resources/[id]/{page-d110d89bb8b5fca7.js → page-bf05836f97248ca7.js} +1 -1
  94. package/web/.next/static/chunks/app/resources/{page-bbd0b450d3f3131d.js → page-800f774e5cacf4c9.js} +1 -1
  95. package/web/.next/static/chunks/app/schedules/{page-a1124397fc760413.js → page-96976fff4ee23538.js} +1 -1
  96. package/web/.next/static/chunks/app/sessions/{page-0e322811b0cde724.js → page-a7534ebd90e982d6.js} +1 -1
  97. package/web/.next/static/chunks/app/skills/{page-22ea0ef89d9f7a13.js → page-bc1acd0663f36129.js} +1 -1
  98. package/web/.next/static/chunks/app/types/{page-18c4e1db2724d41d.js → page-ebd37e220f77c1f3.js} +1 -1
  99. package/web/.next/static/css/{b7a03c62468f4263.css → d42799b7e6a0e8a2.css} +1 -1
  100. package/web/.next/trace +29 -29
  101. package/web/.next/server/chunks/555.js +0 -1
  102. package/web/.next/static/chunks/176-aeaf907a6ea5627d.js +0 -1
  103. package/web/.next/static/chunks/350-56599dc3bf06066d.js +0 -1
  104. package/web/.next/static/chunks/486-13e08542f3a1cbac.js +0 -1
  105. package/web/.next/static/chunks/517-ccaf8cc5c733cbd8.js +0 -1
  106. package/web/.next/static/chunks/705-c7e75806f77b880c.js +0 -1
  107. package/web/.next/static/chunks/839-4aefe6e71be6e1ef.js +0 -1
  108. package/web/.next/static/chunks/app/agents/[id]/page-3faf40800981a736.js +0 -1
  109. /package/web/.next/static/{7BI__-ayGDTlOrSboD_bT → aSYzbHk1M5YeS_d3SQKTZ}/_buildManifest.js +0 -0
  110. /package/web/.next/static/{7BI__-ayGDTlOrSboD_bT → aSYzbHk1M5YeS_d3SQKTZ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[281],{3749:(e,t,o)=>{o.d(t,{FH:()=>r});var a=o(68419);class n extends Error{constructor(e,t=0,o=!1){super(e),this.status=t,this.aborted=o,this.name="ApiError"}}async function s(e,t,o,s){var r,i;let l=new AbortController,c=!1,d=()=>l.abort();(null==s?void 0:s.signal)&&(s.signal.aborted?l.abort():s.signal.addEventListener("abort",d,{once:!0}));let h=(null==s?void 0:s.timeoutMs)?setTimeout(()=>{c=!0,l.abort()},s.timeoutMs):void 0;try{let s;try{s=await fetch("/api".concat(t),{method:e,headers:o?{"content-type":"application/json"}:void 0,body:o?JSON.stringify(o):void 0,signal:l.signal})}catch(e){if(c)throw new n((0,a.Tl)("lib.timeout"),0);if(l.signal.aborted)throw new n("Request aborted",0,!0);throw new n((0,a.Tl)("lib.unreachable"),0)}let i=await s.json().catch(()=>null);if(!s.ok)throw new n((0,a.YF)(null!=(r=null==i?void 0:i.error)?r:"Request failed (".concat(s.status,")")),s.status);return i}finally{clearTimeout(h),null==s||null==(i=s.signal)||i.removeEventListener("abort",d)}}let r={get:(e,t)=>s("GET",e,void 0,t),post:(e,t,o)=>s("POST",e,null!=t?t:{},o),patch:(e,t,o)=>s("PATCH",e,t,o),put:(e,t,o)=>s("PUT",e,t,o),del:(e,t)=>s("DELETE",e,void 0,t)}},7708:(e,t,o)=>{o.d(t,{DO:()=>m,Tl:()=>p,lZ:()=>u,pp:()=>d});var a=o(94799),n=o(82683),s=o(48180),r=o(56728),i=o(70665),l=o(58311),c=o(69654);function d(e){let{icon:t,title:o,body:n,action:s,compact:r=!1,className:i=""}=e;return(0,a.jsxs)("div",{className:"empty ".concat(r?"compact":""," ").concat(i),children:[t&&(0,a.jsx)("span",{className:"empty-ic","aria-hidden":!0,children:t}),(0,a.jsx)("h3",{children:o}),n&&(0,a.jsx)("p",{children:n}),s]})}let h={info:n.A,warn:s.A,err:r.A,honey:null};function u(e){let{kind:t,role:o,onDismiss:n,action:s,children:r}=e,{t:l}=(0,c.s9)(),d=h[t];return(0,a.jsxs)("div",{className:"banner ".concat(t),role:null!=o?o:"err"===t?"alert":"status",children:[d&&(0,a.jsx)(d,{size:16,"aria-hidden":!0,className:"banner-ic"}),(0,a.jsx)("div",{className:"grow",children:r}),s&&(0,a.jsx)("div",{className:"banner-action",children:s}),n&&(0,a.jsx)("button",{type:"button",className:"btn ghost icon sm",onClick:n,"aria-label":l("common.dismiss"),title:l("common.dismiss"),children:(0,a.jsx)(i.A,{size:14})})]})}function m(e){let{value:t,onChange:o,placeholder:n,label:s,onClear:r,className:d="",ref:h,autoFocus:u,onKeyDown:m}=e,{t:p}=(0,c.s9)();return(0,a.jsxs)("div",{className:"search ".concat(d),children:[(0,a.jsx)(l.A,{size:15,"aria-hidden":!0}),(0,a.jsx)("input",{ref:h,className:"input",value:t,onChange:e=>o(e.target.value),onKeyDown:m,autoFocus:u,placeholder:n,"aria-label":s,autoComplete:"off",spellCheck:!1}),t&&(0,a.jsx)("button",{type:"button",className:"search-clear",onClick:()=>r?r():o(""),"aria-label":p("search.clear"),title:p("search.clear"),children:(0,a.jsx)(i.A,{size:14})})]})}function p(e){let{checked:t,onChange:o,label:n,hint:s,disabled:r=!1,compact:i=!1}=e;return(0,a.jsxs)("label",{className:"checkrow ".concat(i?"compact":""," ").concat(r?"off":""),children:[(0,a.jsx)("input",{type:"checkbox",checked:t,disabled:r,onChange:e=>o(e.target.checked)}),(0,a.jsxs)("span",{children:[(0,a.jsx)("b",{children:n}),s&&(0,a.jsx)("span",{className:"hint",children:s})]})]})}},10804:(e,t,o)=>{o.d(t,{lZ:()=>G.lZ,Tl:()=>G.Tl,TM:()=>B,_s:()=>O,pp:()=>G.pp,D0:()=>ea,dR:()=>ed,_h:()=>Z,aF:()=>_,CD:()=>er,yQ:()=>ec,en:()=>ei,dJ:()=>ee,YO:()=>es,PW:()=>eo,DO:()=>G.DO,$q:()=>en,kV:()=>el,P5:()=>et,Kp:()=>V,tU:()=>W,l$:()=>C,DS:()=>X,Bp:()=>f.B,dj:()=>k});var a=o(94799),n=o(34023),s=o(59959),r=o(12349),i=o(58311),l=o(72705),c=o(70665),d=o(57756),h=o(94227),u=o(25661),m=o(21018),p=o(3749),g=o(47890),v=o(69654),b=o(82397),f=o(48539),y=o(66843);let w=(0,n.createContext)(()=>void 0),k=()=>(0,n.useContext)(w);function j(e){let t,{item:o,onClose:s}=e,{t:r}=(0,v.s9)(),[i,l]=(0,n.useState)(!1),d=(0,n.useRef)((t=o.msg,"err"===o.kind?Math.min(15e3,7e3+40*t.length):Math.min(8e3,3500+30*t.length)));(0,n.useEffect)(()=>{if(i)return;let e=Date.now(),t=setTimeout(()=>s(o.id),d.current);return()=>{clearTimeout(t),d.current=Math.max(1200,d.current-(Date.now()-e))}},[i,o.id,s]);let h="err"===o.kind;return(0,a.jsxs)("div",{className:"toast ".concat(h?"err":""),role:h?"alert":"status",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),onFocus:()=>l(!0),onBlur:()=>l(!1),children:[(0,a.jsx)("span",{className:"toast-msg",children:o.msg}),(0,a.jsx)("button",{type:"button",className:"toast-x",onClick:()=>s(o.id),"aria-label":r("common.dismiss"),title:r("common.dismiss"),children:(0,a.jsx)(c.A,{size:15})})]})}function C(e){let{children:t}=e,[o,s]=(0,n.useState)([]),r=(0,n.useCallback)(e=>s(t=>t.filter(t=>t.id!==e)),[]),i=(0,n.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ok";s(o=>o.some(o=>o.msg===e&&o.kind===t)?o:[...o,{id:Date.now()+Math.random(),msg:e,kind:t}].slice(-5))},[]);return(0,a.jsxs)(w.Provider,{value:i,children:[t,(0,a.jsx)("div",{className:"toasts","data-live":!0,children:o.map(e=>(0,a.jsx)(j,{item:e,onClose:r},e.id))})]})}var x=o(56742),S=o(88228),A=o(14910),N=o(77021);let E=[],T=new WeakSet,q=null,R=!1,P=/^(SCRIPT|STYLE|LINK|NOSCRIPT|TEMPLATE)$/,L='a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]), summary';function D(){let e=E[E.length-1];for(let t of Array.from(document.body.children))!(P.test(t.tagName)||t.tagName.includes("-")||t.hasAttribute("data-live"))&&(e&&t!==e.host?t.hasAttribute("inert")||(t.setAttribute("inert",""),T.add(t)):T.has(t)&&(t.removeAttribute("inert"),T.delete(t)));E.length&&null===q?(q=document.body.style.overflow,document.body.style.overflow="hidden"):E.length||null===q||(document.body.style.overflow=q,q=null)}function F(e){if("Escape"!==e.key||e.defaultPrevented)return;let t=E[E.length-1];t&&(e.target instanceof Element&&e.target.closest('[role="menu"], [aria-haspopup][aria-expanded="true"], [role="combobox"][aria-expanded="true"]')||t.close())}let M=e=>!e.closest("[inert]")&&e.getClientRects().length>0;function I(e){let{onClose:t,labelId:o,className:s,style:r,role:i="dialog",children:l}=e,[c,d]=(0,n.useState)(null),[h,u]=(0,n.useState)(0),m=(0,n.useRef)(null),p=(0,n.useRef)(t);if((0,n.useEffect)(()=>{p.current=t}),(0,n.useLayoutEffect)(()=>{let e=document.createElement("div");e.setAttribute("data-dialog-host",""),document.body.appendChild(e);let t=document.activeElement instanceof HTMLElement?document.activeElement:null,o={host:e,close:()=>p.current()};return u(function(e){R||(window.addEventListener("keydown",F),R=!0);let t=E.length;return E.push(e),D(),t}(o)),d(e),()=>{let a=!document.activeElement||document.activeElement===document.body||e.contains(document.activeElement),n=E.indexOf(o);n>=0&&E.splice(n,1),D(),!E.length&&R&&(window.removeEventListener("keydown",F),R=!1),e.remove(),a&&(null==t?void 0:t.isConnected)&&t.focus({preventScroll:!0})}},[]),(0,n.useEffect)(()=>{var e;let t=m.current;if(!c||!t||t.contains(document.activeElement))return;let o=null!=(e=t.querySelector("[data-autofocus]"))?e:[...t.querySelectorAll(L)].find(e=>!e.hasAttribute("data-dlg-chrome")&&M(e));(null!=o?o:t).focus({preventScroll:!0})},[c]),!c)return null;let g={"--layer":h};return(0,x.createPortal)((0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"scrim",style:g,onClick:t}),(0,a.jsx)("div",{ref:m,className:s,style:{...g,...r},role:i,"aria-modal":"true","aria-labelledby":o,tabIndex:-1,onKeyDown:e=>{if("Tab"!==e.key||!m.current)return;let t=[...m.current.querySelectorAll(L)].filter(M);if(!t.length){e.preventDefault(),m.current.focus();return}let o=t[0],a=t[t.length-1],n=document.activeElement;e.shiftKey&&(n===o||n===m.current)?(e.preventDefault(),a.focus()):e.shiftKey||n!==a||(e.preventDefault(),o.focus())},children:l})]}),c)}function _(e){let{title:t,onClose:o,children:s,wide:r=!1}=e,{t:i}=(0,v.s9)(),l=(0,n.useId)();return(0,a.jsxs)(I,{onClose:o,labelId:l,className:"modal ".concat(r?"wide":""),children:[(0,a.jsxs)("div",{className:"modal-head",children:[(0,a.jsx)("h3",{id:l,children:t}),(0,a.jsx)("button",{type:"button",className:"btn ghost icon sm","data-dlg-chrome":!0,onClick:o,"aria-label":i("common.close"),children:(0,a.jsx)(c.A,{size:17})})]}),s]})}function O(e){let{title:t,subtitle:o,onClose:s,children:r,footer:i}=e,{t:l}=(0,v.s9)(),d=(0,n.useId)(),{width:h,wide:u,toggle:m,gripProps:p}=function(e){let{key:t,min:o,default:a,max:s,side:r="right",expanded:i}=e,l=(0,n.useCallback)(()=>{let e=window.innerWidth;return Math.max(o,"function"==typeof s?s(e):null!=s?s:e-80)},[o,s]),[c,d]=(0,n.useState)(a);(0,n.useEffect)(()=>{let e=Number((0,N.CL)(t,0));e>=o&&d(Math.min(e,l()))},[t,o,l]);let h=e=>(0,N.zS)(t,Math.round(e)),u=c>a+40,m=()=>{let e=window.innerWidth,t="function"==typeof i?i(e):null!=i?i:1100,n=u?a:Math.max(o,Math.min(l(),t));d(n),h(n)};return{width:c,wide:u,toggle:m,gripProps:{onPointerDown:e=>{e.preventDefault();let t=e.currentTarget;t.setPointerCapture(e.pointerId);let a=c,n=e=>{d(a=Math.min(l(),Math.max(o,"right"===r?window.innerWidth-e.clientX:e.clientX)))},s=()=>{t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",s),h(a)};t.addEventListener("pointermove",n),t.addEventListener("pointerup",s)},onDoubleClick:m}}}({key:"hive-am.drawerWidth",min:420,default:560,side:"right"});return(0,a.jsxs)(I,{onClose:s,labelId:d,className:"drawer",style:{width:"min(".concat(h,"px, 100vw)")},children:[(0,a.jsx)("div",{className:"drawer-grip",...p,role:"separator","aria-orientation":"vertical","aria-label":l("drawer.resize"),title:l("drawer.resize")}),(0,a.jsxs)("header",{children:[(0,a.jsxs)("div",{className:"grow",children:[(0,a.jsx)("h2",{id:d,children:t}),o&&(0,a.jsx)("p",{className:"muted small drawer-sub",children:o})]}),(0,a.jsx)("button",{type:"button",className:"btn ghost icon","data-dlg-chrome":!0,onClick:m,"aria-label":l(u?"drawer.shrink":"drawer.expand"),title:l(u?"drawer.shrink":"drawer.expand"),children:u?(0,a.jsx)(S.A,{size:17}):(0,a.jsx)(A.A,{size:17})}),(0,a.jsx)("button",{type:"button",className:"btn ghost icon","data-dlg-chrome":!0,onClick:s,"aria-label":l("common.close"),children:(0,a.jsx)(c.A,{size:18})})]}),(0,a.jsx)("div",{className:"body",children:r}),i&&(0,a.jsx)("footer",{children:i})]})}function B(e){let{title:t,body:o,children:r,confirmLabel:i,cancelLabel:l,danger:c=!1,onConfirm:d,onClose:h}=e,{t:u}=(0,v.s9)(),m=k(),[p,g]=(0,n.useState)(!1),b=async()=>{if(!p){g(!0);try{await d()}catch(e){m(e instanceof Error?e.message:String(e),"err"),g(!1);return}h()}};return(0,a.jsxs)(_,{title:t,onClose:()=>{p||h()},children:[o&&(0,a.jsx)("p",{className:"confirm-body",children:o}),r,(0,a.jsxs)("div",{className:"row confirm-actions",children:[(0,a.jsx)("button",{type:"button",className:"btn","data-autofocus":c?"":void 0,disabled:p,onClick:h,children:null!=l?l:u("common.cancel")}),(0,a.jsxs)("button",{type:"button",className:"btn ".concat(c?"danger":"primary"),"data-autofocus":c?void 0:"",disabled:p,"aria-busy":p,onClick:b,children:[p&&(0,a.jsx)(s.A,{size:14,className:"spin","aria-hidden":!0}),i]})]})]})}let H="tabs",U=(e,t)=>"".concat(e,"-tab-").concat(t),z=(e,t)=>"".concat(e,"-panel-").concat(t);function W(e){var t;let{tabs:o,value:s,onChange:r,label:i,idPrefix:l=H,variant:d="tab"}=e,{t:h}=(0,v.s9)(),u=h("tabs.close"),m=(0,n.useRef)(null),p=o.some(e=>e.id===s&&!e.disabled)?s:null==(t=o.find(e=>!e.disabled))?void 0:t.id;return(0,a.jsx)("div",{ref:m,className:"tabs ".concat("pill"===d?"pill":""),role:"tablist","aria-label":i,onKeyDown:e=>{let t=o.filter(e=>!e.disabled),a=t.findIndex(e=>e.id===s),n=e.target.closest("[role=tab]"),i=o.find(e=>n&&n.id===U(l,e.id));if("Delete"===e.key&&(null==i?void 0:i.onClose)){e.preventDefault(),i.onClose(i.id);return}let c=null;"ArrowRight"===e.key||"ArrowDown"===e.key?c=(a+1)%t.length:"ArrowLeft"===e.key||"ArrowUp"===e.key?c=(a-1+t.length)%t.length:"Home"===e.key?c=0:"End"===e.key&&(c=t.length-1),null!==c&&t.length&&(e.preventDefault(),r(t[c].id),requestAnimationFrame(()=>{var e;return null==(e=document.getElementById(U(l,t[c].id)))?void 0:e.focus()}))},children:o.map(e=>{let t=e.iconOnly&&e.icon&&s!==e.id,o="string"==typeof e.label?e.label:void 0,n=(0,a.jsxs)("button",{id:U(l,e.id),type:"button",role:"tab",className:"tab","aria-selected":s===e.id,"aria-controls":z(l,e.id),"aria-label":t?o:void 0,title:t?o:void 0,tabIndex:p===e.id?0:-1,disabled:e.disabled,onClick:()=>r(e.id),children:[e.icon,!t&&e.label,!t&&void 0!==e.count&&(0,a.jsx)("span",{className:"tab-count",children:e.count})]},e.onClose?void 0:e.id);return e.onClose?(0,a.jsxs)("span",{className:"tabwrap",role:"presentation",children:[n,(0,a.jsx)("button",{type:"button",className:"tab-x",tabIndex:-1,onClick:()=>{var t;return null==(t=e.onClose)?void 0:t.call(e,e.id)},"aria-label":o?"".concat(u,": ").concat(o):u,title:u,children:(0,a.jsx)(c.A,{size:12})})]},e.id):n})})}function V(e){let{id:t,value:o,idPrefix:n=H,children:s,keepMounted:r=!1}=e,i=t===o;return i||r?(0,a.jsx)("div",{id:z(n,t),role:"tabpanel","aria-labelledby":U(n,t),hidden:!i,className:"tabpanel",children:s}):null}var G=o(7708),Q=o(41463),$=o.n(Q),K=o(43624),Y=o(91496),J=o(41435);function X(e){let{back:t,avatar:o,title:n,meta:s,primary:r,actions:i=[]}=e,{t:l}=(0,v.s9)(),c=(0,K.useRouter)();return(0,a.jsxs)("header",{className:"ws-head wsh",children:[t&&(0,a.jsx)($(),{href:t.href,className:"btn ghost icon wsh-back","aria-label":t.label,title:t.label,children:(0,a.jsx)(d.A,{size:18})}),o,(0,a.jsxs)("div",{className:"wsh-id",children:[(0,a.jsx)("h1",{children:n}),s&&(0,a.jsx)("div",{className:"wsh-meta",children:s})]}),(0,a.jsxs)("div",{className:"wsh-actions",children:[i.length>0&&(0,a.jsx)("div",{className:"wsh-wide",children:i.map(e=>e.href?(0,a.jsxs)($(),{href:e.href,className:"btn sm ".concat(e.danger?"danger":""),title:e.hint,children:[e.icon,e.label]},e.id):(0,a.jsxs)("button",{type:"button",className:"btn sm ".concat(e.danger?"danger":""," ").concat(e.pressed?"on":""),disabled:e.disabled,"aria-pressed":e.pressed,title:e.hint,onClick:e.onClick,children:[e.icon,e.label]},e.id))}),i.length>0&&(0,a.jsx)("div",{className:"wsh-narrow",children:(0,a.jsx)(J.W1,{label:l("ws.more"),icon:(0,a.jsx)(Y.A,{size:16}),iconOnly:!0,children:e=>i.map(t=>void 0!==t.pressed?(0,a.jsx)(J.iz,{checked:t.pressed,hint:t.hint,onChange:()=>{var o;null==(o=t.onClick)||o.call(t),e()},children:t.label},t.id):(0,a.jsx)(J.Dr,{icon:t.icon,hint:t.hint,danger:t.danger,disabled:t.disabled,onClick:()=>{var o;e(),t.href?c.push(t.href):null==(o=t.onClick)||o.call(t)},children:t.label},t.id))})}),r]})]})}function Z(e){var t;let{agent:o,size:n,color:s,queen:r,label:i}=e,l=null!=r?r:(null==o?void 0:o.role)==="orchestrator",c=null!=s?s:o?g.xq[o.provider].color:void 0;return(0,a.jsx)("span",{className:"hex ".concat(null!=n?n:""," ").concat(l?"queen":""),style:c&&!l?{"--c":c}:void 0,"aria-hidden":!0,children:null!=i?i:(0,g.yC)(null!=(t=null==o?void 0:o.name)?t:"")})}function ee(e){let{provider:t}=e;return(0,a.jsxs)("span",{className:"pbadge",style:{"--c":g.xq[t].color},children:[(0,a.jsx)("i",{}),g.xq[t].short]})}function et(e){let{status:t}=e,{t:o}=(0,v.s9)();return(0,a.jsxs)("span",{className:"chip",children:[(0,a.jsx)("i",{className:"dot ".concat({idle:"",running:"run",error:"err"}[t])}),o("status.".concat(t))]})}function eo(e){let{role:t}=e,{t:o}=(0,v.s9)();return"orchestrator"===t?(0,a.jsx)("span",{className:"chip honey",children:o("role.orchestrator")}):(0,a.jsx)("span",{className:"chip",children:o("role.worker")})}function ea(e){var t,o;let{label:s,hint:r,error:i,children:l}=e,c=(0,n.useId)(),d="".concat(c,"-c"),h="".concat(c,"-l"),u="".concat(c,"-n"),m=1===n.Children.count(l)?n.Children.toArray(l)[0]:null,p=(0,n.isValidElement)(m)&&("string"==typeof m.type?["input","select","textarea"].includes(m.type):m.type===y.y),g=i||r,v=l;if(p){let e=[m.props["aria-describedby"],g?u:void 0].filter(Boolean).join(" ")||void 0;v=(0,n.cloneElement)(m,{id:null!=(t=m.props.id)?t:d,"aria-describedby":e,...i?{"aria-invalid":!0}:{}})}let b=p?null!=(o=m.props.id)?o:d:void 0;return(0,a.jsxs)("div",{className:"field",...p?{}:{role:"group","aria-labelledby":h,"aria-describedby":g?u:void 0},children:[(0,a.jsx)("label",{id:h,htmlFor:b,children:s}),v,i?(0,a.jsx)("span",{id:u,className:"field-err",children:i}):r?(0,a.jsx)("span",{id:u,className:"hint",children:r}):null]})}function en(e){let{value:t,onChange:o,options:n}=e;return(0,a.jsx)("div",{className:"seg",role:"group",children:n.map(e=>(0,a.jsx)("button",{type:"button","aria-pressed":t===e.id,disabled:e.disabled,title:e.title,onClick:()=>o(e.id),children:e.label},e.id))})}function es(e){let{value:t,onChange:o,providers:n}=e,{t:s}=(0,v.s9)();return(0,a.jsx)("div",{className:"pcards",children:Object.keys(g.xq).map(e=>{let r=n.find(t=>t.id===e);return(0,a.jsxs)("button",{type:"button",className:"pcard","aria-pressed":t===e,style:{"--c":g.xq[e].color},onClick:()=>o(e),children:[(0,a.jsx)("b",{children:g.xq[e].label}),(0,a.jsx)("span",{children:(0,g.zX)(e)}),r&&(0,a.jsx)("span",{className:"tag",style:{color:r.installed?"var(--ok)":"var(--err)"},children:r.installed?s("provider.installed"):s("provider.notFound")})]},e)})})}function er(e){let{provider:t,value:o,onChange:c}=e,{t:d}=(0,v.s9)(),[h,u]=(0,n.useState)(null),[g,b]=(0,n.useState)(!1),[y,w]=(0,n.useState)(""),[k,j]=(0,n.useState)(0),C=(0,n.useRef)(null),x=(0,n.useRef)(null),S=(0,n.useRef)(null);(0,n.useEffect)(()=>{u(null),p.FH.get("/providers/".concat(t,"/models")).then(u).catch(()=>u([]))},[t]),(0,m.s)(g,C,()=>{b(!1),w("")}),(0,n.useEffect)(()=>{g&&requestAnimationFrame(()=>{var e;return null==(e=x.current)?void 0:e.focus()})},[g]),(0,n.useEffect)(()=>{j(0)},[y,g]),(0,n.useEffect)(()=>{var e,t;null==(t=S.current)||null==(e=t.querySelector('[aria-selected="true"]'))||e.scrollIntoView({block:"nearest"})},[k]);let A=y.trim().toLowerCase(),N=(null!=h?h:[]).filter(e=>!A||"".concat(e.label," ").concat(e.id).toLowerCase().includes(A)),E=y.trim(),T=E&&!(null!=h?h:[]).some(e=>e.id.toLowerCase()===E.toLowerCase()),q=[...A?[]:[{id:"",label:d("model.cliDefault"),hint:d("model.cliDefault.hint"),kind:"default"}],...N.map(e=>({id:e.id,label:e.label||e.id,hint:e.label&&e.label!==e.id?e.id:void 0})),...T?[{id:E,label:d("model.custom",{id:E}),kind:"custom"}]:[]],R=(0,f.B)(g,k,q.length),P=e=>{c(e.id),b(!1),w("")},L=o?(null!=h?h:[]).find(e=>e.id===o):void 0;return(0,a.jsx)(ea,{label:d("field.model"),hint:d(null===h?"model.loading":h.length?"model.pick":"model.none"),children:(0,a.jsxs)("div",{className:"sg mdl",ref:C,children:[(0,a.jsxs)("button",{type:"button",className:"input mdl-btn ".concat(g?"open":""),"aria-haspopup":"listbox","aria-expanded":g,onClick:()=>b(e=>!e),children:[(0,a.jsx)("span",{className:"mdl-cur",children:o?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("b",{children:(null==L?void 0:L.label)||o}),L&&L.label!==o&&(0,a.jsx)("i",{children:o})]}):(0,a.jsx)("span",{className:"muted",children:d("model.cliDefault")})}),null===h?(0,a.jsx)(s.A,{size:14,className:"spin","aria-hidden":!0}):(0,a.jsx)(r.A,{size:15,"aria-hidden":!0})]}),g&&(0,a.jsxs)("div",{className:"sg-list mdl-pop",children:[(0,a.jsxs)("div",{className:"mdl-search",children:[(0,a.jsx)(i.A,{size:14,"aria-hidden":!0}),(0,a.jsx)("input",{ref:x,value:y,placeholder:d("model.search"),"aria-label":d("model.search"),autoComplete:"off",spellCheck:!1,...R.input,onChange:e=>w(e.target.value),onKeyDown:e=>{"ArrowDown"===e.key?(e.preventDefault(),j(e=>Math.min(q.length-1,e+1))):"ArrowUp"===e.key?(e.preventDefault(),j(e=>Math.max(0,e-1))):"Enter"===e.key?(e.preventDefault(),q[k]&&P(q[k])):"Escape"===e.key&&(e.stopPropagation(),b(!1),w(""))}})]}),(0,a.jsxs)("ul",{ref:S,...R.listProps,className:"mdl-opts",children:[null===h&&(0,a.jsx)("li",{className:"sg-empty",children:d("model.loading")}),null!==h&&0===q.length&&(0,a.jsx)("li",{className:"sg-empty",children:d("model.none")}),q.map((e,t)=>{var n,s;return(0,a.jsx)("li",{...R.optionProps(t),children:(0,a.jsxs)("button",{type:"button",className:"sg-opt ".concat(t===k?"hi":""," ").concat(null!=(n=e.kind)?n:""),onMouseDown:e=>e.preventDefault(),onMouseEnter:()=>j(t),onClick:()=>P(e),children:[(0,a.jsx)("span",{className:"nm",children:e.label}),e.hint&&(0,a.jsx)("span",{className:"hint",children:e.hint}),e.id===o&&"custom"!==e.kind&&(0,a.jsx)(l.A,{size:14,className:"mdl-ok","aria-hidden":!0})]})},"".concat(null!=(s=e.kind)?s:"m",":").concat(e.id))})]})]})]})})}function ei(e){var t;let{value:o,onChange:n,locked:s=[]}=e,{t:r}=(0,v.s9)(),i=(0,g.P)();return(0,a.jsx)(ea,{label:r("permission.title"),hint:null==(t=i.find(e=>e.id===o))?void 0:t.hint,children:(0,a.jsx)(en,{value:o,onChange:n,options:i.map(e=>({id:e.id,label:e.label,disabled:s.includes(e.id),title:s.includes(e.id)?r("permission.lockedByConnection"):void 0}))})})}function el(e){let{skills:t,value:o,loads:s,onChange:r}=e,{t:l}=(0,v.s9)(),[d,h]=(0,n.useState)(""),[u,m]=(0,n.useState)(!1),[p,g]=(0,n.useState)(0),y=e=>{var t;return null!=(t=s[e.id])?t:e.load},w=o.map(e=>t.find(t=>t.id===e)).filter(e=>!!e),k=w.reduce((e,t)=>e+(0,b.m9)({...t,load:y(t)}),0),j=d.trim().toLowerCase(),C=t.filter(e=>!o.includes(e.id)&&(!j||"".concat(e.name," ").concat(e.description).toLowerCase().includes(j))),x=u||!!j,S=(0,f.B)(x,p,C.length);(0,n.useEffect)(()=>{g(0)},[d]);let A=(0,n.useRef)(null);if((0,n.useEffect)(()=>{var e;x&&(null==(e=A.current)||e.scrollIntoView({block:"nearest"}))},[x,d]),!t.length)return(0,a.jsx)("p",{className:"hint",children:l("skillPicker.empty")});let N=(e,o)=>r(e,Object.fromEntries(e.map(e=>{var a,n,s;return[e,null!=(s=null!=(n=o[e])?n:null==(a=t.find(t=>t.id===e))?void 0:a.load)?s:"always"]}))),E=e=>{N([...o,e.id],{...s,[e.id]:e.load}),h("")},T=e=>N(o.filter(t=>t!==e),s);return(0,a.jsxs)("div",{className:"skillpick",children:[w.length>0&&(0,a.jsx)("div",{className:"skillpills",children:w.map(e=>{let t="on_demand"===y(e),n=(0,b.Aq)((0,b.NO)(e.content));return(0,a.jsxs)("span",{className:"skillpill",title:e.description||void 0,children:[e.name,(0,a.jsx)("button",{type:"button",className:"skillmode".concat(t?" lazy":""),onClick:()=>N(o,{...s,[e.id]:"always"===y(e)?"on_demand":"always"}),"aria-pressed":t,title:l(t?"skillPicker.mode.lazy.hint":"skillPicker.mode.always.hint",{tokens:n}),children:l(t?"skillPicker.mode.lazy":"skillPicker.mode.always")}),(0,a.jsx)("button",{type:"button",onClick:()=>T(e.id),"aria-label":l("skillPicker.remove",{name:e.name}),title:l("skillPicker.remove",{name:e.name}),children:(0,a.jsx)(c.A,{size:12})})]},e.id)})}),w.length>0&&(0,a.jsxs)("p",{className:"hint".concat(k>b.Ur?" warn":""),style:{margin:0},children:[l("skillPicker.weight",{always:(0,b.Aq)(k),onDemand:w.filter(e=>"on_demand"===y(e)).length}),k>b.Ur?" ".concat(l("skillPicker.heavy")):""]}),(0,a.jsxs)("div",{className:"search",children:[(0,a.jsx)(i.A,{size:15,"aria-hidden":!0}),(0,a.jsx)("input",{className:"input",value:d,onChange:e=>h(e.target.value),onFocus:()=>m(!0),onBlur:()=>m(!1),onKeyDown:e=>{"ArrowDown"===e.key?(e.preventDefault(),g(e=>Math.min(e+1,C.length-1))):"ArrowUp"===e.key?(e.preventDefault(),g(e=>Math.max(e-1,0))):"Enter"===e.key?(e.preventDefault(),C[p]&&E(C[p])):"Escape"===e.key?(x&&e.stopPropagation(),h(""),e.currentTarget.blur()):"Backspace"===e.key&&!d&&w.length&&T(w[w.length-1].id)},placeholder:l("skillPicker.search"),"aria-label":l("skillPicker.search"),...S.input})]}),x&&(0,a.jsx)("div",{className:"skillopts",...S.listProps,ref:A,children:0===C.length?(0,a.jsx)("p",{className:"hint",style:{margin:0,padding:"8px 10px"},children:j?l("skillPicker.noMatch",{query:d.trim()}):l("skillPicker.allAdded")}):C.map((e,t)=>(0,a.jsxs)("button",{type:"button",tabIndex:-1,...S.optionProps(t),className:"skillopt".concat(t===p?" on":""),onMouseDown:e=>e.preventDefault(),onMouseEnter:()=>g(t),onClick:()=>E(e),children:[(0,a.jsxs)("b",{children:[e.name," ",(0,a.jsxs)("span",{className:"skillopt-w",children:["~",(0,b.Aq)((0,b.NO)(e.content))," tokens"]})]}),(0,a.jsx)("span",{className:"hint",children:e.description||l("common.noDescription")})]},e.id))})]})}function ec(e){var t,o;let{value:r,onChange:i,error:l,label:c,hint:m,mode:g="dir",exts:b,bare:f=!1,buttonLabel:y,placeholder:w}=e,{t:k}=(0,v.s9)(),[j,C]=(0,n.useState)(!1),[x,S]=(0,n.useState)(null),[A,N]=(0,n.useState)(!1),[E,T]=(0,n.useState)(null),q="file"===g?(null!=b?b:[]).join(","):"",R=(0,n.useCallback)(e=>(N(!0),T(null),p.FH.get("/fs/dirs?".concat(e?"path=".concat(encodeURIComponent(e),"&"):"").concat(q?"files=".concat(encodeURIComponent(q)):"")).then(S).catch(t=>T({msg:t instanceof Error?t.message:String(t),path:e})).finally(()=>N(!1))),[q]),P="file"===g&&r.includes("/")?r.slice(0,r.lastIndexOf("/"))||"/":r;(0,n.useEffect)(()=>{j&&R(P||void 0)},[j]);let L=e=>{i(e),C(!1)},D=j&&(A&&!x||E)&&(0,a.jsx)("div",{className:"picker","aria-busy":A,children:E?(0,a.jsxs)("div",{className:"picker-state err",role:"alert",children:[(0,a.jsxs)("span",{children:[k("folder.error"),(null==E?void 0:E.msg)?": ".concat(E.msg):""]}),(0,a.jsx)("button",{type:"button",className:"btn sm",onClick:()=>void R(null==E?void 0:E.path),children:k("folder.retry")})]}):(0,a.jsxs)("p",{className:"hint picker-state",children:[(0,a.jsx)(s.A,{size:14,className:"spin","aria-hidden":!0}),k("folder.loading")]})}),F=j&&!E&&x&&(0,a.jsxs)("div",{className:"picker",children:[(0,a.jsxs)("div",{className:"path",children:[(0,a.jsx)("button",{type:"button",className:"btn ghost icon sm",disabled:!x.parent,onClick:()=>x.parent&&R(x.parent),"aria-label":k("folder.up"),children:(0,a.jsx)(d.A,{size:14})}),(0,a.jsx)("span",{className:"grow",style:{overflow:"hidden",textOverflow:"ellipsis"},children:x.path}),"dir"===g&&(0,a.jsx)("button",{type:"button",className:"btn sm primary",onClick:()=>L(x.path),children:k("folder.use")})]}),(0,a.jsxs)("ul",{children:[x.dirs.map(e=>(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",onClick:()=>R(e.path),children:[(0,a.jsx)(h.A,{size:15,className:"muted"}),e.name]})},e.path)),"file"===g&&(null!=(o=x.files)?o:[]).map(e=>(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",onClick:()=>L(e.path),children:[(0,a.jsx)(u.A,{size:15,className:"muted"}),e.name]})},e.path)),!x.dirs.length&&!("file"===g&&(null==(t=x.files)?void 0:t.length))&&(0,a.jsx)("li",{className:"hint",style:{padding:"10px 12px"},children:k("file"===g?"folder.emptyFiles":"folder.empty")})]})]});return f?(0,a.jsxs)("div",{children:[(0,a.jsxs)("button",{type:"button",className:"btn sm",onClick:()=>C(e=>!e),children:[(0,a.jsx)(h.A,{size:15}),null!=y?y:k("folder.browse")]}),D,F]}):(0,a.jsxs)(ea,{label:null!=c?c:k("field.folder"),hint:null!=m?m:k("folder.hint"),error:l,children:[(0,a.jsxs)("div",{className:"row gap-s",children:[(0,a.jsx)("input",{className:"input mono",value:r,onChange:e=>i(e.target.value),placeholder:null!=w?w:k("folder.placeholder"),spellCheck:!1}),(0,a.jsxs)("button",{type:"button",className:"btn",onClick:()=>C(e=>!e),children:[(0,a.jsx)(h.A,{size:16}),k("folder.browse")]})]}),D,F]})}let ed=e=>(0,a.jsx)(ec,{...e,mode:"dir"})},21018:(e,t,o)=>{o.d(t,{s:()=>n});var a=o(34023);function n(e,t,o,n){(0,a.useEffect)(()=>{if(!e)return;let a=e=>{t.current&&!t.current.contains(e.target)&&o()},s=e=>{"Escape"===e.key&&(o(),null==n||n())};return document.addEventListener("mousedown",a),document.addEventListener("keydown",s),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",s)}},[e])}},41435:(e,t,o)=>{o.d(t,{Dr:()=>c,MU:()=>u,W1:()=>l,iz:()=>d,rX:()=>h});var a=o(94799),n=o(34023),s=o(12349),r=o(72705),i=o(21018);function l(e){let{label:t,icon:o,iconOnly:r=!1,children:l}=e,[c,d]=(0,n.useState)(!1),[h,u]=(0,n.useState)(!1),[m,p]=(0,n.useState)(void 0),g=(0,n.useRef)(null),v=(0,n.useRef)(null),b=(0,n.useRef)(null),f=()=>d(!1);return(0,i.s)(c,g,f,()=>{var e;return null==(e=b.current)?void 0:e.focus()}),(0,n.useLayoutEffect)(()=>{if(!c||!v.current||!b.current)return;let e=b.current.getBoundingClientRect(),t=v.current.scrollHeight+14,o=window.innerHeight-e.bottom-12,a=e.top-12,n=t>o&&a>o;u(n),p(Math.max(160,Math.min(t,n?a:o)))},[c]),(0,n.useEffect)(()=>{var e,t;c&&(null==(t=v.current)||null==(e=t.querySelector("[role^=menuitem]:not([disabled])"))||e.focus())},[c]),(0,a.jsxs)("div",{className:"menu",ref:g,onKeyDown:e=>{var t,o,a,n,s,r;if(!c)return;let i=[...null!=(o=null==(t=v.current)?void 0:t.querySelectorAll("[role^=menuitem]:not([disabled])"))?o:[]],l=i.indexOf(document.activeElement);"ArrowDown"===e.key?(e.preventDefault(),null==(a=i[(l+1)%i.length])||a.focus()):"ArrowUp"===e.key?(e.preventDefault(),null==(n=i[(l-1+i.length)%i.length])||n.focus()):"Home"===e.key?(e.preventDefault(),null==(s=i[0])||s.focus()):"End"===e.key?(e.preventDefault(),null==(r=i[i.length-1])||r.focus()):"Tab"===e.key&&f()},children:[r?(0,a.jsx)("button",{ref:b,className:"btn ghost icon sm",onClick:()=>d(e=>!e),"aria-expanded":c,"aria-haspopup":"menu","aria-label":t,title:t,children:o}):(0,a.jsxs)("button",{ref:b,className:"btn sm",onClick:()=>d(e=>!e),"aria-expanded":c,"aria-haspopup":"menu",children:[o,t,(0,a.jsx)(s.A,{size:13})]}),c&&(0,a.jsx)("div",{ref:v,className:"menu-pop ".concat(h?"up":""),role:"menu","aria-label":t,style:m?{maxHeight:m}:void 0,children:l(f)})]})}function c(e){let{onClick:t,icon:o,hint:n,danger:s=!1,disabled:r=!1,children:i}=e;return(0,a.jsxs)("button",{type:"button",role:"menuitem",className:"menu-item ".concat(s?"danger":""),disabled:r,onClick:t,children:[(0,a.jsx)("span",{className:"mi-ic",children:o}),(0,a.jsxs)("span",{className:"mi-tx",children:[(0,a.jsx)("span",{className:"mi-lb",children:i}),n&&(0,a.jsx)("small",{children:n})]})]})}function d(e){let{checked:t,onChange:o,hint:n,children:s}=e;return(0,a.jsxs)("button",{type:"button",role:"menuitemcheckbox","aria-checked":t,className:"menu-item",onClick:()=>o(!t),children:[(0,a.jsx)("span",{className:"mi-ic",children:(0,a.jsx)("span",{className:"mi-box ".concat(t?"on":""),children:t&&(0,a.jsx)(r.A,{size:12,strokeWidth:3})})}),(0,a.jsxs)("span",{className:"mi-tx",children:[(0,a.jsx)("span",{className:"mi-lb",children:s}),n&&(0,a.jsx)("small",{children:n})]})]})}let h=e=>{let{label:t,children:o}=e;return(0,a.jsxs)("div",{role:"group","aria-label":t,children:[(0,a.jsx)("div",{className:"menu-group",children:t}),o]})},u=()=>(0,a.jsx)("div",{className:"menu-sep",role:"separator"})},47890:(e,t,o)=>{o.d(t,{Ck:()=>l,KN:()=>d,Ng:()=>m,P:()=>c,_1:()=>h,hg:()=>p,xq:()=>s,yC:()=>u,zX:()=>r});var a=o(68419),n=o(56072);let s={claude:{label:"Claude Code",short:"Claude",color:"var(--p-claude)"},opencode:{label:"OpenCode",short:"OpenCode",color:"var(--p-opencode)"},kiro:{label:"Kiro",short:"Kiro",color:"var(--p-kiro)"}},r=e=>(0,a.Tl)("provider.".concat(e,".blurb")),i=["plan","acceptEdits","bypassPermissions"],l=e=>(0,a.Tl)("permission.".concat(e,".label")),c=()=>i.map(e=>({id:e,label:l(e),hint:(0,a.Tl)("permission.".concat(e,".hint"))}));function d(e){if(!e)return"—";let t=Math.max(1,Math.round((Date.now()-e)/1e3));if(t<60)return(0,a.Tl)("time.justNow");let o=Math.round(t/60);if(o<60)return(0,a.Tl)("time.minutesAgo",{count:o});let s=Math.round(o/60);if(s<24)return(0,a.Tl)("time.hoursAgo",{count:s});let r=Math.round(s/24);return r<30?(0,a.Tl)("time.daysAgo",{count:r}):(0,n.qw)(e)}let h=e=>e.replace(/^\/home\/[^/]+/,"~"),u=e=>e.split(/[\s_-]+/).filter(Boolean).slice(0,2).map(e=>e[0]).join("").toUpperCase()||"?",m="var(--cluster, #c0399a)",p=["#2f8f5b","#d4663f","#2f5bea","#7a4de0","#c0399a","#0f8f9e","#9a7400","#c2412d"]},48538:(e,t,o)=>{o.d(t,{M_:()=>p,Of:()=>w,SV:()=>g,Tu:()=>h,fJ:()=>v,o0:()=>f,q5:()=>m,zd:()=>b});var a=o(94799),n=o(34023),s=o(3749),r=o(69538);let i=["agents","types","skills","colonies","connections","objects","dispatches"],l={agents:()=>s.FH.get("/agents"),types:()=>s.FH.get("/types"),skills:()=>s.FH.get("/skills"),colonies:()=>s.FH.get("/colonies"),connections:()=>s.FH.get("/connections"),objects:()=>s.FH.get("/objects"),dispatches:()=>s.FH.get("/dispatches")},c=(0,n.createContext)(null),d=()=>{let e=(0,n.useContext)(c);if(!e)throw Error("HiveProvider missing");return e};function h(e){let t=d();return(0,n.useSyncExternalStore)(t.sub,()=>e(t.get()),()=>e(t.get()))}let u=["ready","connected","error","agents","types","skills","colonies","connections","objects","providers","dispatches"];function m(){let e=d(),t=(0,n.useRef)(null),o=()=>{let o=e.get(),a=t.current;if(a&&u.every(e=>Object.is(a[e],o[e])))return a;let n={...e.actions};for(let e of u)n[e]=o[e];return t.current=n};return(0,n.useSyncExternalStore)(e.sub,o,o)}let p=e=>h(t=>e?t.live[e]:void 0),g=e=>h(t=>{var o;return e&&null!=(o=t.finished[e])?o:0}),v=e=>h(t=>e?t.agents.find(t=>t.id===e):void 0),b=()=>d().actions;function f(){let e=d(),t=(0,n.useRef)(null),o=()=>{var o;let a=e.get();return(null==(o=t.current)?void 0:o.s)!==a&&(t.current={s:a,v:{...a,...e.actions}}),t.current.v};return(0,n.useSyncExternalStore)(e.sub,o,o)}let y={ready:!1,connected:!1,error:null,agents:[],types:[],skills:[],colonies:[],connections:[],objects:[],providers:[],dispatches:[],live:{},finished:{}};function w(e){let{children:t}=e,o=(0,n.useRef)(null),d=(0,n.useRef)({retry:void 0,disp:void 0,attempts:0});if(!o.current){let e=y,t=new Set,a=new Map,n=o=>{let a=function(e,t){var o,a,n,s,r,i,l,c,d,h,u,m,p,g,v,b;switch(t.k){case"data":return Object.keys(t.p).every(o=>Object.is(e[o],t.p[o]))?e:{...e,...t.p};case"conn":return{...e,connected:t.v};case"turn_start":return{...e,live:{...e.live,[t.agentId]:{turnId:t.turnId,prompt:t.prompt,source:t.source,from:t.from,blocks:[],startedAt:Date.now()}}};case"event":{let b=e.live[t.agentId];if(!b||b.turnId!==t.turnId)return e;let f={...b,blocks:function(e,t){let o=e.slice(),a=o[o.length-1];if("text"===t.t||"thinking"===t.t){let e="text"===t.t?"text":"thinking";a&&a.type===e?o[o.length-1]={...a,text:a.text+t.delta}:o.push({type:e,text:t.delta})}else if("tool"===t.t)o.push({type:"tool",id:t.id,name:t.name,input:t.input,startedAt:Date.now()});else if("tool_result"===t.t){let e=o.findIndex(e=>"tool"===e.type&&e.id===t.id);if(e>=0){let a=o[e];o[e]={...a,output:t.output,error:t.error,durationMs:a.startedAt?Date.now()-a.startedAt:void 0}}}return o}(b.blocks,t.ev)};if("error"===t.ev.t&&(f.error=t.ev.message),"usage"===t.ev.t){let e=t.ev.usage,b=null!=(o=f.usage)?o:{};f.usage={input:(null!=(a=b.input)?a:0)+(null!=(n=e.input)?n:0),output:(null!=(s=b.output)?s:0)+(null!=(r=e.output)?r:0),cacheRead:(null!=(i=b.cacheRead)?i:0)+(null!=(l=e.cacheRead)?l:0),cacheWrite:(null!=(c=b.cacheWrite)?c:0)+(null!=(d=e.cacheWrite)?d:0),reasoning:(null!=(h=b.reasoning)?h:0)+(null!=(u=e.reasoning)?u:0),credits:null!=(m=e.credits)?m:b.credits,contextPct:null!=(p=e.contextPct)?p:b.contextPct},f.cost=null!=(g=t.ev.cost)?g:f.cost,f.model=null!=(v=t.ev.model)?v:f.model}return{...e,live:{...e.live,[t.agentId]:f}}}case"status":{let o=e.agents.map(e=>e.id===t.agentId?{...e,status:t.status,queued:t.queued}:e);if("running"===t.status)return{...e,agents:o};let a={...e.live},n=!!a[t.agentId];return"error"!==t.status&&delete a[t.agentId],{...e,agents:o,live:a,finished:n?{...e.finished,[t.agentId]:(null!=(b=e.finished[t.agentId])?b:0)+1}:e.finished}}}}(e,o);a!==e&&(e=a,t.forEach(e=>e()))},r=async function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,o={},s=0;await Promise.all(t.map(async e=>{try{o[e]=await l[e](),a.delete(e),s++}catch(t){a.set(e,t instanceof Error?t.message:String(t))}})),n({k:"data",p:{...o,...s?{ready:!0}:{},error:null!=(e=a.values().next().value)?e:null}});let c=d.current;clearTimeout(c.retry),a.size?c.retry=setTimeout(()=>void r([...a.keys()]),Math.min(15e3,2e3*2**c.attempts++)):c.attempts=0};o.current={get:()=>e,set:n,sub:e=>(t.add(e),()=>{t.delete(e)}),actions:{refresh:r,retry:async()=>{await Promise.all([r(),s.FH.get("/providers").then(e=>n({k:"data",p:{providers:e}})).catch(()=>void 0)])},agent:t=>e.agents.find(e=>e.id===t),clearLive:e=>n({k:"status",agentId:e,status:"idle",queued:0})}}}let h=o.current;(0,n.useEffect)(()=>{let e=d.current;return h.actions.retry(),()=>{clearTimeout(e.retry),clearTimeout(e.disp)}},[h]);let u=(0,n.useRef)(0);return(0,n.useEffect)(()=>{let e,t=null,o=!1,{refresh:a}=h.actions,n=h.set,i=()=>{clearTimeout(d.current.disp),d.current.disp=setTimeout(()=>void a(["dispatches"]),400)},l=()=>{(t=new WebSocket(function(){var e;let t=null!=(e=r.env.NEXT_PUBLIC_HIVE_WS_PORT)?e:"4400";return"".concat("https:"===location.protocol?"wss":"ws","://").concat(""===t?location.host:"".concat(location.hostname,":").concat(t),"/ws")}())).onopen=()=>{u.current=0,n({k:"conn",v:!0}),a(["agents","dispatches"]),s.FH.get("/agents").then(e=>e.filter(e=>e.live).forEach(e=>s.FH.get("/agents/".concat(e.id,"/live")).then(t=>{t&&(n({k:"turn_start",agentId:e.id,turnId:t.turnId,prompt:t.prompt,source:t.source}),t.events.forEach(o=>n({k:"event",agentId:e.id,turnId:t.turnId,ev:o})))}))).catch(()=>void 0)},t.onmessage=e=>{try{let t=JSON.parse(e.data);"agents_changed"===t.kind?(a(["agents","colonies","connections"]),i()):"objects_changed"===t.kind?a(["objects"]):"turn_start"===t.kind?(n({k:"turn_start",agentId:t.agentId,turnId:t.turnId,prompt:t.prompt,source:t.source,from:t.from}),"dispatch"===t.source&&i()):"event"===t.kind?n({k:"event",agentId:t.agentId,turnId:t.turnId,ev:t.event}):"status"===t.kind&&(n({k:"status",agentId:t.agentId,status:"queued"===t.status?"running":t.status,queued:t.queued}),("idle"===t.status||"error"===t.status)&&i())}catch(e){}},t.onclose=()=>{n({k:"conn",v:!1}),o||(e=setTimeout(l,Math.min(8e3,800*2**u.current++)))}};return l(),()=>{o=!0,clearTimeout(e),null==t||t.close()}},[h]),(0,a.jsx)(c.Provider,{value:h,children:t})}},48539:(e,t,o)=>{o.d(t,{B:()=>n});var a=o(34023);function n(e,t,o){let n=(0,a.useId)(),s="".concat(n,"-list"),r=e=>"".concat(n,"-opt-").concat(e);return{input:{role:"combobox","aria-autocomplete":"list","aria-haspopup":"listbox","aria-expanded":e,"aria-controls":e?s:void 0,"aria-activedescendant":e&&o>0&&t>=0&&t<o?r(t):void 0},listProps:{id:s,role:"listbox"},optionProps:e=>({id:r(e),role:"option","aria-selected":e===t})}}},56072:(e,t,o)=>{o.d(t,{F0:()=>r,RP:()=>l,Xd:()=>u,_E:()=>n,nc:()=>i,qw:()=>d,v7:()=>h,yj:()=>s,zi:()=>c});var a=o(68419);let n=e=>e.toLocaleString((0,a.uE)()),s=e=>e>=1e6?"".concat((e/1e6).toFixed(2),"M"):e>=1e4?"".concat((e/1e3).toFixed(1),"k"):e>=1e3?"".concat((e/1e3).toFixed(2),"k"):String(Math.round(e)),r=e=>0===e?"$0":e<.01?"<$0.01":e<1?"$".concat(e.toFixed(3)):"$".concat(e.toFixed(2));function i(e){if(!e||e<0)return"0s";if(e<1e3)return"".concat(Math.round(e),"ms");let t=e/1e3;if(t<10)return"".concat(t.toFixed(1),"s");if(t<60)return"".concat(Math.round(t),"s");let o=Math.floor(t/60);return o<60?"".concat(o,"m ").concat(Math.round(t%60),"s"):"".concat(Math.floor(o/60),"h ").concat(o%60,"m")}let l=e=>e?e.input+e.output+e.cacheRead+e.cacheWrite:0;function c(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(+(e<10240))," KB"):"".concat((e/1024/1024).toFixed(1)," MB")}let d=e=>new Date(e).toLocaleDateString((0,a.VR)(),{day:"2-digit",month:"2-digit",year:"numeric"}),h=e=>new Date(e).toLocaleString((0,a.VR)(),{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}),u=e=>new Date(e).toLocaleTimeString((0,a.VR)(),{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})},66843:(e,t,o)=>{o.d(t,{y:()=>l});var a=o(94799),n=o(34023),s=o(58960),r=o(7168),i=o(69654);function l(e){let{masked:t=!0,className:o="input mono",...l}=e,{t:c}=(0,i.s9)(),[d,h]=(0,n.useState)(!1),u=t&&!d;return(0,a.jsxs)("span",{className:"pw",children:[(0,a.jsx)("input",{...l,className:o,type:u?"password":"text"}),t&&(0,a.jsx)("button",{type:"button",className:"pw-eye",onClick:()=>h(e=>!e),"aria-pressed":d,"aria-label":c(d?"common.hidePassword":"common.showPassword"),title:c(d?"common.hidePassword":"common.showPassword"),children:d?(0,a.jsx)(s.A,{size:15}):(0,a.jsx)(r.A,{size:15})})]})}},68419:(e,t,o)=>{o.d(t,{YZ:()=>n,Nf:()=>s,VR:()=>d,ED:()=>u,uE:()=>c,Au:()=>l,Tl:()=>h,YF:()=>p});let a={"app.tagline":"agent colony manager","nav.main":"Main","nav.colony":"Colony","nav.agents":"Agents","nav.relations":"Relations","nav.library":"Library","nav.types":"Agent types","nav.skills":"Skills","nav.history":"History","nav.sessions":"Sessions","nav.connected":"Connected to server","nav.offline":"Server offline. Retrying…","nav.switchTheme":"Switch theme","lang.label":"Language","time.justNow":"just now","time.minutesAgo_one":"{count} min ago","time.minutesAgo_other":"{count} min ago","time.hoursAgo_one":"{count} h ago","time.hoursAgo_other":"{count} h ago","time.daysAgo_one":"{count} d ago","time.daysAgo_other":"{count} d ago","provider.claude.blurb":"Anthropic’s coding agent. Streams tokens, resumes by session id.","provider.opencode.blurb":"Open-source agent over any model provider you have configured.","provider.kiro.blurb":"AWS’s agentic CLI with spec-driven workflows.","provider.installed":"● installed","provider.notFound":"● not found","permission.plan.label":"Read-only","permission.plan.hint":"Plans and reads; never edits files or runs commands.","permission.acceptEdits.label":"Edit files","permission.acceptEdits.hint":"Edits files freely; other risky actions follow the CLI’s own rules.","permission.bypassPermissions.label":"Full access","permission.bypassPermissions.hint":"Runs anything without asking. Use in throwaway folders.","permission.title":"What can it do?","role.orchestrator":"Orchestrator","role.worker":"Worker","status.idle":"Idle","status.running":"Working","status.error":"Needs attention","server.invalidJson":"Request body is not valid JSON","server.nameRequired":"Name is required","server.unknownProvider":'Unknown provider "{name}"',"server.unknownProviderShort":"Unknown provider","server.pickProvider":"Pick a provider","server.badRole":"Role must be orchestrator or worker","server.folderMissing":"Folder does not exist: {path}","server.notFolder":"Not a folder","server.colonyGone":"That colony no longer exists","server.agentExists":'An agent named "{name}" already exists',"server.skillExists":'A skill named "{name}" already exists',"server.typeExists":'A type named "{name}" already exists',"server.colonyExists":'A colony named "{name}" already exists',"server.needFolderOrColony":"Choose a working folder, or put the agent in a colony that provides one.","server.needFolderOrInherit":"Choose a working folder, or keep inheriting the colony’s folder.","server.agentNotFound":"Agent not found","server.skillNotFound":"Skill not found","server.typeNotFound":"Type not found","server.colonyNotFound":"Colony not found","server.messageEmpty":"Message is empty","server.onlyOwnSessions":"Only the agent’s own conversations can be made current. Delegated sessions are read-only.","server.sessionNotOwned":"That session does not belong to this agent","server.onlyOrchestrators":"Only orchestrators can have subagents","server.dispatchFields":"from, agent and task are required","server.unknownOrchestrator":"Unknown orchestrator","server.noAgentNamed":'No agent named "{name}"',"server.notAssigned":'"{worker}" is not assigned to {orchestrator}',"server.unexpected":"Unexpected server error","server.noRoute":"No such route","server.notFound":"Not found","server.noWorkingFolder":"This agent has no working folder. Set one on the agent or on its colony.","server.agentGone":"Agent no longer exists","server.requestFailed":"Request failed ({status})","common.cancel":"Cancel","common.close":"Close","drawer.resize":"Drag to resize \xb7 double-click to expand","drawer.expand":"Expand panel","drawer.shrink":"Shrink panel","common.back":"Back","common.saving":"Saving…","common.delete":"Delete","common.edit":"Edit","common.discard":"Discard","common.hide":"Hide","common.dismiss":"Dismiss","common.noDescription":"No description","common.copy":"Copy","common.copied":"Copied","common.clearFilters":"Clear filters","common.all":"All","common.working":"Working","field.model":"Model","model.loading":"Loading the models this CLI offers…","model.pick":"Pick a model, or type any model id to use one that is not listed.","model.none":"Could not list models. Open the selector and type a model id, or keep the CLI’s default.","model.search":"Search, or type a model id","model.custom":"Use “{id}”","model.cliDefault.hint":"the CLI chooses","model.cliDefault":"CLI default","field.folder":"Working folder","folder.hint":"The agent runs here, and each folder keeps its own native sessions.","folder.placeholder":"/home/you/project","folder.browse":"Browse","folder.up":"Up one folder","folder.use":"Use this folder","folder.empty":"No subfolders here.","folder.emptyFiles":"No folders or matching files here.","obj.f.file.hint":"The docker-compose.yml (or .yaml) of the project.","obj.f.volumes.add":"Add a folder of this machine","skillPicker.search":"Search skills to add…","skillPicker.noMatch":"No skill matches “{query}”.","skillPicker.allAdded":"You added every skill.","skillPicker.remove":"Remove {name}","skillPicker.weight":"Always in the prompt: ~{always} tokens \xb7 {onDemand} on demand.","skillPicker.heavy":"That is a lot: move the longest ones to “On demand”.","tool.skillRead":"Load skill","skillPicker.mode.always":"always","skillPicker.mode.lazy":"on demand","skillPicker.mode.always.hint":"Its text (~{tokens} tokens) goes into the instructions of every turn. Click to make it “on demand”.","skillPicker.mode.lazy.hint":"Only its name and description are listed; the agent reads the text (~{tokens} tokens) when it needs it. Click to make it “always”.","skillPicker.empty":"No skills yet. Create some in the Skills library, then attach them here.","common.noColony":"No colony","common.saveChanges":"Save changes","form.err.name":"Give the agent a name.","form.err.nameTaken":"Another agent already uses this name.","form.err.folder":"Choose the folder this agent works in.","form.name":"Name","form.name.hint":"Orchestrators address workers by this name, so keep it short and distinct.","form.name.placeholder":"e.g. api-builder","form.purpose":"What is it for?","form.purpose.hint":"One line. Orchestrators read this to decide who gets which task.","form.purpose.placeholder":"Implements backend endpoints and their tests","form.role":"Role","form.role.orchestratorHint":"Plans work and delegates it to the workers assigned to it.","form.role.workerHint":"Does the work it is given, directly from you or from an orchestrator.","form.basedOn":"Based on the “{name}” type. Changes here only affect this agent.","form.colony":"Colony","form.colony.hint":"Agents in a colony can follow its folder, permissions, skills and shared context. Provider and model are always set per agent.","form.provider":"Provider","form.ownPrompt":"Agent’s own system prompt","form.systemPrompt":"System prompt","form.promptHint_one":"{n} character. Added to the CLI’s own instructions on every turn.","form.promptHint_other":"{n} characters. Added to the CLI’s own instructions on every turn.","form.prompt.placeholder":"You are a careful backend engineer. Always run the tests before reporting back.","form.skills":"Skills","form.browser":"Browser (Chrome)","form.browser.hint":"Lets this agent drive your Chrome through the Claude in Chrome extension: open pages, read them, click and fill forms, with your signed-in sessions. Chrome and the extension must be open on the machine where hive-am runs.","form.skills.hint":"Appended to the system prompt in the order shown.","form.team":"Team","form.team.hint":"Only these workers can receive tasks from this orchestrator.","form.team.empty":"No workers yet. Create a worker agent, then assign it here or on the Relations canvas.","inherit.permissions":"Permissions","inherit.context":"Shared context","inherit.context.note":"Placed before this agent’s own prompt.","inherit.skills":"Colony skills","inherit.skills.note":"Added on top of this agent’s own skills.","inherit.from":"from","inherit.following":"Following","inherit.own":"Own value","newAgent.title":"New agent","newAgent.pickType":"Start from a type to prefill provider, model, prompt and skills.","newAgent.typeFallback":"{role} on {provider}","newAgent.blank":"Blank agent","newAgent.blankHint":"Configure everything yourself.","newAgent.fromType":"From type “{name}”","newAgent.create":"Create agent","newAgent.creating":"Creating…","newAgent.created":"{name} created","newAgent.failed":"Could not create the agent","edit.title":"{name} settings","edit.subtitleRunning":"This agent is working. Changes apply from its next turn.","edit.subtitleIdle":"Changes apply from its next message.","edit.fixFields":"Fix the highlighted fields first","edit.saved":"{name} saved","edit.saveFailed":"Could not save","colony.err.name":"Give the colony a name.","colony.err.nameTaken":"Another colony already uses this name.","colony.saved":"Colony saved","colony.created":"Colony created","colony.deleted":"Colony deleted","colony.editTitle":"Edit {name}","colony.newTitle":"New colony","colony.subtitle":"A group of agents drawn together on the comb, sharing defaults.","colony.save":"Save colony","colony.create":"Create colony","colony.name.placeholder":"e.g. Billing backend","colony.color":"Color","colony.colorOption":"Color {color}","colony.colorCustom":"Custom color","colony.colorHex":"Hex code","colony.err.color":"Enter a color as #rrggbb, e.g. #2f8f5b","colony.context.hint":"Instructions every member sees before its own prompt.","colony.context.placeholder":"All services use PostgreSQL 16. Never touch the migrations folder without asking.","colony.members":"Members","colony.members.hint":"An agent belongs to one colony. Picking one that’s elsewhere moves it here.","colony.members.empty":"No agents yet. Create some, then add them here.","colony.currentlyIn":"Currently in {name}","colony.deleteTitle":"Delete {name}?","colony.deleteBody_one":"Its {count} agent stays, but it stops following the colony’s folder, permissions, skills and context. Folders it inherited become its own only if you set them.","colony.deleteBody_other":"Its {count} agents stay, but they stop following the colony’s folder, permissions, skills and context. Folders they inherited become their own only if you set them.","colony.keep":"Keep colony","colony.delete":"Delete colony","inheritAsk.title":"What should its agents inherit?","inheritAsk.intro":"Members follow these by default. Any agent can still opt out for itself.","inheritAsk.field.cwd":"Working folder","inheritAsk.field.permission":"Permissions","inheritAsk.field.skills":"Skills","inheritAsk.field.prompt":"Shared context","inheritAsk.hint.cwd":"Agents run in the colony’s folder.","inheritAsk.hint.permission":"Agents get the colony’s access level.","inheritAsk.hint.skills":"Colony skills are added to each agent’s own.","inheritAsk.hint.prompt":"The colony prompt goes before each agent’s own prompt.","inheritAsk.empty.cwd":"Nothing set yet. Add a folder to share it.","inheritAsk.empty.permission":"Nothing set yet. Add permissions to share them.","inheritAsk.empty.skills":"Nothing set yet. Add skills to share them.","inheritAsk.empty.prompt":"Nothing set yet. Add shared context to share it.","inheritAsk.folderMoves_one":"{count} agent moves to this folder and starts a new conversation. Earlier ones stay in its Sessions tab.","inheritAsk.folderMoves_other":"{count} agents move to this folder and start a new conversation. Earlier ones stay in their Sessions tab.","activity.delegated":"Delegated task \xb7 ","activity.starting":"Starting…","activity.running":"Running {tool}","activity.ran":"Ran {tool}","activity.thinking":"Thinking…","activity.writing":"Writing a reply…","switcher.find":"Find an agent","switcher.noMatch":"No agents match “{query}”.","switcher.noDescription":"No description yet","switcher.collapse":"Collapse the agent list","switcher.expand":"Expand the agent list","queue.count_one":"{count} queued","queue.count_other":"{count} queued","common.yes":"yes","tool.delegate":"Delegate","tool.roster":"Team roster","tool.shell":"Shell","tool.read":"Read","tool.write":"Write","tool.edit":"Edit","tool.subagent":"Subagent","tool.plan":"Plan","tool.k.subagent":"Subagent","tool.k.task":"Task","tool.k.tool":"Tool","tool.k.workdir":"Working dir","tool.k.timeout":"Timeout","tool.k.background":"Background","tool.k.path":"Path","tool.k.offset":"Offset","tool.k.limit":"Limit","tool.k.replaceAll":"Replace all","tool.k.type":"Type","tool.k.description":"Description","tool.k.prompt":"Prompt","tool.command":"Command","tool.copyCommand":"Copy command","tool.copyOutput":"Copy output","tool.output":"Output","tool.noOutput":"(no output)","tool.truncated":"… (truncated)","tool.exit":"exit {code}","tool.failed":"failed","tool.lines_one":"{count} line","tool.lines_other":"{count} lines","tool.writeSummary_one":"{path} \xb7 {count} line","tool.writeSummary_other":"{path} \xb7 {count} lines","tool.editSummary_one":"{path} \xb7 {count} change","tool.editSummary_other":"{path} \xb7 {count} changes","tool.planSummary":"{done}/{total} done","stats.context":"context","stats.contextTitle":"Tokens in the latest request’s context","stats.tokens":"tokens","stats.credits":"credits","stats.costEstimated":"Estimated from public list prices","stats.costReported":"Reported by the CLI","stats.turns_one":"turn","stats.turns_other":"turns","stats.toolCalls_one":"tool call","stats.toolCalls_other":"tool calls","stats.failed_one":"{count} failed","stats.failed_other":"{count} failed","stats.working":"working","stats.mix":"Token mix","stats.cacheRead":"Cache read","stats.cacheWrite":"Cache write","stats.input":"Input","stats.output":"Output","stats.thinking":"{tokens} thinking","stats.models":"Models","stats.modelLine_one":"{count} msg \xb7 {out} out","stats.modelLine_other":"{count} msgs \xb7 {out} out","stats.toolsUsed":"Tools used","stats.totalTime":"{time} total","stats.noTools":"No tools called yet.","stats.toolTitle_one":"{count} call \xb7 {time} total","stats.toolTitle_other":"{count} calls \xb7 {time} total","stats.perTurn":"Tokens per turn","stats.promptFallback":"(prompt)","stats.turnLine":"{tokens} tokens \xb7 {tools} tools \xb7 {time}","chat.tokenDetail":"input {input} \xb7 output {output} \xb7 cache read {cacheRead} \xb7 cache write {cacheWrite}","chat.inOut":"{in} in \xb7 {out} out","chat.credits":"{value} credits","chat.tools_one":"{count} tool","chat.tools_other":"{count} tools","chat.contextPct":"context {pct}%","chat.failedHint":"The turn failed. You can send another message to try again, switch to another model or start a new conversation.","chat.compactFailed":"The conversation could not be compacted: {reason}. Try switching to another model or start a new conversation.","chat.failedHintLimit":"The usage limit was reached. Wait for it to reset or switch to another model.","chat.failedHintCompact":"If the conversation is too long, compact it to keep going. If that fails, switch to another model or start a new conversation.","chat.compact":"Compact conversation","chat.compacting":"Compacting…","chat.compactMark":"Conversation compacted \xb7 {pre} → {post} tokens","chat.compacted":"Conversation compacted. You can keep going.","nav.connections":"Connections","nav.schedules":"Schedules","sched.subtitle":"What your agents set up to do later: one-time wake-ups and recurring schedules. They run in the place where they were asked (a chat thread or the web chat) and cost one model turn each time.","sched.empty.title":"Nothing scheduled","sched.empty.body":"When an agent has the Wake-ups skill you can ask it things like “every weekday at 9 check the QA logs and tell me” and it will show up here.","sched.kind.cron":"Cron","sched.kind.every":"Interval","sched.kind.once":"Once","sched.kind.watch":"Waiting for a process","sched.where.web":"Web chat","sched.next":"Next run","sched.until":"Waits until","sched.never":"never","sched.paused":"Paused","sched.last":"Last","sched.runs":"{count} runs","sched.pause":"Pause","sched.resume":"Resume","sched.history":"History","sched.hide":"Hide history","sched.noRuns":"It has not run yet.","sched.deleteTitle":"Delete this schedule?","sched.deleteBody":"It stops for good. The agent can create it again if you ask.","sched.in":"in {when}","sched.status.delivered":"Delivered","sched.status.failed":"Failed","sched.status.skipped_muted":"Skipped (muted)","sched.status.skipped_busy":"Skipped (agent busy)","sched.status.skipped_missed":"Skipped (missed)","sched.status.skipped_disabled":"Skipped (connection off)","sched.status.skipped_reassigned":"Paused (agent changed)","sched.minShort":"{count} min","sched.hourShort":"{count} h","sched.dayShort":"{count} d","conn.subtitle":"Let people talk to an agent from Telegram or Slack. Every thread and every person shares the agent’s one conversation, the same one you see in hive-am.","conn.new":"New connection","conn.create":"Create connection","conn.edit":"Edit connection","conn.save":"Save","conn.empty.title":"No connections yet","conn.empty.body":"Link an agent to a Telegram bot and chat with it from your phone. It answers in the same thread you write in.","conn.kind":"Platform","conn.kind.telegram":"Telegram","conn.kind.slack":"Slack","conn.kind.soon":"Slack \xb7 soon","conn.status.connected":"Connected","conn.status.connecting":"Connecting…","conn.status.error":"Problem","conn.status.stopped":"Off","conn.noAgent":"No agent linked","conn.threads_one":"{count} thread","conn.threads_other":"{count} threads","conn.lastEvent":"last message {when}","conn.name":"Name","conn.name.hint":"A label for you, e.g. “Ops bot”.","conn.name.placeholder":"Ops bot","conn.agent":"Agent that answers","conn.agent.hint":"It replies with its channel_reply tool; its normal text never reaches the chat.","conn.agent.pick":"Choose an agent…","conn.token":"Bot token","conn.token.hint":"Create a bot with @BotFather and paste its token. It is stored on this machine and never shown again.","conn.token.keep":"Leave empty to keep {hint}","conn.allowed":"Who can talk to it","conn.allowed.hint":"Only these Telegram ids get an answer. Anyone else is told their own id and nothing more.","conn.allowed.howto":"Don’t know your id? Save the connection and message the bot: it replies with your id.","conn.allowed.add":"Add person","conn.allowed.id":"Telegram id","conn.allowed.name":"Name (optional)","conn.allowed.admin":"Admin","conn.allowed.adminHint":"Can reset the shared conversation with /new","conn.allowed.remove":"Remove","conn.allowed.empty":"Nobody yet: the bot will not answer anyone.","conn.files":"Receive files","conn.files.hint":"Photos, documents and audio people send (up to 20 MB each). They are saved on this machine for 14 days and the agent opens them with its file tools; it cannot listen to audio or watch video.","conn.files.off":"No","conn.vision":"See images","conn.vision.agent":"With the agent’s model","conn.vision.other":"With another model","conn.vision.hint.agent":"Only works if the agent’s model accepts images (many don’t). Otherwise it will say it can’t see them.","conn.vision.hint.other":"Every incoming picture is described by this model (and its text transcribed), and the description travels with the message, so any agent can answer about it. The picture is sent to that provider. Pick a model that sees images, such as Claude Haiku.","conn.lang":"Bot language","conn.lang.es":"Spanish","conn.lang.en":"English","conn.silent":"If the agent finishes without replying","conn.silent.notice":"Tell the thread","conn.silent.send_text":"Send its plain text","conn.silent.ignore":"Do nothing","conn.effort":"Reasoning effort","conn.effort.hint":"Lower is faster and thinks less. Used by Claude and Kiro (`--effort`) and OpenCode (the model's `low`/`medium`/`high` variant). `low` saves about 0.5–1 s per reply; an OpenCode model without that variant fails the turn, so pick Agent default for it.","conn.effort.default":"Agent default","conn.effort.low":"Low","conn.effort.medium":"Medium","conn.effort.high":"High","conn.enabled":"Active","conn.enabled.hint":"Turn off to stop the bot without deleting it.","conn.test":"Send test","conn.test.ok":"Test sent \xb7 {detail}","conn.test.failed":"The test failed","conn.delete":"Delete connection","conn.deleted":"Connection deleted","conn.saved":"Connection saved","conn.created":"Connection created","conn.deleteTitle":"Delete “{name}”?","conn.deleteBody":"The bot stops answering and this connection’s threads are forgotten. The agent and its conversation stay untouched.","conn.perm.plan":"{name} is Read-only, and a read-only agent can’t reply through a channel.","conn.perm.fix":"Allow editing files","conn.perm.fixed":"{name} can now edit files","conn.perm.full":"{name} has Full access: anyone on the list can make it run anything on this machine.","conn.perm.opencode":"OpenCode ignores the permission setting, so this agent can edit files and run commands whatever it says.","conn.groups":"Groups","conn.groups.hint":"Choose how it takes part in Telegram groups and topics. In a private chat it always answers.","conn.mode":"When it speaks in a group","conn.mode.mention":"Only when called","conn.mode.open":"Listens and chimes in","conn.mode.mention.hint":"It answers when it is mentioned with @, someone replies to one of its messages, uses a command, or says its name.","conn.mode.open.hint":"It reads everything that is written and speaks only when it has something useful to add. If asked to be quiet it stops answering in that thread until someone calls it. Ask BotFather to turn privacy mode off (/setprivacy → Disable).","conn.chats":"Allowed groups","conn.chats.hint":"Any member of these groups can talk to it, without adding each person. The agent’s permissions apply to all of them.","conn.chats.empty":"No groups: only the people in the list can talk to it in groups.","conn.chats.add":"Add group","conn.chats.id":"Group id (e.g. -100123…)","conn.chats.name":"Name (optional)","conn.chats.remove":"Remove group","conn.chats.howto":"To find a group’s id, mention the bot there: it replies with the chat id.","conn.aliases":"Names it answers to","conn.aliases.hint":"Comma separated. If someone writes one of these names in a group it counts as a mention (e.g. “Morena”).","conn.aliases.placeholder":"Morena, queen","conn.threads.muted":"Muted","conn.threads.mute":"Mute","conn.threads.unmute":"Unmute","chat.channel.overheard":"listening","chat.channel.overheard.hint":"Nobody spoke to the agent: it read this and decides whether it has something to add","chat.channel.context":"{n} earlier messages it had not seen","tool.channelMute":"Go quiet in the thread","tool.channelUnmute":"Talk again in the thread","agent.tab.notebook":"Notebook","notebook.intro":"What the agent chooses to remember between conversations. It writes it by itself while it works; here you can read it, correct it or wipe it.","notebook.off":"This agent doesn’t have the “Notebook” skill, so it doesn’t use its notebook.","notebook.on":"Turn on","notebook.reload":"Reload","notebook.updated":"Updated by {who} {when}","notebook.never":"No notes yet","notebook.by.you":"you","notebook.by.agent":"the agent","notebook.placeholder":"## Preferences\n- Answer briefly and in English","notebook.save":"Save notebook","notebook.saved":"Notebook saved","notebook.clear":"Clear all","notebook.clear.title":"Clear the notebook?","notebook.clear.confirm":"The agent will forget everything it has written down. This can’t be undone.","conn.threads.title":"Threads","conn.threads.empty":"No messages yet.","conn.threads.last":"last: {user}","conn.shared":"All threads share this agent’s single conversation.","conn.err.agent":"Choose the agent that will answer.","conn.err.name":"Give it a name.","conn.err.token":"Paste the bot token.","form.connections":"Connections","form.connections.hint":"Linked to {names}. It needs at least “Edit files”: a read-only agent can’t reply through a channel.","permission.lockedByConnection":"Not available while the agent is linked to a connection.","tool.channelSendFile":"Send file to the channel","tool.k.caption":"Caption","tool.chrome.navigate":"Open page","tool.chrome.tabNew":"New tab","tool.chrome.tabClose":"Close tab","tool.chrome.tabs":"Browser tabs","tool.chrome.act":"Browser action","tool.chrome.read":"Read page","tool.chrome.find":"Find on page","tool.chrome.form":"Fill form","tool.chrome.js":"Run script on page","tool.chrome.other":"Browser","tool.channelReply":"Reply in channel","chat.thought":"Thought process","chat.changedFiles":"Files changed ({count})","chat.fileWritten":"written","chat.readOnly":"You’re reading an older session. Make it current to continue it.","chat.queuePlaceholder":"Queue a follow-up…","chat.queuedBadge":"Queued: it will be sent when the current reply ends","chat.earlier":"Show earlier messages ({n} more)","chat.placeholder":"Message {name}","chat.messageLabel":"Message","chat.stop":"Stop","chat.img.attach":"Attach files (you can also paste pictures or files with Ctrl+V / ⌘V, or drop them here)","chat.img.remove":"Remove {name}","chat.img.max":"At most {n} files per message.","chat.img.big":"A file is too big (limit {mb} MB).","chat.send":"Send","chat.keys":"Enter to send \xb7 Shift+Enter for a new line","chat.collapseTools":"Collapse all tools","chat.expandTools":"Expand all tools","chat.sendFailed":"Could not send","chat.empty.title":"Say hello to {name}","chat.empty.orchestrator":"Describe a goal. It will break it down and dispatch the pieces to its team.","chat.empty.worker":"Give it a task. The conversation is stored by the CLI itself, so it survives restarts.","chat.delegatedFrom":"Delegated task from {name}","chat.anOrchestrator":"an orchestrator","chat.delegatedNote":"Runs in its own session. It won’t appear in this conversation. Find it under Settings → Sessions.","colony.removedAgent":"removed agent","colony.joined":"{name} joined {colony}","colony.left":"{name} left its colony","colony.moveFailed":"Could not move the agent","colony.page.subtitle":"Every agent you run, grouped into colonies and wired to the orchestrators that direct them.","stat.agents_one":"agent","stat.agents_other":"agents","stat.colonies_one":"colony","stat.colonies_other":"colonies","stat.orchestrators_one":"orchestrator","stat.orchestrators_other":"orchestrators","stat.working":"working now","stat.tasks":"tasks in flight","colony.empty.title":"Your colony is empty","colony.empty.body":"Create a colony to group agents that share a folder and rules, then add an orchestrator and a few workers.","colony.empty.createColony":"Create a colony","colony.empty.createAgent":"Create an agent","colony.editHover":"Edit colony \xb7 {path}","colony.editHoverShort":"Edit colony","colony.agentCount_one":"{count} agent","colony.agentCount_other":"{count} agents","colony.addTo":"Add agent to {name}","colony.addAgent":"Add agent","colony.delegatesTo_one":"Delegates to {count}","colony.delegatesTo_other":"Delegates to {count}","colony.managedBy":"Looked after by {name}","colony.manages":"Looks after: {names}","colony.dragHint":"drag to move it","colony.zoom":"Zoom","colony.zoom.in":"Zoom in","colony.zoom.out":"Zoom out","colony.zoom.fit":"Fit the map to the panel (100%)","colony.layout.reset":"Put everything back where it was","colony.connectedTo":"Connected to {names}","colony.settingsFor":"Settings for {name}","colony.agentSettings":"Agent settings","colony.folder":"Folder","colony.fromColony":"from colony","colony.session":"Session","colony.noSession":"none yet","colony.noWorkers":"No workers connected","colony.openChat":"Open chat","colony.howTitle":"How to read this","colony.howBody":"Each outlined area is a colony. Select a cell to inspect an agent. Honey lines and tags connect an orchestrator (↓ number of workers) to the workers it can delegate to (↑ its name). Only those directly connected are shown. Hover an agent to highlight its connections; a moving line means a task is running.","colony.helpLabel":"Help: how to read this map","colony.recent":"Recent delegations","colony.recentEmpty":"When an orchestrator hands a task to a worker, it shows up here.","agents.subtitle":"Each agent is a pointer to a native CLI session. Close the browser or lose power. Reopening an agent resumes its real conversation.","agents.searchPlaceholder":"Search by name, description or folder","agents.searchLabel":"Search agents","agents.filter.orchestrators":"Orchestrators","agents.filter.workers":"Workers","agents.filter.anyProvider":"Any provider","agents.empty.title":"No agents yet","agents.empty.body":"Pick a type to start fast, or configure one from scratch.","agents.noMatch.title":"Nothing matches","agents.noMatch.body":"Try a different search or clear the filters.","agents.col.agent":"Agent","agents.col.providerModel":"Provider \xb7 model","agents.col.status":"Status","agents.col.updated":"Updated","agents.orchestratorLine_one":"Orchestrator \xb7 {count} worker","agents.orchestratorLine_other":"Orchestrator \xb7 {count} workers","agents.colonyWord":"colony","agent.missing.title":"That agent doesn’t exist","agent.missing.body":"It may have been deleted.","agent.missing.back":"Back to agents","agent.resumed":"Conversation resumed","agent.backToColony":"Back to the colony","agent.makeCurrent":"Make this conversation current","agent.backToCurrent":"Back to current","agent.newConversation":"New conversation","agent.settings":"Settings","agent.unsaved":"Unsaved changes","agent.tab.config":"Configuration","agent.delete":"Delete agent","agent.unsavedChanges":"You have unsaved changes.","agent.allSaved":"All changes saved.","agent.appliesNextTurn":"They apply from the next turn.","agent.sessions.intro":"Native sessions in {path}. Reading one never changes the agent.","agent.sessions.conversations":"Conversations","agent.sessions.empty":"No conversations yet. The first message creates one.","agent.sessions.started":"Started {started} \xb7 last used {last}","agent.sessions.viewing":"Viewing","agent.sessions.read":"Read transcript","agent.sessions.resume":"Resume this one","agent.sessions.delegated":"Delegated tasks","agent.sessions.from":"From {name}","agent.deleteTitle":"Delete {name}?","agent.deleteBody":"The agent and its connections are removed. Its native session files stay on disk, untouched.","agent.keep":"Keep agent","agent.deleted":"Agent deleted","agent.newConvTitle":"Start a new conversation?","agent.newConvBody":"The agent starts with a fresh session. The current one stays in its Sessions tab and can be resumed anytime.","agent.newConvStarted":"New conversation started","agent.newConvStart":"Start new conversation","sessions.current":"Current","types.err.name":"Give the type a name.","types.updated":"Type updated","types.created":"Type created","types.deleted":"Type deleted","types.subtitle":"Reusable blueprints: provider, model, prompt, permissions and skills. Create an agent from a type in two clicks.","types.new":"New type","types.empty.title":"No types yet","types.empty.body":"Define a “Reviewer” or “Builder” once, then spin up as many agents from it as you need.","types.empty.create":"Create a type","types.noDescription":"No description.","types.defaultModel":"default model","types.skillsCount_one":"{count} skill","types.skillsCount_other":"{count} skills","types.usedBy_one":"{count} agent uses this","types.usedBy_other":"{count} agents use this","types.editTitle":"Edit {name}","types.typeWord":"type","types.newTitle":"New agent type","types.drawerSubtitle":"Agents created from this type start with these values. Existing agents are not changed.","types.save":"Save type","types.create":"Create type","types.name.placeholder":"e.g. Reviewer","types.description":"Description","types.description.hint":"Shown when picking a type.","types.chars_one":"{n} character","types.chars_other":"{n} characters","types.deleteTitle":"Delete {name}?","types.deleteBody":"Agents already created from it keep their settings and simply lose the link.","types.keep":"Keep type","types.delete":"Delete type","skills.err.name":"Give the skill a name.","skills.created":"Skill created","skills.saved":"Skill saved","skills.deleted":"Skill deleted","skills.subtitle":"Markdown instructions you attach to agents or types. They are appended to the system prompt, so write them as guidance the agent follows.","skills.new":"New skill","skills.empty.title":"No skills yet","skills.empty.body":"A skill is a reusable block of instructions: a review checklist, a commit style, how to run your tests.","skills.empty.create":"Write the first skill","skills.search":"Search skills","skills.unsaved":"Unsaved","skills.nAgents_one":"{count} agent","skills.nAgents_other":"{count} agents","skills.nTypes_one":"{count} type","skills.nTypes_other":"{count} types","skills.noMatch":"No skills match “{query}”.","skills.name.placeholder":"e.g. conventional-commits","skills.description.hint":"One line, shown in pickers.","skills.instructions":"Instructions","skills.preview":"Preview","skills.content.placeholder":"When writing commits:\n- Use the imperative mood\n- Keep the subject under 72 characters","skills.previewEmpty":"*Nothing to preview yet.*","skills.create":"Create skill","skills.save":"Save skill","skills.deleteTitle":"Delete {name}?","skills.deleteBody":"It will be detached from {agents} and {types}.","skills.keep":"Keep skill","skills.delete":"Delete skill","sessions.subtitle":"Every conversation your agents have had, read straight from Claude Code, OpenCode and Kiro. Other sessions on this machine are not shown.","sessions.searchPlaceholder":"Search by agent, folder or first message","sessions.searchLabel":"Search sessions","sessions.empty.title":"No sessions yet","sessions.empty.body":"Send a message to any agent and its session will appear here.","sessions.empty.go":"Go to agents","sessions.reading":"Reading sessions…","sessions.delegatedBy":"Delegated by {name}","sessions.emptySession":"Empty session","sessions.messages_one":"{count} message","sessions.messages_other":"{count} messages","sessions.noMatch":"No sessions match.","sessions.select":"Select a session to read its transcript.","sessions.openAgent":"Open agent","sessions.loading":"Loading transcript…","sessions.counting":"Reading this conversation…","sessions.older":"Show {count} earlier messages","sessions.noMessages":"The CLI has no readable messages for this session.","rel.updateFailed":"Could not update the connection","rel.disconnected":"{worker} disconnected from {orchestrator}","rel.connected":"{worker} connected to {orchestrator}","rel.disconnectLabel":"Disconnect {worker} from {orchestrator}","rel.layoutReset":"Layout reset","rel.hud":"Who can delegate to whom. Each orchestrator has its own line colour. Hover or select an agent to see its connections; click the ✕ on a line to remove it, or drag from an orchestrator’s bottom dot to a worker to add one.","rel.autoArrange":"Auto-arrange","rel.empty.title":"Nothing to connect yet","rel.empty.body":"Create at least one orchestrator and one worker first.","rel.delegatesTo":"Delegates to \xb7 {count}","rel.noWorkers":"No workers yet.","rel.disconnect":"Disconnect","rel.connectWorker":"Connect a worker…","rel.directedBy":"Directed by","rel.noOrchestrators":"No orchestrator can delegate to this worker.","rel.connectOrchestrator":"Connect to an orchestrator…","git.tab.chat":"Chat","git.tab.changes":"Changes","git.tab.label":"View","git.loading":"Reading the repository…","git.error.title":"Couldn’t read the repository","git.refresh":"Refresh","git.notRepo.title":"This folder isn’t a git repository","git.notRepo.body":"Run git init in {path} to see file changes here.","git.noGit.title":"git isn’t available","git.noGit.body":"Install git and make sure it’s in the PATH of the hive-am server.","git.detached":"detached at","git.noCommitsBranch":"no commits yet","git.noCommits":"No commits yet","git.upstream":"Commits ahead ↑ / behind ↓ the upstream branch","git.clean":"No changes. The working tree is clean.","git.summary_one":"{count} file changed","git.summary_other":"{count} files changed","git.updated":"Updated {time}","git.scope":"Showing only {path}/, the folder this agent works in.","git.filesLabel":"Files","git.filterPlaceholder":"Filter files…","git.filter.all":"All files","git.filter.changed":"Changed","git.noMatch":"No files match “{query}”.","git.noFiles":"No files here.","git.rowsCapped":"Showing the first {count} rows. Narrow the filter to see more.","git.treeTruncated":"This folder is large: only the first {count} files are listed.","git.dirChanged_one":"{count} changed file inside","git.dirChanged_other":"{count} changed files inside","git.status.modified":"Modified","git.status.added":"Added","git.status.deleted":"Deleted","git.status.renamed":"Renamed","git.status.untracked":"Untracked","git.status.conflict":"Conflict","git.status.typechange":"Type changed","git.staged":"Staged","git.unstaged":"Unstaged","git.select":"Select a file to preview it.","git.view.diff":"Diff","git.view.file":"File","git.view.preview":"Preview","git.view.source":"File","git.tab.tags":"Tags","git.tags.empty":"This repository has no tags.","git.tags.search":"Search tags","git.tags.select":"Select a tag to browse it.","git.tags.truncated":"Showing the newest {count} tags.","git.tags.annotated":"annotated","git.tags.lightweight":"lightweight","git.tags.files":"Files","git.tags.changes":"Changes","git.tags.nfiles_one":"{count} file","git.tags.nfiles_other":"{count} files","git.tags.pick":"Pick a file to read it as it was at this tag.","git.tab.compare":"Compare","git.hist.search":"Search commits","git.hist.by.message":"Message","git.hist.by.author":"Author","git.hist.by.content":"Content","git.hist.by.hint":"Content: commits that added or removed this text","git.hist.branchAll":"All branches","git.hist.branchCurrent":"Current branch","git.hist.file":"File: {path}","git.hist.clearFile":"Show all history","git.hist.noMatch":"No commits match.","git.file.history":"File history","git.file.viewAt":"View at…","git.file.atRef":"Showing the version at {ref}","git.file.backToCurrent":"Back to the current file","git.file.missingAt":"This file does not exist at {ref}.","git.ref.pick":"Branch, tag or commit","git.ref.search":"Search, or paste a commit","git.ref.branches":"Branches","git.ref.remotes":"Remote branches","git.ref.tags":"Tags","git.ref.useCommit":"Use commit {ref}","git.ref.none":"Nothing matches.","git.cmp.base":"From","git.cmp.head":"To","git.cmp.swap":"Swap","git.cmp.pick":"Pick two points to compare: branches, tags or commits.","git.cmp.same":"Both points are the same commit.","git.cmp.summary":"{ahead} commits ahead \xb7 {behind} behind","git.cmp.commits":"Commits in between ({count})","git.cmp.more":"Showing the newest {count}.","git.cmp.nofiles":"No differences in files.","dock.title":"Terminal panel","dock.new":"New terminal","dock.inFolder":"Terminal in a folder…","dock.hide":"Hide the panel","dock.open":"Open","dock.folder.hint":"The terminal starts in this folder.","dock.ended":"Ended with code {code}","dock.gone":"This terminal is gone","dock.disabled":"Terminals are turned off on this server.","dock.empty":"No terminals open. Press + to start one.","dock.failed":"The terminal could not be opened.","dock.nav":"Terminal","dock.here":"Terminal here","dock.shell":"Shell in the container","dock.logs":"Logs in the panel","dock.agent":"Terminal in the agent’s folder","vars.title":"Variables of this resource","vars.hint":"For when there is no env file, or it lacks something. What an env file defines wins.","vars.shared":"Shared","vars.shared.hint":"Apply to every environment","vars.fromFile":"An env file also defines this environment","vars.newEnv":"New environment","vars.empty":"No variables here yet.","vars.name":"Name","vars.value":"Value","vars.saved":"saved: type to replace","vars.secret":"Secret","vars.secret.hint":"Secret: hidden once saved and never shown again","vars.show":"Show or hide","vars.overridden":"An env file defines it: the file wins","vars.add":"Add a variable","vars.delEnv":"Delete this environment","vars.note":"The requests use them as {{name}}. Secrets are stored on this machine in hive-am’s database, without encryption.","obj.sup.note":"While hive-am is running it restarts the server when it ends and checks its health. If hive-am is off, the server keeps running but nobody restarts it; hive-am takes over again when it starts.","obj.sup.title":"Keeping it healthy","obj.sup.restart":"If it ends by itself","obj.sup.restart.hint":"Stopping it yourself is never undone.","obj.sup.restart.no":"Do nothing","obj.sup.restart.fail":"Restart after a failure","obj.sup.restart.always":"Always restart","obj.sup.max":"Max restarts","obj.sup.max.hint":"Restarts in 10 minutes before it gives up (default 5)","obj.sup.health":"Health check","obj.sup.health.hint":"Tells whether a running server really works.","obj.sup.health.none":"No health check","obj.sup.health.tcp":"Port","obj.sup.health.command":"Command","obj.sup.interval":"Every (s)","obj.sup.retries":"Failures in a row","obj.sup.healthRestart":"Restart it when it is unhealthy","obj.sup.stopTimeout":"Seconds to stop","obj.sup.stopTimeout.hint":"Before it is killed (default 8)","obj.sup.logMax":"Log size (MB)","obj.sup.logMax.hint":"The older part is set aside (default 5)","obj.dk.limits":"Limits and network","obj.dk.limits.hint":"They apply the next time it starts: the container is created again.","obj.dk.memory":"Memory","obj.dk.cpus":"CPUs","obj.dk.network":"Network","nav.objects":"Resources","obj.open":"Open panel","ow.find":"Find a resource","ow.noMatch":"No resources match “{query}”.","ow.collapse":"Collapse the resource list","ow.expand":"Expand the resource list","ow.empty.title":"No resources yet","ow.empty.body":"Servers, containers, HTTP requests and clusters live here. Create the first one.","ow.pick":"Pick an resource on the left.","ow.gone":"This resource no longer exists.","rs.tabs":"Resource sections","rs.retry":"Retry","rs.confirm.history":"The runs saved for this resource are removed. This cannot be undone.","rs.confirm.session":"Every value the response handlers kept in this session is forgotten.","rs.recreate.title":"Create {name} again?","ow.back":"Back to the colony","ow.tab.summary":"Summary","ow.tab.logs":"Logs","ow.tab.config":"Settings","ow.tab.requests":"Requests","ow.tab.vars":"Variables","ow.state":"State","ow.uptime":"Running for","ow.usage":"Usage","ow.cpu":"CPU","ow.mem":"Memory","ow.procs":"Processes","ow.net":"Network I/O","ow.block":"Disk I/O","ow.info":"Details","ow.recent":"Latest output","ow.seeLogs":"See all the logs","ow.noUsage":"Not running: there are no figures.","ow.d.command":"Command","ow.d.folder":"Folder","ow.d.port":"Port","ow.d.restart":"If it ends","ow.d.health":"Health check","ow.d.stop":"Stop command","ow.d.image":"Image","ow.d.ports":"Ports","ow.d.network":"Network","ow.d.created":"Created","ow.d.restarts":"Restarts","ow.d.memLimit":"Memory limit","ow.d.cpuLimit":"CPU limit","ow.d.mode":"Managed as","ow.d.container":"Container","ow.d.compose":"Compose file","ow.d.services":"Services","ow.d.none":"none","ow.cfg.dirty":"Unsaved changes","ow.cfg.saved":"All saved","ow.cfg.save":"Save","ow.cfg.discard":"Discard","ow.cfg.saveRestart":"Save and restart","ow.cfg.applies":"Changes apply the next time it starts.","ow.cfg.appliesRunning":"It is running: restart it to apply them.","lp.search":"Search in the logs","lp.only":"Only matches","lp.follow":"Follow the end","lp.wrap":"Wrap lines","lp.pause":"Pause","lp.resume":"Resume","lp.clear":"Clear the view","lp.download":"Download","lp.copy":"Copy","lp.lines":"{count} lines","lp.shown":"Showing the last {count}","lp.larger":"Larger text","lp.smaller":"Smaller text","lp.paused":"Paused","lp.matches":"{count} matches","cl.members":"Members","cl.order":"Start order","cl.add":"Add a member","cl.remove":"Remove from the cluster","cl.up":"Move up","cl.down":"Move down","cl.none":"No members yet. Add servers or containers of this colony.","cl.summary":"{up} of {total} running","cl.pickMember":"Choose an resource","cl.startOrder":"They start in this order and stop in the opposite one.","hw.files":"Files","hw.envHint":"Environments come from the env files and from the Variables tab.","hw.editVars":"Edit variables","hw.fileInfo":"{count} requests","hw.pickFile":"Pick a file to run, or a request to try.","hw.lastRun":"Last run","hw.notRun":"not run","hw.noEnvFile":"There is no env file in this folder: define the variables in the Variables tab.","of.general":"General","of.run":"How it runs","of.env":"Environment","of.container":"Container","of.image":"Image, ports and volumes","of.files":"The .http files","of.vars":"Variables","of.members":"Members","of.limits":"Limits and network","vars.all":"All environments","vars.all.hint":"Values that apply whichever environment you pick","vars.scope.all":"These values apply in every environment. An environment can define its own version of the same variable.","vars.scope.env":"These values apply only when you pick “{env}”. When one is missing here, the one from “All environments” is used.","vars.how.title":"How variables work","vars.how.1":"Your .http files write {{name}} where a value goes. When you run a request, each one is replaced by its value.","vars.how.2":"The value comes from the environment you pick in the runner (dev, qa…), and if it is not there, from “All environments”. An env file wins over what you set here, and the environment you pick wins over an @name line inside the .http file.","vars.used.title":"Variables your files use","vars.used.hint":"Click one that is missing to add it here.","vars.status.here":"defined here","vars.status.all":"in All environments","vars.status.envfile":"an env file defines it","vars.status.atfile":"defined in the .http file","vars.status.missing":"missing: click to add","vars.used.count":"{count} requests","vars.used.none":"Your files do not use variables yet.","dk.refresh":"Refresh the list","dk.unavailable":"Docker is not available ({error}). You can still type it.","dk.managed":"created by hive-am","dk.pickContainer":"Pick a container, or type its name","dk.pickImage":"Pick an image, or type one (nginx:alpine)","dk.services.hint":"Pick the ones to start. None picked means all of them.","dk.services.loading":"Reading the compose file…","dk.services.file":"Read from the file itself (Docker could not read it).","dk.services.none":"No services found in this file.","dk.services.pickFile":"Choose the compose file first.","dk.project.use":"Use “{name}”","dk.project.hint":"Name for the project (suggested from the folder).","d.requests":"{a1} requests in {a2} files","d.running":"{a1}/{a2} running","d.running2":"{a1} of {a2} running","d.noMembers":"no members","d.onlySome":"only {a1}/{a2} running \xb7 stopped: {a3}","d.failed":"{a1} failed \xb7 {a2}/{a3} running","d.waitPort":"waiting for port {a1}","d.noPort":"running, but nothing listens on port {a1}","d.exited":"exited with code {a1}","d.signal":"ended by {a1}","d.restarted":"restarted ({a1}/{a2})","d.unhealthyRestart":"was unhealthy: restarting ({a1}/{a2})","d.restartIn":"restarting in {a1} s ({a2}/{a3})","d.gaveUp":"gave up after {a1} restarts","d.healthPending":"health check pending","d.restarting":"restarting","d.noContainer":"container not found","d.noCompose":"the compose file is missing","d.services":"{a1} services","d.serviceFailed":"a service exited with an error","d.checking":"checking…","d.unhealthy":"unhealthy","hw.session":"Session","hw.session.hint":"Values kept by the response handlers last until hive-am stops. A value you add here goes to the “default” environment of this resource.","hw.session.empty":"Nothing kept yet. Run a request whose handler sets a value (client.global.set).","hw.session.add":"Set a value","hw.session.clear":"Forget everything","hw.session.forget":"Forget this value","hw.session.answers":"Answers remembered","hw.session.name":"name","hw.session.value":"value","hw.tests":"Tests","hw.tests.count":"{ok} of {total} tests passed","hw.tests.none":"This request has no tests.","hw.console":"Console","hw.kept":"Kept: {names}","hw.script":"Response handler","hw.script.hint":"Runs after the answer. hive-am runs a safe subset (no loops, no require): see the documentation.","hw.script.file":"This request points to a handler file ({file}). hive-am does not run files: write the handler inside the .http file.","hw.script.error":"The handler did not run: {error}","hw.uses":"Uses the answer of: {names}","hw.needsRun":"Run “{name}” first","hw.stopOnFail":"Stop at the first failure","hw.stopped":"Stopped at “{name}”","hw.fileTests":"Tests","vars.status.handler":"kept by the answer of “{name}”","iv.source.session":"Session","iv.source.file":"@ in the file","iv.source.envfile":"Env file \xb7 {from}","iv.source.hive":"hive-am \xb7 {from}","iv.source.response":"Answer of “{from}”","iv.source.dynamic":"Generated on each run","iv.source.missing":"Missing","iv.shared":"shared","iv.col.name":"Variable","iv.col.value":"Current value","iv.col.source":"Where it comes from","iv.col.used":"Used","iv.hidden":"stored as a secret in hive-am","iv.overrides":"It hides: {list}","iv.generated":"generated when you run","iv.override":"Set a value for this session","iv.override.hint":"It wins over everything else until you forget it or hive-am stops.","iv.forget":"Forget the session value","iv.run":"Run “{name}”","iv.empty":"No variables here.","iv.filter":"Filter variables","iv.onlyMissing":"Only missing","iv.env.title":"Variables in effect","iv.env.hint":"Everything that applies with the environment you picked, and where each value comes from.","iv.reveal":"Show or hide the value","iv.copy":"Copy the value","iv.save":"Save","hw2.tab.requests":"Requests","hw2.tab.vars":"Variables","hw2.tab.source":"File","hw2.tab.script":"Script","hw2.resolved":"As it will be sent","hw2.raw":"As written in the file","hw2.unresolved":"{count} without a value","hw2.edit":"Edit the file","hw2.save":"Save the file","hw2.cancel":"Cancel","hw2.saved":"File saved","hw2.dirty":"Unsaved changes","hw2.runHere":"Run this request","hw2.fileHint":"Hover a {{variable}} to see its value and where it comes from.","hw2.tree":"Tree","hw2.text":"Text","hw2.copyRef":"Copy the reference","hw2.copyRef.need":"Give the request a name (### name) to refer to its answer.","hw2.copied":"Copied","hw2.remembered":"Answers remembered","hw2.remembered.hint":"Other requests can use them as {{name.response.body…}}.","hw2.keptValues":"Values kept","hw2.envEye":"Variables in effect","hw2.noJson":"The answer is not JSON.","hw2.collapse":"Collapse all","ow.tab.history":"History","hw2.history":"History","hw2.history.hint":"Runs since you opened this screen, newest first. Pick one to see its answer.","hw2.history.empty":"Nothing has run yet.","hw2.history.clear":"Clear history","hw2.history.open":"Open in Requests","vars.fixed.title":"Fixed values","vars.fixed.hint":"What your .http files and env files define. They are read-only here: edit them in the file. They win over the values below.","vars.fixed.none":"No values defined in files.","iv.alsoDefines":"also defines it:","iv.winsOver":"{who} wins","hw2.copyAs":"Copy as…","hw2.copyAs.redact":"Hide credentials","hw2.copyAs.unresolved":"Not copied with a value: {names}","hw2.new.title":"New request","hw2.new.form":"Write it","hw2.new.curl":"Paste cURL","hw2.new.curlHint":"A command copied from a browser, a doc or a terminal.","hw2.new.parse":"Read the command","hw2.new.file":"File","hw2.new.newFile":"New file…","hw2.new.add":"Add the request","hw2.new.needUrl":"Write the URL.","hw2.new.headersHint":"One per line: Name: value","hw2.diff.before":"Before","hw2.diff.after":"After","hw2.diff.error":"failed to run","hw2.diff.body":"Answer","hw2.diff.same":"no differences","hw2.diff.lines":"{count} lines differ","hw2.diff.fold":"… {count} equal lines","hw2.diff.with":"Compare with…","hw2.diff.prev":"Previous run of this request","hw2.diff.none":"Not comparing","hw2.diff.noPrev":"There is no earlier run of this request.","hw2.tab.auth":"Authentication","hw2.auth.hint":"Pick how this request authenticates. It is written into the request as the header it means; use {{variables}} for the values.","hw2.auth.type":"Type","hw2.auth.none":"None","hw2.auth.user":"User","hw2.auth.pass":"Password","hw2.auth.header":"Header","hw2.auth.all":"Apply to the {count} requests of this file","hw2.auth.apply":"Apply","hw2.assert.title":"Checks","hw2.assert.hint":"Saved in the file as a response handler; each one is reported on the next run.","hw2.assert.add":"Add a check","hw2.assert.save":"Save checks","hw2.assert.kind":"What to check","hw2.assert.op":"Condition","hw2.assert.remove":"Remove this check","hw2.assert.exists":"exists","hw2.assert.ok":"is 2xx","hw2.assert.contains":"contains","hw2.assert.k.status":"Status","hw2.assert.k.time":"Time (ms)","hw2.assert.k.header":"Header","hw2.assert.k.body":"JSON value","hw2.assert.k.text":"Text of the answer","hw2.filter":"Filter the answer","hw2.filter.placeholder":"Text, or a JSONPath: $.items[*].id","hw2.filter.none":"Nothing matches.","hw2.filter.count":"{count} matches","hw2.export":"Export","hw2.export.md":"Documentation (Markdown)","hw2.export.postman":"Postman collection","hw2.export.all":"All the files","hw2.export.done":"{name} downloaded","hw2.batch.open":"Run with data…","hw2.batch.title":"Run {file} with data","hw2.batch.hint":"The file runs once per row. The columns become variables for that row (they win over everything and are forgotten at the end).","hw2.batch.data":"Rows","hw2.batch.format":"CSV with the names in the first line, or a JSON array of objects.","hw2.batch.file":"Load a file","hw2.batch.stopRow":"Skip the rest of a row after a failure","hw2.batch.rows":"{rows} rows \xb7 {cols}","hw2.batch.run":"Run","hw2.batch.stop":"Stop","hw2.batch.summary":"{ok} of {total} rows passed","hw2.batch.skipped":"skipped","hw2.batch.tooMany":"Too many rows: the limit is {max}.","common.help":"Help","hw2.help.how":"How it works","hw2.help.file":"Editing the file","svc.col.name":"Name","svc.col.image":"Image","svc.col.status":"Status","svc.col.ports":"Ports","svc.logs":"See the logs of this service","svc.expand":"Show the services","svc.collapse":"Hide the services","svc.col.kind":"Type","svc.col.uses":"Uses","svc.col.runs":"Runs","svc.shell":"Open a shell","svc.inspect":"Inspect","svc.recreate":"Create again","svc.rebuild":"Build again and create","svc.more":"More","svc.d.general":"How it runs","svc.d.started":"Started","svc.d.workdir":"Working folder","svc.d.user":"User","svc.d.unpublished":"not published","svc.d.mounts":"Mounts","svc.d.source":"Source","svc.d.dest":"In the container","svc.recreate.hint":"Removes the container and creates it again from its image (what is inside it is lost).","svc.rebuild.hint":"Builds the image again from its Dockerfile and creates the container.","obj.act.recreate":"Create again","obj.act.rebuild":"Build again","obj.mode.template":"From a template","tpl.hint":"Ready-made services. hive-am writes the compose file; you can edit it later.","tpl.note":"The compose file is saved in hive-am’s data folder (stacks). The first start downloads the images.","tpl.pick":"Pick a template.","svc.logs.short":"Logs","svc.needsRunning":"Start it first","cl.open":"Open this resource","cl.remove.hint":"It keeps running; it just stops being part of the cluster.","hw2.copyAs.redact.hint":"Hides Authorization, cookies and API-key headers.","hw2.copyAs.g.tools":"Command line","hw2.copyAs.g.langs":"Code","hw2.copyAs.g.raw":"Message","hw2.batch.hint.short":"One run per row of a CSV or JSON","hw2.stopOnFail.hint":"A whole-file run ends at the first request that fails.","hw2.vars.count":"{count} variables","ow.svc.loading":"Loading services…","ow.svc.none":"This project has no services.","ow.svc.stopped":"The project is stopped, so there are no running services to show. Start it to see them.","obj.kind.database":"Database","obj.kind.database.hint":"MySQL, PostgreSQL, SQLite or SQL Server: browse its tables and run queries.","obj.delete.database":"Only the saved connection goes away; the database itself is not touched.","ow.tab.query":"Queries","ow.tab.schema":"Schema","db.conn":"Connection","db.conn.hint":"Where the database is. hive-am connects when you ask it something and closes right after.","db.engine":"Engine","db.file":"SQLite file","db.file.hint":"The .db file. It has to exist.","db.host":"Host","db.port":"Port","db.user":"User","db.password":"Password","db.password.saved":"A password is saved. Leave it empty to keep it.","db.database":"Database","db.database.hint":"The one that opens by default (optional: you can pick another later).","db.ssl":"Use SSL / TLS","db.trust":"Accept a self-signed certificate","db.test":"Test connection","db.test.ok":"Connected","db.safety":"Safety and limits","db.safety.hint":"What a query is allowed to do and how much it may bring back.","db.readonly":"Read-only","db.readonly.on":"Only SELECT, WITH, SHOW, DESCRIBE and EXPLAIN are accepted, and the connection itself is opened read-only where the engine allows it.","db.readonly.off":"Writes are allowed: INSERT, UPDATE, DELETE and changes to the structure run for real. Be careful with production data.","db.timeout":"Query timeout (seconds)","db.timeout.hint":"A longer query is stopped (default 30)","db.maxRows":"Rows per result","db.maxRows.hint":"A result is cut here (default 1000, at most 10000)","db.run":"Run","db.running":"Running…","db.save":"Save query","db.saved":"Saved","db.saved.title":"Saved queries","db.saved.none":"No saved queries yet. Write one and press Save query.","db.saved.name":"Name of the query","db.saved.done":"Query saved","db.readonly.badge":"Read-only","db.write.badge":"Can write","db.database.pick":"Database","db.editor":"SQL query","db.help.title":"Running queries","db.help.1":"Ctrl/⌘ + Enter runs the query. If you select part of the text, only that part runs.","db.help.2":"A result is cut at the row limit set in the settings, and a query that takes too long is stopped. Every query goes to the History tab.","db.result.none":"Run a query to see its rows here.","db.result.empty":"The query returned no rows.","db.result.rows":"{count} rows","db.result.affected":"{count} rows changed","db.result.truncated":"Only the first {count} rows are shown: add a LIMIT or a filter to see others.","db.result.more":"Show {count} more","db.copied":"Copied","db.download":"Download CSV","db.schema.filter":"Filter tables","db.schema.collapseAll":"Collapse all schemas","db.schema.expandAll":"Expand all schemas","db.schema.refresh":"Reload the schema","db.schema.loading":"Reading the schema…","db.schema.empty":"No tables here.","db.schema.pick":"Pick a table to see its columns (double click to see its rows).","db.schema.table":"Table","db.schema.view":"View","db.rows.est":"about {count} rows","db.select100":"See the first rows","db.copyName":"Copy name","db.col.name":"Column","db.col.type":"Type","db.col.null":"Null","db.col.key":"Key","db.col.default":"Default","db.yes":"yes","db.no":"no","db.format":"Format","db.format.hint":"Format the query, or the selected text (Alt+Shift+F)","db.format.fail":"The query could not be formatted: {error}","db.saved.manage":"Manage saved queries…","db.saved.use":"Add it to the editor","db.saved.rename":"Rename","db.saved.replace":"Replace its text with what is in the editor","db.saved.updated":"Saved query updated","db.saved.delete.title":"Delete “{name}”?","db.saved.delete.body":"The saved query is removed. Queries already run stay in the history.","db.help.3":"Tables, schemas, columns and SQL keywords are suggested while you type (after a table name or alias and a dot you get its columns). Ctrl+Space asks for them; Tab or Enter accepts.","db.help.4":"Format tidies the query, or only the selected text (Alt+Shift+F). A query picked from the history or the saved ones is added at the end of the editor and left selected, so what you wrote stays.","common.showPassword":"Show the password","common.hidePassword":"Hide the password","db.hist.title":"Recent queries","db.hist.empty":"Nothing has been run yet.","db.hist.clear":"Clear history","db.delete":"Delete","db.engine.hint":"What kind of database it is. Each one has its own driver.","db.engine.port":"Port {port}","db.engine.file":"A file on this computer","db.url":"Connection URL","db.url.hint":"Optional: paste one and the fields below are filled in (user, password, host, port, database and SSL).","db.url.use":"Fill in","db.url.bad":"Not a URL it understands. It starts with postgresql://, mysql://, mssql:// or sqlite://","db.trust.on":"The connection is encrypted but the server is not verified: anyone in the middle could pass as it. Fine for a local or test server.","db.trust.off":"The certificate of the server is checked. For one signed by a private authority, give its file below.","db.advanced":"Advanced","db.advanced.hint":"SSL certificates and driver properties","db.sslTitle":"SSL / TLS","db.sslTitle.hint":"Encrypt the connection and, if the server asks, identify this client with certificates.","db.ssl.ca":"CA certificate","db.ssl.cert":"Client certificate","db.ssl.key":"Client key","dp.title":"Driver properties","dp.hint":"Options of the driver that opens the connection. Only the ones it understands are listed, and each one changes how it connects.","dp.loading":"Loading the properties…","dp.none":"None set: the driver uses its defaults.","dp.add":"Add a property…","dp.remove":"Remove {name}","dp.group.session":"Session","dp.group.network":"Network","dp.group.ssl":"SSL","dp.group.advanced":"Advanced","obj.title":"Resources","obj.kind.http":"HTTP requests","obj.kind.http.hint":"A folder of .http files: pick an environment and run their requests.","obj.kind.cluster":"Cluster","obj.kind.cluster.hint":"Groups servers and containers: start, stop and read them together.","obj.status.ready":"Ready","obj.f.httpFolder":"Folder with the .http files","obj.f.httpFolder.hint":"Every .http and .rest file inside it (up to 4 levels) is read.","obj.f.defaultEnv":"Default environment (optional)","obj.f.defaultEnv.hint":"One of the names in http-client.env.json, e.g. dev.","obj.f.members":"Resources it groups","obj.f.members.hint":"Servers and containers of the same colony. They start in this order and stop in the opposite one.","obj.f.members.none":"This colony has no servers or containers yet.","obj.delete.http":"The folder and its files are not touched.","obj.delete.cluster":"Only the group goes away; its members keep running as they are.","http.open":"Open the runner","http.title":"HTTP requests","http.env":"Environment","http.noEnv":"No environment","http.search":"Search requests","http.run":"Run","http.runFile":"Run the whole file","http.running":"Running…","http.rescan":"Read the files again","http.empty":"There are no .http or .rest files with requests in this folder.","http.pick":"Pick a request on the left.","http.missing":"Missing values: {names}","http.missing.hint":"Pick an environment that defines them, or add them to the file.","http.body":"Response","http.headers":"Headers","http.request":"Request","http.noResponse":"Not run yet. Press Run (Ctrl+Enter).","http.binary":"The answer is binary ({type}, {size}).","http.truncated":"The answer was cut at 2 MB.","http.emptyBody":"The answer has no body.","http.requestBody":"Body","http.status":"Status","http.time":"{ms} ms","http.truncatedFiles":"Showing the first files only.","http.fileResults":"{ok} of {total} answered with 2xx","obj.members":"Members","obj.members.empty":"It groups nothing yet. Edit it to choose the resources.","obj.http.summary":"{count} requests in {files} files","obj.act.startAll":"Start all","obj.act.stopAll":"Stop all","obj.act.restartAll":"Restart all","obj.manager.description":"Looks after the servers and containers of the colony: state, logs, start, stop and restart.","obj.manager.subtitle":"An agent that looks after the resources of a colony","obj.managers":"Who looks after it","obj.manager.label":"Manager agent","obj.manager.placeholder":"Search an agent…","obj.manager.empty":"No agent matches.","obj.manager.hint.set":"Only this agent looks after the resource: it sees its state and logs and can start, stop and restart it. It gets the “Colony resources” skill if it lacks it.","obj.manager.hint.none":"None chosen: the agents of its colony that have the “Colony resources” skill look after it. Search to choose a single agent instead.","obj.managers.add":"Add manager agent","obj.managers.remove":"Remove the manager","obj.managers.only":"Only this agent looks after it.","form.resources":"Resources it looks after","form.resources.hint":"Servers, containers and clusters this agent can see, read the logs of, and start, stop or restart. A resource has a single manager: choosing one that another agent looks after moves it here. The agent gets the “Colony resources” skill.","form.resources.placeholder":"Search resources…","form.resources.empty":"No resource matches.","form.resources.taken":"now: {name}","obj.managers.none":"No agent looks after the resources of this colony yet.","obj.managers.create":"Create a manager agent","obj.managers.ro":"read-only","obj.managers.readonly":"Read-only: it can look and read logs, but not start or stop.","obj.save":"Save","obj.create":"Create","obj.new":"New resource","obj.newTitle":"New resource","obj.editTitle":"Edit {name}","obj.subtitle":"Add a server or Docker container to keep running, a database to query, HTTP requests to send, or a cluster that groups them.","obj.kind.server":"Server","obj.kind.docker":"Docker","obj.kind.pick":"What kind of resource","obj.kind.server.hint":"A command hive-am keeps running (npm run dev, a Java jar…), with its logs.","obj.kind.docker.hint":"A container, a compose project, or one that already exists.","obj.status.running":"Running","obj.status.starting":"Starting","obj.status.stopped":"Stopped","obj.status.error":"Error","obj.status.unknown":"Unknown","obj.act.start":"Start","obj.act.stop":"Stop","obj.act.restart":"Restart","obj.act.edit":"Edit resource","obj.act.failed":"{action} failed","obj.logs":"Logs","obj.logs.empty":"Nothing printed yet.","obj.logs.bottom":"Go to the end","obj.logs.clear":"Clear the view","obj.since":"since {time}","obj.pid":"PID {pid}","obj.colony":"Colony","obj.noColony":"No colony","obj.f.name":"Name","obj.f.folder":"Folder","obj.f.folder.hint":"Where the command runs.","obj.f.start":"Start command","obj.f.start.hint":"Runs in that folder through the shell, e.g. npm run dev.","obj.f.stop":"Stop command (optional)","obj.f.stop.hint":"Run before the process is stopped, e.g. docker compose down. The process is always stopped after it.","obj.f.port":"Port (optional)","obj.f.port.hint":"If you set it, the resource is Starting until something listens there.","obj.f.env":"Environment variables","obj.f.env.hint":"One NAME=value per line.","obj.f.mode":"How it is managed","obj.mode.container":"Create a container","obj.mode.compose":"Compose project","obj.mode.existing":"Existing container","obj.f.image":"Image","obj.f.ports":"Ports","obj.f.ports.hint":"One per line: 8080:80","obj.f.volumes":"Volumes","obj.f.volumes.hint":"One per line: /host/path:/in/container","obj.f.restart":"Restart policy","obj.f.command":"Command (optional)","obj.f.file":"Compose file","obj.f.project":"Project name (optional)","obj.f.services":"Services (optional)","obj.f.services.hint":"Separated by commas; empty means all of them.","obj.f.container":"Container","obj.f.container.hint":"Its name or id. hive-am only starts, stops and reads it; deleting the resource never removes it.","obj.created":"Resource created","obj.saved":"Resource saved","obj.deleted":"Resource deleted","obj.delete":"Delete resource","obj.delete.title":"Delete {name}?","obj.delete.server":"It is stopped if it is running, and its logs are removed.","obj.delete.container":"The container hive-am created for it is removed.","obj.delete.compose":"The compose project is stopped, not removed.","obj.delete.existing":"The container is left as it is.","obj.err.name":"Give it a name.","stat.objects_one":"resource","stat.objects_other":"resources","obj.running":"{count} running","git.search.name":"Name","git.files.short":"files","git.search.content":"Content","git.search.placeholder":"Search inside the files","git.search.min":"Type at least 2 characters.","git.search.none":'No file contains "{query}".',"git.search.capped":"Showing the first {count} matches.","git.search.searching":"Searching…","git.img.before":"Before","git.img.after":"After","git.tags.branchName":"Branch name","git.tags.createBranch":"Create branch","git.tags.newBranch":"Create a branch here","git.tags.branchCreated":"Branch {branch} created (you stay where you are)","git.br.delete":"Delete branch {branch}","git.br.deleteAsk":"Delete the local branch {branch}? Its commits stay in git for as long as another branch or tag reaches them.","git.br.deleteGo":"Delete","git.br.deleteForce":"Delete anyway (commits that are in no other branch are lost)","git.done.branchDelete":"Branch deleted","git.layout.unified":"Unified","git.layout.split":"Side by side","git.copyPath":"Copy path","git.renamedFrom":"Renamed from {path}","git.diff.binary":"Binary file. There is no text diff to show.","git.diff.empty":"No textual differences (for example, only the file mode changed).","git.diff.truncated":"The diff was too large and is shown only in part.","git.file.binary":"Binary file. It can’t be previewed.","git.file.empty":"Empty file.","git.file.deleted":"Deleted from the working tree. Showing the version from the last commit.","git.file.truncated":"Large file. Showing only the first part.","git.loadError":"Couldn’t load the preview.","git.info.toggle":"Show branch and last commit details","git.info.branch":"Branch","git.info.upstreamLabel":"Remote branch","git.info.noUpstream":"No remote branch configured","git.info.inSync":"In sync with the remote branch","git.info.upstreamStatus":"{ahead} ahead \xb7 {behind} behind the remote branch","git.info.commit":"Last commit","git.info.message":"Message","git.info.author":"Author","git.info.when":"When","git.info.copyBranch":"Copy branch name","git.info.copySha":"Copy commit hash","server.invalidPath":"Invalid path","server.pathOutside":"Path is outside the agent’s folder","server.fileNotFound":"File not found","server.notFile":"Not a file","server.notImage":"Not an image","server.imageTooLarge":"Image is too large to preview","server.pathRequired":"path is required","hover.noOrchestrator":"No orchestrator","hover.more_one":"+{count} more","hover.more_other":"+{count} more","md.toolbar":"Formatting","md.heading":"Heading","md.bold":"Bold","md.boldPh":"bold text","md.italic":"Italic","md.italicPh":"italic text","md.code":"Inline code","md.codeBlock":"Code block","md.bullets":"Bulleted list","md.numbered":"Numbered list","md.quote":"Quote","md.link":"Link","md.linkPh":"link text","md.rule":"Divider","md.view.write":"Write","md.view.split":"Split","md.view.preview":"Preview","md.stats":"{words} words \xb7 {chars} characters","md.tips":"Tab indents \xb7 Enter continues lists \xb7 Ctrl+B / I / K","git.act.group":"Git actions","git.act.fetch":"Fetch","git.act.fetch.hint":"Check the remote for new commits without changing your files","git.act.pull":"Pull","git.act.pull.hint":"Bring in the remote’s new commits (fast-forward only)","git.act.push":"Push","git.act.push.hint":"Send your commits to the remote","git.act.commit":"Commit","git.act.branches":"Branches","git.done.fetch":"Fetched","git.done.pull":"Pulled","git.done.push":"Pushed","git.done.commit":"Committed","git.done.switch":"Switched to {branch}","git.done.merge":"Merged {branch}","git.done.mergeAbort":"Merge aborted","git.notice.failed":"{action} failed","git.notice.diverged":"The branches have diverged. Choose how to combine them:","git.pull.merge":"Pull with merge","git.pull.rebase":"Pull with rebase","git.warn.running":"{name} is working. Committing, pulling or switching branches now can collide with its edits.","git.br.search":"Find a branch","git.br.new":"New branch from {branch}","git.br.newPlaceholder":"new-branch-name","git.br.create":"Create","git.br.local":"Local","git.br.remote":"Remote","git.br.merge":"Merge into {branch}","git.br.mergeAsk":"Merge {from} into {into}?","git.br.mergeGo":"Merge","git.br.none":"No branches match","git.br.switchTo":"Switch to {branch}","git.commit.title":"Commit changes","git.commit.selected":"{n} of {total} selected","git.commit.all":"All","git.commit.none":"None","git.commit.message":"Message","git.commit.placeholder":"Summarize what changed and why","git.commit.go":"Commit","git.commit.goPush":"Commit & push","git.commit.committing":"Committing…","git.commit.hint":"Only the selected files are committed. Ctrl+Enter to commit.","git.commit.nothing":"Nothing to commit","git.tab.files":"Files","git.tab.history":"History","git.hist.empty":"No commits yet","git.hist.more":"Load more","git.hist.merge":"merge","git.hist.select":"Select a commit to see what it changed","git.hist.files_one":"{count} file changed","git.hist.files_other":"{count} files changed","git.hist.noFiles":"No file changes (empty or merge commit)","git.res.done":"Marked as resolved","git.res.restored":"Conflict restored","git.res.left_one":"{count} conflict left","git.res.left_other":"{count} conflicts left","git.res.none":"No conflict markers left","git.res.allMine":"Keep all mine","git.res.allMine.hint":"Take your side of the whole file and mark it resolved","git.res.allRemote":"Keep all remote","git.res.allRemote.hint":"Take the incoming side of the whole file and mark it resolved","git.res.noEdit":'This file is binary or too large to resolve here. Use "Keep all mine" or "Keep all remote".',"git.res.block":"Conflict {n} of {total}","git.res.line":"line {n}","git.res.mine":"Mine (current branch)","git.res.remote":"Remote (incoming)","git.res.empty":"(nothing)","git.res.keepMine":"Keep mine","git.res.keepRemote":"Keep remote","git.res.both":"Keep both","git.res.bothMine":"Mine first","git.res.bothRemote":"Remote first","git.res.result":"Result","git.res.editHint":"You can edit it freely before saving","git.res.restore":"Restore conflict","git.res.restore.hint":"Discard your choices and bring the conflict markers back","git.res.markResolved":"Mark as resolved","git.state.merge":"Merge in progress","git.state.rebase":"Rebase in progress","git.state.conflicts_one":"{count} file with conflicts","git.state.conflicts_other":"{count} files with conflicts","git.state.ready":"All conflicts are resolved.","git.state.finishMerge":"Finish merge (commit)","git.state.continueRebase":"Continue rebase","git.state.abortMerge":"Abort merge","git.state.abortRebase":"Abort rebase","git.done.rebaseContinue":"Rebase continued","git.set.title":"Code view settings","git.set.theme":"Theme","git.set.themeApp":"Hive (app)","git.set.whitespace":"Show whitespace","git.set.whitespace.hint":"Spaces as \xb7 and tabs as →, in the viewer, diffs and editor","git.set.tab":"Tab width","git.set.note":"Saved in this browser only.","git.blame":"Blame","git.blame.hint":"Show who last changed each line","git.blame.uncommitted":"Not committed","git.blame.truncated":"Blame shows the first {count} lines only.","git.discard":"Discard","git.discard.hint":"Throw away this file’s changes","git.discard.hunk":"Discard block","git.discard.hunk.hint":"Throw away just this block of changes","git.discard.all":"Discard all changes","git.discard.all.blocked":"Finish or abort the merge/rebase first","git.done.discard":"Changes discarded","git.discard.confirm.title":"Delete files completely?","git.discard.confirm.body_one":"This file is new (it is not in any commit), so discarding it deletes it completely. It cannot be recovered.","git.discard.confirm.body_other":"These {count} files are new (they are not in any commit), so discarding them deletes them completely. They cannot be recovered.","git.discard.confirm.go":"Delete files","git.discard.lines":"Select lines","git.discard.lines.hint":"Pick individual added/removed lines of this block to discard","git.discard.lines.all":"All","git.discard.lines.go_one":"Discard {count} line","git.discard.lines.go_other":"Discard {count} lines","git.discard.lines.pick":"Include this line","git.discard.all.title":"Discard all changes?","git.discard.all.restore_one":"{count} file with changes goes back to the last commit.","git.discard.all.restore_other":"{count} files with changes go back to the last commit.","git.discard.all.delete_one":"{count} new file (it is not in any commit) will be DELETED completely:","git.discard.all.delete_other":"{count} new files (they are not in any commit) will be DELETED completely:","git.discard.all.lines":"In total: +{add} −{del} lines of changes.","git.discard.all.warn":"All of this is lost for good. It cannot be undone.","git.discard.all.go":"Discard all changes","git.discard.file.title":"Discard this file’s changes?","git.discard.file.modified":"The file goes back to how it is in the last commit{lines}.","git.discard.file.deleted":"The deleted file will be restored from the last commit.","git.discard.file.renamed":"The rename is undone: the file goes back to its original name, {from}.","git.discard.file.go":"Discard file changes","git.pending.conflicts":"resolve the conflicts","git.tab.stashes":"Stashes","git.stash.save":"Save changes to stash","git.stash.nothing":"There are no changes to stash","git.stash.empty":"No stashes. A stash holds changes you set aside to bring back later.","git.stash.smart":"smart switch","git.stash.saved":"Changes stashed","git.stash.save.body":"Your uncommitted changes (including new files) are set aside and the working tree goes back to the last commit.","git.stash.save.placeholder":"Message (optional)","git.stash.apply":"Apply","git.stash.apply.hint":"Bring the changes back and keep the stash","git.stash.pop":"Apply and delete","git.stash.pop.hint":"Bring the changes back and delete the stash","git.stash.drop":"Delete","git.stash.drop.title":"Delete this stash?","git.stash.drop.body":"The changes saved in “{name}” will be deleted.","git.stash.applied":"Stash applied","git.stash.popped":"Stash applied and deleted","git.stash.dropped":"Stash deleted","git.sw.title":"Switch to {branch}?","git.sw.carried_one":"{count} uncommitted change comes with you from {from}.","git.sw.carried_other":"{count} uncommitted changes come with you from {from}.","git.sw.others_one":"{names} is working in this repository right now: switching branches changes the files it is editing.","git.sw.others_other":"{names} are working in this repository right now: switching branches changes the files they are editing.","git.sw.anyway":"Switch anyway","git.done.switchCarried":"Switched to {branch}; {count} changes came with you","git.state.stash":"Smart switch in progress","git.state.stash.hint":"{from} → {to}: your changes are being brought back","git.state.finishStash":"Finish","git.state.cancelStash":"Cancel smart switch","git.done.smartFinish":"Switch finished","git.done.smartCancel":"Switch cancelled","git.state.cancelStash.title":"Cancel the smart switch?","git.state.cancelStash.body":"You go back to {from} and your changes return exactly as they were. Anything you edited while resolving conflicts is lost.","git.state.cancelStash.go":"Cancel switch","git.res.mine.stash":"Mine (your saved changes)","git.res.remote.stash":"Other branch","git.sw.kept_one":"{names} already existed there: your version was kept (it shows as a change)","git.sw.kept_other":"{names} already existed there: your versions were kept (they show as changes)","git.peek.title":"Change block","git.peek.hint":"Click to see this change","git.peek.lines":"Change block \xb7 lines {from}–{to}","git.peek.line":"Change block \xb7 line {n}","git.peek.prev":"Previous change","git.peek.next":"Next change","git.peek.count":"{n} of {total}","git.set.ignored":"Show ignored files","git.set.ignored.hint":"What .gitignore hides (node_modules, build, .env…) appears dimmed; folders open one level at a time","git.ignored.hint":"Ignored by git","git.ignored.chip":"Ignored","lib.unreachable":"Can’t reach the server. Check that it is running.","lib.timeout":"The server took too long to answer.","ws.more":"More actions","search.clear":"Clear search","tabs.close":"Close tab","folder.loading":"Loading folders…","folder.error":"Could not list the folders","folder.retry":"Retry","fa.retry":"Retry","fa.cfg.tabs":"Agent panel","fa.sessions.loadFailed":"Could not load the sessions. Check that the server is running.","fa.sched.loadFailed":"Could not load the schedules. Retrying.","fa.chat.log":"Conversation with {name}","fa.chat.jump":"Jump to latest","fa.chat.working":"{name} is working","fa.chat.done":"{name} finished replying","fa.unsaved.title":"Discard unsaved changes?","fa.unsaved.body":"You have edits that are not saved. If you continue they will be lost.","fa.unsaved.discard":"Discard changes","fa.unsaved.keep":"Keep editing","cx.new":"New","cx.stat.open":"Open {label}","cx.loadFailed":"Could not load your colony.","cx.retry":"Retry","cx.loading":"Loading the colony","cx.openAgent":"Open {name}","cx.moveHint":"Arrow keys move it (Shift for bigger steps)"},n=[{id:"en",short:"EN",name:"English"},{id:"es",short:"ES",name:"Espa\xf1ol"}],s="hive-locale",r={en:a,es:{"app.tagline":"administrador de colonias de agentes","nav.main":"Principal","nav.colony":"Colonia","nav.agents":"Agentes","nav.relations":"Relaciones","nav.library":"Biblioteca","nav.types":"Tipos de agente","nav.skills":"Skills","nav.history":"Historial","nav.sessions":"Sesiones","nav.connected":"Conectado al servidor","nav.offline":"Servidor sin conexi\xf3n. Reintentando…","nav.switchTheme":"Cambiar tema","lang.label":"Idioma","time.justNow":"justo ahora","time.minutesAgo_one":"hace {count} min","time.minutesAgo_other":"hace {count} min","time.hoursAgo_one":"hace {count} h","time.hoursAgo_other":"hace {count} h","time.daysAgo_one":"hace {count} d","time.daysAgo_other":"hace {count} d","provider.claude.blurb":"El agente de c\xf3digo de Anthropic. Transmite tokens y se reanuda por id de sesi\xf3n.","provider.opencode.blurb":"Agente de c\xf3digo abierto sobre cualquier proveedor de modelos que tengas configurado.","provider.kiro.blurb":"El CLI ag\xe9ntico de AWS con flujos guiados por especificaciones.","provider.installed":"● instalado","provider.notFound":"● no encontrado","permission.plan.label":"Solo lectura","permission.plan.hint":"Planifica y lee; nunca edita archivos ni ejecuta comandos.","permission.acceptEdits.label":"Editar archivos","permission.acceptEdits.hint":"Edita archivos libremente; las dem\xe1s acciones de riesgo siguen las reglas del propio CLI.","permission.bypassPermissions.label":"Acceso total","permission.bypassPermissions.hint":"Ejecuta cualquier cosa sin preguntar. \xdasalo en carpetas desechables.","permission.title":"\xbfQu\xe9 puede hacer?","role.orchestrator":"Orquestador","role.worker":"Worker","status.idle":"Inactivo","status.running":"Trabajando","status.error":"Requiere atenci\xf3n","server.invalidJson":"El cuerpo de la solicitud no es un JSON v\xe1lido","server.nameRequired":"El nombre es obligatorio","server.unknownProvider":'Proveedor desconocido "{name}"',"server.unknownProviderShort":"Proveedor desconocido","server.pickProvider":"Elige un proveedor","server.badRole":"El rol debe ser orquestador o worker","server.folderMissing":"La carpeta no existe: {path}","server.notFolder":"No es una carpeta","server.colonyGone":"Esa colonia ya no existe","server.agentExists":'Ya existe un agente llamado "{name}"',"server.skillExists":'Ya existe una skill llamada "{name}"',"server.typeExists":'Ya existe un tipo llamado "{name}"',"server.colonyExists":'Ya existe una colonia llamada "{name}"',"server.needFolderOrColony":"Elige una carpeta de trabajo o coloca al agente en una colonia que la aporte.","server.needFolderOrInherit":"Elige una carpeta de trabajo o sigue heredando la de la colonia.","server.agentNotFound":"Agente no encontrado","server.skillNotFound":"Skill no encontrada","server.typeNotFound":"Tipo no encontrado","server.colonyNotFound":"Colonia no encontrada","server.messageEmpty":"El mensaje est\xe1 vac\xedo","server.onlyOwnSessions":"Solo las conversaciones propias del agente pueden hacerse actuales. Las sesiones delegadas son de solo lectura.","server.sessionNotOwned":"Esa sesi\xf3n no pertenece a este agente","server.onlyOrchestrators":"Solo los orquestadores pueden tener subagentes","server.dispatchFields":"Se requieren from, agent y task","server.unknownOrchestrator":"Orquestador desconocido","server.noAgentNamed":'No hay ning\xfan agente llamado "{name}"',"server.notAssigned":'"{worker}" no est\xe1 asignado a {orchestrator}',"server.unexpected":"Error inesperado del servidor","server.noRoute":"Ruta inexistente","server.notFound":"No encontrado","server.noWorkingFolder":"Este agente no tiene carpeta de trabajo. Define una en el agente o en su colonia.","server.agentGone":"El agente ya no existe","server.requestFailed":"La solicitud fall\xf3 ({status})","common.cancel":"Cancelar","common.close":"Cerrar","drawer.resize":"Arrastra para ajustar el ancho \xb7 doble clic para ampliar","drawer.expand":"Ampliar panel","drawer.shrink":"Reducir panel","common.back":"Atr\xe1s","common.saving":"Guardando…","common.delete":"Eliminar","common.edit":"Editar","common.discard":"Descartar","common.hide":"Ocultar","common.dismiss":"Descartar","common.noDescription":"Sin descripci\xf3n","common.copy":"Copiar","common.copied":"Copiado","common.clearFilters":"Limpiar filtros","common.all":"Todos","common.working":"Trabajando","field.model":"Modelo","model.loading":"Cargando los modelos que ofrece este CLI…","model.pick":"Elige un modelo, o escribe el id de uno que no aparezca en la lista.","model.none":"No se pudieron listar los modelos. Abre el selector y escribe un id de modelo, o deja el predeterminado del CLI.","model.search":"Busca, o escribe el id de un modelo","model.custom":"Usar \xab{id}\xbb","model.cliDefault.hint":"lo elige la CLI","model.cliDefault":"Predeterminado del CLI","field.folder":"Carpeta de trabajo","folder.hint":"El agente corre aqu\xed, y cada carpeta conserva sus propias sesiones nativas.","folder.placeholder":"/home/tu/proyecto","folder.browse":"Explorar","folder.up":"Subir una carpeta","folder.use":"Usar esta carpeta","folder.empty":"No hay subcarpetas aqu\xed.","folder.emptyFiles":"No hay carpetas ni archivos que coincidan aqu\xed.","obj.f.file.hint":"El docker-compose.yml (o .yaml) del proyecto.","obj.f.volumes.add":"A\xf1adir una carpeta de esta m\xe1quina","skillPicker.search":"Buscar skills para a\xf1adir…","skillPicker.noMatch":"Ninguna skill coincide con \xab{query}\xbb.","skillPicker.allAdded":"Ya a\xf1adiste todas las skills.","skillPicker.remove":"Quitar {name}","skillPicker.weight":"Siempre en el prompt: ~{always} tokens \xb7 {onDemand} bajo demanda.","skillPicker.heavy":"Es bastante: pasa las m\xe1s largas a \xabBajo demanda\xbb.","tool.skillRead":"Cargar skill","skillPicker.mode.always":"siempre","skillPicker.mode.lazy":"a demanda","skillPicker.mode.always.hint":"Su texto (~{tokens} tokens) va en las instrucciones de cada turno. Clic para pasarla a \xaba demanda\xbb.","skillPicker.mode.lazy.hint":"Solo se lista su nombre y descripci\xf3n; el agente lee el texto (~{tokens} tokens) cuando lo necesita. Clic para pasarla a \xabsiempre\xbb.","skillPicker.empty":"A\xfan no hay skills. Crea algunas en la biblioteca de Skills y luego a\xf1\xe1delas aqu\xed.","common.noColony":"Sin colonia","common.saveChanges":"Guardar cambios","form.err.name":"Ponle un nombre al agente.","form.err.nameTaken":"Otro agente ya usa este nombre.","form.err.folder":"Elige la carpeta en la que trabaja este agente.","form.name":"Nombre","form.name.hint":"Los orquestadores se dirigen a los workers por este nombre, as\xed que mantenlo corto y distinto.","form.name.placeholder":"p. ej. api-builder","form.purpose":"\xbfPara qu\xe9 sirve?","form.purpose.hint":"Una l\xednea. Los orquestadores la leen para decidir qui\xe9n recibe cada tarea.","form.purpose.placeholder":"Implementa endpoints del backend y sus pruebas","form.role":"Rol","form.role.orchestratorHint":"Planifica el trabajo y lo delega a los workers que tiene asignados.","form.role.workerHint":"Hace el trabajo que recibe, directamente de ti o de un orquestador.","form.basedOn":"Basado en el tipo “{name}”. Los cambios aqu\xed solo afectan a este agente.","form.colony":"Colonia","form.colony.hint":"Los agentes de una colonia pueden seguir su carpeta, permisos, skills y contexto compartido. El proveedor y el modelo siempre se definen por agente.","form.provider":"Proveedor","form.ownPrompt":"System prompt propio del agente","form.systemPrompt":"System prompt","form.promptHint_one":"{n} car\xe1cter. Se a\xf1ade a las instrucciones propias del CLI en cada turno.","form.promptHint_other":"{n} caracteres. Se a\xf1aden a las instrucciones propias del CLI en cada turno.","form.prompt.placeholder":"Eres un ingeniero de backend cuidadoso. Ejecuta siempre las pruebas antes de reportar.","form.skills":"Skills","form.browser":"Navegador (Chrome)","form.browser.hint":"Permite que este agente controle tu Chrome con la extensi\xf3n Claude in Chrome: abrir p\xe1ginas, leerlas, hacer clic y rellenar formularios, con tus sesiones iniciadas. Chrome y la extensi\xf3n deben estar abiertos en la m\xe1quina donde corre hive-am.","form.skills.hint":"Se a\xf1aden al system prompt en el orden mostrado.","form.team":"Equipo","form.team.hint":"Solo estos workers pueden recibir tareas de este orquestador.","form.team.empty":"A\xfan no hay workers. Crea un agente worker y as\xedgnalo aqu\xed o en el lienzo de Relaciones.","inherit.permissions":"Permisos","inherit.context":"Contexto compartido","inherit.context.note":"Se coloca antes del prompt propio de este agente.","inherit.skills":"Skills de la colonia","inherit.skills.note":"Se suman a las skills propias de este agente.","inherit.from":"de","inherit.following":"Siguiendo","inherit.own":"Valor propio","newAgent.title":"Nuevo agente","newAgent.pickType":"Empieza desde un tipo para rellenar proveedor, modelo, prompt y skills.","newAgent.typeFallback":"{role} en {provider}","newAgent.blank":"Agente en blanco","newAgent.blankHint":"Configura todo t\xfa mismo.","newAgent.fromType":"Desde el tipo “{name}”","newAgent.create":"Crear agente","newAgent.creating":"Creando…","newAgent.created":"{name} creado","newAgent.failed":"No se pudo crear el agente","edit.title":"Ajustes de {name}","edit.subtitleRunning":"Este agente est\xe1 trabajando: los cambios aplican desde su siguiente turno.","edit.subtitleIdle":"Los cambios aplican desde su siguiente mensaje.","edit.fixFields":"Corrige primero los campos marcados","edit.saved":"{name} guardado","edit.saveFailed":"No se pudo guardar","colony.err.name":"Ponle un nombre a la colonia.","colony.err.nameTaken":"Otra colonia ya usa este nombre.","colony.saved":"Colonia guardada","colony.created":"Colonia creada","colony.deleted":"Colonia eliminada","colony.editTitle":"Editar {name}","colony.newTitle":"Nueva colonia","colony.subtitle":"Un grupo de agentes dibujado junto en el panal, que comparte valores por defecto.","colony.save":"Guardar colonia","colony.create":"Crear colonia","colony.name.placeholder":"p. ej. Backend de facturaci\xf3n","colony.color":"Color","colony.colorOption":"Color {color}","colony.colorCustom":"Color personalizado","colony.colorHex":"C\xf3digo hex","colony.err.color":"Escribe el color como #rrggbb, p. ej. #2f8f5b","colony.context.hint":"Instrucciones que cada miembro ve antes de su propio prompt.","colony.context.placeholder":"Todos los servicios usan PostgreSQL 16. Nunca toques la carpeta de migraciones sin preguntar.","colony.members":"Miembros","colony.members.hint":"Un agente pertenece a una sola colonia. Elegir uno que est\xe1 en otra lo mueve aqu\xed.","colony.members.empty":"A\xfan no hay agentes. Crea algunos y luego agr\xe9galos aqu\xed.","colony.currentlyIn":"Actualmente en {name}","colony.deleteTitle":"\xbfEliminar {name}?","colony.deleteBody_one":"Su {count} agente se queda, pero deja de seguir la carpeta, los permisos, las skills y el contexto de la colonia. Las carpetas que hered\xf3 pasan a ser suyas solo si las defines.","colony.deleteBody_other":"Sus {count} agentes se quedan, pero dejan de seguir la carpeta, los permisos, las skills y el contexto de la colonia. Las carpetas que heredaron pasan a ser suyas solo si las defines.","colony.keep":"Conservar colonia","colony.delete":"Eliminar colonia","inheritAsk.title":"\xbfQu\xe9 deben heredar sus agentes?","inheritAsk.intro":"Los miembros las siguen por defecto. Cualquier agente puede excluirse por su cuenta.","inheritAsk.field.cwd":"Carpeta de trabajo","inheritAsk.field.permission":"Permisos","inheritAsk.field.skills":"Skills","inheritAsk.field.prompt":"Contexto compartido","inheritAsk.hint.cwd":"Los agentes corren en la carpeta de la colonia.","inheritAsk.hint.permission":"Los agentes reciben el nivel de acceso de la colonia.","inheritAsk.hint.skills":"Las skills de la colonia se suman a las propias de cada agente.","inheritAsk.hint.prompt":"El prompt de la colonia va antes del prompt propio de cada agente.","inheritAsk.empty.cwd":"A\xfan no hay nada definido: a\xf1ade una carpeta para compartirla.","inheritAsk.empty.permission":"A\xfan no hay nada definido: a\xf1ade permisos para compartirlos.","inheritAsk.empty.skills":"A\xfan no hay nada definido: a\xf1ade skills para compartirlas.","inheritAsk.empty.prompt":"A\xfan no hay nada definido: a\xf1ade contexto compartido para compartirlo.","inheritAsk.folderMoves_one":"{count} agente se mueve a esta carpeta y empieza una conversaci\xf3n nueva. Las anteriores quedan en su pesta\xf1a Sesiones.","inheritAsk.folderMoves_other":"{count} agentes se mueven a esta carpeta y empiezan una conversaci\xf3n nueva. Las anteriores quedan en su pesta\xf1a Sesiones.","activity.delegated":"Tarea delegada \xb7 ","activity.starting":"Iniciando…","activity.running":"Ejecutando {tool}","activity.ran":"Ejecut\xf3 {tool}","activity.thinking":"Pensando…","activity.writing":"Escribiendo una respuesta…","switcher.find":"Buscar un agente","switcher.noMatch":"Ning\xfan agente coincide con “{query}”.","switcher.noDescription":"A\xfan sin descripci\xf3n","switcher.collapse":"Contraer la lista de agentes","switcher.expand":"Expandir la lista de agentes","queue.count_one":"{count} en cola","queue.count_other":"{count} en cola","common.yes":"s\xed","tool.delegate":"Delegar","tool.roster":"Equipo","tool.shell":"Shell","tool.read":"Leer","tool.write":"Escribir","tool.edit":"Editar","tool.subagent":"Subagente","tool.plan":"Plan","tool.k.subagent":"Subagente","tool.k.task":"Tarea","tool.k.tool":"Herramienta","tool.k.workdir":"Directorio de trabajo","tool.k.timeout":"Tiempo l\xedmite","tool.k.background":"Segundo plano","tool.k.path":"Ruta","tool.k.offset":"Desplazamiento","tool.k.limit":"L\xedmite","tool.k.replaceAll":"Reemplazar todo","tool.k.type":"Tipo","tool.k.description":"Descripci\xf3n","tool.k.prompt":"Prompt","tool.command":"Comando","tool.copyCommand":"Copiar comando","tool.copyOutput":"Copiar salida","tool.output":"Salida","tool.noOutput":"(sin salida)","tool.truncated":"… (recortado)","tool.exit":"salida {code}","tool.failed":"fall\xf3","tool.lines_one":"{count} l\xednea","tool.lines_other":"{count} l\xedneas","tool.writeSummary_one":"{path} \xb7 {count} l\xednea","tool.writeSummary_other":"{path} \xb7 {count} l\xedneas","tool.editSummary_one":"{path} \xb7 {count} cambio","tool.editSummary_other":"{path} \xb7 {count} cambios","tool.planSummary":"{done}/{total} hechas","stats.context":"contexto","stats.contextTitle":"Tokens en el contexto de la \xfaltima solicitud","stats.tokens":"tokens","stats.credits":"cr\xe9ditos","stats.costEstimated":"Estimado con los precios p\xfablicos de lista","stats.costReported":"Informado por el CLI","stats.turns_one":"turno","stats.turns_other":"turnos","stats.toolCalls_one":"llamada a herramienta","stats.toolCalls_other":"llamadas a herramientas","stats.failed_one":"{count} fall\xf3","stats.failed_other":"{count} fallaron","stats.working":"trabajando","stats.mix":"Mezcla de tokens","stats.cacheRead":"Lectura de cach\xe9","stats.cacheWrite":"Escritura de cach\xe9","stats.input":"Entrada","stats.output":"Salida","stats.thinking":"{tokens} de razonamiento","stats.models":"Modelos","stats.modelLine_one":"{count} msj \xb7 {out} de salida","stats.modelLine_other":"{count} msjs \xb7 {out} de salida","stats.toolsUsed":"Herramientas usadas","stats.totalTime":"{time} en total","stats.noTools":"A\xfan no se llam\xf3 a ninguna herramienta.","stats.toolTitle_one":"{count} llamada \xb7 {time} en total","stats.toolTitle_other":"{count} llamadas \xb7 {time} en total","stats.perTurn":"Tokens por turno","stats.promptFallback":"(prompt)","stats.turnLine":"{tokens} tokens \xb7 {tools} herramientas \xb7 {time}","chat.tokenDetail":"entrada {input} \xb7 salida {output} \xb7 lectura de cach\xe9 {cacheRead} \xb7 escritura de cach\xe9 {cacheWrite}","chat.inOut":"{in} entrada \xb7 {out} salida","chat.credits":"{value} cr\xe9ditos","chat.tools_one":"{count} herramienta","chat.tools_other":"{count} herramientas","chat.contextPct":"contexto {pct}%","chat.failedHint":"El turno fall\xf3. Puedes enviar otro mensaje para reintentar, cambiar de modelo o empezar una conversaci\xf3n nueva.","chat.compactFailed":"No se pudo compactar la conversaci\xf3n: {reason}. Prueba cambiando de modelo o empieza una conversaci\xf3n nueva.","chat.failedHintLimit":"Se alcanz\xf3 el l\xedmite de uso. Espera a que se reinicie o cambia de modelo.","chat.failedHintCompact":"Si la conversaci\xf3n es muy larga, comp\xe1ctala para seguir. Si no se puede, cambia de modelo o empieza una conversaci\xf3n nueva.","chat.compact":"Compactar conversaci\xf3n","chat.compacting":"Compactando…","chat.compactMark":"Conversaci\xf3n compactada \xb7 {pre} → {post} tokens","chat.compacted":"Conversaci\xf3n compactada. Puedes continuar.","nav.connections":"Conexiones","nav.schedules":"Programados","sched.subtitle":"Lo que tus agentes dejaron para hacer m\xe1s tarde: avisos de una sola vez y programas recurrentes. Corren en el lugar donde se pidieron (un hilo de chat o el chat web) y cada vez cuestan un turno del modelo.","sched.empty.title":"Nada programado","sched.empty.body":"Cuando un agente tiene la skill Wake-ups puedes pedirle cosas como \xabcada d\xeda h\xe1bil a las 9 revisa los logs de QA y av\xedsame\xbb y aparecer\xe1 aqu\xed.","sched.kind.cron":"Cron","sched.kind.every":"Intervalo","sched.kind.once":"Una vez","sched.kind.watch":"Esperando un proceso","sched.where.web":"Chat web","sched.next":"Pr\xf3xima","sched.until":"Espera hasta","sched.never":"nunca","sched.paused":"En pausa","sched.last":"\xdaltima","sched.runs":"{count} ejecuciones","sched.pause":"Pausar","sched.resume":"Reanudar","sched.history":"Historial","sched.hide":"Ocultar historial","sched.noRuns":"Todav\xeda no se ha ejecutado.","sched.deleteTitle":"\xbfBorrar este programa?","sched.deleteBody":"Se detiene para siempre. El agente puede crearlo de nuevo si se lo pides.","sched.in":"en {when}","sched.status.delivered":"Entregado","sched.status.failed":"Fall\xf3","sched.status.skipped_muted":"Omitido (silenciado)","sched.status.skipped_busy":"Omitido (agente ocupado)","sched.status.skipped_missed":"Omitido (se perdi\xf3)","sched.status.skipped_disabled":"Omitido (conexi\xf3n apagada)","sched.status.skipped_reassigned":"En pausa (cambi\xf3 el agente)","sched.minShort":"{count} min","sched.hourShort":"{count} h","sched.dayShort":"{count} d","conn.subtitle":"Permite hablar con un agente desde Telegram o Slack. Cada hilo y cada persona comparte la \xfanica conversaci\xf3n del agente, la misma que ves en hive-am.","conn.new":"Nueva conexi\xf3n","conn.create":"Crear conexi\xf3n","conn.edit":"Editar conexi\xf3n","conn.save":"Guardar","conn.empty.title":"A\xfan no hay conexiones","conn.empty.body":"Vincula un agente a un bot de Telegram y conversa con \xe9l desde tu tel\xe9fono. Responde en el mismo hilo en el que escribes.","conn.kind":"Plataforma","conn.kind.telegram":"Telegram","conn.kind.slack":"Slack","conn.kind.soon":"Slack \xb7 pronto","conn.status.connected":"Conectada","conn.status.connecting":"Conectando…","conn.status.error":"Problema","conn.status.stopped":"Apagada","conn.noAgent":"Sin agente vinculado","conn.threads_one":"{count} hilo","conn.threads_other":"{count} hilos","conn.lastEvent":"\xfaltimo mensaje {when}","conn.name":"Nombre","conn.name.hint":"Una etiqueta para ti, p. ej. \xabBot de operaciones\xbb.","conn.name.placeholder":"Bot de operaciones","conn.agent":"Agente que responde","conn.agent.hint":"Responde con su herramienta channel_reply; su texto normal nunca llega al chat.","conn.agent.pick":"Elige un agente…","conn.token":"Token del bot","conn.token.hint":"Crea un bot con @BotFather y pega su token. Se guarda en esta m\xe1quina y no se vuelve a mostrar.","conn.token.keep":"D\xe9jalo vac\xedo para conservar {hint}","conn.allowed":"Qui\xe9n puede hablarle","conn.allowed.hint":"Solo estos ids de Telegram reciben respuesta. A cualquier otra persona solo se le dice su propio id.","conn.allowed.howto":"\xbfNo sabes tu id? Guarda la conexi\xf3n y escr\xedbele al bot: te responde con tu id.","conn.allowed.add":"A\xf1adir persona","conn.allowed.id":"Id de Telegram","conn.allowed.name":"Nombre (opcional)","conn.allowed.admin":"Admin","conn.allowed.adminHint":"Puede reiniciar la conversaci\xf3n compartida con /new","conn.allowed.remove":"Quitar","conn.allowed.empty":"Nadie todav\xeda: el bot no responder\xe1 a nadie.","conn.files":"Recibir archivos","conn.files.hint":"Fotos, documentos y audios que le env\xeden (hasta 20 MB cada uno). Se guardan en este equipo durante 14 d\xedas y el agente los abre con sus herramientas de archivos; no puede escuchar audio ni ver video.","conn.files.off":"No","conn.vision":"Ver im\xe1genes","conn.vision.agent":"Con el modelo del agente","conn.vision.other":"Con otro modelo","conn.vision.hint.agent":"Solo funciona si el modelo del agente acepta im\xe1genes (muchos no). Si no, dir\xe1 que no puede verlas.","conn.vision.hint.other":"Cada imagen que llegue la describe este modelo (y transcribe su texto) y la descripci\xf3n viaja con el mensaje, as\xed que cualquier agente puede responder sobre ella. La imagen se env\xeda a ese proveedor. Elige un modelo que vea im\xe1genes, como Claude Haiku.","conn.lang":"Idioma del bot","conn.lang.es":"Espa\xf1ol","conn.lang.en":"Ingl\xe9s","conn.silent":"Si el agente termina sin responder","conn.silent.notice":"Avisar en el hilo","conn.silent.send_text":"Enviar su texto normal","conn.silent.ignore":"No hacer nada","conn.effort":"Esfuerzo de razonamiento","conn.effort.hint":"Menos es m\xe1s r\xe1pido y piensa menos. Lo usan Claude y Kiro (`--effort`) y OpenCode (la variante `low`/`medium`/`high` del modelo). `Bajo` ahorra de 0.5 a 1 s por respuesta; un modelo de OpenCode sin esa variante hace fallar el turno, as\xed que para \xe9l deja \xabEl del agente\xbb.","conn.effort.default":"El del agente","conn.effort.low":"Bajo","conn.effort.medium":"Medio","conn.effort.high":"Alto","conn.enabled":"Activa","conn.enabled.hint":"Desact\xedvala para detener el bot sin borrarlo.","conn.test":"Enviar prueba","conn.test.ok":"Prueba enviada \xb7 {detail}","conn.test.failed":"Fall\xf3 la prueba","conn.delete":"Eliminar conexi\xf3n","conn.deleted":"Conexi\xf3n eliminada","conn.saved":"Conexi\xf3n guardada","conn.created":"Conexi\xf3n creada","conn.deleteTitle":"\xbfEliminar \xab{name}\xbb?","conn.deleteBody":"El bot deja de responder y se olvidan los hilos de esta conexi\xf3n. El agente y su conversaci\xf3n no se tocan.","conn.perm.plan":"{name} est\xe1 en Solo lectura, y un agente de solo lectura no puede responder por un canal.","conn.perm.fix":"Permitir editar archivos","conn.perm.fixed":"{name} ya puede editar archivos","conn.perm.full":"{name} tiene Acceso total: cualquiera de la lista puede hacer que ejecute lo que sea en esta m\xe1quina.","conn.perm.opencode":"OpenCode ignora el ajuste de permisos, as\xed que este agente puede editar archivos y ejecutar comandos diga lo que diga.","conn.groups":"Grupos","conn.groups.hint":"Elige c\xf3mo participa en grupos y temas de Telegram. En un chat privado siempre responde.","conn.mode":"Cu\xe1ndo habla en un grupo","conn.mode.mention":"Solo si lo llaman","conn.mode.open":"Escucha todo y opina","conn.mode.mention.hint":"Responde cuando lo mencionan con @, le responden a un mensaje suyo, usan un comando o dicen su nombre.","conn.mode.open.hint":"Lee todo lo que se escribe y habla solo cuando tiene algo \xfatil que aportar. Si le piden que se calle, deja de responder en ese hilo hasta que lo llamen. Pide a BotFather desactivar el privacy mode (/setprivacy → Disable).","conn.chats":"Grupos autorizados","conn.chats.hint":"Cualquier miembro de estos grupos puede hablarle, sin tener que a\xf1adirlo uno por uno. Los permisos del agente aplican a todos ellos.","conn.chats.empty":"Ning\xfan grupo: solo las personas de la lista pueden hablarle en grupos.","conn.chats.add":"A\xf1adir grupo","conn.chats.id":"Id del grupo (ej. -100123…)","conn.chats.name":"Nombre (opcional)","conn.chats.remove":"Quitar grupo","conn.chats.howto":"Para saber el id de un grupo, menciona al bot all\xed: responde con el id del chat.","conn.aliases":"Nombres con los que responde","conn.aliases.hint":"Separados por comas. Si alguien escribe uno de estos nombres en un grupo, cuenta como si lo mencionaran (ej. \xabMorena\xbb).","conn.aliases.placeholder":"Morena, queen","conn.threads.muted":"En silencio","conn.threads.mute":"Silenciar","conn.threads.unmute":"Reactivar","chat.channel.overheard":"escuchando","chat.channel.overheard.hint":"Nadie le habl\xf3 al agente: lo ley\xf3 y decide si aporta algo","chat.channel.context":"{n} mensajes anteriores que no hab\xeda visto","tool.channelMute":"Quedarse en silencio en el hilo","tool.channelUnmute":"Volver a hablar en el hilo","agent.tab.notebook":"Cuaderno","notebook.intro":"Lo que el agente decide recordar entre conversaciones. \xc9l lo escribe solo mientras trabaja; aqu\xed puedes leerlo, corregirlo o borrarlo.","notebook.off":"Este agente no tiene la skill \xabNotebook\xbb, as\xed que no usa su cuaderno.","notebook.on":"Activar","notebook.reload":"Recargar","notebook.updated":"Actualizado por {who} {when}","notebook.never":"A\xfan no hay notas","notebook.by.you":"ti","notebook.by.agent":"el agente","notebook.placeholder":"## Preferencias\n- Responde en espa\xf1ol y sin rodeos","notebook.save":"Guardar cuaderno","notebook.saved":"Cuaderno guardado","notebook.clear":"Borrar todo","notebook.clear.title":"\xbfBorrar el cuaderno?","notebook.clear.confirm":"El agente olvidar\xe1 todo lo que tiene anotado. No se puede deshacer.","conn.threads.title":"Hilos","conn.threads.empty":"A\xfan no hay mensajes.","conn.threads.last":"\xfaltimo: {user}","conn.shared":"Todos los hilos comparten la \xfanica conversaci\xf3n de este agente.","conn.err.agent":"Elige el agente que responder\xe1.","conn.err.name":"Ponle un nombre.","conn.err.token":"Pega el token del bot.","form.connections":"Conexiones","form.connections.hint":"Vinculado a {names}. Necesita al menos \xabEditar archivos\xbb: un agente de solo lectura no puede responder por un canal.","permission.lockedByConnection":"No disponible mientras el agente est\xe9 vinculado a una conexi\xf3n.","tool.channelSendFile":"Enviar archivo al canal","tool.k.caption":"Leyenda","tool.chrome.navigate":"Abrir p\xe1gina","tool.chrome.tabNew":"Nueva pesta\xf1a","tool.chrome.tabClose":"Cerrar pesta\xf1a","tool.chrome.tabs":"Pesta\xf1as del navegador","tool.chrome.act":"Acci\xf3n en el navegador","tool.chrome.read":"Leer p\xe1gina","tool.chrome.find":"Buscar en la p\xe1gina","tool.chrome.form":"Rellenar formulario","tool.chrome.js":"Ejecutar script en la p\xe1gina","tool.chrome.other":"Navegador","tool.channelReply":"Responder en el canal","chat.thought":"Proceso de razonamiento","chat.changedFiles":"Archivos modificados ({count})","chat.fileWritten":"nuevo","chat.readOnly":"Est\xe1s leyendo una sesi\xf3n anterior. Hazla la actual para continuarla.","chat.queuePlaceholder":"Encola un mensaje de seguimiento…","chat.queuedBadge":"En cola: se enviar\xe1 cuando termine la respuesta actual","chat.earlier":"Mostrar mensajes anteriores ({n} m\xe1s)","chat.placeholder":"Escribe a {name}","chat.messageLabel":"Mensaje","chat.stop":"Detener","chat.img.attach":"Adjuntar archivos (tambi\xe9n puedes pegar im\xe1genes o archivos con Ctrl+V / ⌘V, o soltarlos aqu\xed)","chat.img.remove":"Quitar {name}","chat.img.max":"M\xe1ximo {n} archivos por mensaje.","chat.img.big":"Un archivo es demasiado grande (l\xedmite {mb} MB).","chat.send":"Enviar","chat.keys":"Enter para enviar \xb7 Shift+Enter para una nueva l\xednea","chat.collapseTools":"Contraer todas las herramientas","chat.expandTools":"Expandir todas las herramientas","chat.sendFailed":"No se pudo enviar","chat.empty.title":"Saluda a {name}","chat.empty.orchestrator":"Describe una meta. La dividir\xe1 y repartir\xe1 las partes entre su equipo.","chat.empty.worker":"Dale una tarea. La conversaci\xf3n la guarda el propio CLI, as\xed que sobrevive a los reinicios.","chat.delegatedFrom":"Tarea delegada por {name}","chat.anOrchestrator":"un orquestador","chat.delegatedNote":"Corre en su propia sesi\xf3n: no aparecer\xe1 en esta conversaci\xf3n. Encu\xe9ntrala en Ajustes → Sesiones.","colony.removedAgent":"agente eliminado","colony.joined":"{name} se uni\xf3 a {colony}","colony.left":"{name} sali\xf3 de su colonia","colony.moveFailed":"No se pudo mover al agente","colony.page.subtitle":"Todos los agentes que ejecutas, agrupados en colonias y conectados a los orquestadores que los dirigen.","stat.agents_one":"agente","stat.agents_other":"agentes","stat.colonies_one":"colonia","stat.colonies_other":"colonias","stat.orchestrators_one":"orquestador","stat.orchestrators_other":"orquestadores","stat.working":"trabajando ahora","stat.tasks":"tareas en curso","colony.empty.title":"Tu colonia est\xe1 vac\xeda","colony.empty.body":"Crea una colonia para agrupar agentes que comparten carpeta y reglas, y luego a\xf1ade un orquestador y algunos workers.","colony.empty.createColony":"Crear una colonia","colony.empty.createAgent":"Crear un agente","colony.editHover":"Editar colonia \xb7 {path}","colony.editHoverShort":"Editar colonia","colony.agentCount_one":"{count} agente","colony.agentCount_other":"{count} agentes","colony.addTo":"A\xf1adir agente a {name}","colony.addAgent":"A\xf1adir agente","colony.delegatesTo_one":"Delega a {count}","colony.delegatesTo_other":"Delega a {count}","colony.managedBy":"Lo cuida {name}","colony.manages":"Cuida: {names}","colony.dragHint":"arr\xe1strala para moverla","colony.zoom":"Zoom","colony.zoom.in":"Acercar","colony.zoom.out":"Alejar","colony.zoom.fit":"Ajustar el mapa al panel (100%)","colony.layout.reset":"Devolver todo a su lugar","colony.connectedTo":"Conectado a {names}","colony.settingsFor":"Ajustes de {name}","colony.agentSettings":"Ajustes del agente","colony.folder":"Carpeta","colony.fromColony":"de la colonia","colony.session":"Sesi\xf3n","colony.noSession":"a\xfan no hay","colony.noWorkers":"Sin workers conectados","colony.openChat":"Abrir chat","colony.howTitle":"C\xf3mo leer esto","colony.howBody":"Cada \xe1rea con contorno es una colonia. Selecciona una celda para inspeccionar a un agente. Las l\xedneas y etiquetas color miel conectan a un orquestador (↓ n\xfamero de workers) con los workers a los que puede delegar (↑ su nombre), solo los conectados directamente. Pasa el mouse sobre un agente para resaltar sus conexiones; una l\xednea en movimiento indica que hay una tarea en curso.","colony.helpLabel":"Ayuda: c\xf3mo leer este mapa","colony.recent":"Delegaciones recientes","colony.recentEmpty":"Cuando un orquestador le pasa una tarea a un worker, aparece aqu\xed.","agents.subtitle":"Cada agente es un puntero a una sesi\xf3n nativa del CLI. Cierra el navegador o pierde la luz: al reabrir un agente se reanuda su conversaci\xf3n real.","agents.searchPlaceholder":"Busca por nombre, descripci\xf3n o carpeta","agents.searchLabel":"Buscar agentes","agents.filter.orchestrators":"Orquestadores","agents.filter.workers":"Workers","agents.filter.anyProvider":"Cualquier proveedor","agents.empty.title":"A\xfan no hay agentes","agents.empty.body":"Elige un tipo para empezar r\xe1pido o configura uno desde cero.","agents.noMatch.title":"Nada coincide","agents.noMatch.body":"Prueba otra b\xfasqueda o limpia los filtros.","agents.col.agent":"Agente","agents.col.providerModel":"Proveedor \xb7 modelo","agents.col.status":"Estado","agents.col.updated":"Actualizado","agents.orchestratorLine_one":"Orquestador \xb7 {count} worker","agents.orchestratorLine_other":"Orquestador \xb7 {count} workers","agents.colonyWord":"colonia","agent.missing.title":"Ese agente no existe","agent.missing.body":"Puede que haya sido eliminado.","agent.missing.back":"Volver a agentes","agent.resumed":"Conversaci\xf3n reanudada","agent.backToColony":"Volver a la colonia","agent.makeCurrent":"Hacer actual esta conversaci\xf3n","agent.backToCurrent":"Volver a la actual","agent.newConversation":"Nueva conversaci\xf3n","agent.settings":"Ajustes","agent.unsaved":"Cambios sin guardar","agent.tab.config":"Configuraci\xf3n","agent.delete":"Eliminar agente","agent.unsavedChanges":"Tienes cambios sin guardar.","agent.allSaved":"Todos los cambios guardados.","agent.appliesNextTurn":"Aplican desde el siguiente turno.","agent.sessions.intro":"Sesiones nativas en {path}. Leer una nunca modifica al agente.","agent.sessions.conversations":"Conversaciones","agent.sessions.empty":"A\xfan no hay conversaciones. El primer mensaje crea una.","agent.sessions.started":"Iniciada {started} \xb7 \xfaltimo uso {last}","agent.sessions.viewing":"Viendo","agent.sessions.read":"Leer transcripci\xf3n","agent.sessions.resume":"Reanudar esta","agent.sessions.delegated":"Tareas delegadas","agent.sessions.from":"De {name}","agent.deleteTitle":"\xbfEliminar a {name}?","agent.deleteBody":"Se eliminan el agente y sus conexiones. Los archivos de sus sesiones nativas permanecen en disco, intactos.","agent.keep":"Conservar agente","agent.deleted":"Agente eliminado","agent.newConvTitle":"\xbfEmpezar una nueva conversaci\xf3n?","agent.newConvBody":"El agente empieza con una sesi\xf3n nueva. La actual queda en su pesta\xf1a Sesiones y se puede reanudar en cualquier momento.","agent.newConvStarted":"Nueva conversaci\xf3n iniciada","agent.newConvStart":"Empezar nueva conversaci\xf3n","sessions.current":"Actual","types.err.name":"Ponle un nombre al tipo.","types.updated":"Tipo actualizado","types.created":"Tipo creado","types.deleted":"Tipo eliminado","types.subtitle":"Plantillas reutilizables: proveedor, modelo, prompt, permisos y skills. Crea un agente desde un tipo en dos clics.","types.new":"Nuevo tipo","types.empty.title":"A\xfan no hay tipos","types.empty.body":"Define una vez un “Reviewer” o un “Builder” y crea desde \xe9l tantos agentes como necesites.","types.empty.create":"Crear un tipo","types.noDescription":"Sin descripci\xf3n.","types.defaultModel":"modelo predeterminado","types.skillsCount_one":"{count} skill","types.skillsCount_other":"{count} skills","types.usedBy_one":"{count} agente lo usa","types.usedBy_other":"{count} agentes lo usan","types.editTitle":"Editar {name}","types.typeWord":"tipo","types.newTitle":"Nuevo tipo de agente","types.drawerSubtitle":"Los agentes creados desde este tipo empiezan con estos valores. Los agentes existentes no cambian.","types.save":"Guardar tipo","types.create":"Crear tipo","types.name.placeholder":"p. ej. Reviewer","types.description":"Descripci\xf3n","types.description.hint":"Se muestra al elegir un tipo.","types.chars_one":"{n} car\xe1cter","types.chars_other":"{n} caracteres","types.deleteTitle":"\xbfEliminar {name}?","types.deleteBody":"Los agentes ya creados desde \xe9l conservan su configuraci\xf3n y solo pierden el v\xednculo.","types.keep":"Conservar tipo","types.delete":"Eliminar tipo","skills.err.name":"Ponle un nombre a la skill.","skills.created":"Skill creada","skills.saved":"Skill guardada","skills.deleted":"Skill eliminada","skills.subtitle":"Instrucciones en markdown que asocias a agentes o tipos. Se a\xf1aden al system prompt, as\xed que escr\xedbelas como gu\xeda que el agente sigue.","skills.new":"Nueva skill","skills.empty.title":"A\xfan no hay skills","skills.empty.body":"Una skill es un bloque reutilizable de instrucciones: una lista de revisi\xf3n, un estilo de commits, c\xf3mo correr tus pruebas.","skills.empty.create":"Escribe la primera skill","skills.search":"Buscar skills","skills.unsaved":"Sin guardar","skills.nAgents_one":"{count} agente","skills.nAgents_other":"{count} agentes","skills.nTypes_one":"{count} tipo","skills.nTypes_other":"{count} tipos","skills.noMatch":"Ninguna skill coincide con “{query}”.","skills.name.placeholder":"p. ej. conventional-commits","skills.description.hint":"Una l\xednea, se muestra en los selectores.","skills.instructions":"Instrucciones","skills.preview":"Vista previa","skills.content.placeholder":"Al escribir commits:\n- Usa el modo imperativo\n- Mant\xe9n el asunto en menos de 72 caracteres","skills.previewEmpty":"*A\xfan no hay nada que previsualizar.*","skills.create":"Crear skill","skills.save":"Guardar skill","skills.deleteTitle":"\xbfEliminar {name}?","skills.deleteBody":"Se desvincular\xe1 de {agents} y {types}.","skills.keep":"Conservar skill","skills.delete":"Eliminar skill","sessions.subtitle":"Todas las conversaciones que han tenido tus agentes, le\xeddas directamente de Claude Code, OpenCode y Kiro. No se muestran otras sesiones de esta m\xe1quina.","sessions.searchPlaceholder":"Busca por agente, carpeta o primer mensaje","sessions.searchLabel":"Buscar sesiones","sessions.empty.title":"A\xfan no hay sesiones","sessions.empty.body":"Env\xeda un mensaje a cualquier agente y su sesi\xf3n aparecer\xe1 aqu\xed.","sessions.empty.go":"Ir a agentes","sessions.reading":"Leyendo sesiones…","sessions.delegatedBy":"Delegada por {name}","sessions.emptySession":"Sesi\xf3n vac\xeda","sessions.messages_one":"{count} mensaje","sessions.messages_other":"{count} mensajes","sessions.noMatch":"Ninguna sesi\xf3n coincide.","sessions.select":"Selecciona una sesi\xf3n para leer su transcripci\xf3n.","sessions.openAgent":"Abrir agente","sessions.loading":"Cargando transcripci\xf3n…","sessions.counting":"Leyendo esta conversaci\xf3n…","sessions.older":"Ver {count} mensajes anteriores","sessions.noMessages":"El CLI no tiene mensajes legibles para esta sesi\xf3n.","rel.updateFailed":"No se pudo actualizar la conexi\xf3n","rel.disconnected":"{worker} desconectado de {orchestrator}","rel.connected":"{worker} conectado a {orchestrator}","rel.disconnectLabel":"Desconectar a {worker} de {orchestrator}","rel.layoutReset":"Disposici\xf3n restablecida","rel.hud":"Qui\xe9n puede delegar a qui\xe9n. Cada orquestador tiene su propio color de l\xednea. Pasa el mouse o selecciona un agente para ver sus conexiones; haz clic en la ✕ de una l\xednea para quitarla, o arrastra desde el punto inferior de un orquestador hasta un worker para a\xf1adir una.","rel.autoArrange":"Reordenar","rel.empty.title":"A\xfan no hay nada que conectar","rel.empty.body":"Crea primero al menos un orquestador y un worker.","rel.delegatesTo":"Delega a \xb7 {count}","rel.noWorkers":"A\xfan no hay workers.","rel.disconnect":"Desconectar","rel.connectWorker":"Conectar un worker…","rel.directedBy":"Dirigido por","rel.noOrchestrators":"Ning\xfan orquestador puede delegar a este worker.","rel.connectOrchestrator":"Conectar a un orquestador…","git.tab.chat":"Chat","git.tab.changes":"Cambios","git.tab.label":"Vista","git.loading":"Leyendo el repositorio…","git.error.title":"No se pudo leer el repositorio","git.refresh":"Actualizar","git.notRepo.title":"Esta carpeta no es un repositorio git","git.notRepo.body":"Ejecuta git init en {path} para ver aqu\xed los cambios de archivos.","git.noGit.title":"git no est\xe1 disponible","git.noGit.body":"Instala git y aseg\xfarate de que est\xe9 en el PATH del servidor de hive-am.","git.detached":"desacoplado en","git.noCommitsBranch":"sin commits a\xfan","git.noCommits":"A\xfan no hay commits","git.upstream":"Commits adelante ↑ / atr\xe1s ↓ de la rama remota","git.clean":"Sin cambios: el \xe1rbol de trabajo est\xe1 limpio.","git.summary_one":"{count} archivo cambiado","git.summary_other":"{count} archivos cambiados","git.updated":"Actualizado {time}","git.scope":"Mostrando solo {path}/, la carpeta en la que trabaja este agente.","git.filesLabel":"Archivos","git.filterPlaceholder":"Filtrar archivos…","git.filter.all":"Todos","git.filter.changed":"Con cambios","git.noMatch":"Ning\xfan archivo coincide con “{query}”.","git.noFiles":"No hay archivos aqu\xed.","git.rowsCapped":"Se muestran las primeras {count} filas. Afina el filtro para ver m\xe1s.","git.treeTruncated":"Esta carpeta es grande: solo se listan los primeros {count} archivos.","git.dirChanged_one":"{count} archivo con cambios dentro","git.dirChanged_other":"{count} archivos con cambios dentro","git.status.modified":"Modificado","git.status.added":"A\xf1adido","git.status.deleted":"Eliminado","git.status.renamed":"Renombrado","git.status.untracked":"Sin seguimiento","git.status.conflict":"Conflicto","git.status.typechange":"Tipo cambiado","git.staged":"En stage","git.unstaged":"Sin stage","git.select":"Selecciona un archivo para previsualizarlo.","git.view.diff":"Diferencias","git.view.file":"Archivo","git.view.preview":"Vista previa","git.view.source":"Archivo","git.tab.tags":"Tags","git.tags.empty":"Este repositorio no tiene tags.","git.tags.search":"Buscar tags","git.tags.select":"Elige un tag para explorarlo.","git.tags.truncated":"Se muestran los {count} tags m\xe1s recientes.","git.tags.annotated":"anotado","git.tags.lightweight":"ligero","git.tags.files":"Archivos","git.tags.changes":"Cambios","git.tags.nfiles_one":"{count} archivo","git.tags.nfiles_other":"{count} archivos","git.tags.pick":"Elige un archivo para leerlo como estaba en este tag.","git.tab.compare":"Comparar","git.hist.search":"Buscar commits","git.hist.by.message":"Mensaje","git.hist.by.author":"Autor","git.hist.by.content":"Contenido","git.hist.by.hint":"Contenido: commits que agregaron o quitaron este texto","git.hist.branchAll":"Todas las ramas","git.hist.branchCurrent":"Rama actual","git.hist.file":"Archivo: {path}","git.hist.clearFile":"Ver todo el historial","git.hist.noMatch":"Ning\xfan commit coincide.","git.file.history":"Historial del archivo","git.file.viewAt":"Ver en…","git.file.atRef":"Mostrando la versi\xf3n en {ref}","git.file.backToCurrent":"Volver al archivo actual","git.file.missingAt":"Este archivo no existe en {ref}.","git.ref.pick":"Rama, tag o commit","git.ref.search":"Buscar, o pegar un commit","git.ref.branches":"Ramas","git.ref.remotes":"Ramas remotas","git.ref.tags":"Tags","git.ref.useCommit":"Usar el commit {ref}","git.ref.none":"Nada coincide.","git.cmp.base":"Desde","git.cmp.head":"Hasta","git.cmp.swap":"Intercambiar","git.cmp.pick":"Elige dos puntos para comparar: ramas, tags o commits.","git.cmp.same":"Los dos puntos son el mismo commit.","git.cmp.summary":"{ahead} commits adelante \xb7 {behind} atr\xe1s","git.cmp.commits":"Commits en medio ({count})","git.cmp.more":"Se muestran los {count} m\xe1s recientes.","git.cmp.nofiles":"Sin diferencias en los archivos.","dock.title":"Panel de terminales","dock.new":"Nueva terminal","dock.inFolder":"Terminal en una carpeta…","dock.hide":"Ocultar el panel","dock.open":"Abrir","dock.folder.hint":"La terminal empieza en esta carpeta.","dock.ended":"Termin\xf3 con c\xf3digo {code}","dock.gone":"Esta terminal ya no existe","dock.disabled":"Las terminales est\xe1n desactivadas en este servidor.","dock.empty":"No hay terminales abiertas. Pulsa + para abrir una.","dock.failed":"No se pudo abrir la terminal.","dock.nav":"Terminal","dock.here":"Terminal aqu\xed","dock.shell":"Shell en el contenedor","dock.logs":"Logs en el panel","dock.agent":"Terminal en la carpeta del agente","vars.title":"Variables de este recurso","vars.hint":"Para cuando no hay un archivo env, o le falta algo. Lo que define un archivo env tiene prioridad.","vars.shared":"Compartidas","vars.shared.hint":"Aplican a todos los entornos","vars.fromFile":"Un archivo env tambi\xe9n define este entorno","vars.newEnv":"Nuevo entorno","vars.empty":"Todav\xeda no hay variables aqu\xed.","vars.name":"Nombre","vars.value":"Valor","vars.saved":"guardado: escribe para reemplazar","vars.secret":"Secreto","vars.secret.hint":"Secreto: se oculta al guardar y no se vuelve a mostrar","vars.show":"Mostrar u ocultar","vars.overridden":"Lo define un archivo env: el archivo tiene prioridad","vars.add":"Agregar una variable","vars.delEnv":"Eliminar este entorno","vars.note":"Las peticiones las usan como {{nombre}}. Los secretos se guardan en esta m\xe1quina, en la base de datos de hive-am, sin cifrar.","obj.sup.note":"Mientras hive-am est\xe1 corriendo reinicia el servidor cuando termina y revisa su salud. Si hive-am est\xe1 apagado, el servidor sigue corriendo pero nadie lo reinicia; hive-am retoma el cuidado cuando arranca.","obj.sup.title":"Mantenerlo sano","obj.sup.restart":"Si termina por s\xed solo","obj.sup.restart.hint":"Detenerlo t\xfa nunca se deshace.","obj.sup.restart.no":"No hacer nada","obj.sup.restart.fail":"Reiniciar tras un fallo","obj.sup.restart.always":"Reiniciar siempre","obj.sup.max":"Reinicios m\xe1x.","obj.sup.max.hint":"Reinicios en 10 minutos antes de rendirse (por defecto 5)","obj.sup.health":"Chequeo de salud","obj.sup.health.hint":"Dice si un servidor que corre de verdad funciona.","obj.sup.health.none":"Sin chequeo","obj.sup.health.tcp":"Puerto","obj.sup.health.command":"Comando","obj.sup.interval":"Cada (s)","obj.sup.retries":"Fallos seguidos","obj.sup.healthRestart":"Reiniciarlo cuando no est\xe9 sano","obj.sup.stopTimeout":"Segundos para detenerse","obj.sup.stopTimeout.hint":"Antes de matarlo (por defecto 8)","obj.sup.logMax":"Tama\xf1o del log (MB)","obj.sup.logMax.hint":"La parte m\xe1s vieja se aparta (por defecto 5)","obj.dk.limits":"L\xedmites y red","obj.dk.limits.hint":"Se aplican la pr\xf3xima vez que inicie: el contenedor se crea de nuevo.","obj.dk.memory":"Memoria","obj.dk.cpus":"CPUs","obj.dk.network":"Red","nav.objects":"Recursos","obj.open":"Abrir panel","ow.find":"Buscar un recurso","ow.noMatch":"Ning\xfan recurso coincide con “{query}”.","ow.collapse":"Contraer la lista de recursos","ow.expand":"Expandir la lista de recursos","ow.empty.title":"Todav\xeda no hay recursos","ow.empty.body":"Aqu\xed viven los servidores, contenedores, peticiones HTTP y cl\xfasteres. Crea el primero.","ow.pick":"Elige un recurso a la izquierda.","ow.gone":"Este recurso ya no existe.","rs.tabs":"Secciones del recurso","rs.retry":"Reintentar","rs.confirm.history":"Se borran las ejecuciones guardadas de este recurso. No se puede deshacer.","rs.confirm.session":"Se olvidan todos los valores que los manejadores de respuesta guardaron en esta sesi\xf3n.","rs.recreate.title":"\xbfCrear {name} de nuevo?","ow.back":"Volver a la colonia","ow.tab.summary":"Resumen","ow.tab.logs":"Logs","ow.tab.config":"Configuraci\xf3n","ow.tab.requests":"Peticiones","ow.tab.vars":"Variables","ow.state":"Estado","ow.uptime":"Corriendo desde hace","ow.usage":"Uso","ow.cpu":"CPU","ow.mem":"Memoria","ow.procs":"Procesos","ow.net":"Red E/S","ow.block":"Disco E/S","ow.info":"Detalles","ow.recent":"\xdaltima salida","ow.seeLogs":"Ver todos los logs","ow.noUsage":"No est\xe1 corriendo: no hay cifras.","ow.d.command":"Comando","ow.d.folder":"Carpeta","ow.d.port":"Puerto","ow.d.restart":"Si termina","ow.d.health":"Chequeo de salud","ow.d.stop":"Comando de parada","ow.d.image":"Imagen","ow.d.ports":"Puertos","ow.d.network":"Red","ow.d.created":"Creado","ow.d.restarts":"Reinicios","ow.d.memLimit":"L\xedmite de memoria","ow.d.cpuLimit":"L\xedmite de CPU","ow.d.mode":"Se maneja como","ow.d.container":"Contenedor","ow.d.compose":"Archivo compose","ow.d.services":"Servicios","ow.d.none":"ninguno","ow.cfg.dirty":"Cambios sin guardar","ow.cfg.saved":"Todo guardado","ow.cfg.save":"Guardar","ow.cfg.discard":"Descartar","ow.cfg.saveRestart":"Guardar y reiniciar","ow.cfg.applies":"Los cambios se aplican la pr\xf3xima vez que inicie.","ow.cfg.appliesRunning":"Est\xe1 corriendo: rein\xedcialo para aplicarlos.","lp.search":"Buscar en los logs","lp.only":"Solo coincidencias","lp.follow":"Seguir el final","lp.wrap":"Ajustar l\xedneas","lp.pause":"Pausar","lp.resume":"Reanudar","lp.clear":"Limpiar la vista","lp.download":"Descargar","lp.copy":"Copiar","lp.lines":"{count} l\xedneas","lp.shown":"Mostrando las \xfaltimas {count}","lp.larger":"Texto m\xe1s grande","lp.smaller":"Texto m\xe1s chico","lp.paused":"En pausa","lp.matches":"{count} coincidencias","cl.members":"Miembros","cl.order":"Orden de inicio","cl.add":"Agregar un miembro","cl.remove":"Quitar del cl\xfaster","cl.up":"Subir","cl.down":"Bajar","cl.none":"Todav\xeda no hay miembros. Agrega servidores o contenedores de esta colonia.","cl.summary":"{up} de {total} corriendo","cl.pickMember":"Elige un recurso","cl.startOrder":"Inician en este orden y se detienen en el contrario.","hw.files":"Archivos","hw.envHint":"Los entornos salen de los archivos env y de la pesta\xf1a Variables.","hw.editVars":"Editar variables","hw.fileInfo":"{count} peticiones","hw.pickFile":"Elige un archivo para ejecutar, o una petici\xf3n para probar.","hw.lastRun":"\xdaltima ejecuci\xf3n","hw.notRun":"sin ejecutar","hw.noEnvFile":"No hay archivo env en esta carpeta: define las variables en la pesta\xf1a Variables.","of.general":"General","of.run":"C\xf3mo corre","of.env":"Entorno","of.container":"Contenedor","of.image":"Imagen, puertos y vol\xfamenes","of.files":"Los archivos .http","of.vars":"Variables","of.members":"Miembros","of.limits":"L\xedmites y red","vars.all":"Todos los entornos","vars.all.hint":"Valores que aplican sin importar el entorno que elijas","vars.scope.all":"Estos valores aplican en todos los entornos. Un entorno puede definir su propia versi\xf3n de la misma variable.","vars.scope.env":"Estos valores solo aplican cuando eliges “{env}”. Si falta uno aqu\xed, se usa el de “Todos los entornos”.","vars.how.title":"C\xf3mo funcionan las variables","vars.how.1":"Tus archivos .http escriben {{nombre}} donde va un valor. Al ejecutar una petici\xf3n, cada uno se reemplaza por su valor.","vars.how.2":"El valor sale del entorno que elijas en el ejecutor (dev, qa…) y, si no est\xe1 ah\xed, de “Todos los entornos”. Un archivo env gana sobre lo que pongas aqu\xed, y el entorno que elijas gana sobre una l\xednea @nombre dentro del .http.","vars.used.title":"Variables que usan tus archivos","vars.used.hint":"Pulsa una que falte para agregarla aqu\xed.","vars.status.here":"definida aqu\xed","vars.status.all":"en Todos los entornos","vars.status.envfile":"la define un archivo env","vars.status.atfile":"definida en el .http","vars.status.missing":"falta: pulsa para agregarla","vars.used.count":"{count} peticiones","vars.used.none":"Tus archivos todav\xeda no usan variables.","dk.refresh":"Actualizar la lista","dk.unavailable":"Docker no est\xe1 disponible ({error}). Aun as\xed puedes escribirlo.","dk.managed":"creado por hive-am","dk.pickContainer":"Elige un contenedor, o escribe su nombre","dk.pickImage":"Elige una imagen, o escribe una (nginx:alpine)","dk.services.hint":"Elige los que quieras iniciar. Ninguno elegido significa todos.","dk.services.loading":"Leyendo el archivo compose…","dk.services.file":"Le\xeddos del archivo mismo (Docker no pudo leerlo).","dk.services.none":"No se encontraron servicios en este archivo.","dk.services.pickFile":"Elige primero el archivo compose.","dk.project.use":"Usar “{name}”","dk.project.hint":"Nombre del proyecto (sugerido por la carpeta).","d.requests":"{a1} peticiones en {a2} archivos","d.running":"{a1}/{a2} corriendo","d.running2":"{a1} de {a2} corriendo","d.noMembers":"sin miembros","d.onlySome":"solo {a1}/{a2} corriendo \xb7 detenidos: {a3}","d.failed":"{a1} fall\xf3 \xb7 {a2}/{a3} corriendo","d.waitPort":"esperando el puerto {a1}","d.noPort":"corre, pero nada escucha en el puerto {a1}","d.exited":"termin\xf3 con c\xf3digo {a1}","d.signal":"termin\xf3 por {a1}","d.restarted":"reiniciado ({a1}/{a2})","d.unhealthyRestart":"no estaba sano: reiniciando ({a1}/{a2})","d.restartIn":"reiniciando en {a1} s ({a2}/{a3})","d.gaveUp":"se rindi\xf3 tras {a1} reinicios","d.healthPending":"chequeo de salud pendiente","d.restarting":"reiniciando","d.noContainer":"contenedor no encontrado","d.noCompose":"falta el archivo compose","d.services":"{a1} servicios","d.serviceFailed":"un servicio termin\xf3 con error","d.checking":"comprobando…","d.unhealthy":"no sano","hw.session":"Sesi\xf3n","hw.session.hint":"Los valores que guardan los scripts duran hasta que hive-am se detiene. Un valor que agregues aqu\xed va al entorno “default” de este recurso.","hw.session.empty":"Todav\xeda no hay nada guardado. Ejecuta una petici\xf3n cuyo script guarde un valor (client.global.set).","hw.session.add":"Poner un valor","hw.session.clear":"Olvidar todo","hw.session.forget":"Olvidar este valor","hw.session.answers":"Respuestas recordadas","hw.session.name":"nombre","hw.session.value":"valor","hw.tests":"Pruebas","hw.tests.count":"{ok} de {total} pruebas pasaron","hw.tests.none":"Esta petici\xf3n no tiene pruebas.","hw.console":"Consola","hw.kept":"Guard\xf3: {names}","hw.script":"Script de respuesta","hw.script.hint":"Se ejecuta despu\xe9s de la respuesta. hive-am ejecuta un subconjunto seguro (sin bucles ni require): mira la documentaci\xf3n.","hw.script.file":"Esta petici\xf3n apunta a un archivo de script ({file}). hive-am no ejecuta archivos: escribe el script dentro del .http.","hw.script.error":"El script no se ejecut\xf3: {error}","hw.uses":"Usa la respuesta de: {names}","hw.needsRun":"Ejecuta antes “{name}”","hw.stopOnFail":"Detener al primer fallo","hw.stopped":"Se detuvo en “{name}”","hw.fileTests":"Pruebas","vars.status.handler":"la guarda la respuesta de “{name}”","iv.source.session":"Sesi\xf3n","iv.source.file":"@ del archivo","iv.source.envfile":"Archivo env \xb7 {from}","iv.source.hive":"hive-am \xb7 {from}","iv.source.response":"Respuesta de “{from}”","iv.source.dynamic":"Se genera en cada ejecuci\xf3n","iv.source.missing":"Falta","iv.shared":"compartidas","iv.col.name":"Variable","iv.col.value":"Valor actual","iv.col.source":"De d\xf3nde sale","iv.col.used":"Usos","iv.hidden":"guardada como secreto en hive-am","iv.overrides":"Oculta: {list}","iv.generated":"se genera al ejecutar","iv.override":"Poner un valor en esta sesi\xf3n","iv.override.hint":"Gana sobre todo lo dem\xe1s hasta que lo olvides o hive-am se detenga.","iv.forget":"Olvidar el valor de la sesi\xf3n","iv.run":"Ejecutar “{name}”","iv.empty":"No hay variables aqu\xed.","iv.filter":"Filtrar variables","iv.onlyMissing":"Solo las que faltan","iv.env.title":"Variables vigentes","iv.env.hint":"Todo lo que aplica con el entorno que elegiste, y de d\xf3nde sale cada valor.","iv.reveal":"Mostrar u ocultar el valor","iv.copy":"Copiar el valor","iv.save":"Guardar","hw2.tab.requests":"Peticiones","hw2.tab.vars":"Variables","hw2.tab.source":"Archivo","hw2.tab.script":"Script","hw2.resolved":"Como se enviar\xe1","hw2.raw":"Como est\xe1 escrito en el archivo","hw2.unresolved":"{count} sin valor","hw2.edit":"Editar el archivo","hw2.save":"Guardar el archivo","hw2.cancel":"Cancelar","hw2.saved":"Archivo guardado","hw2.dirty":"Cambios sin guardar","hw2.runHere":"Ejecutar esta petici\xf3n","hw2.fileHint":"Pasa el mouse sobre una {{variable}} para ver su valor y de d\xf3nde sale.","hw2.tree":"\xc1rbol","hw2.text":"Texto","hw2.copyRef":"Copiar la referencia","hw2.copyRef.need":"Ponle nombre a la petici\xf3n (### nombre) para referirte a su respuesta.","hw2.copied":"Copiado","hw2.remembered":"Respuestas recordadas","hw2.remembered.hint":"Otras peticiones pueden usarlas como {{nombre.response.body…}}.","hw2.keptValues":"Valores guardados","hw2.envEye":"Variables vigentes","hw2.noJson":"La respuesta no es JSON.","hw2.collapse":"Contraer todo","ow.tab.history":"Historial","hw2.history":"Historial","hw2.history.hint":"Ejecuciones desde que abriste esta pantalla, la m\xe1s reciente primero. Elige una para ver su respuesta.","hw2.history.empty":"Todav\xeda no se ha ejecutado nada.","hw2.history.clear":"Limpiar historial","hw2.history.open":"Abrir en Peticiones","vars.fixed.title":"Valores fijos","vars.fixed.hint":"Lo que definen tus archivos .http y env. Aqu\xed son de solo lectura: ed\xedtalos en el archivo. Ganan sobre los valores de abajo.","vars.fixed.none":"Ning\xfan valor definido en archivos.","iv.alsoDefines":"tambi\xe9n la define:","iv.winsOver":"gana: {who}","hw2.copyAs":"Copiar como…","hw2.copyAs.redact":"Ocultar credenciales","hw2.copyAs.unresolved":"Sin valor en lo copiado: {names}","hw2.new.title":"Nueva petici\xf3n","hw2.new.form":"Escribirla","hw2.new.curl":"Pegar cURL","hw2.new.curlHint":"Un comando copiado de un navegador, de una documentaci\xf3n o de una terminal.","hw2.new.parse":"Leer el comando","hw2.new.file":"Archivo","hw2.new.newFile":"Archivo nuevo…","hw2.new.add":"Agregar la petici\xf3n","hw2.new.needUrl":"Escribe la URL.","hw2.new.headersHint":"Una por l\xednea: Nombre: valor","hw2.diff.before":"Antes","hw2.diff.after":"Despu\xe9s","hw2.diff.error":"fall\xf3 al ejecutarse","hw2.diff.body":"Respuesta","hw2.diff.same":"sin diferencias","hw2.diff.lines":"{count} l\xedneas distintas","hw2.diff.fold":"… {count} l\xedneas iguales","hw2.diff.with":"Comparar con…","hw2.diff.prev":"Ejecuci\xf3n anterior de esta petici\xf3n","hw2.diff.none":"Sin comparar","hw2.diff.noPrev":"No hay una ejecuci\xf3n anterior de esta petici\xf3n.","hw2.tab.auth":"Autenticaci\xf3n","hw2.auth.hint":"Elige c\xf3mo se autentica esta petici\xf3n. Se escribe en la petici\xf3n como la cabecera que le corresponde; usa {{variables}} para los valores.","hw2.auth.type":"Tipo","hw2.auth.none":"Ninguna","hw2.auth.user":"Usuario","hw2.auth.pass":"Contrase\xf1a","hw2.auth.header":"Cabecera","hw2.auth.all":"Aplicar a las {count} peticiones de este archivo","hw2.auth.apply":"Aplicar","hw2.assert.title":"Verificaciones","hw2.assert.hint":"Se guardan en el archivo como un manejador de respuesta; cada una se reporta en la siguiente ejecuci\xf3n.","hw2.assert.add":"Agregar verificaci\xf3n","hw2.assert.save":"Guardar verificaciones","hw2.assert.kind":"Qu\xe9 verificar","hw2.assert.op":"Condici\xf3n","hw2.assert.remove":"Quitar esta verificaci\xf3n","hw2.assert.exists":"existe","hw2.assert.ok":"es 2xx","hw2.assert.contains":"contiene","hw2.assert.k.status":"Estado","hw2.assert.k.time":"Tiempo (ms)","hw2.assert.k.header":"Cabecera","hw2.assert.k.body":"Valor del JSON","hw2.assert.k.text":"Texto de la respuesta","hw2.filter":"Filtrar la respuesta","hw2.filter.placeholder":"Texto o un JSONPath: $.items[*].id","hw2.filter.none":"Nada coincide.","hw2.filter.count":"{count} coincidencias","hw2.export":"Exportar","hw2.export.md":"Documentaci\xf3n (Markdown)","hw2.export.postman":"Colecci\xf3n de Postman","hw2.export.all":"Todos los archivos","hw2.export.done":"{name} descargado","hw2.batch.open":"Ejecutar con datos…","hw2.batch.title":"Ejecutar {file} con datos","hw2.batch.hint":"El archivo se ejecuta una vez por fila. Las columnas son variables de esa fila (ganan sobre todo y se olvidan al terminar).","hw2.batch.data":"Filas","hw2.batch.format":"CSV con los nombres en la primera l\xednea, o un arreglo JSON de objetos.","hw2.batch.file":"Cargar un archivo","hw2.batch.stopRow":"Omitir el resto de una fila tras un fallo","hw2.batch.rows":"{rows} filas \xb7 {cols}","hw2.batch.run":"Ejecutar","hw2.batch.stop":"Detener","hw2.batch.summary":"{ok} de {total} filas pasaron","hw2.batch.skipped":"omitida","hw2.batch.tooMany":"Demasiadas filas: el l\xedmite es {max}.","common.help":"Ayuda","hw2.help.how":"C\xf3mo funciona","hw2.help.file":"Editar el archivo","svc.col.name":"Nombre","svc.col.image":"Imagen","svc.col.status":"Estado","svc.col.ports":"Puertos","svc.logs":"Ver los logs de este servicio","svc.expand":"Mostrar los servicios","svc.collapse":"Ocultar los servicios","svc.col.kind":"Tipo","svc.col.uses":"Uso","svc.col.runs":"Ejecuta","svc.shell":"Abrir una shell","svc.inspect":"Inspeccionar","svc.recreate":"Crear de nuevo","svc.rebuild":"Reconstruir y crear","svc.more":"M\xe1s","svc.d.general":"C\xf3mo corre","svc.d.started":"Iniciado","svc.d.workdir":"Carpeta de trabajo","svc.d.user":"Usuario","svc.d.unpublished":"no publicado","svc.d.mounts":"Montajes","svc.d.source":"Origen","svc.d.dest":"En el contenedor","svc.recreate.hint":"Quita el contenedor y lo crea de nuevo desde su imagen (lo que hay dentro se pierde).","svc.rebuild.hint":"Construye la imagen otra vez desde su Dockerfile y crea el contenedor.","obj.act.recreate":"Crear de nuevo","obj.act.rebuild":"Reconstruir","obj.mode.template":"Desde una plantilla","tpl.hint":"Servicios listos para usar. hive-am escribe el archivo compose; despu\xe9s puedes editarlo.","tpl.note":"El archivo compose se guarda en la carpeta de datos de hive-am (stacks). El primer inicio descarga las im\xe1genes.","tpl.pick":"Elige una plantilla.","svc.logs.short":"Logs","svc.needsRunning":"In\xedcialo primero","cl.open":"Abrir este recurso","cl.remove.hint":"Sigue corriendo; solo deja de ser parte del cl\xfaster.","hw2.copyAs.redact.hint":"Oculta Authorization, cookies y cabeceras de API key.","hw2.copyAs.g.tools":"L\xednea de comandos","hw2.copyAs.g.langs":"C\xf3digo","hw2.copyAs.g.raw":"Mensaje","hw2.batch.hint.short":"Una ejecuci\xf3n por fila de un CSV o JSON","hw2.stopOnFail.hint":"Al ejecutar el archivo entero, se detiene en la primera petici\xf3n que falla.","hw2.vars.count":"{count} variables","ow.svc.loading":"Cargando servicios…","ow.svc.none":"Este proyecto no tiene servicios.","ow.svc.stopped":"El proyecto est\xe1 detenido, as\xed que no hay servicios corriendo que mostrar. In\xedcialo para verlos.","obj.kind.database":"Base de datos","obj.kind.database.hint":"MySQL, PostgreSQL, SQLite o SQL Server: explora sus tablas y ejecuta consultas.","obj.delete.database":"Solo se va la conexi\xf3n guardada; la base de datos no se toca.","ow.tab.query":"Consultas","ow.tab.schema":"Esquema","db.conn":"Conexi\xf3n","db.conn.hint":"D\xf3nde est\xe1 la base de datos. hive-am se conecta cuando le pides algo y cierra enseguida.","db.engine":"Motor","db.file":"Archivo SQLite","db.file.hint":"El archivo .db. Tiene que existir.","db.host":"Servidor","db.port":"Puerto","db.user":"Usuario","db.password":"Contrase\xf1a","db.password.saved":"Hay una contrase\xf1a guardada. D\xe9jala vac\xeda para conservarla.","db.database":"Base de datos","db.database.hint":"La que se abre por defecto (opcional: luego puedes elegir otra).","db.ssl":"Usar SSL / TLS","db.trust":"Aceptar un certificado autofirmado","db.test":"Probar conexi\xf3n","db.test.ok":"Conectado","db.safety":"Seguridad y l\xedmites","db.safety.hint":"Qu\xe9 puede hacer una consulta y cu\xe1nto puede traer.","db.readonly":"Solo lectura","db.readonly.on":"Solo se aceptan SELECT, WITH, SHOW, DESCRIBE y EXPLAIN, y la conexi\xf3n se abre de solo lectura donde el motor lo permite.","db.readonly.off":"Se permite escribir: INSERT, UPDATE, DELETE y los cambios a la estructura se ejecutan de verdad. Cuidado con los datos de producci\xf3n.","db.timeout":"Tiempo m\xe1ximo de una consulta (segundos)","db.timeout.hint":"Una consulta m\xe1s larga se detiene (por defecto 30)","db.maxRows":"Filas por resultado","db.maxRows.hint":"Un resultado se corta aqu\xed (por defecto 1000, m\xe1ximo 10000)","db.run":"Ejecutar","db.running":"Ejecutando…","db.save":"Guardar consulta","db.saved":"Guardadas","db.saved.title":"Consultas guardadas","db.saved.none":"A\xfan no hay consultas guardadas. Escribe una y pulsa Guardar consulta.","db.saved.name":"Nombre de la consulta","db.saved.done":"Consulta guardada","db.readonly.badge":"Solo lectura","db.write.badge":"Puede escribir","db.database.pick":"Base de datos","db.editor":"Consulta SQL","db.help.title":"Ejecutar consultas","db.help.1":"Ctrl/⌘ + Enter ejecuta la consulta. Si seleccionas una parte del texto, solo se ejecuta esa parte.","db.help.2":"Un resultado se corta en el l\xedmite de filas de la configuraci\xf3n, y una consulta que tarda demasiado se detiene. Toda consulta queda en la pesta\xf1a Historial.","db.result.none":"Ejecuta una consulta para ver aqu\xed sus filas.","db.result.empty":"La consulta no devolvi\xf3 filas.","db.result.rows":"{count} filas","db.result.affected":"{count} filas cambiadas","db.result.truncated":"Solo se muestran las primeras {count} filas: agrega un LIMIT o un filtro para ver otras.","db.result.more":"Mostrar {count} m\xe1s","db.copied":"Copiado","db.download":"Descargar CSV","db.schema.filter":"Filtrar tablas","db.schema.collapseAll":"Contraer todos los esquemas","db.schema.expandAll":"Expandir todos los esquemas","db.schema.refresh":"Volver a leer el esquema","db.schema.loading":"Leyendo el esquema…","db.schema.empty":"No hay tablas aqu\xed.","db.schema.pick":"Elige una tabla para ver sus columnas (doble clic para ver sus filas).","db.schema.table":"Tabla","db.schema.view":"Vista","db.rows.est":"unas {count} filas","db.select100":"Ver las primeras filas","db.copyName":"Copiar nombre","db.col.name":"Columna","db.col.type":"Tipo","db.col.null":"Nulo","db.col.key":"Llave","db.col.default":"Por defecto","db.yes":"s\xed","db.no":"no","db.format":"Formatear","db.format.hint":"Formatea la consulta, o el texto seleccionado (Alt+Shift+F)","db.format.fail":"No se pudo formatear la consulta: {error}","db.saved.manage":"Gestionar consultas guardadas…","db.saved.use":"Agregarla al editor","db.saved.rename":"Renombrar","db.saved.replace":"Reemplazar su texto con lo que hay en el editor","db.saved.updated":"Consulta guardada actualizada","db.saved.delete.title":"\xbfEliminar “{name}”?","db.saved.delete.body":"Se quita la consulta guardada. Las consultas ya ejecutadas siguen en el historial.","db.help.3":"Mientras escribes se sugieren tablas, esquemas, columnas y palabras clave de SQL (despu\xe9s de un nombre de tabla o alias y un punto salen sus columnas). Ctrl+Espacio las pide; Tab o Enter aceptan.","db.help.4":"Formatear ordena la consulta, o solo el texto seleccionado (Alt+Shift+F). Una consulta elegida del historial o de las guardadas se agrega al final del editor y queda seleccionada, as\xed lo que escribiste se conserva.","common.showPassword":"Mostrar la contrase\xf1a","common.hidePassword":"Ocultar la contrase\xf1a","db.hist.title":"Consultas recientes","db.hist.empty":"A\xfan no se ha ejecutado nada.","db.hist.clear":"Borrar historial","db.delete":"Eliminar","db.engine.hint":"Qu\xe9 tipo de base de datos es. Cada una tiene su propio driver.","db.engine.port":"Puerto {port}","db.engine.file":"Un archivo de este equipo","db.url":"URL de conexi\xf3n","db.url.hint":"Opcional: pega una y se rellenan los campos de abajo (usuario, contrase\xf1a, host, puerto, base de datos y SSL).","db.url.use":"Rellenar","db.url.bad":"No es una URL que entienda. Empieza con postgresql://, mysql://, mssql:// o sqlite://","db.trust.on":"La conexi\xf3n va cifrada pero no se verifica el servidor: alguien en medio podr\xeda hacerse pasar por \xe9l. Sirve para un servidor local o de pruebas.","db.trust.off":"Se verifica el certificado del servidor. Si lo firm\xf3 una autoridad privada, indica su archivo abajo.","db.advanced":"Avanzado","db.advanced.hint":"Certificados SSL y propiedades del driver","db.sslTitle":"SSL / TLS","db.sslTitle.hint":"Cifra la conexi\xf3n y, si el servidor lo pide, identifica a este cliente con certificados.","db.ssl.ca":"Certificado de la CA","db.ssl.cert":"Certificado del cliente","db.ssl.key":"Llave del cliente","dp.title":"Propiedades del driver","dp.hint":"Opciones del driver que abre la conexi\xf3n. Solo salen las que entiende, y cada una cambia c\xf3mo se conecta.","dp.loading":"Cargando las propiedades…","dp.none":"Ninguna puesta: el driver usa sus valores por defecto.","dp.add":"Agregar una propiedad…","dp.remove":"Quitar {name}","dp.group.session":"Sesi\xf3n","dp.group.network":"Red","dp.group.ssl":"SSL","dp.group.advanced":"Avanzadas","obj.title":"Recursos","obj.kind.http":"Peticiones HTTP","obj.kind.http.hint":"Una carpeta con archivos .http: elige un entorno y ejecuta sus peticiones.","obj.kind.cluster":"Cl\xfaster","obj.kind.cluster.hint":"Agrupa servidores y contenedores: iniciarlos, detenerlos y leer sus logs juntos.","obj.status.ready":"Listo","obj.f.httpFolder":"Carpeta con los archivos .http","obj.f.httpFolder.hint":"Se leen todos los .http y .rest que haya dentro (hasta 4 niveles).","obj.f.defaultEnv":"Entorno por defecto (opcional)","obj.f.defaultEnv.hint":"Uno de los nombres de http-client.env.json, p. ej. dev.","obj.f.members":"Recursos que agrupa","obj.f.members.hint":"Servidores y contenedores de la misma colonia. Se inician en este orden y se detienen en el contrario.","obj.f.members.none":"Esta colonia todav\xeda no tiene servidores ni contenedores.","obj.delete.http":"La carpeta y sus archivos no se tocan.","obj.delete.cluster":"Solo se va el grupo; sus miembros siguen corriendo como estaban.","http.open":"Abrir el ejecutor","http.title":"Peticiones HTTP","http.env":"Entorno","http.noEnv":"Sin entorno","http.search":"Buscar peticiones","http.run":"Ejecutar","http.runFile":"Ejecutar todo el archivo","http.running":"Ejecutando…","http.rescan":"Volver a leer los archivos","http.empty":"No hay archivos .http ni .rest con peticiones en esta carpeta.","http.pick":"Elige una petici\xf3n a la izquierda.","http.missing":"Faltan valores: {names}","http.missing.hint":"Elige un entorno que los defina, o agr\xe9galos al archivo.","http.body":"Respuesta","http.headers":"Cabeceras","http.request":"Petici\xf3n","http.noResponse":"A\xfan no se ejecuta. Pulsa Ejecutar (Ctrl+Enter).","http.binary":"La respuesta es binaria ({type}, {size}).","http.truncated":"La respuesta se cort\xf3 en 2 MB.","http.emptyBody":"La respuesta no tiene cuerpo.","http.requestBody":"Cuerpo","http.status":"Estado","http.time":"{ms} ms","http.truncatedFiles":"Se muestran solo los primeros archivos.","http.fileResults":"{ok} de {total} respondieron con 2xx","obj.members":"Miembros","obj.members.empty":"Todav\xeda no agrupa nada. Ed\xedtalo para elegir los recursos.","obj.http.summary":"{count} peticiones en {files} archivos","obj.act.startAll":"Iniciar todo","obj.act.stopAll":"Detener todo","obj.act.restartAll":"Reiniciar todo","obj.manager.description":"Cuida los servidores y contenedores de la colonia: estado, logs, iniciar, detener y reiniciar.","obj.manager.subtitle":"Un agente que cuida los recursos de una colonia","obj.managers":"Qui\xe9n lo cuida","obj.manager.label":"Agente administrador","obj.manager.placeholder":"Buscar un agente…","obj.manager.empty":"Ning\xfan agente coincide.","obj.manager.hint.set":"Solo este agente cuida el recurso: ve su estado y sus logs y puede iniciarlo, detenerlo y reiniciarlo. Recibe la skill “Colony resources” si no la tiene.","obj.manager.hint.none":"Ninguno elegido: lo cuidan los agentes de su colonia que tengan la skill “Colony resources”. Busca para elegir un solo agente.","obj.managers.add":"Agregar agente administrador","obj.managers.remove":"Quitar el administrador","obj.managers.only":"Solo este agente lo cuida.","form.resources":"Recursos que cuida","form.resources.hint":"Servidores, contenedores y cl\xfasteres que este agente puede ver, de los que lee los logs y que inicia, detiene o reinicia. Un recurso tiene un solo administrador: elegir uno que cuida otro agente lo pasa a este. El agente recibe la skill “Colony resources”.","form.resources.placeholder":"Buscar recursos…","form.resources.empty":"Ning\xfan recurso coincide.","form.resources.taken":"ahora: {name}","obj.managers.none":"Ning\xfan agente cuida todav\xeda los recursos de esta colonia.","obj.managers.create":"Crear un agente administrador","obj.managers.ro":"solo lectura","obj.managers.readonly":"Solo lectura: puede mirar y leer logs, pero no iniciar ni detener.","obj.save":"Guardar","obj.create":"Crear","obj.new":"Nuevo recurso","obj.newTitle":"Nuevo recurso","obj.editTitle":"Editar {name}","obj.subtitle":"Agrega un servidor o contenedor Docker que mantener en marcha, una base de datos para consultar, peticiones HTTP para enviar, o un cluster que los agrupe.","obj.kind.server":"Servidor","obj.kind.docker":"Docker","obj.kind.pick":"Qu\xe9 tipo de recurso","obj.kind.server.hint":"Un comando que hive-am mantiene corriendo (npm run dev, un jar de Java…), con sus logs.","obj.kind.docker.hint":"Un contenedor, un proyecto compose o uno que ya existe.","obj.status.running":"Corriendo","obj.status.starting":"Iniciando","obj.status.stopped":"Detenido","obj.status.error":"Error","obj.status.unknown":"Desconocido","obj.act.start":"Iniciar","obj.act.stop":"Detener","obj.act.restart":"Reiniciar","obj.act.edit":"Editar recurso","obj.act.failed":"Fall\xf3: {action}","obj.logs":"Logs","obj.logs.empty":"A\xfan no ha imprimido nada.","obj.logs.bottom":"Ir al final","obj.logs.clear":"Limpiar la vista","obj.since":"desde {time}","obj.pid":"PID {pid}","obj.colony":"Colonia","obj.noColony":"Sin colonia","obj.f.name":"Nombre","obj.f.folder":"Carpeta","obj.f.folder.hint":"Donde se ejecuta el comando.","obj.f.start":"Comando de inicio","obj.f.start.hint":"Corre en esa carpeta a trav\xe9s del shell, p. ej. npm run dev.","obj.f.stop":"Comando para detener (opcional)","obj.f.stop.hint":"Se ejecuta antes de detener el proceso, p. ej. docker compose down. Despu\xe9s el proceso se detiene siempre.","obj.f.port":"Puerto (opcional)","obj.f.port.hint":"Si lo indicas, el recurso est\xe1 Iniciando hasta que algo escuche ah\xed.","obj.f.env":"Variables de entorno","obj.f.env.hint":"Una NOMBRE=valor por l\xednea.","obj.f.mode":"C\xf3mo se maneja","obj.mode.container":"Crear un contenedor","obj.mode.compose":"Proyecto compose","obj.mode.existing":"Contenedor existente","obj.f.image":"Imagen","obj.f.ports":"Puertos","obj.f.ports.hint":"Uno por l\xednea: 8080:80","obj.f.volumes":"Vol\xfamenes","obj.f.volumes.hint":"Uno por l\xednea: /ruta/host:/en/contenedor","obj.f.restart":"Pol\xedtica de reinicio","obj.f.command":"Comando (opcional)","obj.f.file":"Archivo compose","obj.f.project":"Nombre del proyecto (opcional)","obj.f.services":"Servicios (opcional)","obj.f.services.hint":"Separados por comas; vac\xedo significa todos.","obj.f.container":"Contenedor","obj.f.container.hint":"Su nombre o id. hive-am solo lo inicia, lo detiene y lee sus logs; borrar el recurso nunca lo elimina.","obj.created":"Recurso creado","obj.saved":"Recurso guardado","obj.deleted":"Recurso eliminado","obj.delete":"Eliminar recurso","obj.delete.title":"\xbfEliminar {name}?","obj.delete.server":"Se detiene si est\xe1 corriendo y se borran sus logs.","obj.delete.container":"Se elimina el contenedor que hive-am cre\xf3 para \xe9l.","obj.delete.compose":"El proyecto compose se detiene, no se elimina.","obj.delete.existing":"El contenedor se queda como est\xe1.","obj.err.name":"Ponle un nombre.","stat.objects_one":"recurso","stat.objects_other":"recursos","obj.running":"{count} corriendo","git.search.name":"Nombre","git.files.short":"archivos","git.search.content":"Contenido","git.search.placeholder":"Buscar dentro de los archivos","git.search.min":"Escribe al menos 2 caracteres.","git.search.none":'Ning\xfan archivo contiene "{query}".',"git.search.capped":"Se muestran las primeras {count} coincidencias.","git.search.searching":"Buscando…","git.img.before":"Antes","git.img.after":"Despu\xe9s","git.tags.branchName":"Nombre de la rama","git.tags.createBranch":"Crear rama","git.tags.newBranch":"Crear una rama aqu\xed","git.tags.branchCreated":"Rama {branch} creada (sigues donde estabas)","git.br.delete":"Borrar la rama {branch}","git.br.deleteAsk":"\xbfBorrar la rama local {branch}? Sus commits siguen en git mientras otra rama o tag los alcance.","git.br.deleteGo":"Borrar","git.br.deleteForce":"Borrar de todos modos (se pierden los commits que no est\xe9n en otra rama)","git.done.branchDelete":"Rama borrada","git.layout.unified":"Unificada","git.layout.split":"Lado a lado","git.copyPath":"Copiar ruta","git.renamedFrom":"Renombrado desde {path}","git.diff.binary":"Archivo binario: no hay diferencias de texto que mostrar.","git.diff.empty":"Sin diferencias de texto (por ejemplo, solo cambi\xf3 el modo del archivo).","git.diff.truncated":"La diferencia era demasiado grande y se muestra solo en parte.","git.file.binary":"Archivo binario: no se puede previsualizar.","git.file.empty":"Archivo vac\xedo.","git.file.deleted":"Eliminado del \xe1rbol de trabajo: se muestra la versi\xf3n del \xfaltimo commit.","git.file.truncated":"Archivo grande: se muestra solo la primera parte.","git.loadError":"No se pudo cargar la vista previa.","git.info.toggle":"Mostrar detalles de la rama y del \xfaltimo commit","git.info.branch":"Rama","git.info.upstreamLabel":"Rama remota","git.info.noUpstream":"Sin rama remota configurada","git.info.inSync":"Al d\xeda con la rama remota","git.info.upstreamStatus":"{ahead} por delante \xb7 {behind} por detr\xe1s de la rama remota","git.info.commit":"\xdaltimo commit","git.info.message":"Mensaje","git.info.author":"Autor","git.info.when":"Cu\xe1ndo","git.info.copyBranch":"Copiar nombre de la rama","git.info.copySha":"Copiar hash del commit","server.invalidPath":"Ruta no v\xe1lida","server.pathOutside":"La ruta est\xe1 fuera de la carpeta del agente","server.fileNotFound":"Archivo no encontrado","server.notFile":"No es un archivo","server.notImage":"No es una imagen","server.imageTooLarge":"La imagen es demasiado grande para previsualizarla","server.pathRequired":"Se requiere path","hover.noOrchestrator":"Sin orquestador","hover.more_one":"+{count} m\xe1s","hover.more_other":"+{count} m\xe1s","md.toolbar":"Formato","md.heading":"T\xedtulo","md.bold":"Negrita","md.boldPh":"texto en negrita","md.italic":"Cursiva","md.italicPh":"texto en cursiva","md.code":"C\xf3digo en l\xednea","md.codeBlock":"Bloque de c\xf3digo","md.bullets":"Lista con vi\xf1etas","md.numbered":"Lista numerada","md.quote":"Cita","md.link":"Enlace","md.linkPh":"texto del enlace","md.rule":"Separador","md.view.write":"Escribir","md.view.split":"Dividido","md.view.preview":"Vista previa","md.stats":"{words} palabras \xb7 {chars} caracteres","md.tips":"Tab sangra \xb7 Enter contin\xfaa listas \xb7 Ctrl+B / I / K","git.act.group":"Acciones de git","git.act.fetch":"Fetch","git.act.fetch.hint":"Consulta el remoto en busca de commits nuevos sin cambiar tus archivos","git.act.pull":"Pull","git.act.pull.hint":"Trae los commits nuevos del remoto (solo avance r\xe1pido)","git.act.push":"Push","git.act.push.hint":"Env\xeda tus commits al remoto","git.act.commit":"Commit","git.act.branches":"Ramas","git.done.fetch":"Fetch listo","git.done.pull":"Pull listo","git.done.push":"Push listo","git.done.commit":"Commit creado","git.done.switch":"Ahora en {branch}","git.done.merge":"{branch} fusionada","git.done.mergeAbort":"Fusi\xf3n cancelada","git.notice.failed":"{action}: fall\xf3","git.notice.diverged":"Las ramas divergieron. Elige c\xf3mo combinarlas:","git.pull.merge":"Pull con merge","git.pull.rebase":"Pull con rebase","git.warn.running":"{name} est\xe1 trabajando: hacer commit, pull o cambiar de rama ahora puede chocar con sus ediciones.","git.br.search":"Buscar rama","git.br.new":"Nueva rama desde {branch}","git.br.newPlaceholder":"nombre-de-la-rama","git.br.create":"Crear","git.br.local":"Locales","git.br.remote":"Remotas","git.br.merge":"Fusionar en {branch}","git.br.mergeAsk":"\xbfFusionar {from} en {into}?","git.br.mergeGo":"Fusionar","git.br.none":"Ninguna rama coincide","git.br.switchTo":"Cambiar a {branch}","git.commit.title":"Hacer commit","git.commit.selected":"{n} de {total} seleccionados","git.commit.all":"Todos","git.commit.none":"Ninguno","git.commit.message":"Mensaje","git.commit.placeholder":"Resume qu\xe9 cambi\xf3 y por qu\xe9","git.commit.go":"Commit","git.commit.goPush":"Commit y push","git.commit.committing":"Haciendo commit…","git.commit.hint":"Solo se hace commit de los archivos seleccionados. Ctrl+Enter para confirmar.","git.commit.nothing":"No hay nada para commit","git.tab.files":"Archivos","git.tab.history":"Historial","git.hist.empty":"A\xfan no hay commits","git.hist.more":"Cargar m\xe1s","git.hist.merge":"merge","git.hist.select":"Elige un commit para ver qu\xe9 cambi\xf3","git.hist.files_one":"{count} archivo cambiado","git.hist.files_other":"{count} archivos cambiados","git.hist.noFiles":"Sin cambios de archivos (commit vac\xedo o de merge)","git.res.done":"Marcado como resuelto","git.res.restored":"Conflicto restaurado","git.res.left_one":"Queda {count} conflicto","git.res.left_other":"Quedan {count} conflictos","git.res.none":"Sin marcadores de conflicto","git.res.allMine":"Todo lo m\xedo","git.res.allMine.hint":"Se queda con tu lado de todo el archivo y lo marca como resuelto","git.res.allRemote":"Todo lo del remoto","git.res.allRemote.hint":"Se queda con el lado entrante de todo el archivo y lo marca como resuelto","git.res.noEdit":'Este archivo es binario o muy grande para resolverlo aqu\xed. Usa "Todo lo m\xedo" o "Todo lo del remoto".',"git.res.block":"Conflicto {n} de {total}","git.res.line":"l\xednea {n}","git.res.mine":"M\xedo (rama actual)","git.res.remote":"Remoto (lo que entra)","git.res.empty":"(nada)","git.res.keepMine":"Quedarme con lo m\xedo","git.res.keepRemote":"Quedarme con el remoto","git.res.both":"Quedarme con ambos","git.res.bothMine":"M\xedo primero","git.res.bothRemote":"Remoto primero","git.res.result":"Resultado","git.res.editHint":"Puedes editarlo libremente antes de guardar","git.res.restore":"Restaurar conflicto","git.res.restore.hint":"Descarta tus elecciones y vuelve a poner los marcadores del conflicto","git.res.markResolved":"Marcar como resuelto","git.state.merge":"Fusi\xf3n en curso","git.state.rebase":"Rebase en curso","git.state.conflicts_one":"{count} archivo con conflictos","git.state.conflicts_other":"{count} archivos con conflictos","git.state.ready":"Todos los conflictos est\xe1n resueltos.","git.state.finishMerge":"Concluir fusi\xf3n (commit)","git.state.continueRebase":"Continuar rebase","git.state.abortMerge":"Cancelar fusi\xf3n","git.state.abortRebase":"Cancelar rebase","git.done.rebaseContinue":"Rebase continuado","git.set.title":"Ajustes de la vista de c\xf3digo","git.set.theme":"Tema","git.set.themeApp":"Hive (app)","git.set.whitespace":"Mostrar espacios en blanco","git.set.whitespace.hint":"Espacios como \xb7 y tabuladores como →, en el visor, los diffs y el editor","git.set.tab":"Ancho del tabulador","git.set.note":"Se guarda solo en este navegador.","git.blame":"Blame","git.blame.hint":"Muestra qui\xe9n cambi\xf3 cada l\xednea por \xfaltima vez","git.blame.uncommitted":"Sin commit","git.blame.truncated":"El blame muestra solo las primeras {count} l\xedneas.","git.discard":"Descartar","git.discard.hint":"Descarta los cambios de este archivo","git.discard.hunk":"Descartar bloque","git.discard.hunk.hint":"Descarta solo este bloque de cambios","git.discard.all":"Descartar todos los cambios","git.discard.all.blocked":"Primero termina o cancela la fusi\xf3n/rebase","git.done.discard":"Cambios descartados","git.discard.confirm.title":"\xbfEliminar archivos por completo?","git.discard.confirm.body_one":"Este archivo es nuevo (no est\xe1 en ning\xfan commit), as\xed que descartarlo lo elimina por completo. No se puede recuperar.","git.discard.confirm.body_other":"Estos {count} archivos son nuevos (no est\xe1n en ning\xfan commit), as\xed que descartarlos los elimina por completo. No se pueden recuperar.","git.discard.confirm.go":"Eliminar archivos","git.discard.lines":"Elegir l\xedneas","git.discard.lines.hint":"Elige l\xedneas agregadas/quitadas de este bloque para descartarlas","git.discard.lines.all":"Todas","git.discard.lines.go_one":"Descartar {count} l\xednea","git.discard.lines.go_other":"Descartar {count} l\xedneas","git.discard.lines.pick":"Incluir esta l\xednea","git.discard.all.title":"\xbfDescartar todos los cambios?","git.discard.all.restore_one":"{count} archivo con cambios vuelve al \xfaltimo commit.","git.discard.all.restore_other":"{count} archivos con cambios vuelven al \xfaltimo commit.","git.discard.all.delete_one":"{count} archivo nuevo (no est\xe1 en ning\xfan commit) se ELIMINAR\xc1 por completo:","git.discard.all.delete_other":"{count} archivos nuevos (no est\xe1n en ning\xfan commit) se ELIMINAR\xc1N por completo:","git.discard.all.lines":"En total: +{add} −{del} l\xedneas de cambios.","git.discard.all.warn":"Todo esto se pierde de forma definitiva. No se puede deshacer.","git.discard.all.go":"Descartar todos los cambios","git.discard.file.title":"\xbfDescartar los cambios de este archivo?","git.discard.file.modified":"El archivo vuelve a como est\xe1 en el \xfaltimo commit{lines}.","git.discard.file.deleted":"El archivo borrado se restaurar\xe1 desde el \xfaltimo commit.","git.discard.file.renamed":"Se deshace el renombrado: el archivo vuelve a su nombre original, {from}.","git.discard.file.go":"Descartar cambios del archivo","git.pending.conflicts":"resuelve los conflictos","git.tab.stashes":"Stashes","git.stash.save":"Guardar cambios en un stash","git.stash.nothing":"No hay cambios que guardar","git.stash.empty":"No hay stashes. Un stash guarda cambios que apartas para recuperarlos despu\xe9s.","git.stash.smart":"cambio inteligente","git.stash.saved":"Cambios guardados","git.stash.save.body":"Tus cambios sin commit (incluidos los archivos nuevos) se apartan y el \xe1rbol de trabajo vuelve al \xfaltimo commit.","git.stash.save.placeholder":"Mensaje (opcional)","git.stash.apply":"Aplicar","git.stash.apply.hint":"Recupera los cambios y conserva el stash","git.stash.pop":"Aplicar y borrar","git.stash.pop.hint":"Recupera los cambios y borra el stash","git.stash.drop":"Borrar","git.stash.drop.title":"\xbfBorrar este stash?","git.stash.drop.body":"Se borrar\xe1n los cambios guardados en \xab{name}\xbb.","git.stash.applied":"Stash aplicado","git.stash.popped":"Stash aplicado y borrado","git.stash.dropped":"Stash borrado","git.sw.title":"\xbfCambiar a {branch}?","git.sw.carried_one":"{count} cambio sin commit viaja contigo desde {from}.","git.sw.carried_other":"{count} cambios sin commit viajan contigo desde {from}.","git.sw.others_one":"{names} est\xe1 trabajando ahora mismo en este repositorio: cambiar de rama modifica los archivos que est\xe1 editando.","git.sw.others_other":"{names} est\xe1n trabajando ahora mismo en este repositorio: cambiar de rama modifica los archivos que est\xe1n editando.","git.sw.anyway":"Cambiar de todos modos","git.done.switchCarried":"Ahora en {branch}; {count} cambios vinieron contigo","git.state.stash":"Cambio inteligente en curso","git.state.stash.hint":"{from} → {to}: se est\xe1n recuperando tus cambios","git.state.finishStash":"Terminar","git.state.cancelStash":"Cancelar cambio inteligente","git.done.smartFinish":"Cambio terminado","git.done.smartCancel":"Cambio cancelado","git.state.cancelStash.title":"\xbfCancelar el cambio inteligente?","git.state.cancelStash.body":"Vuelves a {from} y tus cambios regresan exactamente como estaban. Lo que editaste al resolver conflictos se pierde.","git.state.cancelStash.go":"Cancelar cambio","git.res.mine.stash":"M\xedo (tus cambios guardados)","git.res.remote.stash":"Rama destino","git.sw.kept_one":"{names} ya exist\xeda all\xed: se qued\xf3 tu versi\xf3n (aparece como un cambio)","git.sw.kept_other":"{names} ya exist\xedan all\xed: se quedaron tus versiones (aparecen como cambios)","git.peek.title":"Bloque de cambios","git.peek.hint":"Clic para ver este cambio","git.peek.lines":"Bloque de cambios \xb7 l\xedneas {from}–{to}","git.peek.line":"Bloque de cambios \xb7 l\xednea {n}","git.peek.prev":"Cambio anterior","git.peek.next":"Siguiente cambio","git.peek.count":"{n} de {total}","git.set.ignored":"Mostrar archivos ignorados","git.set.ignored.hint":"Lo que oculta .gitignore (node_modules, build, .env…) aparece atenuado; las carpetas se abren un nivel a la vez","git.ignored.hint":"Ignorado por git","git.ignored.chip":"Ignorado","lib.unreachable":"No se puede contactar al servidor. Comprueba que est\xe9 en marcha.","lib.timeout":"El servidor tard\xf3 demasiado en responder.","ws.more":"M\xe1s acciones","search.clear":"Borrar b\xfasqueda","tabs.close":"Cerrar pesta\xf1a","folder.loading":"Cargando carpetas…","folder.error":"No se pudieron listar las carpetas","folder.retry":"Reintentar","fa.retry":"Reintentar","fa.cfg.tabs":"Panel del agente","fa.sessions.loadFailed":"No se pudieron cargar las sesiones. Comprueba que el servidor est\xe9 en marcha.","fa.sched.loadFailed":"No se pudieron cargar las programaciones. Reintentando.","fa.chat.log":"Conversaci\xf3n con {name}","fa.chat.jump":"Ir al final","fa.chat.working":"{name} est\xe1 trabajando","fa.chat.done":"{name} termin\xf3 de responder","fa.unsaved.title":"\xbfDescartar los cambios sin guardar?","fa.unsaved.body":"Tienes ediciones sin guardar. Si contin\xfaas se perder\xe1n.","fa.unsaved.discard":"Descartar cambios","fa.unsaved.keep":"Seguir editando","cx.new":"Nuevo","cx.stat.open":"Abrir {label}","cx.loadFailed":"No se pudo cargar tu colonia.","cx.retry":"Reintentar","cx.loading":"Cargando la colonia","cx.openAgent":"Abrir {name}","cx.moveHint":"Las flechas lo mueven (May\xfas para pasos grandes)"}},i="en",l=e=>{i=e},c=()=>"es"===i?"es-MX":"en-US",d=()=>"es"===i?"es-MX":"en-GB";function h(e,t){var o,n,s;let l,d=r[i];if(t&&"number"==typeof t.count){let a="one"===new Intl.PluralRules(c()).select(t.count)?"one":"other";l=null!=(o=d["".concat(e,"_").concat(a)])?o:d["".concat(e,"_other")]}return null!=l||(l=null!=(s=null!=(n=d[e])?n:a[e])?s:e),t?l.replace(/\{(\w+)\}/g,(e,o)=>o in t?String(t[o]):e):l}function u(){var e;try{let e=localStorage.getItem(s);if("en"===e||"es"===e)return e}catch(e){}return"undefined"!=typeof navigator&&(null==(e=navigator.language)?void 0:e.toLowerCase().startsWith("es"))?"es":"en"}let m=[[/^Request body is not valid JSON$/,"server.invalidJson"],[/^Name is required$/,"server.nameRequired"],[/^Unknown provider "(.+)"$/,"server.unknownProvider",["name"]],[/^Unknown provider$/,"server.unknownProviderShort"],[/^Pick a provider$/,"server.pickProvider"],[/^Role must be orchestrator or worker$/,"server.badRole"],[/^Folder does not exist: (.+)$/,"server.folderMissing",["path"]],[/^Not a folder$/,"server.notFolder"],[/^That colony no longer exists$/,"server.colonyGone"],[/^An agent named "(.+)" already exists$/,"server.agentExists",["name"]],[/^A skill named "(.+)" already exists$/,"server.skillExists",["name"]],[/^A type named "(.+)" already exists$/,"server.typeExists",["name"]],[/^A colony named "(.+)" already exists$/,"server.colonyExists",["name"]],[/^Choose a working folder, or put the agent in a colony that provides one\.$/,"server.needFolderOrColony"],[/^Choose a working folder, or keep inheriting the colony’s folder\.$/,"server.needFolderOrInherit"],[/^Agent not found$/,"server.agentNotFound"],[/^Skill not found$/,"server.skillNotFound"],[/^Type not found$/,"server.typeNotFound"],[/^Colony not found$/,"server.colonyNotFound"],[/^Message is empty$/,"server.messageEmpty"],[/^Only the agent’s own conversations can be made current\. Delegated sessions are read-only\.$/,"server.onlyOwnSessions"],[/^That session does not belong to this agent$/,"server.sessionNotOwned"],[/^Only orchestrators can have subagents$/,"server.onlyOrchestrators"],[/^from, agent and task are required$/,"server.dispatchFields"],[/^Unknown orchestrator$/,"server.unknownOrchestrator"],[/^No agent named "(.+)"$/,"server.noAgentNamed",["name"]],[/^"(.+)" is not assigned to (.+)$/,"server.notAssigned",["worker","orchestrator"]],[/^Unexpected server error$/,"server.unexpected"],[/^No such route$/,"server.noRoute"],[/^Not found$/,"server.notFound"],[/^This agent has no working folder\. Set one on the agent or on its colony\.$/,"server.noWorkingFolder"],[/^Agent no longer exists$/,"server.agentGone"],[/^Request failed \((\d+)\)$/,"server.requestFailed",["status"]],[/^Invalid path$/,"server.invalidPath"],[/^Path is outside the agent’s folder$/,"server.pathOutside"],[/^File not found$/,"server.fileNotFound"],[/^Not a file$/,"server.notFile"],[/^Not an image$/,"server.notImage"],[/^Image is too large to preview$/,"server.imageTooLarge"],[/^path is required$/,"server.pathRequired"]];function p(e){for(let[t,o,a]of m){let n=t.exec(e);if(!n)continue;let s={};return(null!=a?a:[]).forEach((e,t)=>{s[String(e)]=n[t+1]}),h(o,s)}return e}},69654:(e,t,o)=>{o.d(t,{CY:()=>i,Tl:()=>s.Tl,VR:()=>s.VR,YF:()=>s.YF,YZ:()=>s.YZ,s9:()=>l});var a=o(94799),n=o(34023),s=o(68419);let r=(0,n.createContext)(null);function i(e){let{children:t}=e,[o,i]=(0,n.useState)("en");(0,s.Au)(o),(0,n.useEffect)(()=>{let e=(0,s.ED)();(0,s.Au)(e),i(e),document.documentElement.lang=e},[]);let l=(0,n.useCallback)(e=>{(0,s.Au)(e),i(e),document.documentElement.lang=e;try{localStorage.setItem(s.Nf,e)}catch(e){}},[]),c=(0,n.useMemo)(()=>({locale:o,setLocale:l,t:s.Tl}),[o,l]);return(0,a.jsx)(r.Provider,{value:c,children:t})}function l(){let e=(0,n.useContext)(r);if(!e)throw Error("I18nProvider missing");return e}},77021:(e,t,o)=>{o.d(t,{CL:()=>n,ud:()=>r,zS:()=>s});var a=o(34023);function n(e,t){try{let o=localStorage.getItem(e);return null===o?t:JSON.parse(o)}catch(e){return t}}function s(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(e){}}function r(e,t){let[o,r]=(0,a.useState)(t),[i,l]=(0,a.useState)(!1),c=(0,a.useRef)(o);return c.current=o,(0,a.useEffect)(()=>{r(n(e,t)),l(!0)},[e]),[o,(0,a.useCallback)(t=>{let o="function"==typeof t?t(c.current):t;c.current=o,r(o),s(e,o)},[e]),i]}},82397:(e,t,o)=>{o.d(t,{Aq:()=>n,NO:()=>a,Ur:()=>r,m9:()=>s});let a=e=>Math.ceil(e.length/4),n=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e4?0:1),"k"):String(e),s=e=>"on_demand"===e.load?a("- **".concat(e.name,"**: ").concat(e.description)):a(e.content)+a(e.name)+a(e.description),r=3e3}}]);