@straiffi/archon 1.3.5 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/TestsDialog-CxOO-QI9.js +5 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-CHnXshuZ.js → architectureDiagram-3BPJPVTR-zBQKBPbA.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-C4ZedL1G.js → blockDiagram-GPEHLZMM-CzYZL_-N.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-BuD-jPC_.js → c4Diagram-AAUBKEIU-DSDSWLp6.js} +1 -1
- package/dist/client/assets/channel-1BaddjWF.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-BKDkaoQT.js → chunk-2J33WTMH-DbLfyQqC.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-CS0HFD9a.js → chunk-3OPIFGDE-CLGLB7g_.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-DYo_TwPP.js → chunk-5ZQYHXKU-BIwBZ7yY.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-BajKdB6e.js → chunk-727SXJPM-DovMQz6k.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-j2FtLU1G.js → chunk-AQP2D5EJ-KqjpoTb7.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-CTy5Vnsi.js → chunk-CSCIHK7Q-deZWgKeo.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-DFdh0Cya.js → chunk-KSCS5N6A-TFVqgGHD.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-BFBha-m9.js → chunk-L5ZTLDWV-WFLYG2VH.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-DpeaPMtX.js → chunk-LZXEDZCA-DhkM7gFV.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-CazKz40j.js → chunk-ND2GUHAM-hnvkc2eb.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-B2IFwDK1.js → chunk-NZK2D7GU-CNSU7InY.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-Dr6DQwZn.js → chunk-O5CBEL6O-DqJEYjyT.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-BTQnr7be.js → chunk-WU5MYG2G-XMnXur47.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BGo9hMel.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-D-_BNxT2.js +1 -0
- package/dist/client/assets/{dagre-BM42HDAG-BhO_9BZa.js → dagre-BM42HDAG-CUjnTe1Z.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-2Qn456ux.js → diagram-2AECGRRQ-B6m9Giox.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-svJkmW34.js → diagram-5GNKFQAL-BezeNS5y.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-BkTHZ5mW.js → diagram-KO2AKTUF-RcU5K8Ej.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-uhDh1chZ.js → diagram-LMA3HP47-C3urL4ok.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-TRif4ORE.js → diagram-OG6HWLK6-CZlIPGdR.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-CVt_E331.js → erDiagram-TEJ5UH35-oMIKndtI.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-B4s33tHN.js → flowDiagram-I6XJVG4X-By4oEsbM.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-Dn2Tw0UP.js → ganttDiagram-6RSMTGT7-B48Cd3xk.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DL--5nPh.js → gitGraphDiagram-PVQCEYII-CRdbqoQK.js} +1 -1
- package/dist/client/assets/index-Q1dFgEV8.css +2 -0
- package/dist/client/assets/index-i7kaM60u.js +260 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-CaBMZo3i.js → infoDiagram-5YYISTIA-DP9dUT0m.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BK8J4ndX.js → ishikawaDiagram-YF4QCWOH-DhquFyP5.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-BS7hFGG3.js → journeyDiagram-JHISSGLW-BN9q1Knp.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-Bp3uL0wq.js → kanban-definition-UN3LZRKU-Cj7DzzzB.js} +1 -1
- package/dist/client/assets/{line-BCYzOKh3.js → line-D0YirabY.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-8idx1Ea6.js → mermaid-parser.core-CIsRI40S.js} +1 -1
- package/dist/client/assets/{mermaid.core-CxR4-p_S.js → mermaid.core-HhTgHex1.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL--qrRjfiZ.js → mindmap-definition-RKZ34NQL-B0-ZfTQa.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-PeY79WfN.js → pieDiagram-4H26LBE5-CWyIW6Nh.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-UbrmuIOq.js → quadrantDiagram-W4KKPZXB-BMFHMQiI.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-f9Mg2g9n.js → requirementDiagram-4Y6WPE33-BS-pXddR.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Cc5IOQG3.js → sankeyDiagram-5OEKKPKP-sBOYH62r.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BA_ghDe5.js → sequenceDiagram-3UESZ5HK-g4N59irI.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-Cp7ykzNi.js → stateDiagram-AJRCARHV-BFCq2_7o.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BJxmjLz-.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-DGtYslSV.js → timeline-definition-PNZ67QCA-De4T7a_T.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-DUTouIKP.js → vennDiagram-CIIHVFJN-ClQ5qRjN.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DKrISe1w.js → wardleyDiagram-YWT4CUSO-Bb87XKEB.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-B66iktR0.js → xychartDiagram-2RQKCTM6-COQfOp4x.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/db.js +45 -0
- package/dist/server/db.js.map +1 -1
- package/dist/server/index.js +65 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +244 -0
- package/dist/server/lib/agent.js.map +1 -1
- package/dist/server/lib/specArtifact.js +22 -5
- package/dist/server/lib/specArtifact.js.map +1 -1
- package/dist/server/lib/specReviewContext.js +128 -0
- package/dist/server/lib/specReviewContext.js.map +1 -0
- package/dist/server/lib/specReviewDraft.js +58 -0
- package/dist/server/lib/specReviewDraft.js.map +1 -0
- package/dist/server/lib/specReviewOperations.js +132 -0
- package/dist/server/lib/specReviewOperations.js.map +1 -0
- package/dist/server/lib/specReviews.js +329 -0
- package/dist/server/lib/specReviews.js.map +1 -0
- package/dist/server/lib/specs.js +6 -5
- package/dist/server/lib/specs.js.map +1 -1
- package/dist/server/lib/toolUpgrade.js +107 -0
- package/dist/server/lib/toolUpgrade.js.map +1 -0
- package/dist/server/workers/specReview.js +85 -0
- package/dist/server/workers/specReview.js.map +1 -0
- package/dist/server/workers/specSession.js +26 -11
- package/dist/server/workers/specSession.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/TestsDialog-B0WvkzrX.js +0 -5
- package/dist/client/assets/channel-Bp1nxPf1.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BFSejQGj.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-GUv-gbmg.js +0 -1
- package/dist/client/assets/index-BEgA3Rtd.css +0 -2
- package/dist/client/assets/index-CiOFEE0Z.js +0 -260
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D9N_a8JM.js +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{a as e}from"./chunk-BNv3lrIs.js";import{A as t,C as n,D as r,E as i,F as a,M as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,b as m,c as h,d as g,f as _,g as v,h as ee,i as y,j as b,k as te,l as ne,m as x,o as S,p as C,r as w,s as T,t as E,u as re,v as D,w as ie,x as ae,y as O}from"./index-i7kaM60u.js";var k=e(a(),1),oe=(e,t)=>l(o(`/projects/${e}/test-sessions`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to open the test runner right now.`}),se=(e,t)=>l(o(`/tickets/${e}/test-sessions${t?`?project_id=${encodeURIComponent(t)}`:``}`),{method:`POST`,fallbackErrorMessage:`Unable to open the test runner right now.`}),ce=(e,t={})=>l(o(`/test-sessions/${e}/discovery${t.commandId?`?command_id=${encodeURIComponent(t.commandId)}`:``}`),{signal:t.signal,fallbackErrorMessage:`Unable to discover tests right now.`}),le=(e,t)=>l(o(`/test-sessions/${e}/run`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to start the selected tests right now.`}),ue=e=>l(o(`/test-sessions/${e}/stop`),{method:`POST`,fallbackErrorMessage:`Unable to stop the test run right now.`}),de=e=>s(o(`/test-sessions/${e}`),{method:`DELETE`,fallbackErrorMessage:`Unable to close the test runner right now.`}),A=t(),j=256*1024,M=24,N=RegExp(`\x1B\\[[0-9;?]*[ -/]*[@-~]`,`g`),P=(e,t)=>h.t(`common:testsDialog.${e}`,t),fe=(e,t)=>{let n=`${e}${t}`;return n.length<=j?n:n.slice(-j)},F=e=>e.replace(N,``),pe=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=M,I=e=>{e.scrollTop=e.scrollHeight},me=(e,t=!1)=>{I(e);let n=0,r=0;return n=window.requestAnimationFrame(()=>{I(e),t&&(r=window.requestAnimationFrame(()=>{I(e)}))}),()=>{window.cancelAnimationFrame(n),r!==0&&window.cancelAnimationFrame(r)}},he=e=>{if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e;if(typeof t.id!=`string`||typeof t.name!=`string`||typeof t.command!=`string`)return[];let n=t.runner===`vitest`||t.runner===`jest`||t.runner===`unknown`?t.runner:`auto`;return[{id:t.id,name:t.name,command:t.command,runner:n,...typeof t.cwd==`string`&&t.cwd.trim()!==``?{cwd:t.cwd}:{}}]}):[]}catch{return[]}},L=e=>e===`running`?`border-sky-400/40 bg-sky-500/10 text-sky-200`:e===`passed`?`border-emerald-400/40 bg-emerald-500/10 text-emerald-200`:e===`failed`||e===`error`?`border-rose-400/40 bg-rose-500/10 text-rose-200`:e===`stopped`?`border-amber-400/40 bg-amber-500/10 text-amber-200`:`border-border/70 bg-background/60 text-muted-foreground`,ge=e=>e==null?null:e<1e3?`${e} ms`:`${(e/1e3).toFixed(e>=1e4?0:1)} s`,R=e=>{let t=e.split(`/`);return t[t.length-1]||e},z=e=>e.toLowerCase().trim().split(/\s+/).filter(Boolean),B=(e,t)=>e.length===0?!0:e.every(e=>t.some(t=>t.includes(e))),V=(e,t)=>{let n=z(t);return n.length===0?e:e.flatMap(e=>{let t=R(e.path);if(B(n,[t.toLowerCase(),e.path.toLowerCase()]))return[e];let r=e.cases.filter(r=>B(n,[t.toLowerCase(),e.path.toLowerCase(),r.name.toLowerCase()]));return r.length===0?[]:[{...e,cases:r}]})},H=e=>P(e===`passed`?`status.passed`:e===`failed`?`status.failed`:e===`running`?`status.running`:e===`error`?`status.error`:e===`stopped`?`status.stopped`:`status.idle`),_e=e=>e?.selection?e.selection.kind===`all`?P(`selection.allTests`):e.selection.kind===`case`?e.selection.name:R(e.selection.path):P(`selection.noRunYet`),U=e=>/(^|\s)(?:FAIL|✗)(\s|$)|\b(?:failed|error|stderr|Expected:|Received:)\b/i.test(e)?`failure`:/(^|\s)(?:PASS|✓)(\s|$)|\bpassed\b/i.test(e)?`success`:/\b(?:WARN|warning|skipped|todo|pending)\b/i.test(e)?`warning`:`default`,W=e=>e===`failure`?`text-rose-200`:e===`success`?`text-emerald-200`:e===`warning`?`text-amber-200`:`text-slate-200`,G=(e,t)=>e===t?!0:e.length===t.length?e.every((e,n)=>{let r=t[n];return r!=null&&e.id===r.id&&e.name===r.name&&e.command===r.command&&e.cwd===r.cwd&&e.runner===r.runner}):!1,ve=`min-w-24 justify-center shadow-none transition-none disabled:opacity-100`,K=({line:e,tone:t})=>(0,A.jsx)(`div`,{"data-tone":t,className:c(`whitespace-pre-wrap break-words`,W(t)),children:e===``?` `:e}),q=(0,k.memo)(({canRunGranular:e,filePath:t,isActive:n,name:r,onRunCase:i})=>(0,A.jsxs)(`button`,{type:`button`,"aria-label":P(`caseRow.runAriaLabel`,{name:r}),title:r,className:c(`flex w-full min-w-0 items-center gap-2.5 rounded-xl px-2.5 py-1.5 text-left transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,e?`cursor-pointer hover:bg-sky-500/10`:`cursor-not-allowed opacity-60`,n&&`bg-sky-500/10`),disabled:!e,onClick:()=>{i(t,r)},children:[(0,A.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full bg-sky-300/80`}),(0,A.jsx)(`span`,{className:`truncate text-xs text-foreground`,children:r})]}));q.displayName=`TestCaseRow`;var J=(0,k.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,canRunGranular:i,file:a,isExpanded:o,onRunCase:s,onRunFile:l,onToggleFile:u})=>{let d=e===`file`&&n===a.path,f=e===`case`&&n===a.path;return(0,A.jsx)(y,{open:o,onOpenChange:e=>{u(a.path,e)},children:(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(S,{asChild:!0,children:(0,A.jsx)(r,{type:`button`,variant:`ghost`,size:`icon-xs`,"aria-label":P(o?`fileRow.collapseAriaLabel`:`fileRow.expandAriaLabel`,{path:a.path}),className:`mt-1 shrink-0 text-muted-foreground hover:text-foreground`,children:(0,A.jsx)(D,{className:c(`h-4 w-4 transition-transform`,o&&`rotate-180`)})})}),(0,A.jsx)(`button`,{type:`button`,"aria-label":P(`fileRow.runAriaLabel`,{path:a.path}),className:c(`min-w-0 flex-1 rounded-xl border border-border/60 bg-background/20 px-2.5 py-2 text-left transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,i?`cursor-pointer hover:border-sky-400/35 hover:bg-sky-500/10`:`cursor-not-allowed opacity-60`,(d||f)&&`border-sky-400/45 bg-sky-500/10`),disabled:!i,onClick:()=>{l(a.path)},children:(0,A.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,A.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-md border border-border/70 bg-background/60 text-sky-200`,children:(0,A.jsx)(w,{className:`h-3.5 w-3.5`})}),(0,A.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-start justify-between gap-3`,children:[(0,A.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,A.jsx)(`span`,{className:`block truncate text-xs font-medium text-foreground`,children:R(a.path)}),(0,A.jsx)(`span`,{className:`mt-0.5 block truncate text-[11px] text-muted-foreground`,children:a.path})]}),(0,A.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted-foreground`,children:P(`fileRow.testCount`,{count:a.cases.length})})]})]})})]}),(0,A.jsx)(p,{children:(0,A.jsx)(`div`,{className:`ml-4 border-l border-border/60 pl-6`,children:a.cases.length===0?(0,A.jsx)(`p`,{className:`px-2.5 py-1.5 text-xs text-muted-foreground`,children:P(`fileRow.noNamedTests`)}):(0,A.jsx)(`div`,{className:`space-y-1`,children:a.cases.map(r=>{let o=e===`case`&&n===a.path&&t===r.name;return(0,A.jsx)(q,{canRunGranular:i,filePath:a.path,isActive:o,name:r.name,onRunCase:s},r.id)})})})})]})})});J.displayName=`DiscoveryFileRow`;var ye=(0,k.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,availableCommands:i,canRunGranular:a,discovery:o,expandedFiles:s,fullSuiteOnlyNotice:l,isLoading:u,selectedCommandId:d,selectedCommandName:f,sessionError:p,sessionStatus:m,shouldShowCommandSelector:h,onRunCase:ee,onRunFile:y,onSelectCommand:b,onToggleFile:te})=>{let[x,S]=(0,k.useState)(``),w=(0,k.useMemo)(()=>V(o,x),[o,x]),T=(0,k.useMemo)(()=>w.reduce((e,t)=>e+t.cases.length,0),[w]),E=z(x).length>0;return(0,A.jsx)(`aside`,{className:`min-h-0 border-b border-border/70 px-4 py-4 lg:border-r lg:border-b-0`,children:(0,A.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[h&&(0,A.jsxs)(`div`,{className:`space-y-2`,children:[(0,A.jsx)(`p`,{className:`text-xs uppercase tracking-[0.22em] text-muted-foreground`,children:P(`scope.label`)}),(0,A.jsxs)(re,{children:[(0,A.jsx)(C,{asChild:!0,children:(0,A.jsxs)(r,{type:`button`,variant:`outline`,className:`w-full justify-between rounded-xl border-border/70 bg-background/60`,"aria-label":P(`scope.selectedCommandAriaLabel`),disabled:i.length===0||m===`running`,children:[(0,A.jsx)(`span`,{className:`truncate`,children:f??P(`scope.selectTestScope`)}),(0,A.jsx)(D,{className:`h-4 w-4 text-muted-foreground`})]})}),(0,A.jsx)(g,{align:`start`,className:`w-72`,children:i.map(e=>(0,A.jsx)(_,{className:c(d===e.id&&`bg-accent text-accent-foreground`),onSelect:()=>{b(e.id)},children:(0,A.jsx)(`span`,{className:`truncate`,children:e.name})},e.id))})]})]}),l&&(0,A.jsx)(`div`,{className:`rounded-2xl border border-border/70 bg-background/30 px-4 py-3 text-sm text-muted-foreground`,children:l}),(o.length>0||x.length>0)&&(0,A.jsxs)(`div`,{className:`relative mt-1 shrink-0`,children:[(0,A.jsx)(O,{type:`search`,value:x,onChange:e=>{S(e.target.value)},placeholder:P(`filter.placeholder`),"aria-label":P(`filter.ariaLabel`),className:`pr-10`}),x.length>0&&(0,A.jsx)(r,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":P(`filter.clearAriaLabel`),className:`absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>{S(``)},children:(0,A.jsx)(ne,{className:`size-4`})})]}),!i.length&&(0,A.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-4 text-sm text-muted-foreground`,children:P(`discovery.noCommands`)}),p&&(0,A.jsx)(`div`,{className:`rounded-2xl border border-rose-500/30 bg-rose-500/10 px-4 py-3 text-sm text-rose-200`,children:p}),(0,A.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-hidden rounded-2xl border border-border/70 bg-background/20 p-4`,children:[(0,A.jsxs)(`div`,{className:`shrink-0 flex items-start justify-between gap-3`,children:[(0,A.jsx)(`div`,{className:`min-w-0`,children:(0,A.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[P(`discovery.fileCount`,{count:w.length}),`, `,P(`discovery.caseCount`,{count:T})]})}),u&&(0,A.jsx)(v,{className:`h-4 w-4 animate-spin text-muted-foreground`})]}),(0,A.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto pr-1`,children:o.length===0&&!u?(0,A.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:P(`discovery.noFilesDetected`)}):w.length===0?(0,A.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:P(`discovery.noFilterMatches`)}):w.map(r=>(0,A.jsx)(J,{activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,canRunGranular:a,file:r,isExpanded:E||(s[r.path]??!1),onRunCase:ee,onRunFile:y,onToggleFile:te},r.path))})]})]})})});ye.displayName=`DiscoveryPane`;var be=(0,k.memo)(({durationMs:e,output:t,outputTruncated:n,selectionLabel:r,status:i,summaryCounts:a,viewportRef:o,onScroll:s})=>{let l=(0,k.useMemo)(()=>t?F(t).replaceAll(`\r
|
|
2
|
+
`,`
|
|
3
|
+
`).replaceAll(`\r`,`
|
|
4
|
+
`).split(`
|
|
5
|
+
`).map(e=>({line:e,tone:U(e)})):[],[t]);return(0,A.jsx)(`section`,{className:`min-h-0 px-4 py-4`,children:(0,A.jsxs)(`div`,{className:`flex h-full flex-col gap-3`,children:[(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,A.jsx)(`span`,{className:`font-medium text-foreground`,children:r}),i&&(0,A.jsx)(T,{variant:`outline`,className:c(`px-3 py-1 text-xs uppercase tracking-[0.2em]`,L(i)),children:H(i)}),a&&(0,A.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-xs font-medium uppercase tracking-[0.18em]`,children:[(0,A.jsxs)(`span`,{className:`text-rose-200`,children:[a.failed.count,` `,a.failed.label]}),(0,A.jsxs)(`span`,{className:`text-emerald-200`,children:[a.passed.count,` `,a.passed.label]})]}),e!=null&&(0,A.jsx)(`span`,{className:`text-muted-foreground`,children:ge(e)}),n&&(0,A.jsx)(T,{variant:`outline`,className:`border-amber-400/30 bg-amber-500/10 text-amber-200`,children:P(`output.trimmed`)})]}),(0,A.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden rounded-2xl border border-border/70 bg-[#0d1017]`,children:(0,A.jsx)(`div`,{ref:o,"aria-label":P(`output.ariaLabel`),className:`h-full overflow-auto px-4 py-4`,onScroll:s,children:(0,A.jsx)(`div`,{className:`font-mono text-xs leading-5`,children:l.length>0?l.map((e,t)=>(0,A.jsx)(K,{line:e.line,tone:e.tone},`${t}:${e.line}`)):(0,A.jsx)(`div`,{className:`text-slate-200`,children:P(`output.empty`)})})})})]})})});be.displayName=`OutputPane`;var xe=({testCommands:e,onClose:t,...a})=>{let o=a.scope,s=a.projectId,c=a.scope===`ticket`?a.ticketId:null,l=a.scope===`project`?a.targetKind:null,p=a.scope===`project`?a.targetBundleId:null,[h,g]=(0,k.useState)(e),[_,v]=(0,k.useState)(null),[y,S]=(0,k.useState)([]),[C,w]=(0,k.useState)(``),[T,re]=(0,k.useState)({}),[D,O]=(0,k.useState)(!0),[j,M]=(0,k.useState)(!1),[N,F]=(0,k.useState)(!1),[I,L]=(0,k.useState)(null),[ge,R]=(0,k.useState)(!1),[z,B]=(0,k.useState)(!1),V=(0,k.useRef)(null),H=(0,k.useRef)(!1),U=(0,k.useRef)(null),W=(0,k.useRef)(!0),K=(0,k.useRef)(null),q=(0,k.useRef)(null),J=_?.selection?.kind??null,xe=_?.selection?.kind===`all`?null:_?.selection?.path??null,Se=_?.selection?.kind===`case`?_.selection.name:null,Y=_?.id??null,X=_?.status??null,Z=(0,k.useMemo)(()=>h.find(e=>e.id===C)??null,[h,C]),Ce=(0,k.useMemo)(()=>{if(_?.summary?.failed_count==null&&_?.summary?.passed_count==null&&_?.summary?.failed_file_count==null&&_?.summary?.passed_file_count==null)return null;let e=_?.summary?.failed_count==null&&_?.summary?.passed_count==null;return{failed:X===`failed`&&_?.summary?.failed_count==null&&_?.summary?.failed_file_count!=null||e?{count:_?.summary?.failed_file_count??0,label:P(`summaryCounts.filesFailed`)}:{count:_?.summary?.failed_count??0,label:P(`summaryCounts.failed`)},passed:e?{count:_?.summary?.passed_file_count??0,label:P(`summaryCounts.filesPassed`)}:{count:_?.summary?.passed_count??_?.summary?.passed_file_count??0,label:P(`summaryCounts.passed`)}}},[_?.summary?.failed_count,_?.summary?.passed_count,_?.summary?.failed_file_count,_?.summary?.passed_file_count,X]),we=Z?.runner===`unknown`?P(`scope.fullSuiteOnlyNotice`):null,Te=!!(Z&&_?.status!==`running`&&!j&&!N),Ee=Te,De=Te&&z,Oe=h.length>1;(0,k.useEffect)(()=>{C||h.length===0||w(h[0]?.id??``)},[h,C]),(0,k.useEffect)(()=>{e.length>0&&g(t=>G(t,e)?t:e)},[e]),(0,k.useEffect)(()=>{if(h.length>0||!s)return;let e=new AbortController;return te(e.signal).then(e=>{let t=e.find(e=>e.id===s);t&&g(e=>{let n=he(t.test_commands);return G(e,n)?e:n})}).catch(()=>{}),()=>{e.abort()}},[h.length,s]),(0,k.useEffect)(()=>{let e=e=>{!e||e.id!==V.current||v(e)},t=e=>{!e||e.session_id!==V.current||v(t=>!t||t.id!==e.session_id?t:{...t,output:fe(t.output,e.chunk),output_truncated:e.output_truncated})};return E.on(`test-session:updated`,e),E.on(`test-session:output`,t),()=>{E.off(`test-session:updated`,e),E.off(`test-session:output`,t)}},[]),(0,k.useEffect)(()=>{let e=U.current;if(!e){K.current=_?.output??null,q.current=_?.status??null;return}let t=K.current!==(_?.output??null),n=q.current!==`running`&&_?.status===`running`,r=q.current===`running`&&_?.status!==`running`;if(n&&(W.current=!0),n||t&&_?.status===`running`&&W.current||r&&W.current){let t=me(e,r);return K.current=_?.output??null,q.current=_?.status??null,t}K.current=_?.output??null,q.current=_?.status??null},[_?.output,_?.status]),(0,k.useEffect)(()=>{let e=!1;return(async()=>{try{let t=o===`project`?await oe(s,{target_kind:l??`repo_root`,target_bundle_id:p??null}):await se(c??``,s);if(e)return;V.current=t.id,v(t)}catch(t){e||L(t instanceof b?t.message:P(`messages.loadRunnerError`))}finally{!e&&V.current==null&&O(!1)}})(),()=>{e=!0}},[s,o,p,l,c]),(0,k.useEffect)(()=>{if(!_?.id){B(!1);return}if(h.length>0&&!C){B(!1);return}let e=new AbortController,t=!1;return O(!0),B(!1),ce(_.id,{commandId:C||null,signal:e.signal}).then(e=>{t||(S(e.files),B(e.supports_granular_selection))}).catch(n=>{t||e.signal.aborted||L(n instanceof b?n.message:P(`messages.discoverError`))}).finally(()=>{t||O(!1)}),()=>{t=!0,e.abort()}},[h.length,C,_?.id]),(0,k.useEffect)(()=>()=>{let e=V.current;!e||H.current||(H.current=!0,de(e).catch(()=>{}))},[]);let Q=(0,k.useCallback)(async e=>{if(!(!Y||X===`running`||!Z||j||N)){L(null),M(!0);try{v(await le(Y,{command_id:Z.id,selection:e}))}catch(e){L(e instanceof b?e.message:P(`messages.startError`))}finally{M(!1)}}},[j,N,Z,Y,X]),ke=(0,k.useCallback)(async()=>{if(!(!Y||X!==`running`||N)){L(null),F(!0);try{v(await ue(Y))}catch(e){L(e instanceof b?e.message:P(`messages.stopError`))}finally{F(!1)}}},[N,Y,X]),$=(0,k.useCallback)(()=>{let e=V.current;if(!e||H.current){t();return}H.current=!0,t(),de(e).catch(()=>{})},[t]),Ae=(0,k.useCallback)(()=>{if(X===`running`){R(!0);return}$()},[$,X]),je=(0,k.useCallback)(()=>{let e=U.current;e&&(W.current=pe(e))},[]),Me=(0,k.useCallback)(e=>{w(e)},[]),Ne=(0,k.useCallback)((e,t)=>{re(n=>(n[e]??!1)===t?n:{...n,[e]:t})},[]),Pe=(0,k.useCallback)(e=>{Q({kind:`file`,path:e})},[Q]),Fe=(0,k.useCallback)((e,t)=>{Q({kind:`case`,path:e,name:t})},[Q]);return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(m,{open:!0,onOpenChange:e=>{e||Ae()},children:(0,A.jsxs)(u,{showCloseButton:!1,overlayClassName:`bg-black/70`,className:`flex h-[calc(100vh-2rem)] max-h-[58rem] w-full max-w-[calc(100%-1rem)] flex-col gap-0 overflow-hidden rounded-3xl border border-[#2a2a38] bg-[#16161f] p-0 shadow-2xl sm:max-w-7xl`,onInteractOutside:e=>e.preventDefault(),children:[(0,A.jsx)(i,{className:`sr-only`,children:P(`dialog.srTitle`)}),(0,A.jsx)(n,{className:`sr-only`,children:P(`dialog.srDescription`)}),(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,A.jsx)(`div`,{className:`min-w-0`,children:(0,A.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,A.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-2xl border border-border/70 bg-background/60 text-sky-200`,children:(0,A.jsx)(f,{className:`h-5 w-5`})}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`h2`,{className:`text-2xl font-semibold text-foreground`,children:P(`dialog.title`)}),(0,A.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:_?.target_label??P(`dialog.preparingTarget`)})]})]})}),(0,A.jsx)(ae,{asChild:!0,children:(0,A.jsx)(r,{type:`button`,"aria-label":P(`dialog.closeAriaLabel`),variant:`ghost`,size:`icon-sm`,className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:(0,A.jsx)(ne,{className:`h-4 w-4`})})})]}),(0,A.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-0 lg:grid-cols-[22rem_minmax(0,1fr)]`,children:[(0,A.jsx)(ye,{activeSelectionKind:J,activeSelectionName:Se,activeSelectionPath:xe,availableCommands:h,canRunGranular:De,discovery:y,expandedFiles:T,fullSuiteOnlyNotice:we,isLoading:D,selectedCommandId:C,selectedCommandName:Z?.name??null,sessionError:I,sessionStatus:X,shouldShowCommandSelector:Oe,onRunCase:Fe,onRunFile:Pe,onSelectCommand:Me,onToggleFile:Ne}),(0,A.jsx)(be,{durationMs:_?.duration_ms??null,output:_?.output??``,outputTruncated:_?.output_truncated??!1,selectionLabel:_e(_),status:X,summaryCounts:Ce,viewportRef:U,onScroll:je})]}),(0,A.jsx)(ie,{className:`border-t border-border/70 px-6 py-4 sm:flex-row sm:items-center sm:justify-end`,children:(0,A.jsx)(`div`,{className:`flex items-center justify-end gap-2`,children:_?.status===`running`?(0,A.jsxs)(r,{type:`button`,variant:`destructive`,className:ve,onClick:()=>{ke()},disabled:N,children:[(0,A.jsx)(x,{className:`h-4 w-4`}),(0,A.jsx)(`span`,{children:P(`actions.stop`)})]}):(0,A.jsxs)(r,{type:`button`,variant:`success`,className:ve,disabled:!Ee,onClick:()=>{Q({kind:`all`})},children:[(0,A.jsx)(ee,{className:`h-4 w-4`}),(0,A.jsx)(`span`,{children:P(`actions.run`)})]})})})]})}),(0,A.jsx)(m,{open:ge,onOpenChange:R,children:(0,A.jsxs)(u,{showCloseButton:!1,overlayClassName:`z-[60] bg-black/60`,className:`z-[60] max-w-md rounded-2xl border border-border bg-card p-6 shadow-2xl`,children:[(0,A.jsxs)(d,{children:[(0,A.jsx)(i,{className:`text-sm font-semibold uppercase tracking-widest text-muted-foreground`,children:P(`closeConfirmation.title`)}),(0,A.jsx)(n,{className:`text-sm text-foreground whitespace-pre-line`,children:P(`closeConfirmation.description`)})]}),(0,A.jsxs)(ie,{className:`sm:flex-row sm:justify-end`,children:[(0,A.jsx)(r,{type:`button`,variant:`ghost`,onClick:()=>R(!1),children:P(`closeConfirmation.keepRunning`)}),(0,A.jsx)(r,{type:`button`,variant:`destructive`,onClick:()=>{R(!1),$()},children:P(`closeConfirmation.stopAndClose`)})]})]})})]})};export{xe as TestsDialog};
|