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.
- package/CHANGELOG.md +15 -1
- package/package.json +1 -1
- package/server/dist/context.js +62 -0
- package/server/dist/db/migrations.js +7 -0
- package/server/dist/db.js +4 -4
- package/server/dist/history/claude.js +8 -2
- package/server/dist/http/routes/agents.js +1 -1
- package/server/dist/http/validate.js +2 -0
- package/server/dist/instructions.js +4 -0
- package/server/dist/models.js +2 -0
- package/server/dist/providers/claude.js +13 -1
- package/server/dist/providers/opencode-server.js +59 -0
- package/server/dist/providers/opencode.js +4 -1
- package/server/dist/stats.js +15 -3
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-build-manifest.json +70 -70
- package/web/.next/app-path-routes-manifest.json +7 -7
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +49 -49
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/server/app/_not-found.rsc +3 -3
- package/web/.next/server/app/agents/[id]/page.js +3 -3
- package/web/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/agents/page.js +1 -1
- package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/agents.html +1 -1
- package/web/.next/server/app/agents.rsc +4 -4
- package/web/.next/server/app/connections/page.js +1 -1
- package/web/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/connections.html +1 -1
- package/web/.next/server/app/connections.rsc +4 -4
- package/web/.next/server/app/index.html +1 -1
- package/web/.next/server/app/index.rsc +4 -4
- package/web/.next/server/app/page.js +1 -1
- package/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/relations/page.js +1 -1
- package/web/.next/server/app/relations/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/relations.html +1 -1
- package/web/.next/server/app/relations.rsc +4 -4
- package/web/.next/server/app/resources/[id]/page.js +1 -1
- package/web/.next/server/app/resources/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/resources/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/resources/page.js +1 -1
- package/web/.next/server/app/resources/page.js.nft.json +1 -1
- package/web/.next/server/app/resources/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/resources.html +1 -1
- package/web/.next/server/app/resources.rsc +4 -4
- package/web/.next/server/app/schedules/page.js +1 -1
- package/web/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/schedules.html +1 -1
- package/web/.next/server/app/schedules.rsc +4 -4
- package/web/.next/server/app/sessions/page.js +1 -1
- package/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/sessions.html +1 -1
- package/web/.next/server/app/sessions.rsc +4 -4
- package/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills.html +1 -1
- package/web/.next/server/app/skills.rsc +4 -4
- package/web/.next/server/app/types/page.js +1 -1
- package/web/.next/server/app/types/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/types.html +1 -1
- package/web/.next/server/app/types.rsc +4 -4
- package/web/.next/server/app-paths-manifest.json +7 -7
- package/web/.next/server/chunks/143.js +1 -1
- package/web/.next/server/chunks/274.js +1 -1
- package/web/.next/server/chunks/306.js +1 -1
- package/web/.next/server/chunks/451.js +1 -0
- package/web/.next/server/chunks/505.js +1 -1
- package/web/.next/server/chunks/612.js +1 -1
- package/web/.next/server/chunks/716.js +2 -2
- package/web/.next/server/pages/404.html +1 -1
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/static/chunks/281-d8a0dcfaa6d064e4.js +1 -0
- package/web/.next/static/chunks/{291-efae53ea5f7ee92d.js → 291-23f314877fa39054.js} +1 -1
- package/web/.next/static/chunks/304-681348099f874a30.js +1 -0
- package/web/.next/static/chunks/350-0fe82e622e7a670f.js +1 -0
- package/web/.next/static/chunks/{491-6b4e6201f5110dff.js → 491-28f093772bd460ac.js} +1 -1
- package/web/.next/static/chunks/517-373a80c8ba432bdc.js +1 -0
- package/web/.next/static/chunks/654-92a63b3c4b412666.js +1 -0
- package/web/.next/static/chunks/705-780e48e55b0346bd.js +1 -0
- package/web/.next/static/chunks/{844-fe55292e0701f436.js → 844-519177e6198ca84f.js} +1 -1
- package/web/.next/static/chunks/app/agents/[id]/page-c005161cec5527d8.js +1 -0
- package/web/.next/static/chunks/app/agents/{page-f4c4c80f955f3967.js → page-9bb8cba69776c719.js} +1 -1
- package/web/.next/static/chunks/app/connections/{page-0936beaf02d863c6.js → page-eb11cfb1ffeab3ca.js} +1 -1
- package/web/.next/static/chunks/app/{layout-99620746d028dda8.js → layout-49b46c9b5aa512a8.js} +1 -1
- package/web/.next/static/chunks/app/{page-a7f292117b7d76bf.js → page-da042d146caeeab6.js} +1 -1
- package/web/.next/static/chunks/app/relations/{page-fba25393c8688714.js → page-a44fd515a3b0525e.js} +1 -1
- package/web/.next/static/chunks/app/resources/[id]/{page-d110d89bb8b5fca7.js → page-bf05836f97248ca7.js} +1 -1
- package/web/.next/static/chunks/app/resources/{page-bbd0b450d3f3131d.js → page-800f774e5cacf4c9.js} +1 -1
- package/web/.next/static/chunks/app/schedules/{page-a1124397fc760413.js → page-96976fff4ee23538.js} +1 -1
- package/web/.next/static/chunks/app/sessions/{page-0e322811b0cde724.js → page-a7534ebd90e982d6.js} +1 -1
- package/web/.next/static/chunks/app/skills/{page-22ea0ef89d9f7a13.js → page-bc1acd0663f36129.js} +1 -1
- package/web/.next/static/chunks/app/types/{page-18c4e1db2724d41d.js → page-ebd37e220f77c1f3.js} +1 -1
- package/web/.next/static/css/{b7a03c62468f4263.css → d42799b7e6a0e8a2.css} +1 -1
- package/web/.next/trace +29 -29
- package/web/.next/server/chunks/555.js +0 -1
- package/web/.next/static/chunks/176-aeaf907a6ea5627d.js +0 -1
- package/web/.next/static/chunks/350-56599dc3bf06066d.js +0 -1
- package/web/.next/static/chunks/486-13e08542f3a1cbac.js +0 -1
- package/web/.next/static/chunks/517-ccaf8cc5c733cbd8.js +0 -1
- package/web/.next/static/chunks/705-c7e75806f77b880c.js +0 -1
- package/web/.next/static/chunks/839-4aefe6e71be6e1ef.js +0 -1
- package/web/.next/static/chunks/app/agents/[id]/page-3faf40800981a736.js +0 -1
- /package/web/.next/static/{7BI__-ayGDTlOrSboD_bT → aSYzbHk1M5YeS_d3SQKTZ}/_buildManifest.js +0 -0
- /package/web/.next/static/{7BI__-ayGDTlOrSboD_bT → aSYzbHk1M5YeS_d3SQKTZ}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=505,exports.ids=[505],exports.modules={60505:(a,b,c)=>{c.d(b,{D:()=>bZ});var d=c(55322),e=c(17027),f=c(84300),g=c(37811),h=c(84647),i=c(306),j=c(30257),k=c(58437),l=c(85605),m=c(32309),n=c(7371),o=c(93884),p=c(60570),q=c(5207),r=c(90634),s=c(93717),t=c(36368),u=c(91705),v=c.n(u),w=c(68364),x=c(77790),y=c(71267),z=c(54403);function A({activeId:a,collapsed:b=!1,onToggle:c}){let{t:f}=(0,o.s9)(),{objects:g,colonies:h}=(0,p.o0)(),[i,j]=(0,e.useState)(""),[k,l]=(0,e.useState)(!1),m=(0,e.useMemo)(()=>{let a=a=>!i||`${a.name} ${a.kind}`.toLowerCase().includes(i.toLowerCase()),b=h.map(b=>({key:b.id,name:b.name,color:b.color||"var(--honey)",items:g.filter(c=>c.colony_id===b.id&&a(c))}));return b.push({key:"free",name:f("obj.noColony"),color:null,items:g.filter(b=>(!b.colony_id||!h.some(a=>a.id===b.colony_id))&&a(b))}),b.filter(a=>a.items.length)},[g,h,i,f]),n=c&&(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:c,"aria-label":b?f("ow.expand"):f("ow.collapse"),title:b?f("ow.expand"):f("ow.collapse"),"aria-expanded":!b,children:b?(0,d.jsx)(w.A,{size:17}):(0,d.jsx)(x.A,{size:17})});return b?(0,d.jsxs)("aside",{className:"switcher mini","aria-label":f("nav.objects"),children:[(0,d.jsxs)("div",{className:"switcher-head",children:[n,(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>l(!0),"aria-label":f("obj.new"),title:f("obj.new"),children:(0,d.jsx)(y.A,{size:16})})]}),(0,d.jsx)("div",{className:"switcher-list",children:m.map(b=>(0,d.jsxs)("div",{className:"mini-group",children:[(0,d.jsx)("div",{className:"mini-sep",title:`${b.name} \xb7 ${b.items.length}`,style:b.color?{"--c":b.color}:void 0}),b.items.map(b=>{let{icon:c,color:e}=s.Nd[b.kind];return(0,d.jsx)(v(),{href:`/resources/${b.id}`,className:"sw-item mini","aria-current":b.id===a?"page":void 0,"aria-label":b.name,title:`${b.name}: ${f(`obj.status.${b.state.status}`)}`,children:(0,d.jsxs)("span",{className:"sw-av",children:[(0,d.jsx)("span",{className:"obj-ico sm",style:{"--c":e},children:(0,d.jsx)(c,{size:17})}),(0,d.jsx)(t.md,{status:b.state.status,className:"sw-dot"})]})},b.id)})]},b.key))}),k&&(0,d.jsx)(z.X,{onClose:()=>l(!1)})]}):(0,d.jsxs)("aside",{className:"switcher","aria-label":f("nav.objects"),children:[(0,d.jsxs)("div",{className:"switcher-head",children:[(0,d.jsxs)("div",{className:"row",children:[(0,d.jsx)("b",{className:"grow sw-title",children:f("nav.objects")}),n,(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>l(!0),"aria-label":f("obj.new"),title:f("obj.new"),children:(0,d.jsx)(y.A,{size:16})})]}),(0,d.jsx)(q.DO,{value:i,onChange:j,placeholder:f("ow.find"),label:f("ow.find")})]}),(0,d.jsxs)("div",{className:"switcher-list",children:[0===m.length&&(0,d.jsx)("p",{className:"muted small sw-none",children:i?f("ow.noMatch",{query:i}):f("ow.empty.body")}),m.map(b=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"switcher-group",children:[b.color&&(0,d.jsx)("i",{className:"cdot",style:{background:b.color}}),b.name,(0,d.jsx)("span",{children:b.items.length})]}),b.items.map(b=>{let{icon:c,color:e}=s.Nd[b.kind];return(0,d.jsxs)(v(),{href:`/resources/${b.id}`,className:"sw-item","aria-current":b.id===a?"page":void 0,children:[(0,d.jsx)("span",{className:"sw-av",children:(0,d.jsx)("span",{className:"obj-ico sm",style:{"--c":e},children:(0,d.jsx)(c,{size:17})})}),(0,d.jsxs)("span",{className:"sw-body",children:[(0,d.jsx)("span",{className:"sw-top",children:(0,d.jsx)("b",{children:b.name})}),(0,d.jsxs)("span",{className:"sw-sub",children:[(0,d.jsx)(t.md,{status:b.state.status})," ",f(`obj.status.${b.state.status}`),b.state.detail?` \xb7 ${(0,s.HS)(f,b.state.detail)}`:""]}),(0,d.jsx)("span",{className:"sw-meta",children:f(`obj.kind.${b.kind}`)})]})]},b.id)})]},b.key))]}),k&&(0,d.jsx)(z.X,{onClose:()=>l(!1)})]})}var B=c(58664);function C(a,{max:b=8e5,pollMs:c=1e3,paused:d=!1}={}){let[f,g]=(0,e.useState)({text:null,dropped:0});(0,e.useRef)(""),(0,e.useRef)(0);let h=(0,e.useCallback)(()=>g(a=>({text:"",dropped:a.dropped+(a.text?a.text.split("\n").length:0)})),[]);return{text:f.text,dropped:f.dropped,clear:h}}var D=c(61162),E=c(30584);function F({values:a,max:b,color:c="var(--honey)",height:e=36}){let f=b??Math.max(1,...a);if(a.length<2)return(0,d.jsx)("svg",{className:"spark",width:"100%",height:e,viewBox:`0 0 160 ${e}`,preserveAspectRatio:"none","aria-hidden":!0});let g=a.map((b,c)=>`${(c/(a.length-1)*160).toFixed(1)},${(e-2-Math.min(b,f)/f*(e-4)).toFixed(1)}`);return(0,d.jsxs)("svg",{className:"spark",width:"100%",height:e,viewBox:`0 0 160 ${e}`,preserveAspectRatio:"none","aria-hidden":!0,children:[(0,d.jsx)("polygon",{points:`0,${e} ${g.join(" ")} 160,${e}`,fill:c,opacity:".14"}),(0,d.jsx)("polyline",{points:g.join(" "),fill:"none",stroke:c,strokeWidth:"1.6",vectorEffect:"non-scaling-stroke"})]})}var G=c(36414),H=c(12675),I=c(18869),J=c(29083),K=c(71384),L=c(96489),M=c(31251),N=c(94547),O=c(66252),P=c(78381),Q=c(35305),R=c(42580),S=c(62850),T=c(45482);let U=/pass|secret|token|api[_-]?key|auth|credential|private/i;function V({objectId:a,service:b,title:c,onClose:f}){let{t:g}=(0,o.s9)(),h=(0,R.n)(),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(""),[m,n]=(0,e.useState)(!1),p=a=>a&&!a.startsWith("0001")?(0,E.v7)(Date.parse(a)):"—";return(0,d.jsx)(q.aF,{title:c,onClose:f,wide:!0,children:k?(0,d.jsx)("p",{className:"gx-note err res-m0",children:k}):i?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsxs)("span",{className:"muted small grow mono",children:[i.name," \xb7 ",i.id]}),"running"===i.status&&(0,d.jsxs)("button",{className:"btn sm",onClick:()=>{h.openTerminal({objectId:a,service:b}),f()},children:[(0,d.jsx)(Q.A,{size:14}),g("svc.shell")]})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsx)("div",{className:"eyebrow",children:g("svc.d.general")}),(0,d.jsxs)("dl",{className:"sd-kv",children:[(0,d.jsx)("dt",{children:g("ow.d.image")}),(0,d.jsx)("dd",{className:"mono",children:i.image}),(0,d.jsx)("dt",{children:g("svc.col.status")}),(0,d.jsx)("dd",{children:i.status}),(0,d.jsx)("dt",{children:g("ow.d.created")}),(0,d.jsx)("dd",{children:p(i.created)}),(0,d.jsx)("dt",{children:g("svc.d.started")}),(0,d.jsx)("dd",{children:p(i.started)}),(0,d.jsx)("dt",{children:g("ow.d.restart")}),(0,d.jsxs)("dd",{children:[i.restartPolicy,i.restarts?` \xb7 ${g("ow.d.restarts")}: ${i.restarts}`:""]}),i.entrypoint&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:"Entrypoint"}),(0,d.jsx)("dd",{className:"mono",children:i.entrypoint})]}),i.command&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:g("ow.d.command")}),(0,d.jsx)("dd",{className:"mono",children:i.command})]}),i.workdir&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:g("svc.d.workdir")}),(0,d.jsx)("dd",{className:"mono",children:i.workdir})]}),i.user&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:g("svc.d.user")}),(0,d.jsx)("dd",{className:"mono",children:i.user})]})]})]}),i.health&&(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[g("ow.d.health")," \xb7 ",i.health.status]}),0===i.health.log.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsx)("table",{className:"sd-table",children:(0,d.jsx)("tbody",{children:i.health.log.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.exit}),(0,d.jsx)("td",{className:"muted",children:p(a.at)}),(0,d.jsx)("td",{className:"mono",children:a.output.trim()})]},b))})})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsxs)("div",{className:"eyebrow grow",children:[g("of.env")," \xb7 ",i.env.length]}),(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>n(a=>!a),children:[m?(0,d.jsx)(S.A,{size:14}):(0,d.jsx)(T.A,{size:14}),g("iv.reveal")]})]}),0===i.env.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsx)("table",{className:"sd-table",children:(0,d.jsx)("tbody",{children:i.env.map(a=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:(0,d.jsx)("b",{children:a.name})}),(0,d.jsx)("td",{className:"mono",children:U.test(a.name)&&!m?"••••••••":a.value})]},a.name))})})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsx)("div",{className:"eyebrow",children:g("ow.d.ports")}),0===i.ports.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsx)("table",{className:"sd-table",children:(0,d.jsx)("tbody",{children:i.ports.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.container}),(0,d.jsx)("td",{className:"mono",children:a.host?(0,d.jsxs)("a",{href:`http://localhost:${a.host}`,target:"_blank",rel:"noreferrer",children:["localhost:",a.host]}):(0,d.jsx)("span",{className:"muted",children:g("svc.d.unpublished")})})]},b))})})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[g("svc.d.mounts")," \xb7 ",i.mounts.length]}),0===i.mounts.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsxs)("table",{className:"sd-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:g("svc.d.source")}),(0,d.jsx)("th",{children:g("svc.d.dest")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:i.mounts.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.source}),(0,d.jsx)("td",{className:"mono",children:a.destination}),(0,d.jsxs)("td",{className:"muted",children:[a.type,a.rw?"":" \xb7 ro"]})]},b))})]})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[g("ow.d.network")," \xb7 ",i.networks.length]}),0===i.networks.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsxs)("table",{className:"sd-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:g("obj.f.name")}),(0,d.jsx)("th",{children:"IP"}),(0,d.jsx)("th",{children:"Gateway"}),(0,d.jsx)("th",{children:"Aliases"})]})}),(0,d.jsx)("tbody",{children:i.networks.map(a=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.name}),(0,d.jsx)("td",{className:"mono",children:a.ip}),(0,d.jsx)("td",{className:"mono",children:a.gateway}),(0,d.jsx)("td",{className:"mono",children:a.aliases.join(", ")})]},a.name))})]})]})]}):(0,d.jsx)("p",{className:"gx-note",children:g("git.loading")})})}function W({ports:a}){let b=a.split(",").map(a=>a.trim()).filter(Boolean);return b.length?(0,d.jsx)("span",{className:"svc-ports",children:b.map(a=>{let b=/^(\d+)(?:->|→)/.exec(a)?.[1];return b?(0,d.jsx)("a",{className:"mono",href:`http://localhost:${b}`,target:"_blank",rel:"noreferrer",title:`http://localhost:${b}`,children:a},a):(0,d.jsx)("span",{className:"mono",children:a},a)})}):(0,d.jsx)("span",{className:"muted",children:"—"})}function X({objectId:a,services:b,onLogs:c,onChanged:k}){let{t:l}=(0,o.s9)(),p=(0,q.dj)(),r=(0,R.n)(),[s,u]=(0,e.useState)(null),[v,w]=(0,e.useState)(null),x=async(b,c)=>{u(`${b}:${c}`);try{await n.FH.post(`/objects/${a}/service`,{service:b,action:c}),k()}catch(a){p(`${l("obj.act.failed",{action:l(`obj.act.${c}`)})}: ${a instanceof Error?a.message:""}`,"err")}finally{u(null)}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("table",{className:"cm-table svc",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:l("svc.col.name")}),(0,d.jsx)("th",{children:l("svc.col.image")}),(0,d.jsx)("th",{children:l("svc.col.status")}),(0,d.jsx)("th",{children:l("svc.col.ports")}),(0,d.jsx)("th",{className:"num",children:l("ow.cpu")}),(0,d.jsx)("th",{className:"num",children:l("ow.mem")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:b.map(b=>{let e="running"===b.state||"restarting"===b.state;return(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{children:(0,d.jsxs)("span",{className:"row gap-s",children:[(0,d.jsx)(t.md,{status:"running"===b.state?/unhealthy/i.test(b.health)?"error":/starting/i.test(b.health)?"starting":"running":"exited"===b.state||"dead"===b.state?"error":"restarting"===b.state?"starting":"stopped"}),(0,d.jsxs)("span",{className:"svc-name",children:[(0,d.jsx)("b",{children:b.name}),(0,d.jsx)("small",{className:"mono muted",children:b.container})]})]})}),(0,d.jsx)("td",{className:"mono small svc-img",title:b.image,children:b.image||"—"}),(0,d.jsxs)("td",{children:[(0,d.jsxs)("span",{className:"small",children:[b.state,b.health?` \xb7 ${b.health}`:""]}),(0,d.jsx)("div",{className:"muted small",children:b.status})]}),(0,d.jsx)("td",{children:(0,d.jsx)(W,{ports:b.ports})}),(0,d.jsx)("td",{className:"num mono small",children:null!==b.cpu?`${b.cpu}%`:"—"}),(0,d.jsx)("td",{className:"num mono small",children:null!==b.memBytes?(0,E.zi)(b.memBytes):"—"}),(0,d.jsxs)("td",{className:"cm-act",children:[e?(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void x(b.name,"stop"),"aria-label":l("obj.act.stop"),title:l("obj.act.stop"),children:(0,d.jsx)(f.A,{size:14})}):(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void x(b.name,"start"),"aria-label":l("obj.act.start"),title:l("obj.act.start"),children:(0,d.jsx)(m.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void x(b.name,"restart"),"aria-label":l("obj.act.restart"),title:l("obj.act.restart"),children:(0,d.jsx)(g.A,{size:14})}),(0,d.jsx)(N.W1,{label:l("svc.more"),icon:(0,d.jsx)(K.A,{size:15}),iconOnly:!0,children:f=>(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(P.A,{size:15}),onClick:()=>{f(),c(b.name)},children:l("svc.logs.short")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(Q.A,{size:15}),disabled:!e,hint:e?void 0:l("svc.needsRunning"),onClick:()=>{f(),r.openTerminal({objectId:a,service:b.name})},children:l("svc.shell")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(h.A,{size:15}),onClick:()=>{f(),w(b.name)},children:l("svc.inspect")}),(0,d.jsx)(N.MU,{}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(i.A,{size:15}),danger:!0,hint:l("svc.recreate.hint"),onClick:()=>{f(),x(b.name,"recreate")},children:l("svc.recreate")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(j.A,{size:15}),hint:l("svc.rebuild.hint"),onClick:()=>{f(),x(b.name,"rebuild")},children:l("svc.rebuild")})]})})]})]},b.name)})})]}),v&&(0,d.jsx)(V,{objectId:a,service:v,title:v,onClose:()=>w(null)})]})}function Y(a,b){if("server"===a.kind)return a.config.start;let c=a.config;return"compose"===c.mode?`${(0,D._1)(c.file??"")}${b?.services?` \xb7 ${b.info.running??0}/${b.info.services??0}`:""}`:String(b?.info.image??c.image??c.container??"")}function Z({cluster:a}){let{t:b}=(0,o.s9)(),{objects:c,refresh:h}=(0,p.o0)(),i=(0,q.dj)(),j=(0,O.useRouter)(),[k,l]=(0,e.useState)(null),[r,u]=(0,e.useState)(new Set),w=a.config.members,x=w.map(a=>c.find(b=>b.id===a)).filter(a=>!!a),{stats:z,reload:A}=function(a){let[b,c]=(0,e.useState)({}),[d,f]=(0,e.useState)(0);return a.map(a=>`${a.id}:${a.state.status}`).join(","),{stats:b,reload:()=>f(a=>a+1)}}(x),B=c.filter(b=>("server"===b.kind||"docker"===b.kind)&&(b.colony_id??null)===(a.colony_id??null)&&!w.includes(b.id)),C=async c=>{l("members");try{await n.FH.patch(`/objects/${a.id}`,{config:{members:c}}),await h(["objects"])}catch(a){i(a instanceof Error?a.message:b("edit.saveFailed"),"err")}finally{l(null)}},F=(a,b)=>{let c=[...w],d=a+b;d<0||d>=c.length||([c[a],c[d]]=[c[d],c[a]],C(c))},P=async(a,c)=>{l(`${a.id}:${c}`);try{await n.FH.post(`/objects/${a.id}/action`,{action:c})}catch(a){i(`${b("obj.act.failed",{action:b(`obj.act.${c}`)})}: ${a instanceof Error?a.message:""}`,"err")}finally{l(null),A()}};return(0,d.jsxs)("div",{className:"cm",children:[0===x.length?(0,d.jsx)("p",{className:"muted",children:b("cl.none")}):(0,d.jsxs)("table",{className:"cm-table cm-tree",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:b("cl.order")}),(0,d.jsx)("th",{children:b("obj.f.name")}),(0,d.jsx)("th",{children:b("svc.col.runs")}),(0,d.jsx)("th",{children:b("ow.state")}),(0,d.jsx)("th",{className:"num",children:b("ow.cpu")}),(0,d.jsx)("th",{className:"num",children:b("ow.mem")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:x.map((a,c)=>{let{icon:h,color:i}=s.Nd[a.kind],l="running"===a.state.status||"starting"===a.state.status,n=z[a.id],o=n?.services,p=r.has(a.id);return(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{className:"cm-ord",children:[(0,d.jsx)("span",{className:"ord",children:c+1}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:0===c||!!k,onClick:()=>F(c,-1),"aria-label":b("cl.up"),title:b("cl.up"),children:(0,d.jsx)(G.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:c===x.length-1||!!k,onClick:()=>F(c,1),"aria-label":b("cl.down"),title:b("cl.down"),children:(0,d.jsx)(H.A,{size:14})})]}),(0,d.jsx)("td",{children:(0,d.jsxs)("span",{className:"row gap-s",children:[o&&o.length>0?(0,d.jsx)("button",{className:"cm-chev",onClick:()=>{let b;return b=a.id,u(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},"aria-expanded":p,"aria-label":p?b("svc.collapse"):b("svc.expand"),title:p?b("svc.collapse"):b("svc.expand"),children:p?(0,d.jsx)(I.A,{size:15}):(0,d.jsx)(J.A,{size:15})}):(0,d.jsx)("span",{style:{width:20}}),(0,d.jsxs)(v(),{href:`/resources/${a.id}`,className:"cm-name",children:[(0,d.jsx)(h,{size:15,style:{color:i}}),(0,d.jsx)("b",{children:a.name})]})]})}),(0,d.jsx)("td",{className:"mono small svc-img",title:Y(a,n),children:Y(a,n)||"—"}),(0,d.jsxs)("td",{children:[(0,d.jsxs)("span",{className:"row gap-s small",children:[(0,d.jsx)(t.md,{status:a.state.status}),b(`obj.status.${a.state.status}`)]}),(0,d.jsx)("span",{className:"muted small",children:[(0,s.HS)(b,a.state.detail),a.state.since&&l?b("obj.since",{time:(0,D.KN)(a.state.since)}):""].filter(Boolean).join(" \xb7 ")})]}),(0,d.jsx)("td",{className:"num mono small",children:n?.cpu!=null?`${n.cpu}%`:"—"}),(0,d.jsx)("td",{className:"num mono small",children:n?.memBytes!=null?(0,E.zi)(n.memBytes):"—"}),(0,d.jsxs)("td",{className:"cm-act",children:[l?(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!k,onClick:()=>void P(a,"stop"),"aria-label":b("obj.act.stop"),title:b("obj.act.stop"),children:(0,d.jsx)(f.A,{size:14})}):(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!k,onClick:()=>void P(a,"start"),"aria-label":b("obj.act.start"),title:b("obj.act.start"),children:(0,d.jsx)(m.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!k,onClick:()=>void P(a,"restart"),"aria-label":b("obj.act.restart"),title:b("obj.act.restart"),children:(0,d.jsx)(g.A,{size:14})}),(0,d.jsx)(N.W1,{label:b("svc.more"),icon:(0,d.jsx)(K.A,{size:15}),iconOnly:!0,children:c=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(L.A,{size:15}),onClick:()=>{c(),j.push(`/resources/${a.id}`)},children:b("cl.open")}),(0,d.jsx)(N.MU,{}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(M.A,{size:15}),danger:!0,hint:b("cl.remove.hint"),disabled:!!k,onClick:()=>{c(),C(w.filter(b=>b!==a.id))},children:b("cl.remove")})]})})]})]}),p&&o&&(0,d.jsx)("tr",{className:"cm-sub",children:(0,d.jsx)("td",{colSpan:7,children:(0,d.jsx)(X,{objectId:a.id,services:o,onChanged:A})})})]},a.id)})})]}),(0,d.jsx)("p",{className:"muted small",style:{margin:"8px 0"},children:b("cl.startOrder")}),B.length>0&&(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)(y.A,{size:15,className:"muted"}),(0,d.jsxs)("select",{className:"select",style:{width:"auto"},value:"",onChange:a=>a.target.value&&void C([...w,a.target.value]),"aria-label":b("cl.add"),children:[(0,d.jsxs)("option",{value:"",children:[b("cl.add"),"…"]}),B.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]})]})]})}let $=({k:a,v:b})=>(0,d.jsxs)("div",{className:"ov-row",children:[(0,d.jsx)("dt",{children:a}),(0,d.jsx)("dd",{children:b})]});function _({object:a,onSeeLogs:b}){let{t:c}=(0,o.s9)(),{stats:f,cpu:g,mem:h,live:i,reload:j}=function(a){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)([]),[g,h]=(0,e.useState)([]),i="running"===a.state.status||"starting"===a.state.status,[j,k]=(0,e.useState)(0);return{stats:b,cpu:d,mem:g,live:i,reload:()=>k(a=>a+1)}}(a),[,l]=(0,e.useState)(0);(0,B.n)(()=>l(a=>a+1),1e3,{enabled:i,immediate:!1});let{text:m}=C(a.id,{max:4e4,pollMs:2e3}),n=(0,e.useMemo)(()=>(m??"").split("\n").filter(a=>a.trim()).slice(-14).join("\n"),[m]),p=f?.info??{},q=a.state,r=c("ow.d.none"),u=[];if("server"===a.kind){let b=a.config;u.push([c("ow.d.command"),(0,d.jsx)("code",{className:"mono",children:b.start},"c")],[c("ow.d.folder"),(0,d.jsx)("code",{className:"mono",title:b.cwd,children:(0,D._1)(b.cwd)},"f")]),b.port&&u.push([c("ow.d.port"),b.port]),b.stop&&u.push([c("ow.d.stop"),(0,d.jsx)("code",{className:"mono",children:b.stop},"s")]),u.push([c("ow.d.restart"),b.restart&&"no"!==b.restart?`${c("always"===b.restart?"obj.sup.restart.always":"obj.sup.restart.fail")} (${b.maxRestarts??5})`:c("obj.sup.restart.no")]),u.push([c("ow.d.health"),b.health?`${b.health.kind.toUpperCase()}: ${b.health.target}`:r]),q.pid&&u.push(["PID",q.pid])}else if("docker"===a.kind){let b=a.config;u.push([c("ow.d.mode"),c(`obj.mode.${b.mode}`)]),"compose"===b.mode?u.push([c("ow.d.compose"),(0,d.jsx)("code",{className:"mono",title:b.file,children:(0,D._1)(b.file??"")},"f")],[c("ow.d.services"),`${p.running??0}/${p.services??0}`]):(u.push([c("ow.d.container"),(0,d.jsx)("code",{className:"mono",children:"existing"===b.mode?b.container:`hive-am-${a.id.slice(0,8)}`},"n")]),(p.image||b.image)&&u.push([c("ow.d.image"),(0,d.jsx)("code",{className:"mono",children:String(p.image??b.image)},"i")]),(p.ports||b.ports?.length)&&u.push([c("ow.d.ports"),String(p.ports??b.ports?.join(", "))]),(p.network||b.network)&&u.push([c("ow.d.network"),String(p.network??b.network)]),p.restartPolicy&&u.push([c("ow.d.restart"),String(p.restartPolicy)]),void 0!==p.restarts&&null!==p.restarts&&u.push([c("ow.d.restarts"),String(p.restarts)]),p.memoryLimit&&u.push([c("ow.d.memLimit"),(0,E.zi)(Number(p.memoryLimit))]),p.cpuLimit&&u.push([c("ow.d.cpuLimit"),String(p.cpuLimit)]),p.created&&u.push([c("ow.d.created"),(0,D.KN)(Number(p.created))]))}return(0,d.jsxs)("div",{className:"ov",children:[(0,d.jsxs)("div",{className:"ov-grid",children:[(0,d.jsxs)("section",{className:"ov-card",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("ow.state")}),(0,d.jsxs)("div",{className:"ov-big",children:[(0,d.jsx)(t.md,{status:q.status,className:"lg"}),c(`obj.status.${q.status}`)]}),q.detail&&(0,d.jsx)("p",{className:"muted small",style:{margin:0},children:(0,s.HS)(c,q.detail)}),q.since&&i&&(0,d.jsxs)("p",{className:"small",style:{margin:0},children:[c("ow.uptime")," ",(0,d.jsx)("b",{children:(a=>{let b=Math.max(0,Math.floor(a/1e3)),c=Math.floor(b/86400),d=Math.floor(b%86400/3600),e=Math.floor(b%3600/60);return c?`${c}d ${d}h`:d?`${d}h ${e}m`:e?`${e}m ${b%60}s`:`${b}s`})(Date.now()-q.since)})]})]}),("server"===a.kind||"docker"===a.kind)&&(0,d.jsxs)("section",{className:"ov-card",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("ow.usage")}),i||f?.cpu!==null?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"ov-meter",children:[(0,d.jsx)("span",{children:c("ow.cpu")}),(0,d.jsx)("b",{children:f?.cpu!==null&&f?.cpu!==void 0?`${f.cpu}%`:"—"})]}),(0,d.jsx)(F,{values:g,color:"var(--p-opencode)"}),(0,d.jsxs)("div",{className:"ov-meter",children:[(0,d.jsx)("span",{children:c("ow.mem")}),(0,d.jsx)("b",{children:f?.memBytes!=null?`${(0,E.zi)(f.memBytes)}${f.memLimitBytes?` / ${(0,E.zi)(f.memLimitBytes)}`:""}`:"—"})]}),(0,d.jsx)(F,{values:h,color:"var(--ok)"}),(0,d.jsxs)("dl",{className:"ov-dl",children:[f?.pids!=null&&(0,d.jsx)($,{k:c("ow.procs"),v:f.pids}),f?.net&&(0,d.jsx)($,{k:c("ow.net"),v:f.net}),f?.block&&(0,d.jsx)($,{k:c("ow.block"),v:f.block})]})]}):(0,d.jsx)("p",{className:"muted small",style:{margin:0},children:c("ow.noUsage")})]}),u.length>0&&(0,d.jsxs)("section",{className:"ov-card",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("ow.info")}),(0,d.jsx)("dl",{className:"ov-dl",children:u.map(([a,b],c)=>(0,d.jsx)($,{k:a,v:b},c))})]})]}),"docker"===a.kind&&"compose"===a.config.mode&&(0,d.jsxs)("section",{className:"ov-card wide",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[c("ow.d.services"),f?.services?.length?` \xb7 ${p.running??0}/${p.services??0}`:""]}),null===f?(0,d.jsxs)("p",{className:"muted small ov-empty",children:[(0,d.jsx)(k.A,{size:14,className:"spin"})," ",c("ow.svc.loading")]}):f.services&&f.services.length>0?(0,d.jsx)(X,{objectId:a.id,services:f.services,onLogs:a=>b(`${a}-`),onChanged:j}):(0,d.jsx)("p",{className:"muted small ov-empty",children:c(i?"ow.svc.none":"ow.svc.stopped")})]}),"cluster"===a.kind&&(0,d.jsxs)("section",{className:"ov-card wide",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("cl.members")}),(0,d.jsx)(Z,{cluster:a})]}),(0,d.jsxs)("section",{className:"ov-card wide grow",children:[(0,d.jsxs)("div",{className:"row",children:[(0,d.jsx)("div",{className:"eyebrow grow",children:c("ow.recent")}),(0,d.jsx)("button",{className:"btn ghost sm",onClick:()=>b(),children:c("ow.seeLogs")})]}),(0,d.jsx)("pre",{className:"ov-log mono",children:null===m?c("git.loading"):n||c("obj.logs.empty")})]})]})}var aa=c(34410),ab=c(70226),ac=c(88055);function ad({object:a}){let{t:b}=(0,o.s9)(),{refresh:c}=(0,p.o0)(),f=(0,q.dj)(),g=(0,O.useRouter)(),h=(0,e.useMemo)(()=>(0,ac.QJ)(a),[a.updated_at,a.id]),{d:i,set:j,setD:k}=(0,ac.Te)(()=>h),[l,m]=(0,e.useState)(""),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),x=JSON.stringify(i)!==JSON.stringify(h),y="running"===a.state.status||"starting"===a.state.status,z="server"===a.kind||"docker"===a.kind||"cluster"===a.kind,A=async(d=!1)=>{if(!i.name.trim())return void m(b("obj.err.name"));s(!0),m("");try{await n.FH.patch(`/objects/${a.id}`,{name:i.name.trim(),colony_id:i.colony_id||null,config:(0,ac.qP)(i)}),i.manager!==h.manager&&ab.G.includes(a.kind)&&await n.FH.put(`/objects/${a.id}/manager`,{agent_id:i.manager||null}),await c(["objects","agents"]),d&&await n.FH.post(`/objects/${a.id}/action`,{action:"restart"}).catch(a=>f(a instanceof Error?a.message:"","err")),f(b("obj.saved"))}catch(a){m(a instanceof Error?a.message:b("edit.saveFailed"))}finally{s(!1)}},B=async()=>{await n.FH.del(`/objects/${a.id}`),await c(["objects"]),f(b("obj.deleted")),g.push("/resources")};return(0,d.jsxs)("div",{className:"oc",children:[(0,d.jsx)("div",{className:"oc-body",children:(0,d.jsx)("div",{className:"oc-form",children:(0,d.jsx)(ac.Bh,{objectId:a.id,d:i,set:j,setD:k,scan:v,error:l})})}),(0,d.jsxs)("div",{className:"savebar oc-bar",children:[(0,d.jsxs)("span",{className:"muted small grow",children:[x?b("ow.cfg.dirty"):b("ow.cfg.saved"),x&&z?` \xb7 ${y?b("ow.cfg.appliesRunning"):b("ow.cfg.applies")}`:""]}),(0,d.jsxs)("button",{className:"btn danger",onClick:()=>u(!0),children:[(0,d.jsx)(aa.A,{size:15}),b("common.delete")]}),(0,d.jsx)("button",{className:"btn ghost",disabled:!x||r,onClick:()=>{k(()=>h),m("")},children:b("ow.cfg.discard")}),z&&y&&(0,d.jsx)("button",{className:"btn",disabled:!x||r,onClick:()=>void A(!0),children:b("ow.cfg.saveRestart")}),(0,d.jsx)("button",{className:"btn primary",disabled:!x||r,onClick:()=>void A(),children:b("ow.cfg.save")})]}),t&&(0,d.jsx)(q.TM,{title:b("obj.delete.title",{name:a.name}),confirmLabel:b("obj.delete"),danger:!0,onConfirm:B,onClose:()=>u(!1),body:"server"===a.kind?b("obj.delete.server"):"docker"===a.kind?b(`obj.delete.${a.config.mode}`):b(`obj.delete.${a.kind}`)})]})}var ae=c(16487),af=c(87839),ag=c(54137),ah=c(84122),ai=c(92437),aj=c(95443),ak=c(35842),al=c(33691),am=c(19620);let an=/\b(error|fatal|exception|panic|fail(ed|ure)?|traceback)\b/i,ao=/\b(warn(ing)?|deprecated)\b/i;function ap({id:a,members:b,initialFilter:c}){let{t:f}=(0,o.s9)(),[g,h]=(0,e.useState)(!1),{text:i,dropped:j,clear:k}=C(a,{paused:g}),[l,n]=(0,e.useState)(c??""),p=(0,e.useDeferredValue)(l),[q,r]=(0,e.useState)(!!c),[s,t]=(0,e.useState)(!0),[u,v]=(0,e.useState)(!0),[w,x]=(0,e.useState)(12.5),[y,z]=(0,e.useState)(new Set),A=(0,e.useRef)(null),B=a=>x(b=>{let c=Math.max(10,Math.min(20,b+a));try{localStorage.setItem("hive-am.logsize",String(c))}catch{}return c}),E=(0,e.useMemo)(()=>i?i.split("\n"):[],[i]),F=(0,e.useMemo)(()=>{let a=p.trim().toLowerCase(),c=[];for(let d=0;d<E.length;d++){let e=E[d],f=b?/^\[([^\]]+)\] /.exec(e):null;!(f&&y.has(f[1]))&&(!q||!a||e.toLowerCase().includes(a))&&c.push({line:e,idx:j+d,member:f?.[1]})}return c},[E,p,q,y,b,j]),G=F.length>2e3?F.slice(F.length-2e3):F,H=(0,e.useMemo)(()=>{let a=new Map;for(let b of G){let c=Math.floor(b.idx/50),d=a.get(c);d?d.push(b):a.set(c,[b])}return[...a]},[G]),I=(0,e.useMemo)(()=>{let a=p.trim().toLowerCase();return a?F.filter(b=>b.line.toLowerCase().includes(a)).length:0},[F,p]);return(0,d.jsxs)("div",{className:"lp",children:[(0,d.jsxs)("div",{className:"lp-bar",children:[(0,d.jsxs)("div",{className:"search lp-search",children:[(0,d.jsx)(ae.A,{size:14}),(0,d.jsx)("input",{className:"input",placeholder:f("lp.search"),value:l,onChange:a=>n(a.target.value),"aria-label":f("lp.search")}),I>0&&(0,d.jsx)("span",{className:"lp-hits",children:f("lp.matches",{count:I})})]}),(0,d.jsxs)("label",{className:"row gap-s small",children:[(0,d.jsx)("input",{type:"checkbox",checked:q,onChange:a=>r(a.target.checked)}),f("lp.only")]}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsx)("button",{className:`btn ghost icon sm ${u?"on":""}`,"aria-pressed":u,onClick:()=>v(a=>!a),"aria-label":f("lp.wrap"),title:f("lp.wrap"),children:(0,d.jsx)(af.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>B(-1),"aria-label":f("lp.smaller"),title:f("lp.smaller"),children:(0,d.jsx)(ag.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>B(1),"aria-label":f("lp.larger"),title:f("lp.larger"),children:(0,d.jsx)(ah.A,{size:15})}),(0,d.jsx)("button",{className:`btn ghost icon sm ${g?"on":""}`,"aria-pressed":g,onClick:()=>h(a=>!a),"aria-label":f(g?"lp.resume":"lp.pause"),title:f(g?"lp.resume":"lp.pause"),children:g?(0,d.jsx)(m.A,{size:15}):(0,d.jsx)(ai.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:k,"aria-label":f("lp.clear"),title:f("lp.clear"),children:(0,d.jsx)(aj.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>void navigator.clipboard?.writeText(E.join("\n")),"aria-label":f("lp.copy"),title:f("lp.copy"),children:(0,d.jsx)(ak.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>{let b=document.createElement("a");b.href=URL.createObjectURL(new Blob([E.join("\n")],{type:"text/plain"})),b.download=`${a.slice(0,8)}-${new Date().toISOString().slice(0,19).replace(/[:T]/g,"-")}.log`,b.click(),setTimeout(()=>URL.revokeObjectURL(b.href),4e3)},"aria-label":f("lp.download"),title:f("lp.download"),children:(0,d.jsx)(al.A,{size:15})})]}),b&&b.length>0&&(0,d.jsx)("div",{className:"lp-chips",children:b.map((a,b)=>(0,d.jsx)("button",{className:`lp-chip ${y.has(a)?"off":""}`,style:{"--c":D.hg[b%D.hg.length]},"aria-pressed":!y.has(a),onClick:()=>z(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),children:a},a))}),(0,d.jsx)("div",{className:`lp-body mono ${u?"wrap":""}`,ref:A,onScroll:()=>{let a=A.current;if(!a)return;let b=a.scrollHeight-a.scrollTop-a.clientHeight<40;!b&&s?t(!1):b&&!s&&t(!0)},tabIndex:0,style:{fontSize:w},children:null===i?(0,d.jsx)("p",{className:"muted",children:f("git.loading")}):0===G.length?(0,d.jsx)("p",{className:"muted",children:f("obj.logs.empty")}):H.map(([a,c])=>(0,d.jsx)(ar,{rows:c,members:b,needle:p.trim()},a))}),(0,d.jsxs)("div",{className:"lp-foot muted small",children:[(0,d.jsxs)("span",{children:[f("lp.lines",{count:F.length}),F.length>2e3?` \xb7 ${f("lp.shown",{count:2e3})}`:"",g?` \xb7 ${f("lp.paused")}`:""]}),!s&&(0,d.jsxs)("button",{className:"btn sm",onClick:()=>{t(!0);let a=A.current;a&&(a.scrollTop=a.scrollHeight)},children:[(0,d.jsx)(am.A,{size:14}),f("lp.follow")]})]})]})}function aq({line:a,member:b,mi:c,needle:f}){let g=an.test(a)?"err":ao.test(a)?"warn":"",h=b&&c>=0?a.slice(b.length+3):a,i=!1,j=[];if(f){let a=h.toLowerCase(),b=f.toLowerCase(),c=0,e=0;for(let g=a.indexOf(b);g>=0;g=a.indexOf(b,c))i=!0,j.push(h.slice(c,g),(0,d.jsx)("mark",{children:h.slice(g,g+f.length)},e++)),c=g+f.length;j.push(h.slice(c))}let k=f?j.map((a,b)=>(0,d.jsx)(e.Fragment,{children:a},b)):h;return(0,d.jsx)("div",{className:`lp-row ${g} ${i?"hit":""}`,style:c>=0?{"--c":D.hg[c%D.hg.length]}:void 0,children:b&&c>=0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("b",{className:"lp-src",children:["[",b,"]"]}),k]}):k})}let ar=(0,e.memo)(function({rows:a,members:b,needle:c}){return(0,d.jsx)(d.Fragment,{children:a.map(a=>(0,d.jsx)(aq,{line:a.line,member:a.member,mi:a.member?b?.indexOf(a.member)??-1:-1,needle:c},a.idx))})},(a,b)=>a.needle===b.needle&&a.members===b.members&&a.rows.length===b.rows.length&&a.rows.every((a,c)=>a.idx===b.rows[c].idx&&a.line===b.rows[c].line));var as=c(97984);function at({list:a,children:b,gap:c=!1,listWidth:e}){return(0,d.jsxs)("div",{className:`msd ${c?"msd-gap":""}`,style:e?{"--msd-list":e}:void 0,children:[a,b]})}let au=(a,b,c)=>n.FH.put(`/objects/${a}/http/file`,{file:b,content:c});async function av(a,b,c){await au(a,b,c(await n.FH.get(`/objects/${a}/http/file?file=${encodeURIComponent(b)}`).then(a=>a.content)))}function aw(a){let b=[`### ${a.name.trim()||`${a.method} request`}`,`${a.method} ${a.url.trim()}`,...a.headers.filter(a=>a.name.trim()).map(a=>`${a.name.trim()}: ${a.value}`)];return a.body.trim()&&b.push("",a.body.replace(/\s+$/,"")),b.join("\n")}function ax(a,b,c,d){let e=a.split("\n"),{first:f,end:g}=function(a,b){let c=b;for(;c<a.length&&/^\s+[?&]/.test(a[c]);)c++;let d=c;for(;c<a.length&&a[c].trim()&&!/^#{3,}/.test(a[c].trim());)c++;return{first:d,end:c}}(e,b),h=e.slice(f,g).findIndex(a=>a.split(":")[0].trim().toLowerCase()===c.toLowerCase());return h>=0?null===d?e.splice(f+h,1):e[f+h]=`${c}: ${d}`:null!==d&&e.splice(g,0,`${c}: ${d}`),e.join("\n")}let ay={status:["=","!=","2xx","<",">"],time:["<",">"],header:["exists","=","contains"],body:["exists","=","!=","contains",">","<"],text:["contains"]},az="// hive-am:asserts ",aA=a=>/^-?\d+(\.\d+)?$/.test(a.trim())||/^(true|false|null)$/.test(a.trim())?a.trim():JSON.stringify(a),aB=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],aC="\0new";function aD({objectId:a,files:b,defaultFile:c,onClose:f,onCreated:g}){let{t:h}=(0,o.s9)(),[i,j]=(0,e.useState)("form"),[k,l]=(0,e.useState)(c&&b.some(a=>a.relFile===c)?c:b[0]?.relFile??aC),[m,p]=(0,e.useState)("requests.http"),[r,s]=(0,e.useState)({name:"",method:"GET",url:"{{host}}/",headers:[],body:""}),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(!1),B=async()=>{if(!r.url.trim())return void y(h("hw2.new.needUrl"));A(!0),y("");try{let b={...r,headers:t.split("\n").map(a=>{let b=a.indexOf(":");return b>0?{name:a.slice(0,b).trim(),value:a.slice(b+1).trim()}:{name:"",value:""}}).filter(a=>a.name)};if(k===aC){let c,d=m.trim();await (c=`${aw(b)}
|
|
1
|
+
"use strict";exports.id=505,exports.ids=[505],exports.modules={60505:(a,b,c)=>{c.d(b,{D:()=>bZ});var d=c(55322),e=c(17027),f=c(84300),g=c(37811),h=c(84647),i=c(306),j=c(30257),k=c(58437),l=c(85605),m=c(32309),n=c(7371),o=c(93884),p=c(60570),q=c(81963),r=c(90634),s=c(93717),t=c(36368),u=c(91705),v=c.n(u),w=c(68364),x=c(77790),y=c(71267),z=c(54403);function A({activeId:a,collapsed:b=!1,onToggle:c}){let{t:f}=(0,o.s9)(),{objects:g,colonies:h}=(0,p.o0)(),[i,j]=(0,e.useState)(""),[k,l]=(0,e.useState)(!1),m=(0,e.useMemo)(()=>{let a=a=>!i||`${a.name} ${a.kind}`.toLowerCase().includes(i.toLowerCase()),b=h.map(b=>({key:b.id,name:b.name,color:b.color||"var(--honey)",items:g.filter(c=>c.colony_id===b.id&&a(c))}));return b.push({key:"free",name:f("obj.noColony"),color:null,items:g.filter(b=>(!b.colony_id||!h.some(a=>a.id===b.colony_id))&&a(b))}),b.filter(a=>a.items.length)},[g,h,i,f]),n=c&&(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:c,"aria-label":b?f("ow.expand"):f("ow.collapse"),title:b?f("ow.expand"):f("ow.collapse"),"aria-expanded":!b,children:b?(0,d.jsx)(w.A,{size:17}):(0,d.jsx)(x.A,{size:17})});return b?(0,d.jsxs)("aside",{className:"switcher mini","aria-label":f("nav.objects"),children:[(0,d.jsxs)("div",{className:"switcher-head",children:[n,(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>l(!0),"aria-label":f("obj.new"),title:f("obj.new"),children:(0,d.jsx)(y.A,{size:16})})]}),(0,d.jsx)("div",{className:"switcher-list",children:m.map(b=>(0,d.jsxs)("div",{className:"mini-group",children:[(0,d.jsx)("div",{className:"mini-sep",title:`${b.name} \xb7 ${b.items.length}`,style:b.color?{"--c":b.color}:void 0}),b.items.map(b=>{let{icon:c,color:e}=s.Nd[b.kind];return(0,d.jsx)(v(),{href:`/resources/${b.id}`,className:"sw-item mini","aria-current":b.id===a?"page":void 0,"aria-label":b.name,title:`${b.name}: ${f(`obj.status.${b.state.status}`)}`,children:(0,d.jsxs)("span",{className:"sw-av",children:[(0,d.jsx)("span",{className:"obj-ico sm",style:{"--c":e},children:(0,d.jsx)(c,{size:17})}),(0,d.jsx)(t.md,{status:b.state.status,className:"sw-dot"})]})},b.id)})]},b.key))}),k&&(0,d.jsx)(z.X,{onClose:()=>l(!1)})]}):(0,d.jsxs)("aside",{className:"switcher","aria-label":f("nav.objects"),children:[(0,d.jsxs)("div",{className:"switcher-head",children:[(0,d.jsxs)("div",{className:"row",children:[(0,d.jsx)("b",{className:"grow sw-title",children:f("nav.objects")}),n,(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>l(!0),"aria-label":f("obj.new"),title:f("obj.new"),children:(0,d.jsx)(y.A,{size:16})})]}),(0,d.jsx)(q.DO,{value:i,onChange:j,placeholder:f("ow.find"),label:f("ow.find")})]}),(0,d.jsxs)("div",{className:"switcher-list",children:[0===m.length&&(0,d.jsx)("p",{className:"muted small sw-none",children:i?f("ow.noMatch",{query:i}):f("ow.empty.body")}),m.map(b=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"switcher-group",children:[b.color&&(0,d.jsx)("i",{className:"cdot",style:{background:b.color}}),b.name,(0,d.jsx)("span",{children:b.items.length})]}),b.items.map(b=>{let{icon:c,color:e}=s.Nd[b.kind];return(0,d.jsxs)(v(),{href:`/resources/${b.id}`,className:"sw-item","aria-current":b.id===a?"page":void 0,children:[(0,d.jsx)("span",{className:"sw-av",children:(0,d.jsx)("span",{className:"obj-ico sm",style:{"--c":e},children:(0,d.jsx)(c,{size:17})})}),(0,d.jsxs)("span",{className:"sw-body",children:[(0,d.jsx)("span",{className:"sw-top",children:(0,d.jsx)("b",{children:b.name})}),(0,d.jsxs)("span",{className:"sw-sub",children:[(0,d.jsx)(t.md,{status:b.state.status})," ",f(`obj.status.${b.state.status}`),b.state.detail?` \xb7 ${(0,s.HS)(f,b.state.detail)}`:""]}),(0,d.jsx)("span",{className:"sw-meta",children:f(`obj.kind.${b.kind}`)})]})]},b.id)})]},b.key))]}),k&&(0,d.jsx)(z.X,{onClose:()=>l(!1)})]})}var B=c(58664);function C(a,{max:b=8e5,pollMs:c=1e3,paused:d=!1}={}){let[f,g]=(0,e.useState)({text:null,dropped:0});(0,e.useRef)(""),(0,e.useRef)(0);let h=(0,e.useCallback)(()=>g(a=>({text:"",dropped:a.dropped+(a.text?a.text.split("\n").length:0)})),[]);return{text:f.text,dropped:f.dropped,clear:h}}var D=c(61162),E=c(30584);function F({values:a,max:b,color:c="var(--honey)",height:e=36}){let f=b??Math.max(1,...a);if(a.length<2)return(0,d.jsx)("svg",{className:"spark",width:"100%",height:e,viewBox:`0 0 160 ${e}`,preserveAspectRatio:"none","aria-hidden":!0});let g=a.map((b,c)=>`${(c/(a.length-1)*160).toFixed(1)},${(e-2-Math.min(b,f)/f*(e-4)).toFixed(1)}`);return(0,d.jsxs)("svg",{className:"spark",width:"100%",height:e,viewBox:`0 0 160 ${e}`,preserveAspectRatio:"none","aria-hidden":!0,children:[(0,d.jsx)("polygon",{points:`0,${e} ${g.join(" ")} 160,${e}`,fill:c,opacity:".14"}),(0,d.jsx)("polyline",{points:g.join(" "),fill:"none",stroke:c,strokeWidth:"1.6",vectorEffect:"non-scaling-stroke"})]})}var G=c(36414),H=c(12675),I=c(18869),J=c(29083),K=c(71384),L=c(96489),M=c(31251),N=c(94547),O=c(66252),P=c(78381),Q=c(35305),R=c(42580),S=c(62850),T=c(45482);let U=/pass|secret|token|api[_-]?key|auth|credential|private/i;function V({objectId:a,service:b,title:c,onClose:f}){let{t:g}=(0,o.s9)(),h=(0,R.n)(),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(""),[m,n]=(0,e.useState)(!1),p=a=>a&&!a.startsWith("0001")?(0,E.v7)(Date.parse(a)):"—";return(0,d.jsx)(q.aF,{title:c,onClose:f,wide:!0,children:k?(0,d.jsx)("p",{className:"gx-note err res-m0",children:k}):i?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsxs)("span",{className:"muted small grow mono",children:[i.name," \xb7 ",i.id]}),"running"===i.status&&(0,d.jsxs)("button",{className:"btn sm",onClick:()=>{h.openTerminal({objectId:a,service:b}),f()},children:[(0,d.jsx)(Q.A,{size:14}),g("svc.shell")]})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsx)("div",{className:"eyebrow",children:g("svc.d.general")}),(0,d.jsxs)("dl",{className:"sd-kv",children:[(0,d.jsx)("dt",{children:g("ow.d.image")}),(0,d.jsx)("dd",{className:"mono",children:i.image}),(0,d.jsx)("dt",{children:g("svc.col.status")}),(0,d.jsx)("dd",{children:i.status}),(0,d.jsx)("dt",{children:g("ow.d.created")}),(0,d.jsx)("dd",{children:p(i.created)}),(0,d.jsx)("dt",{children:g("svc.d.started")}),(0,d.jsx)("dd",{children:p(i.started)}),(0,d.jsx)("dt",{children:g("ow.d.restart")}),(0,d.jsxs)("dd",{children:[i.restartPolicy,i.restarts?` \xb7 ${g("ow.d.restarts")}: ${i.restarts}`:""]}),i.entrypoint&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:"Entrypoint"}),(0,d.jsx)("dd",{className:"mono",children:i.entrypoint})]}),i.command&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:g("ow.d.command")}),(0,d.jsx)("dd",{className:"mono",children:i.command})]}),i.workdir&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:g("svc.d.workdir")}),(0,d.jsx)("dd",{className:"mono",children:i.workdir})]}),i.user&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{children:g("svc.d.user")}),(0,d.jsx)("dd",{className:"mono",children:i.user})]})]})]}),i.health&&(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[g("ow.d.health")," \xb7 ",i.health.status]}),0===i.health.log.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsx)("table",{className:"sd-table",children:(0,d.jsx)("tbody",{children:i.health.log.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.exit}),(0,d.jsx)("td",{className:"muted",children:p(a.at)}),(0,d.jsx)("td",{className:"mono",children:a.output.trim()})]},b))})})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsxs)("div",{className:"eyebrow grow",children:[g("of.env")," \xb7 ",i.env.length]}),(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>n(a=>!a),children:[m?(0,d.jsx)(S.A,{size:14}):(0,d.jsx)(T.A,{size:14}),g("iv.reveal")]})]}),0===i.env.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsx)("table",{className:"sd-table",children:(0,d.jsx)("tbody",{children:i.env.map(a=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:(0,d.jsx)("b",{children:a.name})}),(0,d.jsx)("td",{className:"mono",children:U.test(a.name)&&!m?"••••••••":a.value})]},a.name))})})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsx)("div",{className:"eyebrow",children:g("ow.d.ports")}),0===i.ports.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsx)("table",{className:"sd-table",children:(0,d.jsx)("tbody",{children:i.ports.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.container}),(0,d.jsx)("td",{className:"mono",children:a.host?(0,d.jsxs)("a",{href:`http://localhost:${a.host}`,target:"_blank",rel:"noreferrer",children:["localhost:",a.host]}):(0,d.jsx)("span",{className:"muted",children:g("svc.d.unpublished")})})]},b))})})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[g("svc.d.mounts")," \xb7 ",i.mounts.length]}),0===i.mounts.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsxs)("table",{className:"sd-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:g("svc.d.source")}),(0,d.jsx)("th",{children:g("svc.d.dest")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:i.mounts.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.source}),(0,d.jsx)("td",{className:"mono",children:a.destination}),(0,d.jsxs)("td",{className:"muted",children:[a.type,a.rw?"":" \xb7 ro"]})]},b))})]})]}),(0,d.jsxs)("section",{className:"sd-sec",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[g("ow.d.network")," \xb7 ",i.networks.length]}),0===i.networks.length?(0,d.jsx)("p",{className:"muted small res-m0",children:"—"}):(0,d.jsxs)("table",{className:"sd-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:g("obj.f.name")}),(0,d.jsx)("th",{children:"IP"}),(0,d.jsx)("th",{children:"Gateway"}),(0,d.jsx)("th",{children:"Aliases"})]})}),(0,d.jsx)("tbody",{children:i.networks.map(a=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.name}),(0,d.jsx)("td",{className:"mono",children:a.ip}),(0,d.jsx)("td",{className:"mono",children:a.gateway}),(0,d.jsx)("td",{className:"mono",children:a.aliases.join(", ")})]},a.name))})]})]})]}):(0,d.jsx)("p",{className:"gx-note",children:g("git.loading")})})}function W({ports:a}){let b=a.split(",").map(a=>a.trim()).filter(Boolean);return b.length?(0,d.jsx)("span",{className:"svc-ports",children:b.map(a=>{let b=/^(\d+)(?:->|→)/.exec(a)?.[1];return b?(0,d.jsx)("a",{className:"mono",href:`http://localhost:${b}`,target:"_blank",rel:"noreferrer",title:`http://localhost:${b}`,children:a},a):(0,d.jsx)("span",{className:"mono",children:a},a)})}):(0,d.jsx)("span",{className:"muted",children:"—"})}function X({objectId:a,services:b,onLogs:c,onChanged:k}){let{t:l}=(0,o.s9)(),p=(0,q.dj)(),r=(0,R.n)(),[s,u]=(0,e.useState)(null),[v,w]=(0,e.useState)(null),x=async(b,c)=>{u(`${b}:${c}`);try{await n.FH.post(`/objects/${a}/service`,{service:b,action:c}),k()}catch(a){p(`${l("obj.act.failed",{action:l(`obj.act.${c}`)})}: ${a instanceof Error?a.message:""}`,"err")}finally{u(null)}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("table",{className:"cm-table svc",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:l("svc.col.name")}),(0,d.jsx)("th",{children:l("svc.col.image")}),(0,d.jsx)("th",{children:l("svc.col.status")}),(0,d.jsx)("th",{children:l("svc.col.ports")}),(0,d.jsx)("th",{className:"num",children:l("ow.cpu")}),(0,d.jsx)("th",{className:"num",children:l("ow.mem")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:b.map(b=>{let e="running"===b.state||"restarting"===b.state;return(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{children:(0,d.jsxs)("span",{className:"row gap-s",children:[(0,d.jsx)(t.md,{status:"running"===b.state?/unhealthy/i.test(b.health)?"error":/starting/i.test(b.health)?"starting":"running":"exited"===b.state||"dead"===b.state?"error":"restarting"===b.state?"starting":"stopped"}),(0,d.jsxs)("span",{className:"svc-name",children:[(0,d.jsx)("b",{children:b.name}),(0,d.jsx)("small",{className:"mono muted",children:b.container})]})]})}),(0,d.jsx)("td",{className:"mono small svc-img",title:b.image,children:b.image||"—"}),(0,d.jsxs)("td",{children:[(0,d.jsxs)("span",{className:"small",children:[b.state,b.health?` \xb7 ${b.health}`:""]}),(0,d.jsx)("div",{className:"muted small",children:b.status})]}),(0,d.jsx)("td",{children:(0,d.jsx)(W,{ports:b.ports})}),(0,d.jsx)("td",{className:"num mono small",children:null!==b.cpu?`${b.cpu}%`:"—"}),(0,d.jsx)("td",{className:"num mono small",children:null!==b.memBytes?(0,E.zi)(b.memBytes):"—"}),(0,d.jsxs)("td",{className:"cm-act",children:[e?(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void x(b.name,"stop"),"aria-label":l("obj.act.stop"),title:l("obj.act.stop"),children:(0,d.jsx)(f.A,{size:14})}):(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void x(b.name,"start"),"aria-label":l("obj.act.start"),title:l("obj.act.start"),children:(0,d.jsx)(m.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void x(b.name,"restart"),"aria-label":l("obj.act.restart"),title:l("obj.act.restart"),children:(0,d.jsx)(g.A,{size:14})}),(0,d.jsx)(N.W1,{label:l("svc.more"),icon:(0,d.jsx)(K.A,{size:15}),iconOnly:!0,children:f=>(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(P.A,{size:15}),onClick:()=>{f(),c(b.name)},children:l("svc.logs.short")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(Q.A,{size:15}),disabled:!e,hint:e?void 0:l("svc.needsRunning"),onClick:()=>{f(),r.openTerminal({objectId:a,service:b.name})},children:l("svc.shell")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(h.A,{size:15}),onClick:()=>{f(),w(b.name)},children:l("svc.inspect")}),(0,d.jsx)(N.MU,{}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(i.A,{size:15}),danger:!0,hint:l("svc.recreate.hint"),onClick:()=>{f(),x(b.name,"recreate")},children:l("svc.recreate")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(j.A,{size:15}),hint:l("svc.rebuild.hint"),onClick:()=>{f(),x(b.name,"rebuild")},children:l("svc.rebuild")})]})})]})]},b.name)})})]}),v&&(0,d.jsx)(V,{objectId:a,service:v,title:v,onClose:()=>w(null)})]})}function Y(a,b){if("server"===a.kind)return a.config.start;let c=a.config;return"compose"===c.mode?`${(0,D._1)(c.file??"")}${b?.services?` \xb7 ${b.info.running??0}/${b.info.services??0}`:""}`:String(b?.info.image??c.image??c.container??"")}function Z({cluster:a}){let{t:b}=(0,o.s9)(),{objects:c,refresh:h}=(0,p.o0)(),i=(0,q.dj)(),j=(0,O.useRouter)(),[k,l]=(0,e.useState)(null),[r,u]=(0,e.useState)(new Set),w=a.config.members,x=w.map(a=>c.find(b=>b.id===a)).filter(a=>!!a),{stats:z,reload:A}=function(a){let[b,c]=(0,e.useState)({}),[d,f]=(0,e.useState)(0);return a.map(a=>`${a.id}:${a.state.status}`).join(","),{stats:b,reload:()=>f(a=>a+1)}}(x),B=c.filter(b=>("server"===b.kind||"docker"===b.kind)&&(b.colony_id??null)===(a.colony_id??null)&&!w.includes(b.id)),C=async c=>{l("members");try{await n.FH.patch(`/objects/${a.id}`,{config:{members:c}}),await h(["objects"])}catch(a){i(a instanceof Error?a.message:b("edit.saveFailed"),"err")}finally{l(null)}},F=(a,b)=>{let c=[...w],d=a+b;d<0||d>=c.length||([c[a],c[d]]=[c[d],c[a]],C(c))},P=async(a,c)=>{l(`${a.id}:${c}`);try{await n.FH.post(`/objects/${a.id}/action`,{action:c})}catch(a){i(`${b("obj.act.failed",{action:b(`obj.act.${c}`)})}: ${a instanceof Error?a.message:""}`,"err")}finally{l(null),A()}};return(0,d.jsxs)("div",{className:"cm",children:[0===x.length?(0,d.jsx)("p",{className:"muted",children:b("cl.none")}):(0,d.jsxs)("table",{className:"cm-table cm-tree",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:b("cl.order")}),(0,d.jsx)("th",{children:b("obj.f.name")}),(0,d.jsx)("th",{children:b("svc.col.runs")}),(0,d.jsx)("th",{children:b("ow.state")}),(0,d.jsx)("th",{className:"num",children:b("ow.cpu")}),(0,d.jsx)("th",{className:"num",children:b("ow.mem")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:x.map((a,c)=>{let{icon:h,color:i}=s.Nd[a.kind],l="running"===a.state.status||"starting"===a.state.status,n=z[a.id],o=n?.services,p=r.has(a.id);return(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{className:"cm-ord",children:[(0,d.jsx)("span",{className:"ord",children:c+1}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:0===c||!!k,onClick:()=>F(c,-1),"aria-label":b("cl.up"),title:b("cl.up"),children:(0,d.jsx)(G.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:c===x.length-1||!!k,onClick:()=>F(c,1),"aria-label":b("cl.down"),title:b("cl.down"),children:(0,d.jsx)(H.A,{size:14})})]}),(0,d.jsx)("td",{children:(0,d.jsxs)("span",{className:"row gap-s",children:[o&&o.length>0?(0,d.jsx)("button",{className:"cm-chev",onClick:()=>{let b;return b=a.id,u(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},"aria-expanded":p,"aria-label":p?b("svc.collapse"):b("svc.expand"),title:p?b("svc.collapse"):b("svc.expand"),children:p?(0,d.jsx)(I.A,{size:15}):(0,d.jsx)(J.A,{size:15})}):(0,d.jsx)("span",{style:{width:20}}),(0,d.jsxs)(v(),{href:`/resources/${a.id}`,className:"cm-name",children:[(0,d.jsx)(h,{size:15,style:{color:i}}),(0,d.jsx)("b",{children:a.name})]})]})}),(0,d.jsx)("td",{className:"mono small svc-img",title:Y(a,n),children:Y(a,n)||"—"}),(0,d.jsxs)("td",{children:[(0,d.jsxs)("span",{className:"row gap-s small",children:[(0,d.jsx)(t.md,{status:a.state.status}),b(`obj.status.${a.state.status}`)]}),(0,d.jsx)("span",{className:"muted small",children:[(0,s.HS)(b,a.state.detail),a.state.since&&l?b("obj.since",{time:(0,D.KN)(a.state.since)}):""].filter(Boolean).join(" \xb7 ")})]}),(0,d.jsx)("td",{className:"num mono small",children:n?.cpu!=null?`${n.cpu}%`:"—"}),(0,d.jsx)("td",{className:"num mono small",children:n?.memBytes!=null?(0,E.zi)(n.memBytes):"—"}),(0,d.jsxs)("td",{className:"cm-act",children:[l?(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!k,onClick:()=>void P(a,"stop"),"aria-label":b("obj.act.stop"),title:b("obj.act.stop"),children:(0,d.jsx)(f.A,{size:14})}):(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!k,onClick:()=>void P(a,"start"),"aria-label":b("obj.act.start"),title:b("obj.act.start"),children:(0,d.jsx)(m.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!k,onClick:()=>void P(a,"restart"),"aria-label":b("obj.act.restart"),title:b("obj.act.restart"),children:(0,d.jsx)(g.A,{size:14})}),(0,d.jsx)(N.W1,{label:b("svc.more"),icon:(0,d.jsx)(K.A,{size:15}),iconOnly:!0,children:c=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(L.A,{size:15}),onClick:()=>{c(),j.push(`/resources/${a.id}`)},children:b("cl.open")}),(0,d.jsx)(N.MU,{}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(M.A,{size:15}),danger:!0,hint:b("cl.remove.hint"),disabled:!!k,onClick:()=>{c(),C(w.filter(b=>b!==a.id))},children:b("cl.remove")})]})})]})]}),p&&o&&(0,d.jsx)("tr",{className:"cm-sub",children:(0,d.jsx)("td",{colSpan:7,children:(0,d.jsx)(X,{objectId:a.id,services:o,onChanged:A})})})]},a.id)})})]}),(0,d.jsx)("p",{className:"muted small",style:{margin:"8px 0"},children:b("cl.startOrder")}),B.length>0&&(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)(y.A,{size:15,className:"muted"}),(0,d.jsxs)("select",{className:"select",style:{width:"auto"},value:"",onChange:a=>a.target.value&&void C([...w,a.target.value]),"aria-label":b("cl.add"),children:[(0,d.jsxs)("option",{value:"",children:[b("cl.add"),"…"]}),B.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]})]})]})}let $=({k:a,v:b})=>(0,d.jsxs)("div",{className:"ov-row",children:[(0,d.jsx)("dt",{children:a}),(0,d.jsx)("dd",{children:b})]});function _({object:a,onSeeLogs:b}){let{t:c}=(0,o.s9)(),{stats:f,cpu:g,mem:h,live:i,reload:j}=function(a){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)([]),[g,h]=(0,e.useState)([]),i="running"===a.state.status||"starting"===a.state.status,[j,k]=(0,e.useState)(0);return{stats:b,cpu:d,mem:g,live:i,reload:()=>k(a=>a+1)}}(a),[,l]=(0,e.useState)(0);(0,B.n)(()=>l(a=>a+1),1e3,{enabled:i,immediate:!1});let{text:m}=C(a.id,{max:4e4,pollMs:2e3}),n=(0,e.useMemo)(()=>(m??"").split("\n").filter(a=>a.trim()).slice(-14).join("\n"),[m]),p=f?.info??{},q=a.state,r=c("ow.d.none"),u=[];if("server"===a.kind){let b=a.config;u.push([c("ow.d.command"),(0,d.jsx)("code",{className:"mono",children:b.start},"c")],[c("ow.d.folder"),(0,d.jsx)("code",{className:"mono",title:b.cwd,children:(0,D._1)(b.cwd)},"f")]),b.port&&u.push([c("ow.d.port"),b.port]),b.stop&&u.push([c("ow.d.stop"),(0,d.jsx)("code",{className:"mono",children:b.stop},"s")]),u.push([c("ow.d.restart"),b.restart&&"no"!==b.restart?`${c("always"===b.restart?"obj.sup.restart.always":"obj.sup.restart.fail")} (${b.maxRestarts??5})`:c("obj.sup.restart.no")]),u.push([c("ow.d.health"),b.health?`${b.health.kind.toUpperCase()}: ${b.health.target}`:r]),q.pid&&u.push(["PID",q.pid])}else if("docker"===a.kind){let b=a.config;u.push([c("ow.d.mode"),c(`obj.mode.${b.mode}`)]),"compose"===b.mode?u.push([c("ow.d.compose"),(0,d.jsx)("code",{className:"mono",title:b.file,children:(0,D._1)(b.file??"")},"f")],[c("ow.d.services"),`${p.running??0}/${p.services??0}`]):(u.push([c("ow.d.container"),(0,d.jsx)("code",{className:"mono",children:"existing"===b.mode?b.container:`hive-am-${a.id.slice(0,8)}`},"n")]),(p.image||b.image)&&u.push([c("ow.d.image"),(0,d.jsx)("code",{className:"mono",children:String(p.image??b.image)},"i")]),(p.ports||b.ports?.length)&&u.push([c("ow.d.ports"),String(p.ports??b.ports?.join(", "))]),(p.network||b.network)&&u.push([c("ow.d.network"),String(p.network??b.network)]),p.restartPolicy&&u.push([c("ow.d.restart"),String(p.restartPolicy)]),void 0!==p.restarts&&null!==p.restarts&&u.push([c("ow.d.restarts"),String(p.restarts)]),p.memoryLimit&&u.push([c("ow.d.memLimit"),(0,E.zi)(Number(p.memoryLimit))]),p.cpuLimit&&u.push([c("ow.d.cpuLimit"),String(p.cpuLimit)]),p.created&&u.push([c("ow.d.created"),(0,D.KN)(Number(p.created))]))}return(0,d.jsxs)("div",{className:"ov",children:[(0,d.jsxs)("div",{className:"ov-grid",children:[(0,d.jsxs)("section",{className:"ov-card",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("ow.state")}),(0,d.jsxs)("div",{className:"ov-big",children:[(0,d.jsx)(t.md,{status:q.status,className:"lg"}),c(`obj.status.${q.status}`)]}),q.detail&&(0,d.jsx)("p",{className:"muted small",style:{margin:0},children:(0,s.HS)(c,q.detail)}),q.since&&i&&(0,d.jsxs)("p",{className:"small",style:{margin:0},children:[c("ow.uptime")," ",(0,d.jsx)("b",{children:(a=>{let b=Math.max(0,Math.floor(a/1e3)),c=Math.floor(b/86400),d=Math.floor(b%86400/3600),e=Math.floor(b%3600/60);return c?`${c}d ${d}h`:d?`${d}h ${e}m`:e?`${e}m ${b%60}s`:`${b}s`})(Date.now()-q.since)})]})]}),("server"===a.kind||"docker"===a.kind)&&(0,d.jsxs)("section",{className:"ov-card",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("ow.usage")}),i||f?.cpu!==null?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"ov-meter",children:[(0,d.jsx)("span",{children:c("ow.cpu")}),(0,d.jsx)("b",{children:f?.cpu!==null&&f?.cpu!==void 0?`${f.cpu}%`:"—"})]}),(0,d.jsx)(F,{values:g,color:"var(--p-opencode)"}),(0,d.jsxs)("div",{className:"ov-meter",children:[(0,d.jsx)("span",{children:c("ow.mem")}),(0,d.jsx)("b",{children:f?.memBytes!=null?`${(0,E.zi)(f.memBytes)}${f.memLimitBytes?` / ${(0,E.zi)(f.memLimitBytes)}`:""}`:"—"})]}),(0,d.jsx)(F,{values:h,color:"var(--ok)"}),(0,d.jsxs)("dl",{className:"ov-dl",children:[f?.pids!=null&&(0,d.jsx)($,{k:c("ow.procs"),v:f.pids}),f?.net&&(0,d.jsx)($,{k:c("ow.net"),v:f.net}),f?.block&&(0,d.jsx)($,{k:c("ow.block"),v:f.block})]})]}):(0,d.jsx)("p",{className:"muted small",style:{margin:0},children:c("ow.noUsage")})]}),u.length>0&&(0,d.jsxs)("section",{className:"ov-card",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("ow.info")}),(0,d.jsx)("dl",{className:"ov-dl",children:u.map(([a,b],c)=>(0,d.jsx)($,{k:a,v:b},c))})]})]}),"docker"===a.kind&&"compose"===a.config.mode&&(0,d.jsxs)("section",{className:"ov-card wide",children:[(0,d.jsxs)("div",{className:"eyebrow",children:[c("ow.d.services"),f?.services?.length?` \xb7 ${p.running??0}/${p.services??0}`:""]}),null===f?(0,d.jsxs)("p",{className:"muted small ov-empty",children:[(0,d.jsx)(k.A,{size:14,className:"spin"})," ",c("ow.svc.loading")]}):f.services&&f.services.length>0?(0,d.jsx)(X,{objectId:a.id,services:f.services,onLogs:a=>b(`${a}-`),onChanged:j}):(0,d.jsx)("p",{className:"muted small ov-empty",children:c(i?"ow.svc.none":"ow.svc.stopped")})]}),"cluster"===a.kind&&(0,d.jsxs)("section",{className:"ov-card wide",children:[(0,d.jsx)("div",{className:"eyebrow",children:c("cl.members")}),(0,d.jsx)(Z,{cluster:a})]}),(0,d.jsxs)("section",{className:"ov-card wide grow",children:[(0,d.jsxs)("div",{className:"row",children:[(0,d.jsx)("div",{className:"eyebrow grow",children:c("ow.recent")}),(0,d.jsx)("button",{className:"btn ghost sm",onClick:()=>b(),children:c("ow.seeLogs")})]}),(0,d.jsx)("pre",{className:"ov-log mono",children:null===m?c("git.loading"):n||c("obj.logs.empty")})]})]})}var aa=c(34410),ab=c(70226),ac=c(88055);function ad({object:a}){let{t:b}=(0,o.s9)(),{refresh:c}=(0,p.o0)(),f=(0,q.dj)(),g=(0,O.useRouter)(),h=(0,e.useMemo)(()=>(0,ac.QJ)(a),[a.updated_at,a.id]),{d:i,set:j,setD:k}=(0,ac.Te)(()=>h),[l,m]=(0,e.useState)(""),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),x=JSON.stringify(i)!==JSON.stringify(h),y="running"===a.state.status||"starting"===a.state.status,z="server"===a.kind||"docker"===a.kind||"cluster"===a.kind,A=async(d=!1)=>{if(!i.name.trim())return void m(b("obj.err.name"));s(!0),m("");try{await n.FH.patch(`/objects/${a.id}`,{name:i.name.trim(),colony_id:i.colony_id||null,config:(0,ac.qP)(i)}),i.manager!==h.manager&&ab.G.includes(a.kind)&&await n.FH.put(`/objects/${a.id}/manager`,{agent_id:i.manager||null}),await c(["objects","agents"]),d&&await n.FH.post(`/objects/${a.id}/action`,{action:"restart"}).catch(a=>f(a instanceof Error?a.message:"","err")),f(b("obj.saved"))}catch(a){m(a instanceof Error?a.message:b("edit.saveFailed"))}finally{s(!1)}},B=async()=>{await n.FH.del(`/objects/${a.id}`),await c(["objects"]),f(b("obj.deleted")),g.push("/resources")};return(0,d.jsxs)("div",{className:"oc",children:[(0,d.jsx)("div",{className:"oc-body",children:(0,d.jsx)("div",{className:"oc-form",children:(0,d.jsx)(ac.Bh,{objectId:a.id,d:i,set:j,setD:k,scan:v,error:l})})}),(0,d.jsxs)("div",{className:"savebar oc-bar",children:[(0,d.jsxs)("span",{className:"muted small grow",children:[x?b("ow.cfg.dirty"):b("ow.cfg.saved"),x&&z?` \xb7 ${y?b("ow.cfg.appliesRunning"):b("ow.cfg.applies")}`:""]}),(0,d.jsxs)("button",{className:"btn danger",onClick:()=>u(!0),children:[(0,d.jsx)(aa.A,{size:15}),b("common.delete")]}),(0,d.jsx)("button",{className:"btn ghost",disabled:!x||r,onClick:()=>{k(()=>h),m("")},children:b("ow.cfg.discard")}),z&&y&&(0,d.jsx)("button",{className:"btn",disabled:!x||r,onClick:()=>void A(!0),children:b("ow.cfg.saveRestart")}),(0,d.jsx)("button",{className:"btn primary",disabled:!x||r,onClick:()=>void A(),children:b("ow.cfg.save")})]}),t&&(0,d.jsx)(q.TM,{title:b("obj.delete.title",{name:a.name}),confirmLabel:b("obj.delete"),danger:!0,onConfirm:B,onClose:()=>u(!1),body:"server"===a.kind?b("obj.delete.server"):"docker"===a.kind?b(`obj.delete.${a.config.mode}`):b(`obj.delete.${a.kind}`)})]})}var ae=c(16487),af=c(87839),ag=c(54137),ah=c(84122),ai=c(92437),aj=c(95443),ak=c(35842),al=c(33691),am=c(19620);let an=/\b(error|fatal|exception|panic|fail(ed|ure)?|traceback)\b/i,ao=/\b(warn(ing)?|deprecated)\b/i;function ap({id:a,members:b,initialFilter:c}){let{t:f}=(0,o.s9)(),[g,h]=(0,e.useState)(!1),{text:i,dropped:j,clear:k}=C(a,{paused:g}),[l,n]=(0,e.useState)(c??""),p=(0,e.useDeferredValue)(l),[q,r]=(0,e.useState)(!!c),[s,t]=(0,e.useState)(!0),[u,v]=(0,e.useState)(!0),[w,x]=(0,e.useState)(12.5),[y,z]=(0,e.useState)(new Set),A=(0,e.useRef)(null),B=a=>x(b=>{let c=Math.max(10,Math.min(20,b+a));try{localStorage.setItem("hive-am.logsize",String(c))}catch{}return c}),E=(0,e.useMemo)(()=>i?i.split("\n"):[],[i]),F=(0,e.useMemo)(()=>{let a=p.trim().toLowerCase(),c=[];for(let d=0;d<E.length;d++){let e=E[d],f=b?/^\[([^\]]+)\] /.exec(e):null;!(f&&y.has(f[1]))&&(!q||!a||e.toLowerCase().includes(a))&&c.push({line:e,idx:j+d,member:f?.[1]})}return c},[E,p,q,y,b,j]),G=F.length>2e3?F.slice(F.length-2e3):F,H=(0,e.useMemo)(()=>{let a=new Map;for(let b of G){let c=Math.floor(b.idx/50),d=a.get(c);d?d.push(b):a.set(c,[b])}return[...a]},[G]),I=(0,e.useMemo)(()=>{let a=p.trim().toLowerCase();return a?F.filter(b=>b.line.toLowerCase().includes(a)).length:0},[F,p]);return(0,d.jsxs)("div",{className:"lp",children:[(0,d.jsxs)("div",{className:"lp-bar",children:[(0,d.jsxs)("div",{className:"search lp-search",children:[(0,d.jsx)(ae.A,{size:14}),(0,d.jsx)("input",{className:"input",placeholder:f("lp.search"),value:l,onChange:a=>n(a.target.value),"aria-label":f("lp.search")}),I>0&&(0,d.jsx)("span",{className:"lp-hits",children:f("lp.matches",{count:I})})]}),(0,d.jsxs)("label",{className:"row gap-s small",children:[(0,d.jsx)("input",{type:"checkbox",checked:q,onChange:a=>r(a.target.checked)}),f("lp.only")]}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsx)("button",{className:`btn ghost icon sm ${u?"on":""}`,"aria-pressed":u,onClick:()=>v(a=>!a),"aria-label":f("lp.wrap"),title:f("lp.wrap"),children:(0,d.jsx)(af.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>B(-1),"aria-label":f("lp.smaller"),title:f("lp.smaller"),children:(0,d.jsx)(ag.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>B(1),"aria-label":f("lp.larger"),title:f("lp.larger"),children:(0,d.jsx)(ah.A,{size:15})}),(0,d.jsx)("button",{className:`btn ghost icon sm ${g?"on":""}`,"aria-pressed":g,onClick:()=>h(a=>!a),"aria-label":f(g?"lp.resume":"lp.pause"),title:f(g?"lp.resume":"lp.pause"),children:g?(0,d.jsx)(m.A,{size:15}):(0,d.jsx)(ai.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:k,"aria-label":f("lp.clear"),title:f("lp.clear"),children:(0,d.jsx)(aj.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>void navigator.clipboard?.writeText(E.join("\n")),"aria-label":f("lp.copy"),title:f("lp.copy"),children:(0,d.jsx)(ak.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>{let b=document.createElement("a");b.href=URL.createObjectURL(new Blob([E.join("\n")],{type:"text/plain"})),b.download=`${a.slice(0,8)}-${new Date().toISOString().slice(0,19).replace(/[:T]/g,"-")}.log`,b.click(),setTimeout(()=>URL.revokeObjectURL(b.href),4e3)},"aria-label":f("lp.download"),title:f("lp.download"),children:(0,d.jsx)(al.A,{size:15})})]}),b&&b.length>0&&(0,d.jsx)("div",{className:"lp-chips",children:b.map((a,b)=>(0,d.jsx)("button",{className:`lp-chip ${y.has(a)?"off":""}`,style:{"--c":D.hg[b%D.hg.length]},"aria-pressed":!y.has(a),onClick:()=>z(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),children:a},a))}),(0,d.jsx)("div",{className:`lp-body mono ${u?"wrap":""}`,ref:A,onScroll:()=>{let a=A.current;if(!a)return;let b=a.scrollHeight-a.scrollTop-a.clientHeight<40;!b&&s?t(!1):b&&!s&&t(!0)},tabIndex:0,style:{fontSize:w},children:null===i?(0,d.jsx)("p",{className:"muted",children:f("git.loading")}):0===G.length?(0,d.jsx)("p",{className:"muted",children:f("obj.logs.empty")}):H.map(([a,c])=>(0,d.jsx)(ar,{rows:c,members:b,needle:p.trim()},a))}),(0,d.jsxs)("div",{className:"lp-foot muted small",children:[(0,d.jsxs)("span",{children:[f("lp.lines",{count:F.length}),F.length>2e3?` \xb7 ${f("lp.shown",{count:2e3})}`:"",g?` \xb7 ${f("lp.paused")}`:""]}),!s&&(0,d.jsxs)("button",{className:"btn sm",onClick:()=>{t(!0);let a=A.current;a&&(a.scrollTop=a.scrollHeight)},children:[(0,d.jsx)(am.A,{size:14}),f("lp.follow")]})]})]})}function aq({line:a,member:b,mi:c,needle:f}){let g=an.test(a)?"err":ao.test(a)?"warn":"",h=b&&c>=0?a.slice(b.length+3):a,i=!1,j=[];if(f){let a=h.toLowerCase(),b=f.toLowerCase(),c=0,e=0;for(let g=a.indexOf(b);g>=0;g=a.indexOf(b,c))i=!0,j.push(h.slice(c,g),(0,d.jsx)("mark",{children:h.slice(g,g+f.length)},e++)),c=g+f.length;j.push(h.slice(c))}let k=f?j.map((a,b)=>(0,d.jsx)(e.Fragment,{children:a},b)):h;return(0,d.jsx)("div",{className:`lp-row ${g} ${i?"hit":""}`,style:c>=0?{"--c":D.hg[c%D.hg.length]}:void 0,children:b&&c>=0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("b",{className:"lp-src",children:["[",b,"]"]}),k]}):k})}let ar=(0,e.memo)(function({rows:a,members:b,needle:c}){return(0,d.jsx)(d.Fragment,{children:a.map(a=>(0,d.jsx)(aq,{line:a.line,member:a.member,mi:a.member?b?.indexOf(a.member)??-1:-1,needle:c},a.idx))})},(a,b)=>a.needle===b.needle&&a.members===b.members&&a.rows.length===b.rows.length&&a.rows.every((a,c)=>a.idx===b.rows[c].idx&&a.line===b.rows[c].line));var as=c(97984);function at({list:a,children:b,gap:c=!1,listWidth:e}){return(0,d.jsxs)("div",{className:`msd ${c?"msd-gap":""}`,style:e?{"--msd-list":e}:void 0,children:[a,b]})}let au=(a,b,c)=>n.FH.put(`/objects/${a}/http/file`,{file:b,content:c});async function av(a,b,c){await au(a,b,c(await n.FH.get(`/objects/${a}/http/file?file=${encodeURIComponent(b)}`).then(a=>a.content)))}function aw(a){let b=[`### ${a.name.trim()||`${a.method} request`}`,`${a.method} ${a.url.trim()}`,...a.headers.filter(a=>a.name.trim()).map(a=>`${a.name.trim()}: ${a.value}`)];return a.body.trim()&&b.push("",a.body.replace(/\s+$/,"")),b.join("\n")}function ax(a,b,c,d){let e=a.split("\n"),{first:f,end:g}=function(a,b){let c=b;for(;c<a.length&&/^\s+[?&]/.test(a[c]);)c++;let d=c;for(;c<a.length&&a[c].trim()&&!/^#{3,}/.test(a[c].trim());)c++;return{first:d,end:c}}(e,b),h=e.slice(f,g).findIndex(a=>a.split(":")[0].trim().toLowerCase()===c.toLowerCase());return h>=0?null===d?e.splice(f+h,1):e[f+h]=`${c}: ${d}`:null!==d&&e.splice(g,0,`${c}: ${d}`),e.join("\n")}let ay={status:["=","!=","2xx","<",">"],time:["<",">"],header:["exists","=","contains"],body:["exists","=","!=","contains",">","<"],text:["contains"]},az="// hive-am:asserts ",aA=a=>/^-?\d+(\.\d+)?$/.test(a.trim())||/^(true|false|null)$/.test(a.trim())?a.trim():JSON.stringify(a),aB=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],aC="\0new";function aD({objectId:a,files:b,defaultFile:c,onClose:f,onCreated:g}){let{t:h}=(0,o.s9)(),[i,j]=(0,e.useState)("form"),[k,l]=(0,e.useState)(c&&b.some(a=>a.relFile===c)?c:b[0]?.relFile??aC),[m,p]=(0,e.useState)("requests.http"),[r,s]=(0,e.useState)({name:"",method:"GET",url:"{{host}}/",headers:[],body:""}),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(!1),B=async()=>{if(!r.url.trim())return void y(h("hw2.new.needUrl"));A(!0),y("");try{let b={...r,headers:t.split("\n").map(a=>{let b=a.indexOf(":");return b>0?{name:a.slice(0,b).trim(),value:a.slice(b+1).trim()}:{name:"",value:""}}).filter(a=>a.name)};if(k===aC){let c,d=m.trim();await (c=`${aw(b)}
|
|
2
2
|
`,n.FH.post(`/objects/${a}/http/file`,{file:d,content:c})),g(d)}else await av(a,k,a=>(function(a,b){let c=a.replace(/\s+$/,"");return`${c}${c?"\n\n":""}${aw(b)}
|
|
3
3
|
`})(a,b)),g(k)}catch(a){y(a instanceof Error?a.message:"error")}finally{A(!1)}};return(0,d.jsx)(q.aF,{title:h("hw2.new.title"),onClose:f,children:(0,d.jsxs)("div",{className:"stack",children:[(0,d.jsx)(q.$q,{value:i,onChange:j,options:[{id:"form",label:h("hw2.new.form")},{id:"curl",label:h("hw2.new.curl")}]}),"curl"===i?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(q.D0,{label:h("hw2.new.curl"),hint:h("hw2.new.curlHint"),children:(0,d.jsx)("textarea",{className:"input mono",rows:7,value:v,onChange:a=>w(a.target.value),placeholder:"curl -X POST 'https://…' -H 'Content-Type: application/json' -d '{…}'",autoFocus:!0})}),(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("span",{className:"grow"}),(0,d.jsx)("button",{className:"btn primary",disabled:!v.trim(),onClick:()=>{try{let a=function(a){let b=function(a){let b=[],c="",d=!1,e=a.replace(/\\\r?\n/g," ").replace(/\^\r?\n/g," ");for(let a=0;a<e.length;a++){let f=e[a];if("'"===f){d=!0;let b=e.indexOf("'",a+1),f=b<0?e.length:b;c+=e.slice(a+1,f),a=f;continue}if('"'===f){for(d=!0,a++;a<e.length&&'"'!==e[a];a++)"\\"===e[a]&&a+1<e.length&&/["\\$`]/.test(e[a+1])&&a++,c+=e[a];continue}if("$"===f&&"'"===e[a+1]){for(d=!0,a+=2;a<e.length&&"'"!==e[a];a++)"\\"===e[a]&&a+1<e.length?c+=({n:"\n",t:" ",r:"\r","'":"'","\\":"\\"})[e[++a]]??e[a]:c+=e[a];continue}if("\\"===f&&a+1<e.length){d=!0,c+=e[++a];continue}if(/\s/.test(f)){d&&(b.push(c),c="",d=!1);continue}d=!0,c+=f}return d&&b.push(c),b}(a.trim());"curl"===b[0]&&b.shift();let c="",d="",e,f=[],g=[],h="",i=!1,j=!1;for(let a=0;a<b.length;a++){let e=b[a],k=()=>b[++a]??"",l=/^(--[\w-]+)=(.*)$/s.exec(e),m=l?l[1]:e,n=()=>l?l[2]:k();if("-X"===m||"--request"===m)c=n().toUpperCase();else if("-H"===m||"--header"===m){let a=n(),b=a.indexOf(":");b>0&&f.push({name:a.slice(0,b).trim(),value:a.slice(b+1).trim()})}else["-d","--data","--data-raw","--data-binary","--data-ascii","--data-urlencode"].includes(m)?g.push(n()):"-u"===m||"--user"===m?h=n():"-b"===m||"--cookie"===m?f.push({name:"Cookie",value:n()}):"-A"===m||"--user-agent"===m?f.push({name:"User-Agent",value:n()}):"-e"===m||"--referer"===m?f.push({name:"Referer",value:n()}):"--url"===m?d=n():"-F"===m||"--form"===m?(i=!0,g.push(n())):"-G"===m||"--get"===m?j=!0:"-I"===m||"--head"===m?c="HEAD":["-o","--output","-m","--max-time","--connect-timeout","-w","--write-out","--proxy","-x","--cacert","--cert","--key","-E"].includes(m)?l||k():e.startsWith("-")||d||(d=e)}if(!d)throw Error("No URL found in the command");if(g.length&&(e=g.join("&")),h&&f.push({name:"Authorization",value:`Basic ${h.replace(":"," ")}`}),j&&e&&(d+=(d.includes("?")?"&":"?")+e,e=void 0),c||(c=void 0===e||i?"GET":"POST"),i)throw Error("multipart forms (-F) are not supported yet");let k="";try{let a=new URL(d);k=`${c} ${a.pathname}`}catch{k=`${c} request`}return void 0===e||f.some(a=>"content-type"===a.name.toLowerCase())||f.push({name:"Content-Type",value:/^\s*[[{]/.test(e)?"application/json":"application/x-www-form-urlencoded"}),{name:k,method:c,url:d,headers:f,body:e??""}}(v);s(a),u(a.headers.map(a=>`${a.name}: ${a.value}`).join("\n")),j("form"),y("")}catch(a){y(a instanceof Error?a.message:"error")}},children:h("hw2.new.parse")})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(q.D0,{label:h("hw2.new.file"),children:(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsxs)("select",{className:"select",value:k,onChange:a=>l(a.target.value),style:{flex:1},children:[b.map(a=>(0,d.jsx)("option",{value:a.relFile,children:a.relFile},a.relFile)),(0,d.jsx)("option",{value:aC,children:h("hw2.new.newFile")})]}),k===aC&&(0,d.jsx)("input",{className:"input mono",value:m,onChange:a=>p(a.target.value),"aria-label":h("hw2.new.file"),style:{flex:1}})]})}),(0,d.jsx)(q.D0,{label:h("obj.f.name"),children:(0,d.jsx)("input",{className:"input",value:r.name,onChange:a=>s({...r,name:a.target.value}),placeholder:"login",autoFocus:!0})}),(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("select",{className:"select",style:{width:120},value:r.method,onChange:a=>s({...r,method:a.target.value}),"aria-label":"Method",children:aB.map(a=>(0,d.jsx)("option",{children:a},a))}),(0,d.jsx)("input",{className:"input mono",style:{flex:1},value:r.url,onChange:a=>s({...r,url:a.target.value}),placeholder:"{{host}}/path","aria-label":"URL"})]}),(0,d.jsx)(q.D0,{label:h("http.headers"),hint:h("hw2.new.headersHint"),children:(0,d.jsx)("textarea",{className:"input mono",rows:3,value:t,onChange:a=>u(a.target.value),placeholder:"Content-Type: application/json"})}),(0,d.jsx)(q.D0,{label:h("http.requestBody"),children:(0,d.jsx)("textarea",{className:"input mono",rows:4,value:r.body,onChange:a=>s({...r,body:a.target.value})})}),(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("button",{className:"btn ghost",onClick:()=>j("curl"),children:h("hw2.new.curl")}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsx)("button",{className:"btn",onClick:f,children:h("hw2.cancel")}),(0,d.jsx)("button",{className:"btn primary",disabled:z,onClick:()=>void B(),children:h("hw2.new.add")})]})]}),x&&(0,d.jsx)("p",{className:"gx-note err",style:{margin:0},children:x})]})})}var aE=c(29566),aF=c(24956);function aG({objectId:a,file:b,env:c,onClose:g,onDone:h}){let{t:i}=(0,o.s9)(),[j,k]=(0,e.useState)(""),[l,p]=(0,e.useState)(!1),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)([]),[v,w]=(0,e.useState)(!1),x=(0,e.useRef)(!1),y=null,z="";if(j.trim())try{(y=function(a){let b=a.trim();if(!b)throw Error("No data");if(b.startsWith("[")||b.startsWith("{")){let a=JSON.parse(b),c=Array.isArray(a)?a:[a];if(!c.every(a=>a&&"object"==typeof a&&!Array.isArray(a)))throw Error("A JSON array of objects is expected");let d=[...new Set(c.flatMap(a=>Object.keys(a)))];return{columns:d,rows:c.map(a=>Object.fromEntries(d.map(b=>[b,void 0===a[b]||null===a[b]?"":"object"==typeof a[b]?JSON.stringify(a[b]):String(a[b])])))}}let c=b.split(/\r?\n/,1)[0],d=(c.match(/;/g)?.length??0)>(c.match(/,/g)?.length??0)?";":c.includes(" ")&&!c.includes(",")?" ":",",e=[],f=[],g="",h=!1;for(let a=0;a<b.length;a++){let c=b[a];if(h){'"'===c?'"'===b[a+1]?(g+='"',a++):h=!1:g+=c;continue}'"'===c?h=!0:c===d?(f.push(g),g=""):"\n"===c||"\r"===c?("\r"===c&&"\n"===b[a+1]&&a++,f.push(g),g="",f.some(a=>""!==a)&&e.push(f),f=[]):g+=c}f.push(g),f.some(a=>""!==a)&&e.push(f);let i=e[0].map(a=>a.trim());if(i.some(a=>!/^[A-Za-z_][\w.-]{0,80}$/.test(a)))throw Error("The first line must be the variable names (letters, numbers, _ . -)");return{columns:i,rows:e.slice(1).map(a=>Object.fromEntries(i.map((b,c)=>[b,a[c]??""])))}}(j)).rows.length>200&&(z=i("hw2.batch.tooMany",{max:200}),y=null)}catch(a){z=a instanceof Error?a.message:"error"}let A=async()=>{if(!y)return;s(""),u([]),w(!0),x.current=!1;let d=y.columns,e=[];try{for(let f of y.rows){if(x.current)break;for(let b of d)await n.FH.post(`/objects/${a}/http/session`,{name:b,value:f[b]});let g=[],h=!1;for(let d of b.requests){if(x.current||h&&l){g.push({ok:!1,tests:"",error:i("hw2.batch.skipped")});continue}try{let e=await n.FH.post(`/objects/${a}/http/run`,{file:b.relFile,index:d.index,env:c||void 0}),f=e.tests.filter(a=>!a.passed).length+ +!!e.scriptError,i=e.status<400&&0===f;i||(h=!0),g.push({status:e.status,ok:i,tests:e.tests.length?`${e.tests.length-e.tests.filter(a=>!a.passed).length}/${e.tests.length}`:""})}catch(a){h=!0,g.push({ok:!1,tests:"",error:a instanceof Error?a.message:"error"})}}e.push(g),u([...e])}}catch(a){s(a instanceof Error?a.message:"error")}finally{for(let b of d)await n.FH.del(`/objects/${a}/http/session?name=${encodeURIComponent(b)}`).catch(()=>void 0);w(!1),h()}},B=t.filter(a=>a.every(a=>a.ok)).length;return(0,d.jsx)(q.aF,{title:i("hw2.batch.title",{file:b.relFile}),onClose:()=>{x.current=!0,g()},children:(0,d.jsxs)("div",{className:"stack",children:[(0,d.jsxs)("div",{className:"field",children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("label",{className:"label",htmlFor:"batch-data",children:i("hw2.batch.data")}),(0,d.jsx)(aF.B,{size:"sm",label:i("common.help"),title:i("hw2.help.how"),children:i("hw2.batch.hint")})]}),(0,d.jsx)("textarea",{id:"batch-data",className:"input mono",rows:6,value:j,onChange:a=>k(a.target.value),placeholder:"user,passwd\nana,s3cret\nluis,otra",spellCheck:!1,disabled:v}),(0,d.jsx)("span",{className:"muted small",children:i("hw2.batch.format")})]}),(0,d.jsxs)("div",{className:"row gap-s wrap",children:[(0,d.jsxs)("label",{className:"btn sm",children:[(0,d.jsx)(aE.A,{size:14}),i("hw2.batch.file"),(0,d.jsx)("input",{type:"file",accept:".csv,.json,.txt,text/csv,application/json",hidden:!0,onChange:a=>{var b;(b=a.target.files?.[0])&&b.text().then(k)}})]}),(0,d.jsx)(q.Tl,{checked:l,onChange:p,label:i("hw2.batch.stopRow")}),(0,d.jsx)("span",{className:"grow"}),y&&(0,d.jsx)("span",{className:"muted small",children:i("hw2.batch.rows",{rows:y.rows.length,cols:y.columns.join(", ")})}),v?(0,d.jsxs)("button",{className:"btn",onClick:()=>{x.current=!0},children:[(0,d.jsx)(f.A,{size:14}),i("hw2.batch.stop")]}):(0,d.jsxs)("button",{className:"btn primary",disabled:!y||!y.rows.length,onClick:()=>void A(),children:[(0,d.jsx)(m.A,{size:14}),i("hw2.batch.run")]})]}),z&&(0,d.jsx)("p",{className:"gx-note err",style:{margin:0},children:z}),r&&(0,d.jsx)("p",{className:"gx-note err",style:{margin:0},children:r}),t.length>0&&y&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"small",style:{margin:0},children:[(0,d.jsx)("b",{children:i("hw2.batch.summary",{ok:B,total:t.length})}),v?" …":""]}),(0,d.jsx)("div",{style:{overflow:"auto",maxHeight:280},children:(0,d.jsxs)("table",{className:"cm-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:"#"}),y.columns.slice(0,2).map(a=>(0,d.jsx)("th",{children:a},a)),b.requests.map(a=>(0,d.jsx)("th",{title:a.name,children:a.name.slice(0,18)},a.id))]})}),(0,d.jsx)("tbody",{children:t.map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{children:b+1}),y.columns.slice(0,2).map(a=>(0,d.jsx)("td",{className:"mono small",children:y.rows[b][a]},a)),a.map((a,b)=>(0,d.jsx)("td",{title:a.error??"",children:(0,d.jsxs)("span",{className:`hr-st ${a.ok?"ok":"err"}`,children:[a.error?"—":a.status,a.tests?` \xb7 ${a.tests}`:""]})},b))]},b))})]})})]})]})})}let aH=a=>{try{return JSON.parse(a)}catch{return}},aI="default",aJ=a=>"GET"===a?"get":"POST"===a?"post":"DELETE"===a?"del":"PUT"===a||"PATCH"===a?"put":"other",aK=a=>a>=200&&a<300?"ok":a>=300&&a<400?"warn":"err",aL=a=>a?a.run?(a=>!!a?.run&&(a.run.tests.some(a=>!a.passed)||!!a.run.scriptError))(a)?"err":aK(a.run.status):"err":"";function aM(a){if(/json/i.test(a.contentType)||/^\s*[[{]/.test(a.body))try{return JSON.stringify(JSON.parse(a.body),null,2)}catch{}return a.body}var aN=c(28923);function aO({value:a,refBase:b}){return(0,d.jsx)("div",{className:"jt mono",children:(0,d.jsx)(aP,{k:null,v:a,path:"$",refBase:b,depth:0})})}function aP({k:a,v:b,path:c,refBase:f,depth:g}){let{t:h}=(0,o.s9)(),i=null!==b&&"object"==typeof b,[j,k]=(0,e.useState)(g<2),[l,m]=(0,e.useState)(!1),n=null===a?null:(0,d.jsxs)("span",{className:"jt-k",children:["number"==typeof a?a:JSON.stringify(a),(0,d.jsx)("i",{children:": "})]}),p=(0,d.jsx)("button",{type:"button",className:"jt-copy",onClick:()=>{let a=f?`{{${f}.${c}}}`:"string"==typeof b?b:JSON.stringify(b);navigator.clipboard?.writeText(a),m(!0),setTimeout(()=>m(!1),1200)},title:h(f?"hw2.copyRef":"iv.copy"),"aria-label":h(f?"hw2.copyRef":"iv.copy"),children:l?h("hw2.copied"):(0,d.jsx)(ak.A,{size:11})});if(!i){let a="string"==typeof b?"jt-s":"number"==typeof b?"jt-n":"jt-b";return(0,d.jsxs)("div",{className:"jt-row",children:[n,(0,d.jsx)("span",{className:a,children:"string"==typeof b?JSON.stringify(b.length>160?`${b.slice(0,160)}…`:b):String(b)}),p]})}let q=Array.isArray(b)?b.map((a,b)=>[b,a]):Object.entries(b),r=Array.isArray(b);return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"jt-row",children:[(0,d.jsx)("button",{type:"button",className:"jt-fold",onClick:()=>k(a=>!a),"aria-expanded":j,children:j?(0,d.jsx)(I.A,{size:12}):(0,d.jsx)(J.A,{size:12})}),n,(0,d.jsx)("span",{className:"jt-p",children:r?"[":"{"}),!j&&(0,d.jsxs)("span",{className:"muted",children:[" ",q.length," ","…"," "]}),!j&&(0,d.jsx)("span",{className:"jt-p",children:r?"]":"}"}),p]}),j&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"jt-kids",children:q.map(([a,b])=>(0,d.jsx)(aP,{k:a,v:b,path:r?`${c}[${a}]`:/^[A-Za-z_]\w*$/.test(String(a))?`${c}.${a}`:`${c}["${a}"]`,refBase:f,depth:g+1},String(a)))}),(0,d.jsx)("div",{className:"jt-row",children:(0,d.jsx)("span",{className:"jt-p",children:r?"]":"}"})})]})]})}let aQ=a=>{let b=a.run?.body??"";try{return JSON.stringify(JSON.parse(b),null,2)}catch{return b}};function aR({before:a,after:b}){let{t:c}=(0,o.s9)(),f=(0,e.useMemo)(()=>(function(a,b){if(a.length*b.length>4e6)return[...a.map(a=>({t:"-",s:a})),...b.map(a=>({t:"+",s:a}))];let c=a.length,d=b.length,e=Array.from({length:c+1},()=>new Uint32Array(d+1));for(let f=c-1;f>=0;f--)for(let c=d-1;c>=0;c--)e[f][c]=a[f]===b[c]?e[f+1][c+1]+1:Math.max(e[f+1][c],e[f][c+1]);let f=[],g=0,h=0;for(;g<c&&h<d;)a[g]===b[h]?(f.push({t:" ",s:a[g]}),g++,h++):e[g+1][h]>=e[g][h+1]?f.push({t:"-",s:a[g++]}):f.push({t:"+",s:b[h++]});for(;g<c;)f.push({t:"-",s:a[g++]});for(;h<d;)f.push({t:"+",s:b[h++]});return f})(aQ(a).split("\n"),aQ(b).split("\n")),[a,b]),g=Object.fromEntries((a.run?.headers??[]).map(a=>[a.name.toLowerCase(),a.value])),h=Object.fromEntries((b.run?.headers??[]).map(a=>[a.name.toLowerCase(),a.value])),i=/^(date|age|etag|x-request-id|x-correlation-id|set-cookie|server-timing|content-length)$/,j=[...new Set([...Object.keys(g),...Object.keys(h)])].filter(a=>g[a]!==h[a]&&!i.test(a)),k=f.filter(a=>" "!==a.t).length,l=[],m=[],n=()=>{m.length>8?l.push(...m.slice(0,3),{fold:m.length-6},...m.slice(-3)):l.push(...m),m=[]};for(let a of f)" "===a.t?m.push(a):(n(),l.push(a));n();let p=a=>a.run?`${a.run.status} \xb7 ${a.run.durationMs} ms \xb7 ${(0,E.zi)(a.run.size)}`:c("hw2.diff.error");return(0,d.jsxs)("div",{className:"rd",children:[(0,d.jsxs)("div",{className:"rd-head",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("span",{className:"muted small",children:[c("hw2.diff.before")," \xb7 ",(0,E.Xd)(a.at)]}),(0,d.jsx)("div",{className:"mono",children:p(a)})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("span",{className:"muted small",children:[c("hw2.diff.after")," \xb7 ",(0,E.Xd)(b.at)]}),(0,d.jsx)("div",{className:"mono",children:p(b)})]})]}),j.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"eyebrow",children:c("http.headers")}),(0,d.jsx)("div",{className:"rd-hdrs mono small",children:j.map(a=>(0,d.jsxs)("div",{children:[(0,d.jsx)("b",{children:a}),": ",void 0!==g[a]&&(0,d.jsx)("span",{className:"rd-del",children:g[a]})," ",void 0!==h[a]&&(0,d.jsx)("span",{className:"rd-add",children:h[a]})]},a))})]}),(0,d.jsxs)("div",{className:"eyebrow",style:{marginTop:10},children:[c("hw2.diff.body")," \xb7 ",0===k?c("hw2.diff.same"):c("hw2.diff.lines",{count:k})]}),(0,d.jsx)("div",{className:"rd-body mono",children:l.map((a,b)=>"fold"in a?(0,d.jsx)("div",{className:"rd-fold",children:c("hw2.diff.fold",{count:a.fold})},b):(0,d.jsxs)("div",{className:`rd-l ${"+"===a.t?"add":"-"===a.t?"del":""}`,children:[(0,d.jsx)("span",{children:a.t}),a.s||"\xa0"]},b))})]})}function aS({ws:a}){let{t:b}=(0,o.s9)(),{kept:c,adding:e,setAdding:f,newName:g,setNewName:h,newValue:i,setNewValue:j,setValue:k,forget:l,setConfirm:m}=a;return(0,d.jsxs)("div",{className:"hw-session-body hw-session-pad",children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("b",{children:b("hw.session")}),(0,d.jsx)(aF.B,{size:"sm",label:b("common.help"),title:b("hw2.help.how"),children:b("hw.session.hint")})]}),0===c.length&&!e&&(0,d.jsx)("p",{className:"muted small res-m0",children:b("hw.session.empty")}),c.map(([a,c])=>(0,d.jsxs)("div",{className:"hw-kv",children:[(0,d.jsx)("code",{className:"mono",title:a,children:a}),(0,d.jsx)("span",{className:"mono val",title:c,children:c}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>void l(a),"aria-label":b("hw.session.forget"),title:b("hw.session.forget"),children:(0,d.jsx)(M.A,{size:13})})]},a)),e?(0,d.jsxs)("div",{className:"hw-kv-add",children:[(0,d.jsx)("input",{className:"input mono",placeholder:b("hw.session.name"),value:g,onChange:a=>h(a.target.value),"aria-label":b("hw.session.name")}),(0,d.jsx)("input",{className:"input mono",placeholder:b("hw.session.value"),value:i,onChange:a=>j(a.target.value),onKeyDown:a=>{"Enter"===a.key&&k()},"aria-label":b("hw.session.value")}),(0,d.jsx)("button",{className:"btn primary icon sm",onClick:k,"aria-label":b("hw.session.add"),children:(0,d.jsx)(aN.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>f(!1),"aria-label":b("common.cancel"),children:(0,d.jsx)(M.A,{size:14})})]}):(0,d.jsxs)("div",{className:"row gap-s mt-s",children:[(0,d.jsxs)("button",{className:"btn sm",onClick:()=>f(!0),children:[(0,d.jsx)(y.A,{size:13}),b("hw.session.add")]}),c.length>0&&(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>m("session"),children:[(0,d.jsx)(aa.A,{size:13}),b("hw.session.clear")]})]})]})}function aT({ws:a}){let{t:b}=(0,o.s9)(),{o:c,confirm:e,setConfirm:f,setHist:g,setHistSel:h,setSession:i}=a;return e&&(0,d.jsx)(q.TM,{title:b("history"===e?"hw2.history.clear":"hw.session.clear"),confirmLabel:b("history"===e?"hw2.history.clear":"hw.session.clear"),danger:!0,body:b("history"===e?"rs.confirm.history":"rs.confirm.session"),onClose:()=>f(null),onConfirm:()=>"history"===e?n.FH.del(`/objects/${c.id}/http/history`).then(()=>{g([]),h(null)}):n.FH.del(`/objects/${c.id}/http/session`).then(i)})}function aU({ws:a,scan:b,onGoRequests:c}){let{t:e}=(0,o.s9)(),{hist:f,histSel:g,setHistSel:h,cmp:i,setCmp:j,setConfirm:k,setFile:l,setSel:m,setTab:n}=a,p=f.find(a=>a.n===g)??null,q=p?.run?aH(p.run.body):void 0,r=a=>b.files.find(b=>b.relFile===a.file)?.requests[a.index],s=p?f.find(a=>a.n<p.n&&a.file===p.file&&a.index===p.index&&a.run):void 0,t="prev"===i?s:"number"==typeof i?f.find(a=>a.n===i):void 0;return(0,d.jsxs)(at,{list:(0,d.jsxs)("aside",{className:"hw-list",children:[(0,d.jsxs)("div",{className:"hw-env",children:[(0,d.jsx)("b",{className:"grow",children:e("hw2.history")}),f.length>0&&(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>k("history"),children:[(0,d.jsx)(aa.A,{size:13}),e("hw2.history.clear")]})]}),(0,d.jsxs)("div",{className:"hr-reqs",children:[0===f.length&&(0,d.jsx)("p",{className:"gx-note",children:e("hw2.history.empty")}),f.map(a=>(0,d.jsxs)("button",{className:`hr-req ${g===a.n?"sel":""}`,onClick:()=>{h(a.n),j(null)},children:[(0,d.jsx)("span",{className:`hr-m ${aJ(a.method||"GET")}`,children:a.method||"?"}),(0,d.jsx)("span",{className:"nm",children:a.name}),(0,d.jsx)("span",{className:"muted small",children:(0,E.v7)(a.at)}),(0,d.jsx)("i",{className:`hr-dot ${a.run?a.run.tests.some(a=>!a.passed)||a.run.scriptError?"err":aK(a.run.status):"err"}`,title:a.run?String(a.run.status):a.error})]},a.n))]})]}),children:[(0,d.jsxs)("section",{className:"hr-detail hw-scroll",children:[p&&(0,d.jsxs)("div",{className:"hr-pre",children:[(0,d.jsxs)("div",{className:"row gap-s wrap res-mb",children:[(0,d.jsx)("span",{className:`hr-m ${aJ(p.method||"GET")}`,children:p.method}),(0,d.jsx)("code",{className:"mono grow hw-wrap",children:p.run?.request.url??p.name}),p.run&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("b",{className:`hr-st ${aK(p.run.status)}`,children:[p.run.status," ",p.run.statusText]}),(0,d.jsxs)("span",{className:"muted small",children:[e("http.time",{ms:p.run.durationMs})," \xb7 ",(0,E.zi)(p.run.size)]})]}),r(p)&&(0,d.jsx)("button",{className:"btn sm",onClick:()=>{l(p.file),m(r(p)),n("body"),c?.()},children:e("hw2.history.open")})]}),(0,d.jsxs)("div",{className:"row gap-s wrap small res-mb",children:[(0,d.jsxs)("span",{className:"muted",children:[p.file,p.env?` \xb7 ${p.env}`:""]}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsxs)("select",{className:"select hw-cmp",value:String(i??""),onChange:a=>j(""===a.target.value?null:"prev"===a.target.value?"prev":Number(a.target.value)),"aria-label":e("hw2.diff.with"),children:[(0,d.jsx)("option",{value:"",children:e("hw2.diff.with")}),(0,d.jsx)("option",{value:"prev",disabled:!s,children:e("hw2.diff.prev")}),f.filter(a=>a.n!==p.n&&a.run).map(a=>(0,d.jsxs)("option",{value:a.n,children:[a.name," \xb7 ",(0,E.Xd)(a.at)," \xb7 ",a.run.status]},a.n))]})]}),"prev"===i&&!s&&(0,d.jsx)("p",{className:"muted small",children:e("hw2.diff.noPrev")}),t&&p.run&&t.run?t.at<=p.at?(0,d.jsx)(aR,{before:t,after:p}):(0,d.jsx)(aR,{before:p,after:t}):(0,d.jsxs)(d.Fragment,{children:[p.error&&(0,d.jsx)("div",{className:"gx-banner err hw-pre",children:p.error}),p.run&&p.run.tests.map((a,b)=>(0,d.jsxs)("div",{className:`hw-test ${a.passed?"ok":"err"}`,children:[a.passed?(0,d.jsx)(aN.A,{size:14}):(0,d.jsx)(M.A,{size:14}),(0,d.jsx)("b",{children:a.name}),a.message&&(0,d.jsxs)("span",{className:"muted",children:[": ",a.message]})]},b)),p.run&&!p.run.binary&&p.run.body&&(void 0!==q?(0,d.jsx)(aO,{value:q,refBase:r(p)?.named?`${r(p).named}.response.body`:void 0}):(0,d.jsx)("pre",{children:aM(p.run)}))]})]}),(0,d.jsx)(aS,{ws:a})]}),(0,d.jsx)(aT,{ws:a})]})}var aV=c(77671),aW=c(19993),aX=c(61593),aY=c(65521);function aZ({ws:a,scan:b,onOpenVars:c}){let{t:e}=(0,o.s9)(),{env:f,setEnv:g,q:h,setQ:i,file:j,setFile:k,sel:l,setSel:m,open:n,setOpen:p,results:r,busy:s,setTab:t,setCreating:u,load:v,loadSession:w,files:x,summary:z,runFile:A}=a;return(0,d.jsxs)("aside",{className:"hw-list",children:[(0,d.jsxs)("div",{className:"hw-env",children:[(0,d.jsxs)("label",{className:"row gap-s small grow",children:[(0,d.jsx)("span",{className:"muted",children:e("http.env")}),(0,d.jsxs)("select",{className:"select hw-envsel",value:f,onChange:a=>g(a.target.value),children:[(0,d.jsx)("option",{value:"",children:e("http.noEnv")}),b.environments.map(a=>(0,d.jsx)("option",{value:a,children:a},a))]})]}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>u(!0),"aria-label":e("hw2.new.title"),title:e("hw2.new.title"),children:(0,d.jsx)(y.A,{size:15})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>{v(),w()},"aria-label":e("http.rescan"),title:e("http.rescan"),children:(0,d.jsx)(aV.A,{size:15})})]}),0===b.envFiles.length&&0===b.environments.length&&(0,d.jsxs)("p",{className:"muted small hw-hint",children:[e("hw.noEnvFile")," ",(0,d.jsx)("button",{className:"btn sm",onClick:c,children:e("hw.editVars")})]}),(0,d.jsx)("div",{className:"gx-filter",children:(0,d.jsx)(q.DO,{value:h,onChange:i,placeholder:e("http.search"),label:e("http.search")})}),(0,d.jsxs)("div",{className:"hr-reqs",children:[0===x.length&&(0,d.jsx)("p",{className:"gx-note",children:b.files.length?e("ow.noMatch",{query:h}):e("http.empty")}),x.map(a=>{let b=n.has(a.relFile)||!!h;return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:`hw-file ${j===a.relFile&&!l?"sel":""}`,children:[(0,d.jsxs)("button",{className:"hw-fbtn",onClick:()=>{k(a.relFile),m(null),p(b=>{let c=new Set(b);return c.has(a.relFile)?c.delete(a.relFile):c.add(a.relFile),c})},children:[b?(0,d.jsx)(I.A,{size:14}):(0,d.jsx)(J.A,{size:14}),(0,d.jsx)(aW.A,{size:14,className:"muted"}),(0,d.jsx)("span",{className:"mono nm",title:a.relFile,children:a.relFile}),(0,d.jsx)("span",{className:"muted small",children:z(a)??a.requests.length})]}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!!s,onClick:()=>void A(a),"aria-label":e("http.runFile"),title:e("http.runFile"),children:(0,d.jsx)(aX.A,{size:15})})]}),b&&a.requests.map(b=>{let c=r[b.id],f=aL(c);return(0,d.jsxs)("button",{className:`hr-req hr-req-sub ${l?.id===b.id?"sel":""}`,onClick:()=>{k(a.relFile),m(b),t("body")},children:[(0,d.jsx)("span",{className:`hr-m ${aJ(b.method)}`,children:b.method}),(0,d.jsx)("span",{className:"nm",children:b.name}),b.script&&(0,d.jsx)(aY.A,{size:12,className:"muted","aria-label":e("hw.script")}),s===b.id?(0,d.jsx)("span",{className:"muted small",children:"…"}):f?(0,d.jsx)("i",{className:`hr-dot ${f}`,title:c?.run?`${c.run.status}${c.run.tests.length?` \xb7 ${e("hw.tests.count",{ok:c.run.tests.filter(a=>a.passed).length,total:c.run.tests.length})}`:""}`:c?.error}):null]},b.id)})]},a.relFile)}),b.truncated&&(0,d.jsx)("p",{className:"gx-note",children:e("http.truncatedFiles")})]})]})}var a$=c(71556);let a_=[{key:"tools",formats:[["curl","cURL"],["wget","wget"],["httpie","HTTPie"],["powershell","PowerShell"]]},{key:"langs",formats:[["fetch","JavaScript (fetch)"],["axios","Node (axios)"],["python","Python (requests)"],["go","Go"],["php","PHP (cURL)"],["java","Java (HttpClient)"],["csharp","C# (HttpClient)"],["ruby","Ruby (net/http)"],["rust","Rust (reqwest)"]]},{key:"raw",formats:[["http","HTTP"]]}];function a0({objectId:a,file:b,index:c,env:f}){let{t:g}=(0,o.s9)(),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(null),[l,m]=(0,e.useState)(""),p=async d=>{m("");try{let e=await n.FH.get(`/objects/${a}/http/export?file=${encodeURIComponent(b)}&index=${c}&format=${d}${f?`&env=${encodeURIComponent(f)}`:""}${h?"&redact=1":""}`);await navigator.clipboard.writeText(e.text),k(d),setTimeout(()=>k(null),1500),e.unresolved.length&&m(g("hw2.copyAs.unresolved",{names:e.unresolved.map(a=>`{{${a}}}`).join(", ")}))}catch(a){m(a instanceof Error?a.message:"error")}};return(0,d.jsx)(N.W1,{label:g("hw2.copyAs"),icon:(0,d.jsx)(ak.A,{size:14}),children:()=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(N.iz,{checked:h,onChange:i,hint:g("hw2.copyAs.redact.hint"),children:g("hw2.copyAs.redact")}),(0,d.jsx)(N.MU,{}),a_.map(a=>(0,d.jsx)(N.rX,{label:g(`hw2.copyAs.g.${a.key}`),children:a.formats.map(([a,b])=>(0,d.jsx)(N.Dr,{icon:j===a?(0,d.jsx)(aN.A,{size:15}):void 0,onClick:()=>void p(a),children:b},a))},a.key)),l&&(0,d.jsx)("p",{className:"muted small menu-note",children:l})]})})}function a1({text:a}){return(0,d.jsx)(d.Fragment,{children:a.split(/(\{\{[^}]+\}\})/g).map((a,b)=>a.startsWith("{{")?(0,d.jsx)("span",{className:"hr-var",children:a},b):a)})}var a2=c(2335);let a3=a=>Array.isArray(a)?a:a&&"object"==typeof a?Object.values(a):[],a4=(a,b,c)=>"=="===b?a===c||String(a)===String(c):"!="===b?a!==c&&String(a)!==String(c):">"===b?Number(a)>Number(c):"<"===b?Number(a)<Number(c):">="===b?Number(a)>=Number(c):Number(a)<=Number(c);var a5=c(46378);let a6={session:"sess",file:"file",envfile:"env",hive:"hive",response:"resp",dynamic:"dyn",missing:"miss"};function a7(a,b,c){let d="$shared"===c?a("iv.shared"):c;return a(`iv.source.${b}`,{from:"envfile"===b||"hive"===b?d:c})}function a8({vars:a,onSet:b,onForget:c,onRun:f,compact:g=!1}){let{t:h}=(0,o.s9)(),[i,j]=(0,e.useState)(""),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)({}),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(""),t=(0,e.useMemo)(()=>a.filter(a=>(!k||"missing"===a.source)&&(!i||a.name.toLowerCase().includes(i.toLowerCase())||(a.value??"").toLowerCase().includes(i.toLowerCase()))),[a,i,k]),u=a.filter(a=>"missing"===a.source).length,v=()=>{p&&b?.(p,r),q(null)};return(0,d.jsxs)("div",{className:"ivt",children:[!g&&(0,d.jsxs)("div",{className:"ivt-bar",children:[(0,d.jsxs)("div",{className:"search",children:[(0,d.jsx)(ae.A,{size:14}),(0,d.jsx)("input",{className:"input",placeholder:h("iv.filter"),value:i,onChange:a=>j(a.target.value),"aria-label":h("iv.filter")})]}),u>0&&(0,d.jsxs)("label",{className:"row gap-s small",children:[(0,d.jsx)("input",{type:"checkbox",checked:k,onChange:a=>l(a.target.checked)}),h("iv.onlyMissing")," \xb7 ",u]})]}),0===t.length?(0,d.jsx)("p",{className:"muted small",style:{margin:8},children:h("iv.empty")}):(0,d.jsxs)("table",{className:"ivt-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:h("iv.col.name")}),(0,d.jsx)("th",{children:h("iv.col.value")}),(0,d.jsx)("th",{children:h("iv.col.source")}),!g&&(0,d.jsx)("th",{children:h("iv.col.used")}),(0,d.jsx)("th",{})]})}),(0,d.jsx)("tbody",{children:t.map(a=>{let e=a.secret&&!m[a.name];return(0,d.jsxs)("tr",{className:`ivt-row ${"missing"===a.source?"miss":""}`,children:[(0,d.jsx)("td",{children:(0,d.jsx)("code",{className:"mono ivt-name",children:a.name.replace(/^\$/,"$")})}),(0,d.jsx)("td",{className:"ivt-val",children:p===a.name?(0,d.jsxs)("span",{className:"row gap-s",children:[(0,d.jsx)("input",{className:"input mono",autoFocus:!0,value:r,placeholder:h("hw.session.value"),onChange:a=>s(a.target.value),onKeyDown:a=>{"Enter"===a.key&&v(),"Escape"===a.key&&q(null)}}),(0,d.jsx)("button",{className:"btn primary icon sm",onClick:v,"aria-label":h("iv.save"),children:(0,d.jsx)(aN.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>q(null),"aria-label":h("hw2.cancel"),children:(0,d.jsx)(M.A,{size:14})})]}):"missing"===a.source?(0,d.jsx)("span",{className:"muted",children:"—"}):"dynamic"===a.source?(0,d.jsx)("span",{className:"muted small",children:h("iv.generated")}):a.hidden?(0,d.jsxs)("span",{className:"muted small",title:h("iv.hidden"),children:["•••••• ",(0,d.jsxs)("i",{children:["(",h("iv.hidden"),")"]})]}):(0,d.jsx)("span",{className:"mono ivt-text",title:e?void 0:a.value??"",children:e?"••••••••":a.value})}),(0,d.jsxs)("td",{children:[(0,d.jsx)("span",{className:`ivt-src ${a6[a.source]}`,children:a7(h,a.source,a.from)}),a.overridden.length>0&&(0,d.jsx)("div",{className:"ivt-over",children:a.overridden.map((b,c)=>(0,d.jsxs)("div",{className:"small",children:[(0,d.jsx)("b",{children:a7(h,b.source,b.from)})," ",h("iv.alsoDefines"),null!==b.value&&(0,d.jsxs)(d.Fragment,{children:[" ",(0,d.jsx)("code",{className:"mono",children:b.value})]})," — ",h("iv.winsOver",{who:a7(h,a.source,a.from)})]},c))}),"missing"===a.source&&a.hint?.startsWith("run:")&&f&&(0,d.jsx)("button",{className:"btn sm",style:{marginTop:4},onClick:()=>f(a.hint.slice(4)),children:h("iv.run",{name:a.hint.slice(4)})})]}),!g&&(0,d.jsx)("td",{className:"muted small",children:a.usedBy||""}),(0,d.jsxs)("td",{className:"ivt-act",children:[a.secret&&null!==a.value&&!a.hidden&&(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>n(b=>({...b,[a.name]:!b[a.name]})),"aria-label":h("iv.reveal"),title:h("iv.reveal"),children:m[a.name]?(0,d.jsx)(S.A,{size:14}):(0,d.jsx)(T.A,{size:14})}),b&&"dynamic"!==a.source&&"response"!==a.source&&!a.name.includes(".")&&p!==a.name&&(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>{q(a.name),s("session"!==a.source&&a.secret?"":a.value??"")},"aria-label":h("iv.override"),title:`${h("iv.override")}. ${h("iv.override.hint")}`,children:(0,d.jsx)(a5.A,{size:14})}),c&&"session"===a.source&&(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>c(a.name),"aria-label":h("iv.forget"),title:h("iv.forget"),children:(0,d.jsx)(M.A,{size:14})})]})]},a.name)})})]})]})}var a9=c(92682);let ba=["status","time","header","body","text"],bb=new Set(["exists","2xx"]);function bc({objectId:a,file:b,line:c,onSaved:f}){let{t:g}=(0,o.s9)(),h=(0,q.dj)(),[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)("[]"),[m,n]=(0,e.useState)(!1),[p,r]=(0,e.useState)(""),s=JSON.stringify(i)!==k,t=(a,b)=>j(c=>c.map((c,d)=>d===a?{...c,...b}:c)),u=async()=>{n(!0),r("");try{let d=i.filter(a=>"status"===a.k||"time"===a.k||"header"!==a.k&&"body"!==a.k||!!a.name?.trim());await av(a,b,a=>(function(a,b,c){let d=a.split("\n"),{start:e,end:f}=function(a,b){let c=b;for(;c<a.length&&!/^#{3,}/.test(a[c].trim());)c++;return{start:b-1,end:c}}(d,b),g=d.slice(e,f).findIndex(a=>a.startsWith(az)),h=c.length?(function(a){let b=JSON.stringify(a).replace(/%\}/g,"%\\u007d");return["> {%",`${az}${b}`,...a.map(a=>{let{label:b,cond:c}=function(a){let b=a.v??"";if("status"===a.k)return"2xx"===a.op?{label:"status is 2xx",cond:"response.status >= 200 && response.status < 300"}:{label:`status ${a.op} ${b}`,cond:`response.status ${"="===a.op?"==":a.op} ${aA(b)}`};if("time"===a.k)return{label:`time ${a.op} ${b} ms`,cond:`response.time ${a.op} ${Number(b)||0}`};if("header"===a.k){let c=`response.headers.valueOf(${JSON.stringify((a.name??"").toLowerCase())})`;return"exists"===a.op?{label:`header ${a.name} exists`,cond:`${c} !== undefined`}:"contains"===a.op?{label:`header ${a.name} contains ${b}`,cond:`${c} !== undefined && ${c}.includes(${JSON.stringify(b)})`}:{label:`header ${a.name} = ${b}`,cond:`${c} == ${aA(b)}`}}if("text"===a.k)return{label:`answer contains ${b}`,cond:`response.text.includes(${JSON.stringify(b)})`};let c=function(a){let b=a.trim().replace(/^\$\.?/,""),c="response.body";for(let a of b.matchAll(/\[(\d+)\]|\["([^"]+)"\]|\.?([^.[\]]+)/g))c+=void 0!==a[1]?`[${a[1]}]`:/^[A-Za-z_]\w*$/.test(a[2]??a[3])?`.${a[2]??a[3]}`:`[${JSON.stringify(a[2]??a[3])}]`;return c}(a.name??"$"),d=a.name??"$";return"exists"===a.op?{label:`${d} exists`,cond:`${c} !== undefined && ${c} !== null`}:"contains"===a.op?{label:`${d} contains ${b}`,cond:`String(${c}).includes(${JSON.stringify(b)})`}:{label:`${d} ${a.op} ${b}`,cond:`${c} ${"="===a.op?"==":a.op} ${aA(b)}`}}(a);return`client.test(${JSON.stringify(b)}, function () { client.assert(${c}, ${JSON.stringify(`expected ${b}`)}); });`}),"%}"].join("\n")})(c).split("\n"):[];if(g>=0){let a=e+g,b=a;for(;b<f&&!d[b].trim().endsWith("%}");)b++;return a>e&&"> {%"===d[a-1].trim()&&a--,!h.length&&a>e&&!d[a-1].trim()&&a--,d.splice(a,b-a+1,...h),d.join("\n")}if(!h.length)return a;let i=f;for(;i>e+1&&!d[i-1].trim();)i--;return d.splice(i,0,"",...h),d.join("\n")})(a,c,d)),j(d),l(JSON.stringify(d)),h(g("hw2.saved")),f()}catch(a){r(a instanceof Error?a.message:"error")}finally{n(!1)}};return(0,d.jsxs)("div",{className:"ae",children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("b",{children:g("hw2.assert.title")}),(0,d.jsx)(aF.B,{size:"sm",label:g("common.help"),title:g("hw2.help.how"),children:g("hw2.assert.hint")}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsxs)("button",{className:"btn sm",onClick:()=>j(a=>[...a,{k:"status",op:"2xx"}]),children:[(0,d.jsx)(y.A,{size:13}),g("hw2.assert.add")]}),(0,d.jsxs)("button",{className:"btn primary sm",disabled:!s||m,onClick:()=>void u(),children:[(0,d.jsx)(a9.A,{size:13}),g("hw2.assert.save")]})]}),(0,d.jsx)("div",{style:{height:8}}),i.map((a,b)=>(0,d.jsxs)("div",{className:"ae-row",children:[(0,d.jsx)("select",{className:"select",value:a.k,onChange:a=>{let c=a.target.value;t(b,{k:c,op:ay[c][0],name:void 0,v:""})},"aria-label":g("hw2.assert.kind"),children:ba.map(a=>(0,d.jsx)("option",{value:a,children:g(`hw2.assert.k.${a}`)},a))}),("header"===a.k||"body"===a.k)&&(0,d.jsx)("input",{className:"input mono",value:a.name??"",placeholder:"header"===a.k?"Content-Type":"$.data.id",onChange:a=>t(b,{name:a.target.value}),"aria-label":g("obj.f.name")}),(0,d.jsx)("select",{className:"select",value:a.op,onChange:a=>t(b,{op:a.target.value}),"aria-label":g("hw2.assert.op"),children:ay[a.k].map(a=>(0,d.jsx)("option",{value:a,children:"exists"===a?g("hw2.assert.exists"):"2xx"===a?g("hw2.assert.ok"):"contains"===a?g("hw2.assert.contains"):a},a))}),!bb.has(a.op)&&(0,d.jsx)("input",{className:"input mono",value:a.v??"",placeholder:"time"===a.k?"ms":g("hw.session.value"),onChange:a=>t(b,{v:a.target.value}),"aria-label":g("hw.session.value")}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>j(a=>a.filter((a,c)=>c!==b)),"aria-label":g("hw2.assert.remove"),children:(0,d.jsx)(M.A,{size:14})})]},b)),p&&(0,d.jsx)("p",{className:"gx-note err",children:p})]})}let bd=["X-Api-Key","Api-Key","X-Auth-Token"];function be({objectId:a,file:b,lines:c,onSaved:f}){let{t:g}=(0,o.s9)(),h=(0,q.dj)(),i=c[0],[j,k]=(0,e.useState)("none"),[l,m]=(0,e.useState)(""),[n,p]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)("X-Api-Key"),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(!1),[B,C]=(0,e.useState)(""),D=async()=>{A(!0),C("");try{await av(a,b,a=>{let b=a;for(let a of(x?[...c]:[i]).sort((a,b)=>b-a)){for(let c of["Authorization",...bd])b=ax(b,a,c,null);"bearer"===j?b=ax(b,a,"Authorization",`Bearer ${l}`):"basic"===j?b=ax(b,a,"Authorization",`Basic ${n} ${r}`):"apikey"===j&&(b=ax(b,a,t.trim()||"X-Api-Key",v))}return b}),h(g("hw2.saved")),f()}catch(a){C(a instanceof Error?a.message:"error")}finally{A(!1)}};return(0,d.jsxs)("div",{className:"hr-form",style:{maxWidth:600},children:[(0,d.jsxs)("div",{className:"row gap-s",style:{marginBottom:12},children:[(0,d.jsx)("b",{className:"grow",children:g("hw2.tab.auth")}),(0,d.jsx)(aF.B,{size:"sm",align:"end",label:g("common.help"),title:g("hw2.help.how"),children:g("hw2.auth.hint")})]}),(0,d.jsxs)("div",{className:"stack",children:[(0,d.jsxs)("select",{className:"select",value:j,onChange:a=>k(a.target.value),"aria-label":g("hw2.auth.type"),children:[(0,d.jsx)("option",{value:"none",children:g("hw2.auth.none")}),(0,d.jsx)("option",{value:"bearer",children:"Bearer token"}),(0,d.jsx)("option",{value:"basic",children:"Basic"}),(0,d.jsx)("option",{value:"apikey",children:"API key"})]}),"bearer"===j&&(0,d.jsx)("input",{className:"input mono",value:l,placeholder:"{{token}}",onChange:a=>m(a.target.value),"aria-label":"Token"}),"basic"===j&&(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("input",{className:"input mono",style:{flex:1},value:n,placeholder:"{{user}}",onChange:a=>p(a.target.value),"aria-label":g("hw2.auth.user")}),(0,d.jsx)("input",{className:"input mono",style:{flex:1},value:r,placeholder:"{{passwd}}",onChange:a=>s(a.target.value),"aria-label":g("hw2.auth.pass")})]}),"apikey"===j&&(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("input",{className:"input mono",style:{flex:1},value:t,onChange:a=>u(a.target.value),"aria-label":g("hw2.auth.header")}),(0,d.jsx)("input",{className:"input mono",style:{flex:2},value:v,placeholder:"{{apiKey}}",onChange:a=>w(a.target.value),"aria-label":g("hw.session.value")})]}),c.length>1&&(0,d.jsx)(q.Tl,{checked:x,onChange:y,label:g("hw2.auth.all",{count:c.length})}),(0,d.jsx)("div",{className:"row gap-s",children:(0,d.jsx)("button",{className:"btn primary",disabled:z,onClick:()=>void D(),children:g("hw2.auth.apply")})}),B&&(0,d.jsx)("p",{className:"gx-note err",style:{margin:0},children:B})]})]})}function bf({ws:a,scan:b,sel:c}){let{t:e}=(0,o.s9)(),{o:f,tab:g,insp:h,res:i,fileOf:j,load:k,forget:l,setVar:m,runNamed:n,testsOf:p,bodyView:r,setBodyView:s,bodyFilter:t,setBodyFilter:u}=a;return"auth"===g?(0,d.jsx)(be,{objectId:f.id,file:j.current.get(c.id)??"",lines:(b.files.find(a=>a.relFile===j.current.get(c.id))?.requests??[c]).map(a=>a.line).reduce((a,b)=>b===c.line?[b,...a]:[...a,b],[]),onSaved:k}):"vars"===g?(0,d.jsx)("div",{className:"hr-pre",children:h?(0,d.jsx)(a8,{vars:h.vars,onSet:m,onForget:a=>void l(a),onRun:n}):(0,d.jsx)("p",{className:"muted",children:e("git.loading")})}):"request"===g?(0,d.jsxs)("div",{className:"hr-pre",children:[!i?.run&&h?.preview?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"row gap-s small res-mb",children:[(0,d.jsx)("b",{children:e("hw2.resolved")}),h.preview.unresolved.length>0&&(0,d.jsx)("span",{className:"chip warn",children:e("hw2.unresolved",{count:h.preview.unresolved.length})})]}),(0,d.jsxs)("div",{className:"mono",children:[(0,d.jsx)("b",{children:h.preview.method})," ",(0,d.jsx)(a1,{text:h.preview.url})]}),h.preview.headers.map((a,b)=>(0,d.jsxs)("div",{children:[(0,d.jsx)("b",{children:a.name}),": ",(0,d.jsx)(a1,{text:a.value})]},b)),void 0!==h.preview.body&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"eyebrow hw-eb",children:e("http.requestBody")}),(0,d.jsx)("pre",{children:(0,d.jsx)(a1,{text:h.preview.body})})]})]}):null,i?.run&&(0,d.jsx)("div",{className:"muted small res-mb",children:e("hw2.resolved")}),i?.run&&(0,d.jsxs)("div",{className:"mono",children:[(0,d.jsx)("b",{children:i.run.request.method})," ",i.run.request.url]}),i?.run&&i.run.request.headers.map((a,b)=>(0,d.jsxs)("div",{children:[(0,d.jsx)("b",{children:a.name}),": ",a.value]},b)),i?.run?null:!h?.preview&&c.headers.map((a,b)=>(0,d.jsxs)("div",{children:[(0,d.jsx)("b",{children:a.name}),": ",i?.run?a.value:(0,d.jsx)(a1,{text:a.value})]},b)),i?.run&&void 0!==i.run.request.body&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"eyebrow hw-eb",children:e("http.requestBody")}),(0,d.jsx)("pre",{children:(0,d.jsx)(a1,{text:i?.run?.request.body??c.body??""})})]}),c.script&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"eyebrow hw-eb",children:e("hw.script")}),(0,d.jsx)("p",{className:"muted small hw-hint2",children:e("hw.script.hint")}),(0,d.jsx)("pre",{children:c.script.trim()})]})]}):"tests"===g?(0,d.jsxs)("div",{className:"hr-form",children:[(0,d.jsx)(bc,{objectId:f.id,file:j.current.get(c.id)??"",line:c.line,onSaved:k}),(0,d.jsx)("div",{className:"eyebrow hw-eb2",children:e("hw.tests")}),(0,d.jsx)("div",{className:"hr-pre res-p0",children:i?.run?0===p(i).length&&0===i.run.logs.length?(0,d.jsx)("p",{className:"muted",children:e("hw.tests.none")}):(0,d.jsxs)(d.Fragment,{children:[p(i).map((a,b)=>(0,d.jsxs)("div",{className:`hw-test ${a.passed?"ok":"err"}`,children:[a.passed?(0,d.jsx)(aN.A,{size:14}):(0,d.jsx)(M.A,{size:14}),(0,d.jsx)("b",{children:a.name}),a.message&&(0,d.jsxs)("span",{className:"muted",children:[": ",a.message]})]},b)),i.run.logs.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"eyebrow hw-eb",children:e("hw.console")}),(0,d.jsx)("pre",{children:i.run.logs.join("\n")})]})]}):(0,d.jsx)("p",{className:"muted",children:e("http.noResponse")})})]}):i?i.error?(0,d.jsx)("div",{className:"gx-banner err hw-pre hw-m16",children:i.error}):"headers"===g?(0,d.jsx)("div",{className:"hr-pre",children:i.run.headers.map((a,b)=>(0,d.jsxs)("div",{children:[(0,d.jsx)("b",{children:a.name}),": ",a.value]},b))}):(0,d.jsxs)("div",{className:"hr-pre",children:[i.run.truncated&&(0,d.jsx)("div",{className:"gx-banner",children:e("http.truncated")}),i.run.binary?(0,d.jsx)("p",{className:"muted",children:e("http.binary",{type:i.run.contentType||"?",size:(0,E.zi)(i.run.size)})}):i.run.body?(()=>{let a=aH(i.run.body),b=t.trim(),f=b.startsWith("$"),g=null,h="";if(f&&void 0!==a)try{g=function(a,b){let c=[a];for(let a of function(a){let b=a.trim();if(!b.startsWith("$"))throw Error("A path starts with $");let c=[],d=1;for(;d<b.length;){if(b.startsWith("..",d)){let a=/^\.\.([\w$-]+)/.exec(b.slice(d));if(!a)throw Error("Expected a name after ..");c.push({k:"deep",v:a[1]}),d+=a[0].length;continue}if("."===b[d]){let a=/^\.(\*|[\w$-]+)/.exec(b.slice(d));if(!a)throw Error(`Unexpected "${b[d+1]??""}" after the dot`);c.push("*"===a[1]?{k:"all"}:{k:"key",v:a[1]}),d+=a[0].length;continue}if("["===b[d]){let a,e=b.indexOf("]",d);if(e<0)throw Error("A [ is not closed");let f=b.slice(d+1,e).trim();if("*"===f)c.push({k:"all"});else if(/^-?\d+$/.test(f))c.push({k:"idx",v:Number(f)});else if(a=/^(['"])(.*)\1$/.exec(f))c.push({k:"key",v:a[2]});else if(a=/^\?\(\s*@((?:\.[\w$-]+)*)\s*(==|!=|>=|<=|>|<)\s*(.+?)\s*\)$/.exec(f)){let b=a[3];try{b=JSON.parse(a[3].replace(/^'(.*)'$/,'"$1"'))}catch{}c.push({k:"filter",path:a[1],op:a[2],v:b})}else throw Error(`Cannot read [${f}]`);d=e+1;continue}throw Error(`Unexpected "${b[d]}"`)}return c}(b)){let b=[];for(let d of c)if("key"===a.k)d&&"object"==typeof d&&!Array.isArray(d)&&a.v in d&&b.push(d[a.v]);else if("idx"===a.k){if(Array.isArray(d)){let c=d[a.v<0?d.length+a.v:a.v];void 0!==c&&b.push(c)}}else if("all"===a.k)b.push(...a3(d));else if("deep"===a.k)!function a(b,c,d){for(let e of(b&&"object"==typeof b&&!Array.isArray(b)&&c in b&&d.push(b[c]),a3(b)))a(e,c,d)}(d,a.v,b);else for(let c of a3(d)){let d=c;for(let b of a.path.split(".").filter(Boolean))d=d&&"object"==typeof d?d[b]:void 0;void 0!==d&&a4(d,a.op,a.v)&&b.push(c)}c=b}return c}(a,b)}catch(a){h=a instanceof Error?a.message:"error"}let j=aM(i.run),k=b&&!f?j.split("\n").map((a,b)=>({l:a,n:b+1})).filter(a=>a.l.toLowerCase().includes(b.toLowerCase())):null;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)(q.DO,{className:"grow",value:t,onChange:u,placeholder:e("hw2.filter.placeholder"),label:e("hw2.filter")}),void 0!==a&&(0,d.jsx)(q.$q,{value:r,onChange:s,options:[{id:"tree",label:e("hw2.tree")},{id:"text",label:e("hw2.text")}]}),(0,d.jsx)(a2.WQ,{text:g?JSON.stringify(1===g.length?g[0]:g,null,2):i.run.body})]}),h&&(0,d.jsx)("p",{className:"gx-note err hw-my6",children:h}),f&&void 0===a&&(0,d.jsx)("p",{className:"muted small",children:e("hw2.noJson")}),g?0===g.length?(0,d.jsx)("p",{className:"muted small",children:e("hw2.filter.none")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"muted small hw-my6",children:e("hw2.filter.count",{count:g.length})}),"tree"===r?(0,d.jsx)(aO,{value:1===g.length?g[0]:g}):(0,d.jsx)("pre",{children:JSON.stringify(1===g.length?g[0]:g,null,2)})]}):k?0===k.length?(0,d.jsx)("p",{className:"muted small",children:e("hw2.filter.none")}):(0,d.jsx)("pre",{children:k.map(a=>`${String(a.n).padStart(4)} ${a.l}`).join("\n")}):void 0!==a&&"tree"===r?(0,d.jsxs)(d.Fragment,{children:[!c.named&&(0,d.jsx)("p",{className:"muted small",children:e("hw2.copyRef.need")}),(0,d.jsx)(aO,{value:a,refBase:c.named?`${c.named}.response.body`:void 0})]}):(0,d.jsx)("pre",{children:j})]})})():(0,d.jsx)("p",{className:"muted",children:e("http.emptyBody")})]}):(0,d.jsx)("p",{className:"gx-note",children:e("http.noResponse")})}function bg({ws:a,scan:b,onOpenVars:c}){let{t:e}=(0,o.s9)(),{o:f,env:g,sel:h,setSel:i,busy:j,missing:k,needsRun:l,tab:n,setTab:p,insp:r,note:s,fileOf:t,byName:u,run:v,res:w,testsOf:x}=a;return h?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"hr-reqhead",children:[(0,d.jsx)("span",{className:`hr-m ${aJ(h.method)}`,children:h.method}),(0,d.jsx)("code",{className:"hr-url grow",children:(0,d.jsx)(a1,{text:h.url})}),(0,d.jsx)(a0,{objectId:f.id,file:t.current.get(h.id)??"",index:h.index,env:g}),(0,d.jsxs)("button",{className:"btn primary sm",disabled:!!j||k.length>0,onClick:()=>void v(h),title:"Ctrl+Enter",children:[(0,d.jsx)(m.A,{size:14}),j===h.id?e("http.running"):e("http.run")]})]}),h.refs.length>0&&(0,d.jsx)("div",{className:"gx-banner",children:e("hw.uses",{names:h.refs.map(a=>`“${a}”`).join(", ")})}),k.length>0&&(0,d.jsxs)("div",{className:"gx-banner row gap-s wrap",children:[(0,d.jsx)(a$.A,{size:15}),(0,d.jsxs)("span",{className:"grow",children:[e("http.missing",{names:k.map(a=>`{{${a}}}`).join(", ")}),l.length?"":`. ${e("http.missing.hint")}`]}),l.map(a=>u.current.get(a)&&(0,d.jsx)("button",{className:"btn sm",disabled:!!j,onClick:()=>{let b=u.current.get(a);i(b),v(b)},children:e("hw.needsRun",{name:a})},a)),!l.length&&(0,d.jsx)("button",{className:"btn sm",onClick:c,children:e("hw.editVars")})]}),s&&(0,d.jsx)("div",{className:"gx-banner",children:s}),(0,d.jsxs)("div",{className:"row gap-s hw-bar",children:[(0,d.jsx)(q.$q,{value:n,onChange:p,options:[{id:"body",label:e("http.body")},{id:"headers",label:`${e("http.headers")}${w?.run?` \xb7 ${w.run.headers.length}`:""}`},{id:"tests",label:`${e("hw.tests")}${x(w).length?` \xb7 ${x(w).filter(a=>a.passed).length}/${x(w).length}`:""}`},{id:"request",label:e("http.request")},{id:"vars",label:`${e("hw2.tab.vars")}${r?.vars.length?` \xb7 ${r.vars.length}`:""}`},{id:"auth",label:e("hw2.tab.auth")}]}),(0,d.jsx)("span",{className:"grow"}),w?.run&&(0,d.jsxs)("span",{className:"row gap-s small",children:[w.run.set.length>0&&(0,d.jsx)("span",{className:"chip",title:w.run.set.join(", "),children:e("hw.kept",{names:w.run.set.join(", ")})}),(0,d.jsxs)("b",{className:`hr-st ${aK(w.run.status)}`,children:[w.run.status," ",w.run.statusText]}),(0,d.jsxs)("span",{className:"muted",children:[e("http.time",{ms:w.run.durationMs})," \xb7 ",(0,E.zi)(w.run.size)]})]})]}),w?.run?.scriptError&&(0,d.jsx)("div",{className:"gx-banner err",children:e("hw.script.error",{error:w.run.scriptError})}),w?.run?.scriptFile&&(0,d.jsx)("div",{className:"gx-banner",children:e("hw.script.file",{file:w.run.scriptFile})}),(0,d.jsx)("div",{className:"hr-out",children:(0,d.jsx)(bf,{ws:a,scan:b,sel:h})})]}):null}var bh=c(28521);let bi=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],bj=["Accept","Accept-Language","Authorization","Cache-Control","Content-Type","Cookie","If-None-Match","Origin","Referer","User-Agent","X-Api-Key","X-Requested-With"],bk=["application/json","application/x-www-form-urlencoded","application/xml","text/plain","text/html","multipart/form-data"],bl=["$uuid","$timestamp","$isoTimestamp","$randomInt"];function bm(a,b){let c=getComputedStyle(a),d=document.createElement("div");for(let a of["fontFamily","fontSize","lineHeight","letterSpacing","tabSize","paddingTop","paddingLeft","paddingRight","paddingBottom","borderTopWidth","borderLeftWidth","borderRightWidth","boxSizing"])d.style[a]=c[a];d.style.cssText+=";position:absolute;visibility:hidden;white-space:pre;top:0;left:0;width:"+a.clientWidth+"px",d.textContent=a.value.slice(0,b);let e=document.createElement("span");e.textContent="",d.appendChild(e),document.body.appendChild(d);let f=e.offsetLeft,g=e.offsetTop;return document.body.removeChild(d),{x:f-a.scrollLeft,y:g-a.scrollTop}}function bn({value:a,onChange:b,onSave:c,vars:f,named:g}){let h=(0,e.useRef)(null),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(0),[m,n]=(0,e.useState)({x:0,y:0}),o=(0,e.useMemo)(()=>f,[f]),p=(a,b)=>{let c=function(a,b,c,d){let e=a.lastIndexOf("\n",b-1)+1,f=a.slice(e,b),g=a.slice(0,e).split("\n"),h=/\{\{([\w.$-]*)$/.exec(f);if(h){let a=h[1].toLowerCase(),e=b-h[1].length,f=[...c.filter(a=>!a.name.includes(".response.")&&!a.name.startsWith("$")).map(a=>({label:a.name,insert:`${a.name}}}`,hint:"missing"===a.source?"—":a.secret||a.hidden?"••••":(a.value??"").slice(0,30)})),...d.map(a=>({label:`${a}.response.body.`,insert:`${a}.response.body.`,hint:"answer"})),...bl.map(a=>({label:a,insert:`${a}}}`,hint:"generated"}))].filter(b=>b.label.toLowerCase().includes(a)&&b.label.toLowerCase()!==a).slice(0,12);return f.length?{items:f,from:e,to:b}:null}let i=/^(content-type|accept)\s*:\s*([\w/+.-]*)$/i.exec(f);if(i){let a=i[2].toLowerCase(),c=bk.filter(b=>b.includes(a)&&b!==a).map(a=>({label:a,insert:a}));return c.length?{items:c,from:b-i[2].length,to:b}:null}let j=/^([A-Za-z-]+)$/.exec(f);if(j){let a=(g[g.length-2]??"").trim(),c=!a||/^#{3,}/.test(a)||a.startsWith("#")||a.startsWith("//"),d=!!a&&!c&&!/^\{|^\[|^</.test(a)&&!a.endsWith("%}"),f=j[1].toLowerCase();if(c){let a=bi.filter(a=>a.toLowerCase().startsWith(f)&&a.toLowerCase()!==f).map(a=>({label:a,insert:`${a} `}));return a.length?{items:a,from:e,to:b}:null}if(d){let a=bj.filter(a=>a.toLowerCase().startsWith(f)&&a.toLowerCase()!==f).map(a=>({label:a,insert:`${a}: `}));return a.length?{items:a,from:e,to:b}:null}}let k=/^#\s*@?(\w*)$/.exec(f);if(k&&k[0].length>1){let a=k[1].toLowerCase();if("name".startsWith(a)&&"name"!==a)return{items:[{label:"# @name",insert:"# @name ",hint:"name the request to use its answer"}],from:e,to:b}}return null}(a,b,o,g);if(j(c),l(0),c&&h.current){let a=bm(h.current,b);n({x:Math.min(a.x,Math.max(0,h.current.clientWidth-260)),y:a.y})}},q=c=>{if(!i||!h.current)return;b(a.slice(0,i.from)+c.insert+a.slice(i.to)),j(null);let d=i.from+c.insert.length;requestAnimationFrame(()=>{h.current?.focus(),h.current?.setSelectionRange(d,d)})};return(0,d.jsxs)("div",{className:"se",children:[(0,d.jsx)(bh.B,{value:a,path:"requests.http",areaRef:h,onChange:a=>{b(a);let c=h.current;c&&requestAnimationFrame(()=>p(a,c.selectionStart))},onClick:()=>j(null),onBlur:()=>setTimeout(()=>j(null),120),onKeyDown:b=>{if((b.ctrlKey||b.metaKey)&&"s"===b.key){b.preventDefault(),c();return}if((b.ctrlKey||b.metaKey)&&" "===b.key){b.preventDefault(),p(a,b.currentTarget.selectionStart);return}i&&("ArrowDown"===b.key?(b.preventDefault(),l(a=>(a+1)%i.items.length)):"ArrowUp"===b.key?(b.preventDefault(),l(a=>(a-1+i.items.length)%i.items.length)):"Enter"===b.key||"Tab"===b.key?(b.preventDefault(),q(i.items[k])):"Escape"===b.key&&(b.preventDefault(),j(null)))}}),i&&(0,d.jsx)("ul",{className:"se-pop",role:"listbox",style:{left:m.x+16,...m.y>(h.current?.clientHeight??400)-30*i.items.length-50?{bottom:(h.current?.clientHeight??0)-m.y-8}:{top:m.y+34}},children:i.items.map((a,b)=>(0,d.jsxs)("li",{role:"option","aria-selected":b===k,className:b===k?"on":"",onMouseDown:b=>{b.preventDefault(),q(a)},children:[(0,d.jsx)("span",{className:"mono",children:a.label}),a.hint&&(0,d.jsx)("i",{children:a.hint})]},a.label))})]})}var bo=c(48838),bp=c(8776);function bq({objectId:a,file:b,vars:c,onRun:f,status:g,onSaved:h}){let{t:i}=(0,o.s9)(),j=(0,q.dj)(),k=(0,bp.Wx)(),[l,n]=(0,e.useState)(null),[p,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(""),[u,v]=(0,e.useState)(!1),w=(0,e.useMemo)(()=>new Map(c.map(a=>[a.name,a])),[c]),x=(0,e.useMemo)(()=>new Map(b.requests.map(a=>[a.line,a.index])),[b]),y=async()=>{if(null!==p){v(!0),t("");try{await au(a,b.relFile,p),n(p),r(null),j(i("hw2.saved")),h()}catch(a){t(a instanceof Error?a.message:"")}finally{v(!1)}}},z=a=>{let b=a.split(/(\{\{[^}]+\}\})/g);return(0,d.jsx)(d.Fragment,{children:b.map((a,b)=>{if(!a.startsWith("{{"))return(0,d.jsx)(e.Fragment,{children:a},b);let c=a.slice(2,-2).trim(),f=w.get(c);return(0,d.jsx)("span",{className:`hs-var ${f?a6[f.source]:"miss"}`,title:(a=>{let b=w.get(a);if(!b)return"";let c=b.hidden?i("iv.hidden"):"missing"===b.source?"—":"dynamic"===b.source?i("iv.generated"):b.secret?"••••••••":b.value??"";return`${a} = ${c}
|
|
4
4
|
${a7(i,b.source,b.from)}`})(c),children:a},b)})})};if(s&&null===l)return(0,d.jsx)("p",{className:"gx-note err",style:{padding:16},children:s});if(null===l)return(0,d.jsx)("p",{className:"gx-note",children:i("git.loading")});let A=(p??l).split("\n");return(0,d.jsxs)("div",{className:"hs gx","data-gx-theme":k.theme,style:{"--g-tab":k.tabSize},children:[(0,d.jsxs)("div",{className:"hs-bar",children:[(0,d.jsx)("span",{className:"muted small",children:null!==p?i("hw2.dirty"):""}),(0,d.jsx)(aF.B,{size:"sm",label:i("common.help"),title:i("hw2.help.file"),children:i("hw2.fileHint")}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsx)(bo.i,{compact:!0}),null===p?(0,d.jsxs)("button",{className:"btn sm",onClick:()=>r(l),children:[(0,d.jsx)(a5.A,{size:14}),i("hw2.edit")]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>{r(null),t("")},children:[(0,d.jsx)(M.A,{size:14}),i("hw2.cancel")]}),(0,d.jsxs)("button",{className:"btn primary sm",disabled:u||p===l,onClick:()=>void y(),children:[(0,d.jsx)(a9.A,{size:14}),i("hw2.save")]})]})]}),s&&(0,d.jsx)("div",{className:"gx-banner err",children:s}),null!==p?(0,d.jsx)(bn,{value:p,onChange:r,onSave:()=>void y(),vars:c,named:b.requests.map(a=>a.named).filter(a=>!!a)}):(0,d.jsx)("div",{className:"hs-view mono",children:A.map((a,b)=>{let c=x.get(b+1),e=void 0!==c?g[c]:void 0;return(0,d.jsxs)("div",{className:`hs-line ${/^#{3,}/.test(a.trim())?"sep":""}`,children:[(0,d.jsx)("span",{className:"hs-gutter",children:void 0!==c?(0,d.jsx)("button",{className:`hs-run ${e??""}`,onClick:()=>f(c),"aria-label":i("hw2.runHere"),title:i("hw2.runHere"),children:(0,d.jsx)(m.A,{size:11})}):null}),(0,d.jsx)("span",{className:"hs-no",children:b+1}),(0,d.jsx)("span",{className:"hs-text",children:(a=>{if(/^#{3,}/.test(a.trim()))return(0,d.jsx)("span",{className:"hljs-section",children:a});if(/^\s*(#|\/\/)/.test(a))return(0,d.jsx)("span",{className:"hljs-comment",children:a});let b=/^(@[\w.-]+)(\s*=.*)$/.exec(a);if(b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"hljs-attr",children:b[1]}),z(b[2])]});let c=/^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)(\s.*)$/.exec(a);if(c)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"hljs-keyword",children:c[1]}),z(c[2])]});let e=/^([A-Za-z][\w-]*)(:.*)$/.exec(a);return e?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"hljs-attr",children:e[1]}),z(e[2])]}):z(a)})(a)||"\xa0"})]},b)})})]})}var br=c(44160),bs=c(68587);function bt({objectId:a,file:b,onBatch:c,stopOnFail:f,onStopOnFail:g}){let{t:h}=(0,o.s9)(),i=(0,q.dj)(),[j,k]=(0,e.useState)(!1),l=async(c,d)=>{try{let e=await n.FH.get(`/objects/${a}/http/docs?format=${c}${j?"":`&file=${encodeURIComponent(b)}`}`),f=URL.createObjectURL(new Blob([e.content],{type:e.mime})),g=document.createElement("a");g.href=f,g.download=e.filename,g.click(),setTimeout(()=>URL.revokeObjectURL(f),1e3),d(),i(h("hw2.export.done",{name:e.filename}))}catch(a){i(a instanceof Error?a.message:"error")}};return(0,d.jsx)(N.W1,{label:h("svc.more"),icon:(0,d.jsx)(K.A,{size:14}),children:a=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(br.A,{size:15}),hint:h("hw2.batch.hint.short"),onClick:()=>{a(),c()},children:h("hw2.batch.open")}),(0,d.jsx)(N.iz,{checked:f,onChange:g,hint:h("hw2.stopOnFail.hint"),children:h("hw.stopOnFail")}),(0,d.jsx)(N.MU,{}),(0,d.jsxs)(N.rX,{label:h("hw2.export"),children:[(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(P.A,{size:15}),onClick:()=>void l("markdown",a),children:h("hw2.export.md")}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(bs.A,{size:15}),onClick:()=>void l("postman",a),children:h("hw2.export.postman")}),(0,d.jsx)(N.iz,{checked:j,onChange:k,children:h("hw2.export.all")})]})]})})}function bu({ws:a,picked:b}){let{t:c}=(0,o.s9)(),{o:e,busy:f,runFile:g,setBatch:h,stopOnFail:i,setStopOnFail:j,fileInsp:k,fileTab:l,setFileTab:m,note:n,setVar:p,forget:r,runNamed:s,statusByIndex:t,load:u,refreshInsp:v,setSel:w,setTab:x,run:y,results:z,testsOf:A}=a;return(0,d.jsxs)("div",{className:"hw-file-view",children:[(0,d.jsxs)("div",{className:"hw-fhead",children:[(0,d.jsx)(aW.A,{size:20,className:"muted"}),(0,d.jsxs)("div",{className:"grow res-minw0",children:[(0,d.jsx)("h3",{className:"mono",title:b.relFile,children:b.relFile}),(0,d.jsxs)("p",{className:"muted small res-m0",children:[c("hw.fileInfo",{count:b.requests.length}),k?` \xb7 ${c("hw2.vars.count",{count:k.vars.length})}`:""]})]}),(0,d.jsxs)("button",{className:"btn primary sm",disabled:!!f,onClick:()=>void g(b),children:[(0,d.jsx)(aX.A,{size:14}),c("http.runFile")]}),(0,d.jsx)(bt,{objectId:e.id,file:b.relFile,onBatch:()=>h(!0),stopOnFail:i,onStopOnFail:j})]}),(0,d.jsx)(q.$q,{value:l,onChange:m,options:[{id:"requests",label:`${c("hw2.tab.requests")} \xb7 ${b.requests.length}`},{id:"vars",label:`${c("hw2.tab.vars")}${k?.vars.length?` \xb7 ${k.vars.length}`:""}`},{id:"source",label:c("hw2.tab.source")}]}),n&&(0,d.jsx)("div",{className:"gx-banner",children:n}),"vars"===l?k?(0,d.jsx)(a8,{vars:k.vars,onSet:p,onForget:a=>void r(a),onRun:s}):(0,d.jsx)("p",{className:"muted",children:c("git.loading")}):"source"===l?(0,d.jsx)("div",{className:"hw-src",children:(0,d.jsx)(bq,{objectId:e.id,file:b,vars:k?.vars??[],status:t(b),onSaved:()=>{u(),v()},onRun:a=>{let c=b.requests.find(b=>b.index===a);c&&(w(c),x("body"),y(c))}})}):(0,d.jsxs)("table",{className:"cm-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{}),(0,d.jsx)("th",{children:c("obj.f.name")}),(0,d.jsx)("th",{children:c("hw.fileTests")}),(0,d.jsx)("th",{children:c("hw.lastRun")})]})}),(0,d.jsx)("tbody",{children:b.requests.map(a=>{let b=z[a.id],e=A(b);return(0,d.jsxs)("tr",{className:"hw-trow",onClick:()=>{w(a),x("body")},children:[(0,d.jsx)("td",{children:(0,d.jsx)("span",{className:`hr-m ${aJ(a.method)}`,children:a.method})}),(0,d.jsxs)("td",{children:[(0,d.jsx)("b",{children:a.name}),(0,d.jsx)("div",{className:"muted small mono hw-url",children:(0,d.jsx)(a1,{text:a.url})})]}),(0,d.jsx)("td",{children:e.length?(0,d.jsxs)("span",{className:`hr-st ${e.every(a=>a.passed)?"ok":"err"}`,children:[e.filter(a=>a.passed).length,"/",e.length]}):(0,d.jsx)("span",{className:"muted small",children:"—"})}),(0,d.jsx)("td",{children:b?b.run?(0,d.jsxs)("span",{className:`hr-st ${aL(b)}`,children:[(0,d.jsx)("b",{children:b.run.status})," ",(0,d.jsxs)("span",{className:"muted",children:[b.run.durationMs," ms"]})]}):(0,d.jsx)("span",{className:"hr-st err",title:b.error,children:"error"}):(0,d.jsx)("span",{className:"muted small",children:c("hw.notRun")})})]},a.id)})})]})]})}function bv({object:a,onOpenVars:b,pane:c="requests",onGoRequests:f}){let{t:g}=(0,o.s9)(),h=function(a){let{t:b}=(0,o.s9)(),{refresh:c}=(0,p.o0)(),[d,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(""),[i,j]=(0,e.useState)(a.config.env??""),[k,l]=(0,e.useState)(""),[m,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(new Set),[v,w]=(0,e.useState)({}),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)([]),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)("body"),[F,G]=(0,e.useState)("requests"),[H,I]=(0,e.useState)("tree"),[J,K]=(0,e.useState)(""),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(null),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(!1),[V,W]=(0,e.useState)([]),[X,Y]=(0,e.useState)(null),[Z,$]=(0,e.useState)(null),_=(0,e.useCallback)(()=>n.FH.get(`/objects/${a.id}/http/history`).then(W).catch(()=>void 0),[a.id]),[aa,ab]=(0,e.useState)({globals:{},responses:[]}),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(""),[ag,ah]=(0,e.useState)(null),ai=(0,e.useRef)(new Map),aj=(0,e.useRef)(new Map),ak=(0,e.useCallback)(()=>n.FH.get(`/objects/${a.id}/http/session`).then(ab).catch(()=>void 0),[a.id]),al=(0,e.useCallback)(()=>{h(""),n.FH.get(`/objects/${a.id}/http`).then(b=>{f(b),ai.current=new Map(b.files.flatMap(a=>a.requests.map(b=>[b.id,a.relFile]))),aj.current=new Map(b.files.flatMap(a=>a.requests.filter(a=>a.named).map(a=>[a.named,a]))),q(a=>a&&b.files.some(b=>b.relFile===a)?a:b.files[0]?.relFile??null),u(a=>a.size?a:new Set(b.files.slice(0,1).map(a=>a.relFile))),s(a=>a&&ai.current.has(a.id)?b.files.flatMap(a=>a.requests).find(b=>b.id===a.id)??null:null);let c=a.config.env??"";j(a=>a&&b.environments.includes(a)?a:c&&b.environments.includes(c)?c:b.environments[0]??"")}).catch(a=>h(a instanceof Error?a.message:b("git.loadError")))},[a.id,a.updated_at]);(0,e.useCallback)(()=>{if(!r){A([]),C([]);return}n.FH.get(`/objects/${a.id}/http/describe?file=${encodeURIComponent(ai.current.get(r.id)??"")}&index=${r.index}${i?`&env=${encodeURIComponent(i)}`:""}`).then(a=>{A(a.missing),C(a.needsRun??[])}).catch(()=>{A([]),C([])})},[a.id,a.updated_at,r?.id,i]);let am=(0,e.useCallback)((b,c)=>n.FH.get(`/objects/${a.id}/http/variables?${[b?`file=${encodeURIComponent(b)}`:"",void 0!==c?`index=${c}`:"",i?`env=${encodeURIComponent(i)}`:""].filter(Boolean).join("&")}`),[a.id,i]),an=(0,e.useCallback)(()=>{r?am(ai.current.get(r.id),r.index).then(M).catch(()=>M(null)):M(null),m&&am(m).then(O).catch(()=>O(null))},[am,r?.id,m]),ao=(0,e.useCallback)(async b=>{let c,d=ai.current.get(b.id);if(!d)return{error:"",at:Date.now()};y(b.id);try{c={run:await n.FH.post(`/objects/${a.id}/http/run`,{file:d,index:b.index,env:i||void 0}),at:Date.now()}}catch(a){c={error:a instanceof Error?a.message:"error",at:Date.now()}}return w(a=>({...a,[b.id]:c})),y(null),_(),ak(),c},[a.id,i,ak,_]),ap=async a=>{for(let c of(af(""),a.requests)){s(c);let a=await ao(c);if(ac&&"err"===aL(a)){af(b("hw.stopped",{name:c.name}));break}}},aq=(0,e.useMemo)(()=>(d?.files??[]).map(a=>({...a,requests:a.requests.filter(b=>!k||`${b.name} ${b.url} ${b.method}`.toLowerCase().includes(k.toLowerCase())||a.relFile.toLowerCase().includes(k.toLowerCase()))})).filter(a=>a.requests.length),[d,k]),ar=d?.files.find(a=>a.relFile===m)??null,as=r?v[r.id]:void 0,[at,au]=(0,e.useState)(""),[av,aw]=(0,e.useState)(""),[ax,ay]=(0,e.useState)(!1),az=Object.entries(aa.globals);return{o:a,scan:d,err:g,env:i,setEnv:j,q:k,setQ:l,file:m,setFile:q,sel:r,setSel:s,open:t,setOpen:u,results:v,busy:x,missing:z,needsRun:B,tab:D,setTab:E,fileTab:F,setFileTab:G,bodyView:H,setBodyView:I,bodyFilter:J,setBodyFilter:K,insp:L,fileInsp:N,creating:R,setCreating:S,batch:T,setBatch:U,hist:V,setHist:W,histSel:X,setHistSel:Y,cmp:Z,setCmp:$,loadHistory:_,loadSession:ak,session:aa,setSession:ab,stopOnFail:ac,setStopOnFail:ad,note:ae,confirm:ag,setConfirm:ah,fileOf:ai,byName:aj,load:al,run:ao,runFile:ap,refreshInsp:an,files:aq,picked:ar,res:as,summary:a=>{let b=a.requests.filter(a=>v[a.id]);return b.length?`${b.filter(a=>"ok"===aL(v[a.id])).length}/${a.requests.length}`:null},testsOf:a=>a?.run?.tests??[],forget:b=>n.FH.del(`/objects/${a.id}/http/session${b?`?name=${encodeURIComponent(b)}`:""}`).then(ab).catch(()=>void 0),newName:at,setNewName:au,newValue:av,setNewValue:aw,adding:ax,setAdding:ay,setValue:()=>{let b=at.trim();if(!b)return;let d=a.config,e={...d.variables??{}};e[aI]={...e[aI]??{},[b]:{value:av}},n.FH.patch(`/objects/${a.id}`,{config:{folder:d.folder,env:d.env,variables:e}}).then(()=>(au(""),aw(""),ay(!1),j(aI),c(["objects"]))).catch(()=>void 0)},kept:az,setVar:(b,c)=>n.FH.post(`/objects/${a.id}/http/session`,{name:b,value:c}).then(ab).catch(()=>void 0),runNamed:a=>{let b=aj.current.get(a);b&&(q(ai.current.get(b.id)??m),s(b),E("body"),ao(b))},statusByIndex:a=>Object.fromEntries(a.requests.map(a=>[a.index,aL(v[a.id])]))}}(a),{scan:i,err:j,env:k,file:l,setFile:m,sel:q,setSel:r,picked:s,batch:t,setBatch:u,creating:v,setCreating:w,setFileTab:x,setOpen:y,load:z,loadSession:A,loadHistory:B}=h;return j?(0,d.jsx)("p",{className:"gx-note err hw-pad",children:j}):i?"history"===c?(0,d.jsx)(aU,{ws:h,scan:i,onGoRequests:f}):(0,d.jsxs)(at,{list:(0,d.jsx)(aZ,{ws:h,scan:i,onOpenVars:b}),children:[(0,d.jsx)("section",{className:"hr-detail",children:q?(0,d.jsx)(bg,{ws:h,scan:i,onOpenVars:b}):s?(0,d.jsx)(bu,{ws:h,picked:s}):(0,d.jsx)("div",{className:"gx-empty",children:(0,d.jsx)("p",{children:g("hw.pickFile")})})}),t&&s&&(0,d.jsx)(aG,{objectId:a.id,file:s,env:k,onClose:()=>u(!1),onDone:()=>{A(),B()}}),v&&(0,d.jsx)(aD,{objectId:a.id,files:i.files,defaultFile:l,onClose:()=>w(!1),onCreated:a=>{w(!1),m(a),r(null),x("source"),y(b=>new Set(b).add(a)),z()}}),(0,d.jsx)(aT,{ws:h})]}):(0,d.jsx)("p",{className:"gx-note",children:g("git.loading")})}var bw=c(61060);function bx({object:a}){let{t:b}=(0,o.s9)(),{refresh:c}=(0,p.o0)(),f=(0,q.dj)(),g=a.config,h=(0,e.useMemo)(()=>g.variables??{},[a.updated_at]),[i,j]=(0,e.useState)(h),[k,l]=(0,e.useState)(null),[m,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(""),u=JSON.stringify(i)!==JSON.stringify(h),v=async()=>{r(!0),t("");try{await n.FH.patch(`/objects/${a.id}`,{config:{folder:g.folder,env:g.env,variables:Object.keys(i).length?i:void 0}}),await c(["objects"]),f(b("obj.saved"))}catch(a){t(a instanceof Error?a.message:b("edit.saveFailed"))}finally{r(!1)}};return(0,d.jsxs)("div",{className:"oc",children:[(0,d.jsxs)("div",{className:"oc-form",children:[(0,d.jsx)(bw.W,{value:i,onChange:j,fileEnvs:k?Object.keys(k.fileVars).filter(a=>"$shared"!==a):[],fileVars:k?.fileVars,used:k?.used,fileDefined:k?.fileDefined,setBy:k?.setBy}),s&&(0,d.jsx)("p",{className:"gx-note err",children:s})]}),(0,d.jsxs)("div",{className:"savebar oc-bar",children:[(0,d.jsx)("span",{className:"muted small grow",children:u?b("ow.cfg.dirty"):b("ow.cfg.saved")}),(0,d.jsx)("button",{className:"btn ghost",disabled:!u||m,onClick:()=>j(h),children:b("ow.cfg.discard")}),(0,d.jsx)("button",{className:"btn primary",disabled:!u||m,onClick:()=>void v(),children:b("ow.cfg.save")})]})]})}let by=["SELECT","FROM","WHERE","AND","OR","NOT","IN","IS NULL","IS NOT NULL","LIKE","BETWEEN","EXISTS","JOIN","INNER JOIN","LEFT JOIN","RIGHT JOIN","FULL JOIN","CROSS JOIN","ON","USING","GROUP BY","ORDER BY","HAVING","LIMIT","OFFSET","DISTINCT","AS","ASC","DESC","UNION","UNION ALL","CASE","WHEN","THEN","ELSE","END","COUNT","SUM","AVG","MIN","MAX","COALESCE","CAST","INSERT INTO","VALUES","UPDATE","SET","DELETE FROM","CREATE TABLE","ALTER TABLE","DROP TABLE","NULL","TRUE","FALSE","WITH","TOP"],bz=new Set(["where","on","join","inner","left","right","full","cross","group","order","limit","set","values","using","union","having","offset","natural","outer","select","and","or"]),bA={mysql:"mysql",postgresql:"postgresql",sqlite:"sqlite",mssql:"transactsql"};async function bB(a,b){let{format:d}=await c.e(950).then(c.bind(c,3950));return d(a,{language:bA[b]??"sql",keywordCase:"upper",tabWidth:2,linesBetweenQueries:1})}let bC=a=>a.replace(/^["`[]|["`\]]$/g,""),bD=/^[a-z_][a-z0-9_$]*$/,bE=(a,b)=>bD.test(b)?b:"mysql"===a?`\`${b}\``:"mssql"===a?`[${b}]`:`"${b}"`,bF=new Set(["public","dbo","main"]);function bG(a,b){let c=[],d=/\b(?:from|join|update|into)\s+((?:["`[]?[\w$]+["`\]]?\.)?["`[]?[\w$]+["`\]]?)(?:\s+(?:as\s+)?([A-Za-z_]\w*))?/gi;for(let e=d.exec(a);e;e=d.exec(a)){let a=e[1].split(".").map(bC),d=a[a.length-1].toLowerCase(),f=a.length>1?a[0].toLowerCase():"",g=b.find(a=>a.name.toLowerCase()===d&&(!f||a.schema.toLowerCase()===f));if(!g)continue;let h=e[2]&&!bz.has(e[2].toLowerCase())?e[2]:void 0;c.push({table:g,alias:h})}return c}let bH=(a,b)=>+!a.toLowerCase().startsWith(b),bI=(a,b)=>"mysql"===a?`\`${b.replace(/`/g,"``")}\``:"mssql"===a?`[${b.replace(/]/g,"]]")}]`:`"${b.replace(/"/g,'""')}"`,bJ=a=>{let b=null==a?"":String(a);return/[",\n\r]/.test(b)?`"${b.replace(/"/g,'""')}"`:b},bK=a=>[a.columns.map(a=>bJ(a.name)).join(","),...a.rows.map(a=>a.map(bJ).join(","))].join("\n");var bL=c(72836),bM=c(6289),bN=c(33262),bO=c(75995);function bP({value:a,onChange:b,areaRef:c,ctx:f,label:g,onKeyDown:h}){let[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(0),[m,n]=(0,e.useState)({x:0,y:0}),o=(0,e.useRef)(f);o.current=f;let p=(a,b,d=!1)=>{let e=function(a,b,c,d=!1){let e=c.schema?.engine??"postgresql",f=c.schema?.tables??[],g=a.slice(0,b),h=/[\w$]*$/.exec(g)[0],i=b-h.length,j=g.slice(0,i),k=g.lastIndexOf("\n")+1;if(/--/.test(g.slice(k))||(g.split("'").length-1)%2==1||g.lastIndexOf("/*")>g.lastIndexOf("*/"))return null;let l=h.toLowerCase(),m=a.slice(Math.max(a.lastIndexOf(";",b-1)+1,0),(()=>{let c=a.indexOf(";",b);return c<0?a.length:c})()),n=/(["`[]?[\w$]+["`\]]?)\.$/.exec(j),o=a=>{let c=a.filter(a=>!l||a.label.toLowerCase().includes(l)&&a.label.toLowerCase()!==l).sort((a,b)=>bH(a.label,l)-bH(b.label,l)).slice(0,14);return c.length?{items:c,from:i,to:b}:null};if(n){let a=bC(n[1]).toLowerCase(),b=f.filter(b=>b.schema.toLowerCase()===a);if(b.length)return o(b.map(a=>({label:a.name,insert:bE(e,a.name),hint:"view"===a.type?"view":"table"})));let d=bG(m,f).find(b=>(b.alias??"").toLowerCase()===a||b.table.name.toLowerCase()===a);if(!d)return null;let g=c.cols(d.table);return g?o(g.map(a=>({label:a,insert:bE(e,a),hint:d.table.name}))):(c.need(d.table),null)}if(!h&&!d)return null;let p=/\b(from|join|update|into|table)\s+$/i.test(j),q=a=>({label:a.name,insert:"sqlite"===e||"mysql"===e||bF.has(a.schema)?bE(e,a.name):`${bE(e,a.schema)}.${bE(e,a.name)}`,hint:"sqlite"===e||"mysql"===e||bF.has(a.schema)?"view"===a.type?"view":void 0:a.schema}),r=[...new Set(f.map(a=>a.schema))].filter(a=>"sqlite"!==e&&"mysql"!==e&&f.some(b=>b.schema===a)),s=[];if(!p)for(let a of bG(m,f)){let b=c.cols(a.table);if(!b){c.need(a.table);continue}for(let c of b)s.some(a=>a.label===c)||s.push({label:c,insert:bE(e,c),hint:a.alias??a.table.name})}for(let a of f)s.push(q(a));for(let a of r)s.push({label:a,insert:bE(e,a),hint:"schema"});if(!p){let a=""!==h&&h===h.toLowerCase();for(let b of by)s.push({label:a?b.toLowerCase():b,insert:`${a?b.toLowerCase():b} `,hint:"SQL"})}return o(s)}(a,b,o.current,d);j(e),l(0);let f=c.current;if(e&&f){let a=bm(f,b);n({x:Math.min(a.x,Math.max(0,f.clientWidth-260)),y:a.y})}},q=d=>{let e=c.current;if(!i||!e)return;b(a.slice(0,i.from)+d.insert+a.slice(i.to)),j(null);let f=i.from+d.insert.length;requestAnimationFrame(()=>{e.focus(),e.setSelectionRange(f,f)})},r=c.current?.clientHeight??400;return(0,d.jsxs)("div",{className:"se",children:[(0,d.jsx)(bh.B,{value:a,path:"query.sql",areaRef:c,label:g,onChange:a=>{b(a);let d=c.current;d&&requestAnimationFrame(()=>p(a,d.selectionStart))},onClick:()=>j(null),onBlur:()=>setTimeout(()=>j(null),120),onKeyDown:b=>{if(h(b),!b.defaultPrevented){if((b.ctrlKey||b.metaKey)&&" "===b.key){b.preventDefault(),p(a,b.currentTarget.selectionStart,!0);return}i&&("ArrowDown"===b.key?(b.preventDefault(),l(a=>(a+1)%i.items.length)):"ArrowUp"===b.key?(b.preventDefault(),l(a=>(a-1+i.items.length)%i.items.length)):"Enter"===b.key||"Tab"===b.key?(b.preventDefault(),q(i.items[k])):"Escape"===b.key&&(b.preventDefault(),j(null)))}}}),i&&(0,d.jsx)("ul",{className:"se-pop",role:"listbox",style:{left:m.x+16,...m.y>r-30*i.items.length-50?{bottom:r-m.y-8}:{top:m.y+34}},children:i.items.map((a,b)=>(0,d.jsxs)("li",{role:"option","aria-selected":b===k,className:b===k?"on":"",onMouseDown:b=>{b.preventDefault(),q(a)},children:[(0,d.jsx)("span",{className:"mono",children:a.label}),a.hint&&(0,d.jsx)("i",{children:a.hint})]},`${a.label}-${b}`))})]})}function bQ({result:a}){let{t:b}=(0,o.s9)(),c=(0,q.dj)(),[f,g]=(0,e.useState)(500),h=a=>{navigator.clipboard?.writeText(a),c(b("db.copied"))},i=0===a.columns.length;return(0,d.jsxs)("div",{className:"dbr",children:[(0,d.jsxs)("div",{className:"dbr-bar small",children:[(0,d.jsx)("b",{children:i?b("db.result.affected",{count:a.affected??0}):b("db.result.rows",{count:a.rows.length})}),(0,d.jsxs)("span",{className:"muted",children:["\xb7 ",a.ms," ms"]}),a.truncated&&(0,d.jsx)("span",{className:"db-trunc",children:b("db.result.truncated",{count:a.rows.length})}),(0,d.jsx)("span",{className:"grow"}),!i&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>h(bK(a)),children:[(0,d.jsx)(ak.A,{size:13}),"CSV"]}),(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>h(JSON.stringify(a.rows.map(b=>Object.fromEntries(a.columns.map((a,c)=>[a.name,b[c]]))),null,2)),children:[(0,d.jsx)(ak.A,{size:13}),"JSON"]}),(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>{let b=document.createElement("a");b.href=URL.createObjectURL(new Blob([bK(a)],{type:"text/csv"})),b.download=`query-${new Date().toISOString().slice(0,19).replace(/[:T]/g,"-")}.csv`,b.click(),setTimeout(()=>URL.revokeObjectURL(b.href),2e3)},children:[(0,d.jsx)(al.A,{size:13}),b("db.download")]})]})]}),i?null:0===a.rows.length?(0,d.jsx)("p",{className:"muted small db-note",children:b("db.result.empty")}):(0,d.jsxs)("div",{className:"dbr-scroll",children:[(0,d.jsxs)("table",{className:"dbr-table",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"n",children:"#"}),a.columns.map((b,c)=>(0,d.jsx)("th",{className:"number"==typeof a.rows.find(a=>null!==a[c])?.[c]?"num":"",children:b.name},c))]})}),(0,d.jsx)("tbody",{children:a.rows.slice(0,f).map((a,b)=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"n",children:b+1}),a.map((a,b)=>(0,d.jsx)("td",{className:"number"==typeof a?"num":"",title:"string"==typeof a&&a.length>40?a:void 0,children:null===a?(0,d.jsx)("i",{className:"db-null",children:"NULL"}):String(a)},b))]},b))})]}),a.rows.length>f&&(0,d.jsx)("button",{className:"btn sm dbr-more",onClick:()=>g(a=>a+500),children:b("db.result.more",{count:Math.min(500,a.rows.length-f)})})]})]})}function bR({cfg:a}){let{t:b}=(0,o.s9)();return!1!==a.readOnly?(0,d.jsxs)("span",{className:"db-badge ro",title:b("db.readonly.on"),children:[(0,d.jsx)(bL.A,{size:12}),b("db.readonly.badge")]}):(0,d.jsxs)("span",{className:"db-badge rw",title:b("db.readonly.off"),children:[(0,d.jsx)(bM.A,{size:12}),b("db.write.badge")]})}function bS({o:a,sql:b,setSql:c,area:e,run:f,format:g,ctx:h,busy:i,result:j,error:l,schema:n,database:p,setDatabase:q,saved:r,onSave:s,onUse:t,onManage:u}){let{t:v}=(0,o.s9)(),w=(0,bp.Wx)(),x=a.config,y=n?.databases??[];return(0,d.jsxs)("div",{className:"dbq",children:[(0,d.jsxs)("div",{className:"dbq-bar",children:[(0,d.jsxs)("button",{className:"btn primary sm",disabled:i||!b.trim(),onClick:f,title:"Ctrl/⌘ + Enter",children:[i?(0,d.jsx)(k.A,{size:14,className:"spin"}):(0,d.jsx)(m.A,{size:14}),i?v("db.running"):v("db.run")]}),(0,d.jsxs)("button",{className:"btn sm",disabled:!b.trim(),onClick:s,children:[(0,d.jsx)(a9.A,{size:14}),v("db.save")]}),(0,d.jsxs)("button",{className:"btn sm",disabled:!b.trim(),onClick:g,title:v("db.format.hint"),children:[(0,d.jsx)(bN.A,{size:14}),v("db.format")]}),(0,d.jsx)(N.W1,{label:v("db.saved"),icon:(0,d.jsx)(bO.A,{size:14}),children:a=>(0,d.jsxs)(d.Fragment,{children:[0===r.length?(0,d.jsx)("p",{className:"muted small db-menu-none",children:v("db.saved.none")}):(0,d.jsx)(N.rX,{label:v("db.saved.title"),children:r.map(b=>(0,d.jsx)(N.Dr,{hint:b.sql.replace(/\s+/g," ").slice(0,70),onClick:()=>{a(),t(b.sql,b.database)},children:b.name},b.id))}),(0,d.jsx)(N.MU,{}),(0,d.jsx)(N.Dr,{icon:(0,d.jsx)(a5.A,{size:14}),onClick:()=>{a(),u()},children:v("db.saved.manage")})]})}),y.length>1&&(0,d.jsx)("select",{className:"select db-pick",value:p??n?.database??"",onChange:a=>q(a.target.value),"aria-label":v("db.database.pick"),title:v("db.database.pick"),children:y.map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsx)(bR,{cfg:x}),(0,d.jsxs)(aF.B,{size:"sm",align:"end",label:v("common.help"),title:v("db.help.title"),children:[(0,d.jsx)("p",{children:v("db.help.1")}),(0,d.jsx)("p",{children:v("db.help.2")}),(0,d.jsx)("p",{children:v("db.help.3")}),(0,d.jsx)("p",{children:v("db.help.4")})]}),(0,d.jsx)(bo.i,{compact:!0})]}),(0,d.jsx)("div",{className:"db-ed gx","data-gx-theme":w.theme,style:{"--g-tab":w.tabSize},children:(0,d.jsx)(bP,{value:b,onChange:c,areaRef:e,ctx:h,label:v("db.editor"),onKeyDown:a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key?(a.preventDefault(),f()):a.altKey&&a.shiftKey&&"f"===a.key.toLowerCase()&&(a.preventDefault(),g())}})}),(0,d.jsx)("div",{className:"dbq-res",children:!i||j||l?l?(0,d.jsx)("div",{className:"gx-note err db-err",children:l}):j?(0,d.jsx)(bQ,{result:j}):(0,d.jsx)("p",{className:"muted small db-note",children:v("db.result.none")}):(0,d.jsxs)("p",{className:"muted small db-note",children:[(0,d.jsx)(k.A,{size:14,className:"spin"})," ",v("db.running")]})})]})}var bT=c(94220),bU=c(23970);function bV({o:a,schema:b,err:c,loading:f,onReload:g,database:h,setDatabase:i,onOpen:j}){let{t:l}=(0,o.s9)(),n=(0,q.dj)(),[p,r]=(0,e.useState)(""),[s,t]=(0,e.useState)({}),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(""),A=b?.databases??[],B=h??b?.database,C=(0,e.useMemo)(()=>{let a=p.trim().toLowerCase(),c=new Map;for(let d of b?.tables??[])(!a||d.name.toLowerCase().includes(a))&&(c.get(d.schema)??c.set(d.schema,[]).get(d.schema)).push(d);return[...c]},[b,p]),D=1===C.length,F=(0,e.useMemo)(()=>[...new Set((b?.tables??[]).map(a=>a.schema))],[b]),G=F.every(a=>!1!==s[a]);return(0,d.jsx)(at,{gap:!0,list:(0,d.jsxs)("aside",{className:"dbs-list",children:[(0,d.jsxs)("div",{className:"dbs-head",children:[A.length>1&&(0,d.jsx)("select",{className:"select",value:B??"",onChange:a=>{v(null),i(a.target.value)},"aria-label":l("db.database.pick"),children:A.map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsxs)("div",{className:"dbs-tools",children:[(0,d.jsx)(q.DO,{className:"grow",value:p,onChange:r,placeholder:l("db.schema.filter"),label:l("db.schema.filter")}),F.length>1&&(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>{let a;return a=!G,t(Object.fromEntries(F.map(b=>[b,a])))},"aria-label":G?l("db.schema.collapseAll"):l("db.schema.expandAll"),title:G?l("db.schema.collapseAll"):l("db.schema.expandAll"),children:G?(0,d.jsx)(bT.A,{size:14}):(0,d.jsx)(bU.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:g,"aria-label":l("db.schema.refresh"),title:l("db.schema.refresh"),children:(0,d.jsx)(aV.A,{size:14,className:f?"spin":""})})]})]}),(0,d.jsx)("div",{className:"dbs-tree",children:c?(0,d.jsx)("p",{className:"gx-note err",children:c}):!b&&f?(0,d.jsxs)("p",{className:"muted small db-note",children:[(0,d.jsx)(k.A,{size:14,className:"spin"})," ",l("db.schema.loading")]}):0===C.length?(0,d.jsx)("p",{className:"muted small db-note",children:l("db.schema.empty")}):C.map(([a,b])=>(0,d.jsxs)("div",{children:[!D&&(0,d.jsxs)("button",{className:"dbs-group",onClick:()=>t(b=>({...b,[a]:!1===b[a]})),children:[!1===s[a]?(0,d.jsx)(J.A,{size:14}):(0,d.jsx)(I.A,{size:14}),a,(0,d.jsx)("span",{className:"muted",children:b.length})]}),(D||!1!==s[a])&&b.map(a=>(0,d.jsxs)("button",{className:`dbs-table ${u?.schema===a.schema&&u.name===a.name?"on":""}`,onClick:()=>v(a),onDoubleClick:()=>j(a),children:["view"===a.type?(0,d.jsx)(T.A,{size:14}):(0,d.jsx)(br.A,{size:14}),(0,d.jsx)("span",{className:"nm",children:a.name}),void 0!==a.rows&&(0,d.jsxs)("span",{className:"muted",children:["≈",(0,E._E)(a.rows)]})]},`${a.schema}.${a.name}`))]},a))})]}),children:(0,d.jsx)("section",{className:"dbs-detail",children:u?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"row gap-s wrap",children:[(0,d.jsxs)("h3",{className:"mono res-m0",children:["main"!==u.schema&&b?.engine!=="mysql"?`${u.schema}.`:"",u.name]}),(0,d.jsxs)("span",{className:"muted small",children:["view"===u.type?l("db.schema.view"):l("db.schema.table"),void 0!==u.rows?` \xb7 ${l("db.rows.est",{count:(0,E._E)(u.rows)})}`:""]}),(0,d.jsx)("span",{className:"grow"}),(0,d.jsxs)("button",{className:"btn primary sm",onClick:()=>j(u),children:[(0,d.jsx)(m.A,{size:14}),l("db.select100")]}),(0,d.jsxs)("button",{className:"btn sm",onClick:()=>{navigator.clipboard?.writeText(u.name),n(l("db.copied"))},children:[(0,d.jsx)(ak.A,{size:14}),l("db.copyName")]})]}),y?(0,d.jsx)("p",{className:"gx-note err",children:y}):w?(0,d.jsxs)("table",{className:"dbr-table dbs-cols",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{children:l("db.col.name")}),(0,d.jsx)("th",{children:l("db.col.type")}),(0,d.jsx)("th",{children:l("db.col.null")}),(0,d.jsx)("th",{children:l("db.col.key")}),(0,d.jsx)("th",{children:l("db.col.default")})]})}),(0,d.jsx)("tbody",{children:w.map(a=>(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"mono",children:a.name}),(0,d.jsx)("td",{className:"mono",children:a.type}),(0,d.jsx)("td",{children:a.nullable?l("db.yes"):(0,d.jsx)("b",{children:l("db.no")})}),(0,d.jsx)("td",{children:a.key?(0,d.jsx)("span",{className:"db-key",children:a.key}):""}),(0,d.jsx)("td",{className:"mono",children:a.default??(0,d.jsx)("i",{className:"db-null",children:"NULL"})})]},a.name))})]}):(0,d.jsxs)("p",{className:"muted small db-note",children:[(0,d.jsx)(k.A,{size:14,className:"spin"})," ",l("db.schema.loading")]})]}):(0,d.jsx)("p",{className:"muted db-note",children:l("db.schema.pick")})})})}function bW({onClose:a,onSave:b,title:c,initial:f=""}){let{t:g}=(0,o.s9)(),[h,i]=(0,e.useState)(f);return(0,d.jsxs)(q.aF,{title:c??g("db.save"),onClose:a,children:[(0,d.jsxs)("div",{className:"field",children:[(0,d.jsx)("label",{children:g("db.saved.name")}),(0,d.jsx)("input",{className:"input",autoFocus:!0,value:h,onChange:a=>i(a.target.value),onKeyDown:a=>{"Enter"===a.key&&h.trim()&&b(h.trim())}})]}),(0,d.jsxs)("div",{className:"row res-end",children:[(0,d.jsx)("button",{className:"btn ghost",onClick:a,children:g("common.cancel")}),(0,d.jsx)("button",{className:"btn primary",disabled:!h.trim(),onClick:()=>b(h.trim()),children:g(c?"common.saveChanges":"db.save")})]})]})}function bX({o:a,hist:b,saved:c,sql:f,database:g,onUse:h,onChanged:i}){let{t:j}=(0,o.s9)(),k=(0,q.dj)(),[l,m]=(0,e.useState)(null),[p,r]=(0,e.useState)(null),s=a=>k(a instanceof Error?a.message:"","err"),t=async()=>{try{await n.FH.del(`/objects/${a.id}/db/history`),i()}catch(a){s(a)}},u=async b=>{await n.FH.del(`/objects/${a.id}/db/saved/${b}`),i()},v=async(b,c,d)=>{try{await n.FH.patch(`/objects/${a.id}/db/saved/${b}`,c),d&&k(d),i()}catch(a){s(a)}};return(0,d.jsxs)("div",{className:"dbh",children:[(0,d.jsxs)("section",{children:[(0,d.jsx)("div",{className:"row gap-s",children:(0,d.jsx)("h3",{className:"grow",children:j("db.saved.title")})}),0===c.length?(0,d.jsx)("p",{className:"muted small",children:j("db.saved.none")}):c.map(a=>(0,d.jsxs)("div",{className:"dbh-row",children:[(0,d.jsxs)("button",{className:"dbh-main",onClick:()=>h(a.sql,a.database),title:j("db.saved.use"),children:[(0,d.jsx)("b",{children:a.name}),(0,d.jsx)("code",{className:"mono",title:a.sql,children:a.sql.trim().slice(0,600)})]}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>m(a),"aria-label":j("db.saved.rename"),title:j("db.saved.rename"),children:(0,d.jsx)(a5.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",disabled:!f.trim()||f===a.sql,onClick:()=>void v(a.id,{sql:f,database:g??""},j("db.saved.updated")),"aria-label":j("db.saved.replace"),title:j("db.saved.replace"),children:(0,d.jsx)(a9.A,{size:14})}),(0,d.jsx)("button",{className:"btn ghost icon sm",onClick:()=>r(a),"aria-label":j("db.delete"),title:j("db.delete"),children:(0,d.jsx)(aa.A,{size:14})})]},a.id))]}),(0,d.jsxs)("section",{children:[(0,d.jsxs)("div",{className:"row gap-s",children:[(0,d.jsx)("h3",{className:"grow",children:j("db.hist.title")}),b&&b.length>0&&(0,d.jsxs)("button",{className:"btn ghost sm",onClick:()=>void t(),children:[(0,d.jsx)(aa.A,{size:14}),j("db.hist.clear")]})]}),null===b?(0,d.jsx)("p",{className:"muted small",children:j("git.loading")}):0===b.length?(0,d.jsx)("p",{className:"muted small",children:j("db.hist.empty")}):b.map(a=>(0,d.jsx)("div",{className:"dbh-row",children:(0,d.jsxs)("button",{className:"dbh-main",onClick:()=>h(a.sql,a.database),title:a.error,children:[(0,d.jsxs)("span",{className:"row gap-s small",children:[(0,d.jsx)("i",{className:`dot ${a.ok?"ok":"err"}`}),(0,d.jsx)("span",{className:"muted",children:(0,D.KN)(a.at)}),a.ok?(0,d.jsxs)("span",{className:"muted",children:["\xb7 ",void 0!==a.rows?j("db.result.rows",{count:a.rows}):j("db.result.affected",{count:a.affected??0})," \xb7 ",a.ms," ms"]}):(0,d.jsx)("span",{className:"db-bad",children:a.error})]}),(0,d.jsx)("code",{className:"mono",title:a.error?void 0:a.sql,children:a.sql.trim().slice(0,600)})]})},a.n))]}),l&&(0,d.jsx)(bW,{title:j("db.saved.rename"),initial:l.name,onClose:()=>m(null),onSave:a=>{m(null),v(l.id,{name:a},j("db.saved.updated"))}}),p&&(0,d.jsx)(q.TM,{title:j("db.saved.delete.title",{name:p.name}),body:j("db.saved.delete.body"),confirmLabel:j("db.delete"),danger:!0,onConfirm:()=>u(p.id),onClose:()=>r(null)})]})}function bY({object:a,pane:b,onPane:c}){let{t:f}=(0,o.s9)(),g=(0,q.dj)(),h=a.config,i=`hive-am.dbq.${a.id}`,[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(void 0),[p,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(""),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)([]),[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(!1),I=(0,e.useRef)(null),J=(0,e.useRef)(new Map),[,K]=(0,e.useState)(0),L=a=>`${l??""}|${a.schema}.${a.name}`,M=(0,e.useMemo)(()=>({schema:w,cols:a=>{let b=J.current.get(L(a));return Array.isArray(b)?b:void 0},need:b=>{let c=L(b);if(J.current.has(c))return;J.current.set(c,"loading");let d=l??w?.database;n.FH.get(`/objects/${a.id}/db/columns?schema=${encodeURIComponent(b.schema)}&table=${encodeURIComponent(b.name)}${d&&w&&"sqlite"!==w.engine?`&database=${encodeURIComponent(d)}`:""}`).then(a=>J.current.set(c,a.map(a=>a.name))).catch(()=>J.current.delete(c)).finally(()=>K(a=>a+1))}}),[w,l,a.id]),N=(0,e.useRef)(null),O=a=>{k(a);try{localStorage.setItem(i,a)}catch{}},P=(0,e.useCallback)(async b=>{B(!0),z("");try{let c=await n.FH.get(`/objects/${a.id}/db/schema${b?`?database=${encodeURIComponent(b)}`:""}`);x(c)}catch(a){z(a instanceof Error?a.message:"")}finally{B(!1)}},[a.id]),Q=(0,e.useCallback)(()=>{n.FH.get(`/objects/${a.id}/db/history`).then(F).catch(()=>F([])),n.FH.get(`/objects/${a.id}/db/saved`).then(D).catch(()=>void 0)},[a.id]),R=async b=>{let c=I.current,d=c&&c.selectionEnd>c.selectionStart?j.slice(c.selectionStart,c.selectionEnd):j,e=(b??d).trim();if(e&&!p){r(!0),v("");try{let b=await n.FH.post(`/objects/${a.id}/db/query`,{sql:e,database:l});t(b)}catch(a){t(null),v(a instanceof Error?a.message:"")}finally{r(!1),Q()}}},S=(a,b)=>{let d=j.trimEnd(),e=d?`${d}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=612,exports.ids=[612],exports.modules={12675:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]])},30257:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Hammer",[["path",{d:"m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9",key:"eefl8a"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"b7pghm"}]])},33165:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]])},36414:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]])},40413:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]])},48612:(a,b,c)=>{c.d(b,{ry:()=>R,BZ:()=>P});var d=c(55322),e=c(17027),f=c(37070),g=c(31826),h=c(40413),i=c(33165),j=c(30257),k=c(78574),l=c(51537);let m=(0,l.A)("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);var n=c(29083),o=c(47087),p=c(31251),q=c(84300),r=c(36414),s=c(93351),t=c(12675),u=c(7371),v=c(60570),w=c(73269),x=c(61162),y=c(5207),z=c(2335);let A=(0,l.A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);var B=c(91313);let C=(0,l.A)("Ear",[["path",{d:"M6 8.5a6.5 6.5 0 1 1 13 0c0 6-6 6-6 10a3.5 3.5 0 1 1-7 0",key:"1dfaln"}],["path",{d:"M15 8.5a2.5 2.5 0 0 0-5 0v1a2 2 0 1 1 0 4",key:"1qnva7"}]]),D=/^\[hive:channel\] (.+?) · Place: (.+?) · Thread: (.+?) · From: (.+?)((?: · (?:Addressed|Muted): \w+| · To: [^·\n]+)*)(?: · Now: [^\n]*)?\nMessage:\n([\s\S]*)$/,E="\n\n[hive:context]\n",F="\n\n[hive:files]\n";var G=c(93884);function H({text:a,badge:b,agentId:c}){let{t:e}=(0,G.s9)(),f=function(a){let b=D.exec(a);if(!b)return null;let[c,...d]=b[6].split(E),[e,...f]=c.split(F),g=f.join(F).split("\n").flatMap(a=>{let b=/^- (.+) \(([^()]*)\)$/.exec(a);return b?[{path:b[1],name:b[1].replace(/^.*[\\/]/,"").replace(/^\d+-\d+-/,""),detail:b[2]}]:[]});return{platform:b[1],place:b[2],thread:b[3],from:b[4],body:e,files:g,overheard:/Addressed: no/.test(b[5]),muted:/Muted: yes/.test(b[5]),context:d.join(E)}}(a),g=f?null:function(a){let b=a.indexOf(F);if(b<0)return null;let c=a.slice(b+F.length).split("\n").flatMap(a=>{let b=/^- (.+) \(([^()]*)\)$/.exec(a);return b?[{path:b[1],name:b[1].replace(/^.*[\\/]/,"").replace(/^web-\d+-\d+-/,""),detail:b[2]}]:[]});return c.length?{body:a.slice(0,b),files:c}:null}(a);return g?(0,d.jsxs)("div",{className:`msg user${b?" queued":""}`,children:[(0,d.jsxs)("div",{className:"bubble",children:[g.body.trim()&&"(no text)"!==g.body.trim()&&(0,d.jsx)("div",{children:g.body.trim()}),(0,d.jsx)("div",{className:"bubble-imgs",children:g.files.map(a=>{let b=c?`/api/agents/${c}/inbox?path=${encodeURIComponent(a.path)}`:void 0;return c&&/\.(png|jpe?g|gif|webp)$/i.test(a.path)?(0,d.jsx)("a",{href:b,target:"_blank",rel:"noreferrer",title:a.name,children:(0,d.jsx)("img",{src:b,alt:a.name,loading:"lazy"})},a.path):(0,d.jsxs)("a",{className:"chfile",href:b,download:a.name,title:a.path,children:[(0,d.jsx)(o.A,{size:11,"aria-hidden":!0}),a.name,(0,d.jsx)("i",{children:a.detail.split(", ").pop()})]},a.path)})})]}),b&&(0,d.jsxs)("span",{className:"queued-tag",children:[(0,d.jsx)(A,{size:11,"aria-hidden":!0}),b]})]}):f?(0,d.jsx)("div",{className:"msg user",children:(0,d.jsxs)("div",{className:"bubble channel",children:[(0,d.jsxs)("div",{className:"chhead",children:[(0,d.jsx)(B.A,{size:12,"aria-hidden":!0}),(0,d.jsx)("b",{children:f.platform}),(0,d.jsx)("span",{children:f.place}),f.overheard&&(0,d.jsxs)("span",{className:"chtag",title:e("chat.channel.overheard.hint"),children:[(0,d.jsx)(C,{size:11,"aria-hidden":!0}),e("chat.channel.overheard")]}),(0,d.jsx)("span",{className:"chfrom",children:f.from.replace(/\s*\(.*\)$/,"")})]}),(0,d.jsx)("div",{className:"chbody",children:f.body}),f.files.length>0&&(0,d.jsx)("div",{className:"chfiles",children:f.files.map(a=>(0,d.jsxs)("span",{className:"chfile",title:a.path,children:[(0,d.jsx)(o.A,{size:11,"aria-hidden":!0}),a.name,(0,d.jsx)("i",{children:a.detail.split(", ").pop()})]},a.path))}),f.context&&(0,d.jsxs)("details",{className:"chctx",children:[(0,d.jsx)("summary",{children:e("chat.channel.context",{n:f.context.split("\n").filter(a=>a.startsWith("- ")).length})}),(0,d.jsx)("pre",{children:f.context.replace(/^[^\n]*\n/,"")})]})]})}):(0,d.jsxs)("div",{className:`msg user${b?" queued":""}`,children:[(0,d.jsx)("div",{className:"bubble",children:a}),b&&(0,d.jsxs)("span",{className:"queued-tag",children:[(0,d.jsx)(A,{size:11,"aria-hidden":!0}),b]})]})}var I=c(30584);function J({m:a}){let{t:b}=(0,G.s9)(),c=a.meta?.usage,e=a.blocks.filter(a=>"tool"===a.type).length;if(!c&&!a.durationMs&&!e)return null;let f=(0,I.RP)(c);return(0,d.jsxs)("div",{className:"replymeta",children:[a.meta?.model&&(0,d.jsx)("span",{className:"mono",children:a.meta.model.replace(/^claude-/,"").replace(/-\d{8}$/,"")}),f>0&&(0,d.jsxs)("span",{title:c?b("chat.tokenDetail",{input:c.input,output:c.output,cacheRead:c.cacheRead,cacheWrite:c.cacheWrite}):"",children:[(0,d.jsx)(h.A,{size:12}),b("chat.inOut",{in:(0,I.yj)(c.input+c.cacheRead+c.cacheWrite),out:(0,I.yj)(c.output)})]}),c?.credits?(0,d.jsxs)("span",{children:[(0,d.jsx)(i.A,{size:12}),b("chat.credits",{value:c.credits.toFixed(2)})]}):null,a.meta?.cost!==void 0&&(0,d.jsxs)("span",{title:b(a.meta.costEstimated?"stats.costEstimated":"stats.costReported"),children:[(0,d.jsx)(i.A,{size:12}),a.meta.costEstimated?"≈ ":"",(0,I.F0)(a.meta.cost)]}),e>0&&(0,d.jsxs)("span",{children:[(0,d.jsx)(j.A,{size:12}),b("chat.tools",{count:e})]}),a.durationMs?(0,d.jsxs)("span",{children:[(0,d.jsx)(k.A,{size:12}),(0,I.nc)(a.durationMs)]}):null]})}let K=/usage limit|quota|insufficient|rate.?limit|too many requests|credits/i;function L({agent:a,error:b,onDone:c}){let{t:f}=(0,G.s9)(),g=(0,y.dj)(),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),l=async()=>{k(!0);try{await u.FH.post(`/agents/${a.id}/compact`),g(f("chat.compacted"),"ok"),c()}catch(a){g(f("chat.compactFailed",{reason:a instanceof Error?a.message:String(a)}),"err")}finally{k(!1)}},m=K.test(b);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"muted",children:f(m?"chat.failedHintLimit":h?"chat.failedHintCompact":"chat.failedHint")}),h&&!m&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("br",{}),(0,d.jsx)("button",{type:"button",className:"btn sm",disabled:j,onClick:()=>void l(),children:j?f("chat.compacting"):f("chat.compact")})]})]})}function M({turn:a}){let{t:b}=(0,G.s9)(),[,c]=(0,e.useState)(0),f=!!a.error,g=(0,e.useRef)(0);f&&!g.current&&(g.current=Date.now());let i=a.usage,l=a.blocks.filter(a=>"tool"===a.type).length;return(0,d.jsxs)("div",{className:"replymeta live",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)(k.A,{size:12}),(0,I.nc)((f?g.current:Date.now())-a.startedAt)]}),l>0&&(0,d.jsxs)("span",{children:[(0,d.jsx)(j.A,{size:12}),b("chat.tools",{count:l})]}),i&&(i.output??0)>0&&(0,d.jsxs)("span",{children:[(0,d.jsx)(h.A,{size:12}),b("chat.inOut",{in:(0,I.yj)((i.input??0)+(i.cacheRead??0)+(i.cacheWrite??0)),out:(0,I.yj)(i.output??0)})]}),i?.contextPct!==void 0&&(0,d.jsx)("span",{children:b("chat.contextPct",{pct:i.contextPct.toFixed(1)})})]})}let N=(0,e.memo)(function({text:a}){return(0,d.jsx)("div",{className:"md",children:(0,d.jsx)(f.oz,{remarkPlugins:[g.A],children:a})})}),O=(0,e.memo)(function({blocks:a,streaming:b}){let{t:c}=(0,G.s9)();return(0,d.jsxs)(d.Fragment,{children:[a.map((e,f)=>"text"===e.type?(0,d.jsx)(N,{text:e.text},f):"thinking"===e.type?(0,d.jsxs)("details",{className:"fold think",children:[(0,d.jsxs)("summary",{children:[(0,d.jsx)(m,{size:14}),b&&f===a.length-1?c("activity.thinking"):c("chat.thought"),(0,d.jsx)(n.A,{size:14,className:"chev"})]}),(0,d.jsx)("pre",{children:e.text})]},f):(0,d.jsx)(z.Dm,{tool:e,streaming:b},f)),(0,d.jsx)(z.Kt,{blocks:a})]})}),P=(0,e.memo)(function({msgs:a,agent:b}){(0,G.s9)();let c=(0,e.useMemo)(()=>(function(a){let b=[],c=null;for(let d of a){let a;if("user"===d.role){c=d.ts,b.push(d);continue}let e=b[b.length-1],f=(a,b)=>{if(!a)return b;if(!b)return a;let c=a.usage,d=b.usage;return{model:b.model??a.model,endTs:b.endTs??a.endTs,cost:void 0!==a.cost||void 0!==b.cost?(a.cost??0)+(b.cost??0):void 0,costEstimated:a.costEstimated||b.costEstimated,usage:c&&d?{input:c.input+d.input,output:c.output+d.output,cacheRead:c.cacheRead+d.cacheRead,cacheWrite:c.cacheWrite+d.cacheWrite,reasoning:c.reasoning+d.reasoning,credits:(c.credits??0)+(d.credits??0)||void 0,contextPct:d.contextPct??c.contextPct}:c??d}};e?.role==="assistant"?(a={...e,blocks:[...e.blocks,...d.blocks],meta:f(e.meta,d.meta)},b[b.length-1]=a):(a={...d},b.push(a));let g=a.meta?.endTs;a.durationMs=c&&g?Math.max(0,g-c):void 0}return b})(a),[a]);return(0,d.jsx)(d.Fragment,{children:c.map(a=>"user"===a.role?(0,d.jsx)(H,{agentId:b.id,text:a.blocks.map(a=>"text"===a.type?a.text:"").join("")},a.id):(0,d.jsxs)("div",{className:"msg assistant",children:[(0,d.jsxs)("div",{className:"who",children:[(0,d.jsx)(y._h,{agent:b,size:"sm"}),b.name,(0,d.jsx)("span",{className:"stamp",children:a.ts?(0,x.KN)(a.ts):""})]}),(0,d.jsx)(O,{blocks:a.blocks}),(0,d.jsx)(J,{m:a})]},a.id))})},(a,b)=>a.msgs===b.msgs&&a.agent.id===b.agent.id&&a.agent.name===b.agent.name&&a.agent.provider===b.agent.provider&&a.agent.role===b.agent.role),Q=(0,e.memo)(function({agentId:a,name:b,running:c,queued:f,readOnly:g,onSend:h,onStop:i,toolsOpen:j,onToggleTools:k}){let{t:l}=(0,G.s9)(),[m,n]=(0,w.ud)(`hive-am.draft.${a}`,""),[s,t]=(0,e.useState)([]),[u,v]=(0,e.useState)(!1),x=(0,y.dj)(),z=(0,e.useRef)(null),A=(0,e.useRef)(null),B=()=>{let a=z.current;a&&(a.style.height="auto",a.style.height=Math.min(a.scrollHeight,200)+"px")},C=async a=>{let b=a.slice(0,Math.max(0,5-s.length));b.length<a.length&&x(l("chat.img.max",{n:5}),"err");let c=b.filter(a=>a.size<=0x1400000&&a.size>0);c.length<b.length&&x(l("chat.img.big",{mb:20}),"err");let d=await Promise.all(c.map((a,b)=>new Promise((c,d)=>{let e=new FileReader;e.onload=()=>c({id:`${Date.now()}-${b}`,name:a.name&&"image.png"!==a.name?a.name:`pasted-${b+1}.png`,data:String(e.result),type:a.type,size:a.size}),e.onerror=()=>d(e.error),e.readAsDataURL(a)})));t(a=>[...a,...d])},D=async()=>{let a=m.trim();(a||s.length)&&(n(""),t([]),requestAnimationFrame(B),await h(a,s.map(({name:a,data:b,type:c})=>({name:a,data:b,type:c})))||(n(a),t(s),requestAnimationFrame(B)))};return(0,d.jsxs)("div",{className:"composer",children:[g?(0,d.jsx)("div",{className:"composer-box chat-readonly",children:(0,d.jsx)("span",{className:"muted",children:l("chat.readOnly")})}):(0,d.jsxs)("div",{className:`composer-box ${u?"over":""}`,onDragOver:a=>{[...a.dataTransfer.types].includes("Files")&&(a.preventDefault(),v(!0))},onDragLeave:()=>v(!1),onDrop:a=>{v(!1);let b=[...a.dataTransfer.files];b.length&&(a.preventDefault(),C(b))},children:[s.length>0&&(0,d.jsx)("div",{className:"cmp-imgs",children:s.map(a=>{let b;return(0,d.jsxs)("span",{className:`cmp-img${a.type.startsWith("image/")?"":" file"}`,title:a.name,children:[a.type.startsWith("image/")?(0,d.jsx)("img",{src:a.data,alt:a.name}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o.A,{size:14,"aria-hidden":!0}),(0,d.jsx)("b",{children:a.name}),(0,d.jsx)("i",{children:(b=a.size)<1024?`${b} B`:b<1048576?`${Math.round(b/1024)} KB`:`${(b/1024/1024).toFixed(1)} MB`})]}),(0,d.jsx)("button",{type:"button",onClick:()=>t(b=>b.filter(b=>b.id!==a.id)),"aria-label":l("chat.img.remove",{name:a.name}),title:l("chat.img.remove",{name:a.name}),children:(0,d.jsx)(p.A,{size:12})})]},a.id)})}),(0,d.jsx)("input",{ref:A,type:"file",multiple:!0,hidden:!0,onChange:a=>{C([...a.target.files??[]]),a.target.value=""}}),(0,d.jsx)("button",{type:"button",className:"btn ghost icon",onClick:()=>A.current?.click(),"aria-label":l("chat.img.attach"),title:l("chat.img.attach"),children:(0,d.jsx)(o.A,{size:18})}),(0,d.jsx)("textarea",{ref:z,rows:1,onPaste:a=>{let b=[...a.clipboardData.files];!b.length||a.clipboardData.getData("text/plain").trim()||(a.preventDefault(),C(b))},value:m,placeholder:c?l("chat.queuePlaceholder"):l("chat.placeholder",{name:b}),"aria-label":l("chat.messageLabel"),onChange:a=>{n(a.target.value),B()},onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),D())}}),c&&(0,d.jsxs)("button",{className:"btn",onClick:i,"aria-label":l("chat.stop"),children:[(0,d.jsx)(q.A,{size:14,fill:"currentColor"}),l("chat.stop")]}),(0,d.jsx)("button",{className:"btn primary icon",onClick:()=>void D(),disabled:!m.trim()&&!s.length,"aria-label":l("chat.send"),children:(0,d.jsx)(r.A,{size:18})})]}),(0,d.jsxs)("div",{className:"composer-meta",children:[(0,d.jsx)("span",{children:l("chat.keys")}),(0,d.jsx)("button",{type:"button",className:"linkbtn",onClick:k,children:j?l("chat.collapseTools"):l("chat.expandTools")}),f>0&&(0,d.jsx)("span",{children:l("queue.count",{count:f})})]})]})});function R({agent:a,sessionOverride:b}){let{t:c}=(0,G.s9)(),{agents:f}=(0,v.q5)(),{clearLive:g}=(0,v.zd)(),h=(0,y.dj)(),[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(60),[o,p]=(0,e.useState)(0),q=(0,e.useRef)(null),[r,w]=(0,e.useState)([]),[x,A]=(0,e.useState)(null),B=(0,e.useRef)(null),C=(0,e.useRef)(!0),D=(0,e.useRef)(0),E=(0,e.useRef)(0),F=(0,e.useCallback)(()=>{E.current=performance.now()},[]),[I,J]=(0,e.useState)(!1),K=(0,e.useCallback)(()=>{C.current=!1,J(!0)},[]),N=(0,e.useCallback)(()=>{let a=B.current;C.current=!0,J(!1),a&&(a.scrollTop=a.scrollHeight)},[]),R=(0,v.M_)(a.id),S="running"===a.status||!!R&&!R.error,T=void 0!==b&&b!==a.session_id;(0,e.useCallback)(()=>{let c=T?b:a.session_id;return c?u.FH.get(`/agents/${a.id}/history?session=${encodeURIComponent(c)}&limit=${m}`).then(a=>{j(a.messages),p(a.total??a.messages.length),l(!0)}).catch(a=>{h(a.message,"err"),l(!0)}):(j([]),p(0),l(!0),Promise.resolve())},[a.id,a.session_id,T,b,h,m]);let U=(0,e.useCallback)(()=>{q.current=B.current?.scrollHeight??null,K(),n(a=>a+120)},[K]),V=(0,v.SV)(a.id);(0,e.useRef)(!0).current=!R&&"running"!==a.status&&!a.queued;let W=(0,e.useCallback)(async(b,d=[])=>{if(T)return!1;w(a=>[...a,b]),N();try{let c=await u.FH.post(`/agents/${a.id}/messages`,{prompt:b,...d.length?{files:d}:{}});return c.prompt&&c.prompt!==b&&w(a=>{let d=a.lastIndexOf(b);return d<0?a:a.map((a,b)=>b===d?c.prompt:a)}),!0}catch(a){return w(a=>{let c=a.lastIndexOf(b);return c<0?a:a.filter((a,b)=>b!==c)}),h(a instanceof Error?a.message:c("chat.sendFailed"),"err"),!1}},[a.id,T,h,c,N]),X=(0,e.useCallback)(()=>{u.FH.post(`/agents/${a.id}/stop`).catch(()=>void 0)},[a.id]),Y=(0,e.useCallback)(()=>A(a=>!a),[]),Z=r.filter((a,b)=>!(R&&b===r.findIndex(a=>a.trim()===R.prompt.trim()))),$=k&&!i.length&&!R&&!r.length;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(z.Qh.Provider,{value:x,children:(0,d.jsxs)("div",{className:"thread-wrap",children:[(0,d.jsx)("div",{className:"thread",ref:B,role:"log","aria-label":c("fa.chat.log",{name:a.name}),"aria-live":R?"off":"polite","aria-relevant":"additions",tabIndex:-1,onWheel:a=>{a.deltaY<0&&K()},onTouchStart:F,onTouchMove:F,onPointerDown:F,onPointerMove:a=>{a.buttons&&F()},onKeyDown:a=>{!["PageUp","ArrowUp","Home"].includes(a.key)||a.target instanceof HTMLTextAreaElement||K()},onScroll:a=>{let b=a.currentTarget;b.scrollHeight-b.scrollTop-b.clientHeight<40?(C.current=!0,J(!1)):b.scrollTop<D.current-1&&performance.now()-E.current<700&&K(),D.current=b.scrollTop},children:(0,d.jsxs)("div",{className:"thread-inner",children:[$&&(0,d.jsx)("div",{className:"mt-l",children:(0,d.jsx)(y.pp,{icon:(0,d.jsx)(y._h,{agent:a,size:"lg"}),title:c("chat.empty.title",{name:a.name}),body:"orchestrator"===a.role?c("chat.empty.orchestrator"):c("chat.empty.worker")})}),o>i.length&&(0,d.jsx)("button",{type:"button",className:"btn sm chat-earlier",onClick:U,children:c("chat.earlier",{n:o-i.length})}),(0,d.jsx)(P,{msgs:i,agent:a}),R&&(0,d.jsxs)(d.Fragment,{children:["dispatch"===R.source?(0,d.jsxs)("div",{className:"delegation-card",children:[(0,d.jsxs)("div",{className:"head",children:[(0,d.jsx)(s.A,{size:14}),c("chat.delegatedFrom",{name:f.find(a=>a.id===R.from)?.name??c("chat.anOrchestrator")})]}),(0,d.jsx)("p",{children:R.prompt}),(0,d.jsx)("span",{className:"hint",children:c("chat.delegatedNote")})]}):!i.some(a=>"user"===a.role&&a.blocks.some(a=>"text"===a.type&&a.text.trim()===R.prompt.trim()))&&(0,d.jsx)(H,{text:R.prompt,agentId:a.id}),(0,d.jsxs)("div",{className:"msg assistant",children:[(0,d.jsxs)("div",{className:"who",children:[(0,d.jsx)(y._h,{agent:a,size:"sm"}),a.name]}),(0,d.jsx)(O,{blocks:R.blocks,streaming:!0}),!R.error&&(0,d.jsxs)("span",{className:"typing","aria-label":c("common.working"),children:[(0,d.jsx)("i",{}),(0,d.jsx)("i",{}),(0,d.jsx)("i",{})]}),(0,d.jsx)(M,{turn:R}),R.error&&(0,d.jsxs)(y.lZ,{kind:"err",onDismiss:()=>g(a.id),children:[(0,G.YF)(R.error),(0,d.jsx)(L,{agent:a,error:R.error,onDone:()=>g(a.id)})]})]})]}),Z.map((b,e)=>(0,d.jsx)(H,{agentId:a.id,text:b,badge:R?c("chat.queuedBadge"):void 0},`${e}:${b}`))]})}),I&&(0,d.jsxs)("button",{type:"button",className:"btn sm chat-jump",onClick:N,children:[(0,d.jsx)(t.A,{size:14,"aria-hidden":!0}),c("fa.chat.jump")]})]})}),(0,d.jsx)("span",{className:"chat-sr",role:"status",children:R?c("fa.chat.working",{name:a.name}):V?c("fa.chat.done",{name:a.name}):""}),(0,d.jsx)(Q,{agentId:a.id,name:a.name,running:S,queued:a.queued??0,readOnly:T,onSend:W,onStop:X,toolsOpen:x,onToggleTools:Y})]})}},78574:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]])},91313:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])}};
|
|
1
|
+
"use strict";exports.id=612,exports.ids=[612],exports.modules={12675:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]])},30257:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Hammer",[["path",{d:"m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9",key:"eefl8a"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"b7pghm"}]])},33165:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]])},36414:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]])},40413:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]])},48612:(a,b,c)=>{c.d(b,{ry:()=>R,BZ:()=>P});var d=c(55322),e=c(17027),f=c(37070),g=c(31826),h=c(40413),i=c(33165),j=c(30257),k=c(78574),l=c(51537);let m=(0,l.A)("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);var n=c(29083),o=c(47087),p=c(31251),q=c(84300),r=c(36414),s=c(93351),t=c(12675),u=c(7371),v=c(60570),w=c(73269),x=c(61162),y=c(81963),z=c(2335);let A=(0,l.A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);var B=c(91313);let C=(0,l.A)("Ear",[["path",{d:"M6 8.5a6.5 6.5 0 1 1 13 0c0 6-6 6-6 10a3.5 3.5 0 1 1-7 0",key:"1dfaln"}],["path",{d:"M15 8.5a2.5 2.5 0 0 0-5 0v1a2 2 0 1 1 0 4",key:"1qnva7"}]]),D=/^\[hive:channel\] (.+?) · Place: (.+?) · Thread: (.+?) · From: (.+?)((?: · (?:Addressed|Muted): \w+| · To: [^·\n]+)*)(?: · Now: [^\n]*)?\nMessage:\n([\s\S]*)$/,E="\n\n[hive:context]\n",F="\n\n[hive:files]\n";var G=c(93884);function H({text:a,badge:b,agentId:c}){let{t:e}=(0,G.s9)(),f=function(a){let b=D.exec(a);if(!b)return null;let[c,...d]=b[6].split(E),[e,...f]=c.split(F),g=f.join(F).split("\n").flatMap(a=>{let b=/^- (.+) \(([^()]*)\)$/.exec(a);return b?[{path:b[1],name:b[1].replace(/^.*[\\/]/,"").replace(/^\d+-\d+-/,""),detail:b[2]}]:[]});return{platform:b[1],place:b[2],thread:b[3],from:b[4],body:e,files:g,overheard:/Addressed: no/.test(b[5]),muted:/Muted: yes/.test(b[5]),context:d.join(E)}}(a),g=f?null:function(a){let b=a.indexOf(F);if(b<0)return null;let c=a.slice(b+F.length).split("\n").flatMap(a=>{let b=/^- (.+) \(([^()]*)\)$/.exec(a);return b?[{path:b[1],name:b[1].replace(/^.*[\\/]/,"").replace(/^web-\d+-\d+-/,""),detail:b[2]}]:[]});return c.length?{body:a.slice(0,b),files:c}:null}(a);return g?(0,d.jsxs)("div",{className:`msg user${b?" queued":""}`,children:[(0,d.jsxs)("div",{className:"bubble",children:[g.body.trim()&&"(no text)"!==g.body.trim()&&(0,d.jsx)("div",{children:g.body.trim()}),(0,d.jsx)("div",{className:"bubble-imgs",children:g.files.map(a=>{let b=c?`/api/agents/${c}/inbox?path=${encodeURIComponent(a.path)}`:void 0;return c&&/\.(png|jpe?g|gif|webp)$/i.test(a.path)?(0,d.jsx)("a",{href:b,target:"_blank",rel:"noreferrer",title:a.name,children:(0,d.jsx)("img",{src:b,alt:a.name,loading:"lazy"})},a.path):(0,d.jsxs)("a",{className:"chfile",href:b,download:a.name,title:a.path,children:[(0,d.jsx)(o.A,{size:11,"aria-hidden":!0}),a.name,(0,d.jsx)("i",{children:a.detail.split(", ").pop()})]},a.path)})})]}),b&&(0,d.jsxs)("span",{className:"queued-tag",children:[(0,d.jsx)(A,{size:11,"aria-hidden":!0}),b]})]}):f?(0,d.jsx)("div",{className:"msg user",children:(0,d.jsxs)("div",{className:"bubble channel",children:[(0,d.jsxs)("div",{className:"chhead",children:[(0,d.jsx)(B.A,{size:12,"aria-hidden":!0}),(0,d.jsx)("b",{children:f.platform}),(0,d.jsx)("span",{children:f.place}),f.overheard&&(0,d.jsxs)("span",{className:"chtag",title:e("chat.channel.overheard.hint"),children:[(0,d.jsx)(C,{size:11,"aria-hidden":!0}),e("chat.channel.overheard")]}),(0,d.jsx)("span",{className:"chfrom",children:f.from.replace(/\s*\(.*\)$/,"")})]}),(0,d.jsx)("div",{className:"chbody",children:f.body}),f.files.length>0&&(0,d.jsx)("div",{className:"chfiles",children:f.files.map(a=>(0,d.jsxs)("span",{className:"chfile",title:a.path,children:[(0,d.jsx)(o.A,{size:11,"aria-hidden":!0}),a.name,(0,d.jsx)("i",{children:a.detail.split(", ").pop()})]},a.path))}),f.context&&(0,d.jsxs)("details",{className:"chctx",children:[(0,d.jsx)("summary",{children:e("chat.channel.context",{n:f.context.split("\n").filter(a=>a.startsWith("- ")).length})}),(0,d.jsx)("pre",{children:f.context.replace(/^[^\n]*\n/,"")})]})]})}):(0,d.jsxs)("div",{className:`msg user${b?" queued":""}`,children:[(0,d.jsx)("div",{className:"bubble",children:a}),b&&(0,d.jsxs)("span",{className:"queued-tag",children:[(0,d.jsx)(A,{size:11,"aria-hidden":!0}),b]})]})}var I=c(30584);function J({m:a}){let{t:b}=(0,G.s9)(),c=a.meta?.usage,e=a.blocks.filter(a=>"tool"===a.type).length;if(!c&&!a.durationMs&&!e)return null;let f=(0,I.RP)(c);return(0,d.jsxs)("div",{className:"replymeta",children:[a.meta?.model&&(0,d.jsx)("span",{className:"mono",children:a.meta.model.replace(/^claude-/,"").replace(/-\d{8}$/,"")}),f>0&&(0,d.jsxs)("span",{title:c?b("chat.tokenDetail",{input:c.input,output:c.output,cacheRead:c.cacheRead,cacheWrite:c.cacheWrite}):"",children:[(0,d.jsx)(h.A,{size:12}),b("chat.inOut",{in:(0,I.yj)(c.input+c.cacheRead+c.cacheWrite),out:(0,I.yj)(c.output)})]}),c?.credits?(0,d.jsxs)("span",{children:[(0,d.jsx)(i.A,{size:12}),b("chat.credits",{value:c.credits.toFixed(2)})]}):null,a.meta?.cost!==void 0&&(0,d.jsxs)("span",{title:b(a.meta.costEstimated?"stats.costEstimated":"stats.costReported"),children:[(0,d.jsx)(i.A,{size:12}),a.meta.costEstimated?"≈ ":"",(0,I.F0)(a.meta.cost)]}),e>0&&(0,d.jsxs)("span",{children:[(0,d.jsx)(j.A,{size:12}),b("chat.tools",{count:e})]}),a.durationMs?(0,d.jsxs)("span",{children:[(0,d.jsx)(k.A,{size:12}),(0,I.nc)(a.durationMs)]}):null]})}let K=/usage limit|quota|insufficient|rate.?limit|too many requests|credits/i;function L({agent:a,error:b,onDone:c}){let{t:f}=(0,G.s9)(),g=(0,y.dj)(),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),l=async()=>{k(!0);try{await u.FH.post(`/agents/${a.id}/compact`),g(f("chat.compacted"),"ok"),c()}catch(a){g(f("chat.compactFailed",{reason:a instanceof Error?a.message:String(a)}),"err")}finally{k(!1)}},m=K.test(b);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"muted",children:f(m?"chat.failedHintLimit":h?"chat.failedHintCompact":"chat.failedHint")}),h&&!m&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("br",{}),(0,d.jsx)("button",{type:"button",className:"btn sm",disabled:j,onClick:()=>void l(),children:j?f("chat.compacting"):f("chat.compact")})]})]})}function M({turn:a}){let{t:b}=(0,G.s9)(),[,c]=(0,e.useState)(0),f=!!a.error,g=(0,e.useRef)(0);f&&!g.current&&(g.current=Date.now());let i=a.usage,l=a.blocks.filter(a=>"tool"===a.type).length;return(0,d.jsxs)("div",{className:"replymeta live",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)(k.A,{size:12}),(0,I.nc)((f?g.current:Date.now())-a.startedAt)]}),l>0&&(0,d.jsxs)("span",{children:[(0,d.jsx)(j.A,{size:12}),b("chat.tools",{count:l})]}),i&&(i.output??0)>0&&(0,d.jsxs)("span",{children:[(0,d.jsx)(h.A,{size:12}),b("chat.inOut",{in:(0,I.yj)((i.input??0)+(i.cacheRead??0)+(i.cacheWrite??0)),out:(0,I.yj)(i.output??0)})]}),i?.contextPct!==void 0&&(0,d.jsx)("span",{children:b("chat.contextPct",{pct:i.contextPct.toFixed(1)})})]})}let N=(0,e.memo)(function({text:a}){return(0,d.jsx)("div",{className:"md",children:(0,d.jsx)(f.oz,{remarkPlugins:[g.A],children:a})})}),O=(0,e.memo)(function({blocks:a,streaming:b}){let{t:c}=(0,G.s9)();return(0,d.jsxs)(d.Fragment,{children:[a.map((e,f)=>"text"===e.type?(0,d.jsx)(N,{text:e.text},f):"thinking"===e.type?(0,d.jsxs)("details",{className:"fold think",children:[(0,d.jsxs)("summary",{children:[(0,d.jsx)(m,{size:14}),b&&f===a.length-1?c("activity.thinking"):c("chat.thought"),(0,d.jsx)(n.A,{size:14,className:"chev"})]}),(0,d.jsx)("pre",{children:e.text})]},f):(0,d.jsx)(z.Dm,{tool:e,streaming:b},f)),(0,d.jsx)(z.Kt,{blocks:a})]})}),P=(0,e.memo)(function({msgs:a,agent:b}){let{t:c}=(0,G.s9)(),f=(0,e.useMemo)(()=>(function(a){let b=[],c=null;for(let d of a){let a;if("user"===d.role){c=d.ts,b.push(d);continue}if(d.compact){b.push(d);continue}let e=b[b.length-1],f=(a,b)=>{if(!a)return b;if(!b)return a;let c=a.usage,d=b.usage;return{model:b.model??a.model,endTs:b.endTs??a.endTs,cost:void 0!==a.cost||void 0!==b.cost?(a.cost??0)+(b.cost??0):void 0,costEstimated:a.costEstimated||b.costEstimated,usage:c&&d?{input:c.input+d.input,output:c.output+d.output,cacheRead:c.cacheRead+d.cacheRead,cacheWrite:c.cacheWrite+d.cacheWrite,reasoning:c.reasoning+d.reasoning,credits:(c.credits??0)+(d.credits??0)||void 0,contextPct:d.contextPct??c.contextPct}:c??d}};e?.role!=="assistant"||e.compact?(a={...d},b.push(a)):(a={...e,blocks:[...e.blocks,...d.blocks],meta:f(e.meta,d.meta)},b[b.length-1]=a);let g=a.meta?.endTs;a.durationMs=c&&g?Math.max(0,g-c):void 0}return b})(a),[a]);return(0,d.jsx)(d.Fragment,{children:f.map(a=>a.compact?(0,d.jsx)("div",{className:"compact-mark",role:"separator",children:(0,d.jsx)("span",{children:c("chat.compactMark",{pre:(0,I.yj)(a.compact.pre),post:(0,I.yj)(a.compact.post)})})},a.id):"user"===a.role?(0,d.jsx)(H,{agentId:b.id,text:a.blocks.map(a=>"text"===a.type?a.text:"").join("")},a.id):(0,d.jsxs)("div",{className:"msg assistant",children:[(0,d.jsxs)("div",{className:"who",children:[(0,d.jsx)(y._h,{agent:b,size:"sm"}),b.name,(0,d.jsx)("span",{className:"stamp",children:a.ts?(0,x.KN)(a.ts):""})]}),(0,d.jsx)(O,{blocks:a.blocks}),(0,d.jsx)(J,{m:a})]},a.id))})},(a,b)=>a.msgs===b.msgs&&a.agent.id===b.agent.id&&a.agent.name===b.agent.name&&a.agent.provider===b.agent.provider&&a.agent.role===b.agent.role),Q=(0,e.memo)(function({agentId:a,name:b,running:c,queued:f,readOnly:g,onSend:h,onStop:i,toolsOpen:j,onToggleTools:k}){let{t:l}=(0,G.s9)(),[m,n]=(0,w.ud)(`hive-am.draft.${a}`,""),[s,t]=(0,e.useState)([]),[u,v]=(0,e.useState)(!1),x=(0,y.dj)(),z=(0,e.useRef)(null),A=(0,e.useRef)(null),B=()=>{let a=z.current;a&&(a.style.height="auto",a.style.height=Math.min(a.scrollHeight,200)+"px")},C=async a=>{let b=a.slice(0,Math.max(0,5-s.length));b.length<a.length&&x(l("chat.img.max",{n:5}),"err");let c=b.filter(a=>a.size<=0x1400000&&a.size>0);c.length<b.length&&x(l("chat.img.big",{mb:20}),"err");let d=await Promise.all(c.map((a,b)=>new Promise((c,d)=>{let e=new FileReader;e.onload=()=>c({id:`${Date.now()}-${b}`,name:a.name&&"image.png"!==a.name?a.name:`pasted-${b+1}.png`,data:String(e.result),type:a.type,size:a.size}),e.onerror=()=>d(e.error),e.readAsDataURL(a)})));t(a=>[...a,...d])},D=async()=>{let a=m.trim();(a||s.length)&&(n(""),t([]),requestAnimationFrame(B),await h(a,s.map(({name:a,data:b,type:c})=>({name:a,data:b,type:c})))||(n(a),t(s),requestAnimationFrame(B)))};return(0,d.jsxs)("div",{className:"composer",children:[g?(0,d.jsx)("div",{className:"composer-box chat-readonly",children:(0,d.jsx)("span",{className:"muted",children:l("chat.readOnly")})}):(0,d.jsxs)("div",{className:`composer-box ${u?"over":""}`,onDragOver:a=>{[...a.dataTransfer.types].includes("Files")&&(a.preventDefault(),v(!0))},onDragLeave:()=>v(!1),onDrop:a=>{v(!1);let b=[...a.dataTransfer.files];b.length&&(a.preventDefault(),C(b))},children:[s.length>0&&(0,d.jsx)("div",{className:"cmp-imgs",children:s.map(a=>{let b;return(0,d.jsxs)("span",{className:`cmp-img${a.type.startsWith("image/")?"":" file"}`,title:a.name,children:[a.type.startsWith("image/")?(0,d.jsx)("img",{src:a.data,alt:a.name}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o.A,{size:14,"aria-hidden":!0}),(0,d.jsx)("b",{children:a.name}),(0,d.jsx)("i",{children:(b=a.size)<1024?`${b} B`:b<1048576?`${Math.round(b/1024)} KB`:`${(b/1024/1024).toFixed(1)} MB`})]}),(0,d.jsx)("button",{type:"button",onClick:()=>t(b=>b.filter(b=>b.id!==a.id)),"aria-label":l("chat.img.remove",{name:a.name}),title:l("chat.img.remove",{name:a.name}),children:(0,d.jsx)(p.A,{size:12})})]},a.id)})}),(0,d.jsx)("input",{ref:A,type:"file",multiple:!0,hidden:!0,onChange:a=>{C([...a.target.files??[]]),a.target.value=""}}),(0,d.jsx)("button",{type:"button",className:"btn ghost icon",onClick:()=>A.current?.click(),"aria-label":l("chat.img.attach"),title:l("chat.img.attach"),children:(0,d.jsx)(o.A,{size:18})}),(0,d.jsx)("textarea",{ref:z,rows:1,onPaste:a=>{let b=[...a.clipboardData.files];!b.length||a.clipboardData.getData("text/plain").trim()||(a.preventDefault(),C(b))},value:m,placeholder:c?l("chat.queuePlaceholder"):l("chat.placeholder",{name:b}),"aria-label":l("chat.messageLabel"),onChange:a=>{n(a.target.value),B()},onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),D())}}),c&&(0,d.jsxs)("button",{className:"btn",onClick:i,"aria-label":l("chat.stop"),children:[(0,d.jsx)(q.A,{size:14,fill:"currentColor"}),l("chat.stop")]}),(0,d.jsx)("button",{className:"btn primary icon",onClick:()=>void D(),disabled:!m.trim()&&!s.length,"aria-label":l("chat.send"),children:(0,d.jsx)(r.A,{size:18})})]}),(0,d.jsxs)("div",{className:"composer-meta",children:[(0,d.jsx)("span",{children:l("chat.keys")}),(0,d.jsx)("button",{type:"button",className:"linkbtn",onClick:k,children:j?l("chat.collapseTools"):l("chat.expandTools")}),f>0&&(0,d.jsx)("span",{children:l("queue.count",{count:f})})]})]})});function R({agent:a,sessionOverride:b}){let{t:c}=(0,G.s9)(),{agents:f}=(0,v.q5)(),{clearLive:g}=(0,v.zd)(),h=(0,y.dj)(),[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(60),[o,p]=(0,e.useState)(0),q=(0,e.useRef)(null),[r,w]=(0,e.useState)([]),[x,A]=(0,e.useState)(null),B=(0,e.useRef)(null),C=(0,e.useRef)(!0),D=(0,e.useRef)(0),E=(0,e.useRef)(0),F=(0,e.useCallback)(()=>{E.current=performance.now()},[]),[I,J]=(0,e.useState)(!1),K=(0,e.useCallback)(()=>{C.current=!1,J(!0)},[]),N=(0,e.useCallback)(()=>{let a=B.current;C.current=!0,J(!1),a&&(a.scrollTop=a.scrollHeight)},[]),R=(0,v.M_)(a.id),S="running"===a.status||!!R&&!R.error,T=void 0!==b&&b!==a.session_id;(0,e.useCallback)(()=>{let c=T?b:a.session_id;return c?u.FH.get(`/agents/${a.id}/history?session=${encodeURIComponent(c)}&limit=${m}`).then(a=>{j(a.messages),p(a.total??a.messages.length),l(!0)}).catch(a=>{h(a.message,"err"),l(!0)}):(j([]),p(0),l(!0),Promise.resolve())},[a.id,a.session_id,T,b,h,m]);let U=(0,e.useCallback)(()=>{q.current=B.current?.scrollHeight??null,K(),n(a=>a+120)},[K]),V=(0,v.SV)(a.id);(0,e.useRef)(!0).current=!R&&"running"!==a.status&&!a.queued;let W=(0,e.useCallback)(async(b,d=[])=>{if(T)return!1;w(a=>[...a,b]),N();try{let c=await u.FH.post(`/agents/${a.id}/messages`,{prompt:b,...d.length?{files:d}:{}});return c.prompt&&c.prompt!==b&&w(a=>{let d=a.lastIndexOf(b);return d<0?a:a.map((a,b)=>b===d?c.prompt:a)}),!0}catch(a){return w(a=>{let c=a.lastIndexOf(b);return c<0?a:a.filter((a,b)=>b!==c)}),h(a instanceof Error?a.message:c("chat.sendFailed"),"err"),!1}},[a.id,T,h,c,N]),X=(0,e.useCallback)(()=>{u.FH.post(`/agents/${a.id}/stop`).catch(()=>void 0)},[a.id]),Y=(0,e.useCallback)(()=>A(a=>!a),[]),Z=r.filter((a,b)=>!(R&&b===r.findIndex(a=>a.trim()===R.prompt.trim()))),$=k&&!i.length&&!R&&!r.length;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(z.Qh.Provider,{value:x,children:(0,d.jsxs)("div",{className:"thread-wrap",children:[(0,d.jsx)("div",{className:"thread",ref:B,role:"log","aria-label":c("fa.chat.log",{name:a.name}),"aria-live":R?"off":"polite","aria-relevant":"additions",tabIndex:-1,onWheel:a=>{a.deltaY<0&&K()},onTouchStart:F,onTouchMove:F,onPointerDown:F,onPointerMove:a=>{a.buttons&&F()},onKeyDown:a=>{!["PageUp","ArrowUp","Home"].includes(a.key)||a.target instanceof HTMLTextAreaElement||K()},onScroll:a=>{let b=a.currentTarget;b.scrollHeight-b.scrollTop-b.clientHeight<40?(C.current=!0,J(!1)):b.scrollTop<D.current-1&&performance.now()-E.current<700&&K(),D.current=b.scrollTop},children:(0,d.jsxs)("div",{className:"thread-inner",children:[$&&(0,d.jsx)("div",{className:"mt-l",children:(0,d.jsx)(y.pp,{icon:(0,d.jsx)(y._h,{agent:a,size:"lg"}),title:c("chat.empty.title",{name:a.name}),body:"orchestrator"===a.role?c("chat.empty.orchestrator"):c("chat.empty.worker")})}),o>i.length&&(0,d.jsx)("button",{type:"button",className:"btn sm chat-earlier",onClick:U,children:c("chat.earlier",{n:o-i.length})}),(0,d.jsx)(P,{msgs:i,agent:a}),R&&(0,d.jsxs)(d.Fragment,{children:["dispatch"===R.source?(0,d.jsxs)("div",{className:"delegation-card",children:[(0,d.jsxs)("div",{className:"head",children:[(0,d.jsx)(s.A,{size:14}),c("chat.delegatedFrom",{name:f.find(a=>a.id===R.from)?.name??c("chat.anOrchestrator")})]}),(0,d.jsx)("p",{children:R.prompt}),(0,d.jsx)("span",{className:"hint",children:c("chat.delegatedNote")})]}):!i.some(a=>"user"===a.role&&a.blocks.some(a=>"text"===a.type&&a.text.trim()===R.prompt.trim()))&&(0,d.jsx)(H,{text:R.prompt,agentId:a.id}),(0,d.jsxs)("div",{className:"msg assistant",children:[(0,d.jsxs)("div",{className:"who",children:[(0,d.jsx)(y._h,{agent:a,size:"sm"}),a.name]}),(0,d.jsx)(O,{blocks:R.blocks,streaming:!0}),!R.error&&(0,d.jsxs)("span",{className:"typing","aria-label":c("common.working"),children:[(0,d.jsx)("i",{}),(0,d.jsx)("i",{}),(0,d.jsx)("i",{})]}),(0,d.jsx)(M,{turn:R}),R.error&&(0,d.jsxs)(y.lZ,{kind:"err",onDismiss:()=>g(a.id),children:[(0,G.YF)(R.error),(0,d.jsx)(L,{agent:a,error:R.error,onDone:()=>g(a.id)})]})]})]}),Z.map((b,e)=>(0,d.jsx)(H,{agentId:a.id,text:b,badge:R?c("chat.queuedBadge"):void 0},`${e}:${b}`))]})}),I&&(0,d.jsxs)("button",{type:"button",className:"btn sm chat-jump",onClick:N,children:[(0,d.jsx)(t.A,{size:14,"aria-hidden":!0}),c("fa.chat.jump")]})]})}),(0,d.jsx)("span",{className:"chat-sr",role:"status",children:R?c("fa.chat.working",{name:a.name}):V?c("fa.chat.done",{name:a.name}):""}),(0,d.jsx)(Q,{agentId:a.id,name:a.name,running:S,queued:a.queued??0,readOnly:T,onSend:W,onStop:X,toolsOpen:x,onToggleTools:Y})]})}},78574:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]])},91313:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(51537).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])}};
|