@straiffi/archon 1.8.0 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/client/assets/{ActivityView-EVy76nes.js → ActivityView-CF8punHV.js} +1 -1
  2. package/dist/client/assets/{GitHubActionsDialog-D53aA0Fv.js → GitHubActionsDialog-Ckb99-ve.js} +1 -1
  3. package/dist/client/assets/VerificationDialog-BgEDRfgP.js +4 -0
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CmMRkze6.js → architectureDiagram-3BPJPVTR-DSq-Vw-s.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-BgLsRgxM.js → blockDiagram-GPEHLZMM-C_0U0auf.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-C3WJl13c.js → c4Diagram-AAUBKEIU-CEHt0Kjy.js} +1 -1
  7. package/dist/client/assets/channel-BjDfVBsO.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-BfH4_PkQ.js → chunk-2J33WTMH-C0Kxxq-6.js} +1 -1
  9. package/dist/client/assets/{chunk-3OPIFGDE-CkVGPLM4.js → chunk-3OPIFGDE-QvjUuKmV.js} +1 -1
  10. package/dist/client/assets/{chunk-5ZQYHXKU-CDTwT753.js → chunk-5ZQYHXKU-Csrpz86K.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-CKEhBrr_.js → chunk-727SXJPM-B3vZVGMR.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-D5QPK_k7.js → chunk-AQP2D5EJ-Cs9__8di.js} +1 -1
  13. package/dist/client/assets/{chunk-CSCIHK7Q-BU4Ysr_2.js → chunk-CSCIHK7Q-C9X7lfBM.js} +1 -1
  14. package/dist/client/assets/{chunk-KSCS5N6A-B9lHLGg1.js → chunk-KSCS5N6A-CY0NGeTu.js} +1 -1
  15. package/dist/client/assets/{chunk-L5ZTLDWV-BrNsmxtD.js → chunk-L5ZTLDWV-BboXbWo7.js} +1 -1
  16. package/dist/client/assets/{chunk-LZXEDZCA-CVgZc1nv.js → chunk-LZXEDZCA-CUBnjoBD.js} +2 -2
  17. package/dist/client/assets/{chunk-ND2GUHAM-DWWdi42a.js → chunk-ND2GUHAM-BJqpZMk2.js} +1 -1
  18. package/dist/client/assets/{chunk-NZK2D7GU-46-aRMvO.js → chunk-NZK2D7GU-BHRnsVyz.js} +1 -1
  19. package/dist/client/assets/{chunk-O5CBEL6O-BW6wHmzD.js → chunk-O5CBEL6O-Anqw_yuF.js} +1 -1
  20. package/dist/client/assets/{chunk-WU5MYG2G-Wfk15Qtf.js → chunk-WU5MYG2G-BgGztexj.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-DSaSDx3D.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BwfjAHrx.js +1 -0
  23. package/dist/client/assets/{dagre-BM42HDAG-CZ_BDahz.js → dagre-BM42HDAG-BaQbcdG0.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-CQKXQvjO.js → diagram-2AECGRRQ-Brv-rcOf.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-Dgsh82oA.js → diagram-5GNKFQAL-D3eStICz.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-DUwmm3sV.js → diagram-KO2AKTUF-CrZfGF7-.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-DLGz0g10.js → diagram-LMA3HP47-Dtk6gUIn.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-CjS6v8Zz.js → diagram-OG6HWLK6-Bmarlaaa.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-DHaCFHn9.js → erDiagram-TEJ5UH35-BC_ZzN2S.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-E4LSVqs6.js → flowDiagram-I6XJVG4X-DpCPHLj5.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-BWywa_xn.js → ganttDiagram-6RSMTGT7-CaLaeFMa.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-BK4kWKuB.js → gitGraphDiagram-PVQCEYII-36phJ4N5.js} +1 -1
  33. package/dist/client/assets/index-D4qr0sQx.css +2 -0
  34. package/dist/client/assets/index-Os2WLcbu.js +274 -0
  35. package/dist/client/assets/{infoDiagram-5YYISTIA-BX7HzDWX.js → infoDiagram-5YYISTIA-BI5oO32P.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CEnWCNes.js → ishikawaDiagram-YF4QCWOH-bgfzr0xn.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-JHISSGLW-MQPDgPxD.js → journeyDiagram-JHISSGLW-DrmwNzOC.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-UN3LZRKU-PwVLKAnN.js → kanban-definition-UN3LZRKU-Cg5rkyMP.js} +1 -1
  39. package/dist/client/assets/{line-BJMnG1sl.js → line-CFlz4TDX.js} +1 -1
  40. package/dist/client/assets/{mermaid-parser.core-Bwv8qN83.js → mermaid-parser.core-C7CnvU1K.js} +1 -1
  41. package/dist/client/assets/{mermaid.core-DpFOXZmb.js → mermaid.core-Dbab-VXW.js} +3 -3
  42. package/dist/client/assets/{mindmap-definition-RKZ34NQL-Dt-9JT_z.js → mindmap-definition-RKZ34NQL-DJze85_k.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-4H26LBE5-aD3cg6m3.js → pieDiagram-4H26LBE5-DJAQkhKY.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DUh4hgmW.js → quadrantDiagram-W4KKPZXB-BD8d4qar.js} +1 -1
  45. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DOgz-iLT.js → requirementDiagram-4Y6WPE33-C5mokQZP.js} +1 -1
  46. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BqpDXW6-.js → sankeyDiagram-5OEKKPKP-EkdPZKJO.js} +1 -1
  47. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BM0Gvqia.js → sequenceDiagram-3UESZ5HK-B-5oe-32.js} +1 -1
  48. package/dist/client/assets/{stateDiagram-AJRCARHV-XZMyDtEy.js → stateDiagram-AJRCARHV-BFHel4DJ.js} +1 -1
  49. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-iGqsY8gO.js +1 -0
  50. package/dist/client/assets/{timeline-definition-PNZ67QCA-gqiDwxVu.js → timeline-definition-PNZ67QCA-DvyAtzba.js} +1 -1
  51. package/dist/client/assets/{vennDiagram-CIIHVFJN-MxeqqqyG.js → vennDiagram-CIIHVFJN-C9vIulQP.js} +1 -1
  52. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-pMgGO6cB.js → wardleyDiagram-YWT4CUSO-CQTFOoRr.js} +1 -1
  53. package/dist/client/assets/{xychartDiagram-2RQKCTM6-_VK_NZDn.js → xychartDiagram-2RQKCTM6-CyXsRLmO.js} +1 -1
  54. package/dist/client/index.html +2 -2
  55. package/dist/server/db.js +51 -2
  56. package/dist/server/db.js.map +1 -1
  57. package/dist/server/index.js +65 -6
  58. package/dist/server/index.js.map +1 -1
  59. package/dist/server/lib/chatOperations.js +9 -0
  60. package/dist/server/lib/chatOperations.js.map +1 -1
  61. package/dist/server/lib/chats.js +2 -0
  62. package/dist/server/lib/chats.js.map +1 -1
  63. package/dist/server/lib/checkRunner.js +7 -2
  64. package/dist/server/lib/checkRunner.js.map +1 -1
  65. package/dist/server/lib/checkRuns.js +23 -3
  66. package/dist/server/lib/checkRuns.js.map +1 -1
  67. package/dist/server/lib/executionRuns.js +10 -1
  68. package/dist/server/lib/executionRuns.js.map +1 -1
  69. package/dist/server/lib/git.js +57 -7
  70. package/dist/server/lib/git.js.map +1 -1
  71. package/dist/server/lib/postBuildCheckRuns.js +43 -0
  72. package/dist/server/lib/postBuildCheckRuns.js.map +1 -0
  73. package/dist/server/lib/postBuildChecks.js +122 -0
  74. package/dist/server/lib/postBuildChecks.js.map +1 -0
  75. package/dist/server/lib/projects.js +25 -1
  76. package/dist/server/lib/projects.js.map +1 -1
  77. package/dist/server/lib/ticketFollowUpOperations.js +9 -0
  78. package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
  79. package/dist/server/lib/tickets.js +2 -0
  80. package/dist/server/lib/tickets.js.map +1 -1
  81. package/dist/server/lib/types.js.map +1 -1
  82. package/dist/server/workers/build.js +8 -0
  83. package/dist/server/workers/build.js.map +1 -1
  84. package/dist/server/workers/chat.js +14 -0
  85. package/dist/server/workers/chat.js.map +1 -1
  86. package/dist/server/workers/followUp.js +10 -0
  87. package/dist/server/workers/followUp.js.map +1 -1
  88. package/package.json +1 -1
  89. package/dist/client/assets/VerificationDialog-Dm5DcY8F.js +0 -4
  90. package/dist/client/assets/channel-xqaERdN6.js +0 -1
  91. package/dist/client/assets/classDiagram-4FO5ZUOK-BdwFrsZE.js +0 -1
  92. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DxAuXA1L.js +0 -1
  93. package/dist/client/assets/index-CS2arNNP.js +0 -274
  94. package/dist/client/assets/index-Cb_ZVYaw.css +0 -2
  95. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C0Qe8FiL.js +0 -1
@@ -1,4 +0,0 @@
1
- import{a as e}from"./chunk-BNv3lrIs.js";import{A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,U as _,W as v,Y as y,_ as b,a as x,at as S,b as C,d as w,et as T,f as E,g as D,h as ee,i as te,it as O,k as ne,m as re,n as ie,nt as k,o as ae,ot as A,p as oe,q as j,rt as se,s as ce,st as le,t as M,tt as ue,u as de,v as fe,x as N,y as P,z as pe}from"./index-CS2arNNP.js";var F=e(le(),1),me=(e,t)=>S(k(`/projects/${e}/check-batches`),{method:`POST`,body:{target_kind:t.targetKind,target_bundle_id:t.targetKind===`bundle`?t.targetBundleId:null,definition_ids:t.definitionIds},fallbackErrorMessage:`Unable to start checks right now.`}),he=(e,t={})=>{let n=new URL(k(`/projects/${e}/check-batches`));return t.statuses?.length&&n.searchParams.set(`status`,t.statuses.join(`,`)),t.cursor&&n.searchParams.set(`cursor`,t.cursor),t.limit&&n.searchParams.set(`limit`,String(t.limit)),S(n.toString(),{signal:t.signal,fallbackErrorMessage:`Unable to load check batches right now.`})},ge=(e,t,n)=>S(k(`/projects/${e}/check-batches/${t}`),{signal:n,fallbackErrorMessage:`Unable to load check details right now.`}),_e=(e,t,n)=>S(k(`/projects/${e}/check-gate-evaluations/${t}`),{signal:n,fallbackErrorMessage:`Unable to load the automated delivery gate right now.`}),ve=(e,t,n)=>S(k(`/projects/${e}/check-batches/${t}/diagnostics`),{signal:n,fallbackErrorMessage:`Unable to load structured diagnostics right now.`}),ye=(e,t,n,r)=>S(k(`/projects/${e}/check-repairs`),{method:`POST`,body:{diagnostic_ids:t,raw_output_attempt_run_ids:n,...r?{ticket_id:r}:{}},fallbackErrorMessage:`Unable to start check repair right now.`}),be=(e,t,n)=>S(k(`/projects/${e}/check-repairs/${t}`),{signal:n,fallbackErrorMessage:`Unable to load check repair status right now.`}),xe=(e,t)=>S(k(`/projects/${e}/check-repairs/${t}/stop`),{method:`POST`,fallbackErrorMessage:`Unable to stop check repair right now.`}),I=(e,t)=>S(k(`/projects/${e}/check-batches/${t}/stop`),{method:`POST`,fallbackErrorMessage:`Unable to stop this check batch right now.`}),L=(e,t,n)=>S(k(`/projects/${e}/check-batches/${t}/rerun`),{method:`POST`,body:n.mode===`selected`?{mode:`selected`,definition_ids:n.definitionIds}:{mode:n.mode},fallbackErrorMessage:`Unable to rerun checks right now.`}),R=T(),Se=e=>{if(!e.file_path)return null;if(!e.start_line)return e.file_path;let t=`${e.start_line}${e.start_column?`:${e.start_column}`:``}`,n=e.end_line?`-${e.end_line}${e.end_column?`:${e.end_column}`:``}`:``;return`${e.file_path}:${t}${n}`},Ce=({attempt:e,diagnostics:t,repair:n,selectedDiagnosticIds:r,selectedRawOutputAttemptRunIds:i,selectedAttemptRunIds:a,selectedTicketId:o,pending:s,activeRepair:c,onSelectedTicketChange:l,onToggleDiagnostic:u,onToggleRawOutput:d,onStartRepair:f,onStopRepair:p})=>{let{t:m}=A(`common`,{keyPrefix:`checksDialog.diagnostics`}),h=t?.parser,g=c?.terminal_result===null,_=!!(n?.eligibility.eligible&&n.eligible_attempt_run_ids.includes(e.execution_run_id)&&h?.status===`complete`&&h.retention_state===`retained`),v=!!(n?.eligibility.eligible&&n.eligible_raw_output_attempt_run_ids.includes(e.execution_run_id)&&e.output_retention_state===`retained`&&e.retained_output),y=i.has(e.execution_run_id),b=r.size,x=b>=32,S=a.size>=8&&!a.has(e.execution_run_id),C=x?m(`diagnosticLimit`,{count:32}):S?m(`attemptLimit`,{count:8}):null,w=!!(n?.accepts_ticket_id&&n.candidate_tickets.length>1),T=b+i.size,E=T>0&&(!w||o!==``),D=n&&!n.eligibility.eligible?m(`disabled.${n.eligibility.reason}`):null;return(0,R.jsxs)(`section`,{"aria-labelledby":`diagnostics-${e.execution_run_id}`,className:`mt-5 rounded-2xl border border-border/70 bg-background/25 p-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h3`,{id:`diagnostics-${e.execution_run_id}`,className:`text-sm font-semibold text-foreground`,children:m(`title`)}),(0,R.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:h?m(`summary`,{count:h.diagnostic_count,parser:m(`parser.${h.parser_kind}`)}):m(`loading`)})]}),h&&(0,R.jsx)(`span`,{className:`rounded-full border border-border px-2 py-1 text-xs text-muted-foreground`,children:m(`state.${h.status}`)})]}),h?.retention_state===`expired`&&(0,R.jsx)(`p`,{className:`mt-3 text-sm text-amber-200`,children:m(`expired`)}),h?.truncated&&(0,R.jsx)(`p`,{className:`mt-3 text-sm text-amber-200`,children:m(`truncated`)}),h&&[`unsupported`,`malformed`,`interrupted`].includes(h.status)&&(0,R.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:m(`fallback.${h.status}`)}),v&&(0,R.jsxs)(`label`,{className:`mt-4 flex items-start gap-3 rounded-xl border border-amber-400/25 bg-amber-500/5 p-3`,children:[(0,R.jsx)(`input`,{type:`checkbox`,className:`mt-1 size-4 accent-primary`,checked:y,disabled:g||!y&&S,onChange:e=>d(e.target.checked)}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:m(`rawOutputSelect`)}),(0,R.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:m(`rawOutputHint`)}),e.retained_start_offset>0&&(0,R.jsx)(`span`,{className:`mt-1 block text-xs text-amber-200`,children:m(`rawOutputTruncated`)})]})]}),h&&t&&t.diagnostics.length>0&&(0,R.jsxs)(`fieldset`,{className:`mt-4`,children:[(0,R.jsx)(`legend`,{className:`text-xs font-medium text-muted-foreground`,children:m(`selectLegend`)}),(0,R.jsx)(`ul`,{className:`mt-2 space-y-2`,children:t.diagnostics.map(t=>{let n=Se(t),i=r.has(t.id);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`label`,{className:`flex items-start gap-3 rounded-xl border border-border/60 bg-background/35 p-3`,children:[(0,R.jsx)(`input`,{type:`checkbox`,className:`mt-1 size-4 accent-primary`,checked:i,disabled:!_||g||!i&&C!==null,onChange:e=>u(t.id,e.target.checked)}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsxs)(`span`,{className:`flex flex-wrap gap-2 text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{className:`font-semibold uppercase text-foreground`,children:m(`severity.${t.severity}`)}),t.code&&(0,R.jsx)(`code`,{children:t.code}),(0,R.jsx)(`span`,{children:m(`source`,{source:e.command_snapshot.name})})]}),(0,R.jsx)(`span`,{className:`mt-1 block break-words text-sm text-foreground`,children:t.message}),(0,R.jsx)(`span`,{className:`mt-1 block break-all font-mono text-xs text-muted-foreground`,children:n??m(`repositoryLocation`)}),(0,R.jsxs)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:[m(`repairApplicability`),` · `,m(`retention`,{state:m(`retentionState.${h.retention_state}`)})]})]})]})},t.id)})})]}),n&&(0,R.jsxs)(`aside`,{className:`mt-4 rounded-xl border border-border/60 bg-background/35 p-3`,children:[(0,R.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:m(`destinationTitle`)}),(0,R.jsx)(`p`,{className:`mt-1 text-sm text-foreground`,children:m(`destination.${n.destination}`)}),(0,R.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:m(`destinationHint`)})]}),w&&n&&(0,R.jsxs)(`label`,{className:`mt-4 block text-xs text-muted-foreground`,children:[m(`ticketLabel`),(0,R.jsxs)(`select`,{value:o,onChange:e=>l(e.target.value),className:`mt-1 h-10 w-full rounded-xl border border-border bg-card px-3 text-sm text-foreground`,children:[(0,R.jsx)(`option`,{value:``,children:m(`ticketPlaceholder`)}),n.candidate_tickets.map(e=>(0,R.jsx)(`option`,{value:e.id,children:e.title},e.id))]})]}),D&&(0,R.jsx)(`p`,{className:`mt-3 text-xs text-amber-200`,children:D}),C&&(0,R.jsx)(`p`,{className:`mt-3 text-xs text-amber-200`,children:C}),c&&(0,R.jsxs)(`div`,{className:`mt-4 rounded-xl border border-sky-400/25 bg-sky-500/10 p-3 text-sm`,children:[(0,R.jsx)(`p`,{className:`font-medium text-sky-100`,children:m(c.terminal_result?`repairResult.${c.terminal_result}`:`repairRunning`)}),c.terminal_message&&(0,R.jsx)(`p`,{className:`mt-1 text-xs text-sky-100/80`,children:c.terminal_message})]}),(0,R.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,R.jsx)(j,{type:`button`,size:`sm`,disabled:!_&&!v||!E||s||g,title:D??void 0,onClick:f,children:s?m(`starting`):m(`repairSelectedEvidence`,{count:T})}),g&&(0,R.jsx)(j,{type:`button`,variant:`destructive`,size:`sm`,disabled:s,onClick:p,children:m(`stopRepair`)})]})]})},we=new Set([`queued`,`running`,`waiting`]),Te=75,Ee=32,De=64,Oe=3,z=32,ke=8,B=(e,t)=>e instanceof ue?e.message:t,Ae=e=>e.execution_status===`completed`?`border-emerald-400/30 bg-emerald-500/10 text-emerald-200`:e.execution_status===`failed`||e.execution_status===`interrupted`?`border-red-400/30 bg-red-500/10 text-red-200`:e.execution_status===`running`||e.execution_status===`queued`?`border-sky-400/30 bg-sky-500/10 text-sky-200`:`border-border bg-muted/40 text-muted-foreground`,je=(e,t)=>e.presentApplicability.appliesToCurrentState===!1?`stale`:t?t.execution_status===`interrupted`||t.execution_status===`cancelled`?`interrupted`:t.execution_status===`failed`?`failed`:t.currency===`stale`?`stale`:t.outcome&&t.outcome!==`passed`?`failed`:t.outcome===`passed`&&t.currency===`current`?`current`:e.decision===`blocked`?`blocked`:`current`:`missing`,Me={current:`border-emerald-400/30 bg-emerald-500/10 text-emerald-200`,stale:`border-amber-400/30 bg-amber-500/10 text-amber-200`,failed:`border-red-400/30 bg-red-500/10 text-red-200`,missing:`border-border bg-muted/40 text-muted-foreground`,interrupted:`border-orange-400/30 bg-orange-500/10 text-orange-200`,blocked:`border-amber-400/30 bg-amber-500/10 text-amber-200`},V=({projectId:e,targetKind:t,targetBundleId:n,definitions:r,requiredDefinitionIds:i=[],preReviewDefinitionIds:a=[],gateEvaluationId:o=null,onStatusChange:s})=>{let{t:c}=A(`common`,{keyPrefix:`checksDialog`}),l=ce(),[d,f]=(0,F.useState)(()=>new Set(r.map(e=>e.id))),[p,m]=(0,F.useState)(null),[h,g]=(0,F.useState)(null),[_,v]=(0,F.useState)(null),[y,b]=(0,F.useState)(!0),[S,C]=(0,F.useState)(null),[w,T]=(0,F.useState)(null),[D,O]=(0,F.useState)(new Set),[ne,ie]=(0,F.useState)(new Set),[k,le]=(0,F.useState)(``),[M,de]=(0,F.useState)(null),[fe,N]=(0,F.useState)(!1),[P,pe]=(0,F.useState)(0),[Se,V]=(0,F.useState)(null),H=(0,F.useRef)(p),U=(0,F.useRef)(null),W=(0,F.useRef)(new Set),G=(0,F.useRef)(new Map),K=(0,F.useRef)(0),q=(0,F.useRef)(0),J=(0,F.useRef)(null),Y=(0,F.useRef)(!1),X=(0,F.useRef)(!0),Ne=(0,F.useRef)(async()=>void 0),Z=(0,F.useRef)(async()=>void 0),Pe=(0,F.useRef)(()=>void 0),Q=(0,F.useRef)(0);H.current=p,X.current=y||S!==null;let Fe=(0,F.useCallback)(e=>{T(e),de(e.latest_repair),O(t=>{let n=new Set(e.attempts.flatMap(e=>e.diagnostics.map(e=>e.id)));return new Set([...t].filter(e=>n.has(e)))}),ie(t=>{let n=new Set(e.repair.eligible_raw_output_attempt_run_ids);return new Set([...t].filter(e=>n.has(e)))}),le(t=>e.repair.candidate_tickets.some(e=>e.id===t)?t:e.repair.candidate_tickets.length===1&&e.repair.accepts_ticket_id?e.repair.candidate_tickets[0].id:``)},[]),Ie=(0,F.useCallback)(e=>{let t=G.current;if(!t.has(e.attempt_run_id)&&t.size>=Ee){let e=t.keys().next().value;e&&(t.delete(e),W.current.delete(e))}let n=t.get(e.attempt_run_id)??[];t.set(e.attempt_run_id,[...n.slice(-(De-1)),e])},[]),Le=(0,F.useCallback)(e=>{let t=H.current?.batch.execution_run_id===e.batch.execution_run_id?H.current:null,n=!1,r=new Set(e.attempts.map(e=>e.execution_run_id));for(let e of G.current.keys())r.has(e)||(G.current.delete(e),W.current.delete(e));let i=e.attempts.map(e=>{let r=!1,i=t?.attempts.find(t=>t.execution_run_id===e.execution_run_id),a=i&&i.output_revision>e.output_revision?i:e,o=G.current.get(e.execution_run_id)??[];for(let e of[...o].sort((e,t)=>e.revision-t.revision)){let t=ae(x(a),e);if(t.status===`refetch`){r=!0,n=!0;continue}t.status===`applied`&&(a={...a,output_revision:t.snapshot.revision,retained_start_offset:t.snapshot.retainedStartOffset,retained_end_offset:t.snapshot.totalByteCount,total_persisted_bytes:t.snapshot.totalByteCount,retained_output:t.snapshot.retainedText})}return r?W.current.add(e.execution_run_id):(W.current.delete(e.execution_run_id),G.current.delete(e.execution_run_id)),a}),a={...e,attempts:i};J.current=e.batch.execution_run_id,H.current=a,m(a),v(e=>a.attempts.some(t=>t.execution_run_id===e)?e:a.attempts.find(e=>e.execution_status===`running`)?.execution_run_id??a.attempts[0]?.execution_run_id??null),n?Pe.current(e.batch.execution_run_id):Q.current=0,Y.current&&!U.current&&(Y.current=!1,U.current=setTimeout(()=>{U.current=null,Z.current().catch(e=>V(B(e,c(`errors.load`))))},Te))},[c]),$=(0,F.useCallback)(async(t,n)=>{let r=++K.current,i=await ge(e,t,n);r!==K.current||i.batch.execution_run_id!==t||J.current!==null&&J.current!==t||Le(i)},[Le,e]);Ne.current=$,Pe.current=(0,F.useCallback)(e=>{if(U.current)return;if(Q.current>=Oe){Q.current=0,W.current.clear(),G.current.clear();return}let t=Te*2**Q.current;U.current=setTimeout(()=>{U.current=null,Q.current+=1,Ne.current(e).catch(t=>{V(B(t,c(`errors.load`))),W.current.size>0&&Pe.current(e)})},t)},[c]);let Re=(0,F.useCallback)(async r=>{let i=++K.current,a=null;do{let o=await he(e,{limit:50,cursor:a,signal:r});if(i!==K.current)return;let s=o.items.find(e=>e.check_batch?.details?.target_kind===t&&e.check_batch.details.target_bundle_id===(t===`bundle`?n:null));if(s){J.current=s.run.id,await $(s.run.id,r);return}a=o.next_cursor}while(a);!r?.aborted&&i===K.current&&(J.current=null,H.current=null,m(null),v(null))},[$,e,n,t]),ze=(0,F.useCallback)(async()=>{if(o){let e=J.current;e&&await $(e);return}await Re()},[o,$,Re]);Z.current=ze;let Be=(0,F.useCallback)(e=>{U.current||=setTimeout(()=>{U.current=null,$(e).catch(e=>V(B(e,c(`errors.load`))))},Te)},[$,c]);(0,F.useEffect)(()=>{let t=new AbortController;return b(!0),V(null),(async()=>{if(!o){g(null),await Re(t.signal);return}let n=await _e(e,o,t.signal);if(g(n),n.sourceBatchRunId){J.current=n.sourceBatchRunId,await $(n.sourceBatchRunId,t.signal);return}J.current=null,H.current=null,m(null),v(null)})().catch(e=>{se(e)||V(B(e,c(`errors.load`)))}).finally(()=>{t.signal.aborted||(b(!1),X.current=!1,Y.current&&!U.current&&(Y.current=!1,U.current=setTimeout(()=>{U.current=null,Z.current().catch(e=>V(B(e,c(`errors.load`))))},Te)))}),()=>t.abort()},[o,$,Re,e,c]),(0,F.useEffect)(()=>{let t=p?.batch.execution_run_id;if(!t){q.current+=1,T(null),O(new Set),ie(new Set),le(``);return}let n=++q.current,r=new AbortController;return ve(e,t,r.signal).then(e=>{n===q.current&&e.batch_run_id===t&&J.current===t&&Fe(e)}).catch(e=>{se(e)||V(B(e,c(`errors.diagnostics`)))}),()=>r.abort()},[p?.batch.execution_run_id,P,Fe,e,c]),(0,F.useEffect)(()=>{let t=t=>{if(t.project_id!==e)return;let n=J.current;if(n!==null&&t.batch_run_id!==n)return;let r=H.current;if(!r||W.current.has(t.attempt_run_id)){Ie(t),r&&W.current.has(t.attempt_run_id)&&Pe.current(r.batch.execution_run_id);return}let i=r.attempts.findIndex(e=>e.execution_run_id===t.attempt_run_id);if(i<0){Ie(t),Be(r.batch.execution_run_id);return}let a=r.attempts[i],o=ae(x(a),t);if(o.status===`ignored`)return;if(o.status===`refetch`){W.current.add(t.attempt_run_id),Ie(t),Pe.current(r.batch.execution_run_id);return}let s=[...r.attempts];s[i]={...a,output_revision:o.snapshot.revision,retained_start_offset:o.snapshot.retainedStartOffset,retained_end_offset:o.snapshot.totalByteCount,total_persisted_bytes:o.snapshot.totalByteCount,retained_output:o.snapshot.retainedText};let c={...r,attempts:s};H.current=c,m(c)},n=t=>{if(t.project_id&&t.project_id!==e)return;if(X.current){Y.current=!0;return}let n=H.current,r=t.execution_run_id??t.id;if(pe(e=>e+1),M&&r===M.execution_run_id&&be(e,M.execution_run_id).then(de).catch(()=>void 0),n&&(r===n.batch.execution_run_id||n.attempts.some(e=>e.execution_run_id===r))){K.current+=1,Be(n.batch.execution_run_id);return}Y.current=!0,!X.current&&!U.current&&(Y.current=!1,U.current=setTimeout(()=>{U.current=null,Z.current().catch(e=>V(B(e,c(`errors.load`))))},Te))},r=()=>{pe(e=>e+1),ze().catch(e=>V(B(e,c(`errors.load`))))};return l.on(`check-attempt:output`,t),l.on(`execution-run:updated`,n),l.on(`lifecycle-event:created`,n),l.on(`connect`,r),()=>{l.off(`check-attempt:output`,t),l.off(`execution-run:updated`,n),l.off(`lifecycle-event:created`,n),l.off(`connect`,r)}},[M,Ie,e,ze,Be,l,c]),(0,F.useEffect)(()=>()=>{U.current&&clearTimeout(U.current),W.current.clear(),G.current.clear()},[]);let Ve=e=>{K.current+=1,J.current=e.batch.execution_run_id,Le(e)},He=async(e,t)=>{K.current+=1,X.current=!0,C(e),V(null);try{Ve(await t())}catch(t){V(B(t,c(`errors.${e}`))),t instanceof ue&&t.status===409&&await ze().catch(()=>void 0)}finally{C(null),X.current=y,Y.current&&!U.current&&(Y.current=!1,U.current=setTimeout(()=>{U.current=null,Z.current().catch(e=>V(B(e,c(`errors.load`))))},Te))}},Ue=p?we.has(p.batch.execution_status):!1,We=p?Ue?`running`:p.batch.execution_status===`completed`?`finished`:p.batch.execution_status===`cancelled`||p.batch.execution_status===`interrupted`?`interrupted`:`error`:`inactive`,Ge=[...d],Ke=new Set(i),qe=new Set(a),Je=i.length,Ye=a.length,Xe=p?.attempts.filter(e=>e.execution_status!==`completed`).length??0,Ze=async()=>{if(!(!w||D.size===0&&ne.size===0)){N(!0),V(null);try{let t=w.repair.accepts_ticket_id&&(k||w.repair.candidate_tickets[0]?.id)||null;de(await ye(e,[...D],[...ne],t))}catch(t){if(V(B(t,c(`errors.repair`))),t instanceof ue&&t.status===409&&p){let t=p.batch.execution_run_id,n=++q.current;ve(e,t).then(e=>{n===q.current&&e.batch_run_id===t&&J.current===t&&Fe(e)}).catch(()=>void 0)}}finally{N(!1)}}},Qe=async()=>{if(M){N(!0),V(null);try{de(await xe(e,M.execution_run_id))}catch(e){V(B(e,c(`errors.repairStop`)))}finally{N(!1)}}},$e=new Set([...w?.attempts.filter(e=>e.diagnostics.some(e=>D.has(e.id))).map(e=>e.attempt_run_id)??[],...ne]),et=(e,t,n)=>{O(r=>{let i=new Set(r);if(!n)return i.delete(t),i;if(i.size>=z)return r;let a=new Set(w?.attempts.filter(e=>e.diagnostics.some(e=>i.has(e.id))).map(e=>e.attempt_run_id)??[]);return!a.has(e)&&a.size>=ke?r:(i.add(t),i)})},tt=(e,t)=>{ie(n=>{let r=new Set(n);return t?!$e.has(e)&&$e.size>=ke?n:(r.add(e),r):(r.delete(e),r)})};return(0,F.useEffect)(()=>{s?.(We)},[We,s]),(0,R.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:[Se&&(0,R.jsx)(`p`,{role:`alert`,className:`mx-4 mt-3 rounded-xl border border-red-400/25 bg-red-500/10 px-3 py-2 text-sm text-red-200 sm:mx-6`,children:Se}),(0,R.jsxs)(`div`,{className:`grid min-h-0 flex-1 overflow-hidden md:grid-cols-[19rem_minmax(0,1fr)]`,children:[(0,R.jsxs)(`aside`,{className:`min-h-0 overflow-y-auto border-b border-border/70 p-4 md:border-r md:border-b-0 sm:p-5`,children:[(0,R.jsx)(`h2`,{className:`text-sm font-semibold text-foreground`,children:c(`configured`)}),(0,R.jsxs)(`div`,{className:`mt-3 rounded-xl border border-border/70 bg-background/35 p-3 text-xs text-muted-foreground`,children:[(0,R.jsx)(`p`,{className:`font-medium text-foreground`,children:c(`policySummary.title`)}),(0,R.jsx)(`p`,{className:`mt-1`,children:c(`policySummary.counts`,{requiredCount:Je,preReviewCount:Ye})}),(0,R.jsx)(`p`,{className:`mt-1`,children:c(`policySummary.projectPolicy`)})]}),(0,R.jsx)(`div`,{className:`mt-3 space-y-2`,children:r.map(e=>{let t=p?.attempts.find(t=>t.definition_id===e.id),n=Ke.has(e.id),r=qe.has(e.id);return(0,R.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3 rounded-xl border border-border/60 bg-background/30 p-3`,children:[(0,R.jsx)(`input`,{type:`checkbox`,className:`mt-1 size-4 accent-primary`,checked:d.has(e.id),onChange:t=>f(n=>{let r=new Set(n);return t.target.checked?r.add(e.id):r.delete(e.id),r})}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block truncate text-sm font-medium text-foreground`,children:e.name}),(0,R.jsxs)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:[c(`category.${e.category}`),` · `,c(n?`required`:`optional`),` · `,c(r?`preReview`:`finalOnly`),t?` · ${c(`status.${t.execution_status}`)}`:``]})]})]},e.id)})}),(0,R.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,R.jsx)(j,{type:`button`,size:`sm`,disabled:Ge.length===0||Ue||S!==null,onClick:()=>void He(`run`,()=>me(e,{targetKind:t,targetBundleId:n,definitionIds:Ge})),children:c(S===`run`?`starting`:`runSelected`)}),p&&Ue&&(0,R.jsx)(j,{type:`button`,variant:`destructive`,size:`sm`,disabled:S!==null,onClick:()=>void He(`stop`,()=>I(e,p.batch.execution_run_id)),children:c(S===`stop`?`stopping`:`stop`)})]}),p&&!Ue&&(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,R.jsx)(j,{type:`button`,variant:`outline`,size:`xs`,disabled:S!==null,onClick:()=>void He(`rerun`,()=>L(e,p.batch.execution_run_id,{mode:`all`})),children:c(`rerunAll`)}),(0,R.jsx)(j,{type:`button`,variant:`outline`,size:`xs`,disabled:S!==null||Xe===0,onClick:()=>void He(`rerun`,()=>L(e,p.batch.execution_run_id,{mode:`failed_only`})),children:c(`rerunFailed`)})]})]}),(0,R.jsxs)(`main`,{className:`min-h-0 overflow-y-auto p-4 sm:p-6`,children:[o&&!h&&y&&(0,R.jsx)(`p`,{role:`status`,className:`mb-4 text-sm text-muted-foreground`,children:c(`gateLoading`)}),h&&(0,R.jsxs)(`section`,{"aria-labelledby":`automated-delivery-gate-heading`,className:`mb-5 rounded-2xl border border-border/70 bg-background/30 p-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h2`,{id:`automated-delivery-gate-heading`,className:`font-semibold text-foreground`,children:c(`gateTitle`)}),(0,R.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm text-muted-foreground`,children:c(`gateScope`)})]}),(0,R.jsx)(`span`,{className:u(`rounded-full border px-2.5 py-1 text-xs font-medium`,h.decision===`passed`&&h.presentApplicability.appliesToCurrentState===!0?Me.current:Me.blocked),children:c(h.presentApplicability.appliesToCurrentState===!1?`gateStale`:h.presentApplicability.appliesToCurrentState===null?`gateUnverifiable`:h.decision===`passed`?`gatePassed`:`gateBlocked`)})]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{children:c(`gateBoundary`,{boundary:h.boundaryKind})}),(0,R.jsx)(`span`,{className:`break-all`,children:c(`gatePolicy`,{fingerprint:h.policy.fingerprint.slice(0,12)})}),(0,R.jsx)(`span`,{className:`break-all`,children:h.sourceBatchRunId?c(`gateSourceBatch`,{batchId:h.sourceBatchRunId}):c(`gateNoBatch`)})]}),h.reasonCodes.length>0&&(0,R.jsx)(`ul`,{className:`mt-3 space-y-1 text-sm text-muted-foreground`,children:h.reasonCodes.map(e=>(0,R.jsx)(`li`,{children:c(`reason.${e}`)},e))}),(0,R.jsx)(`div`,{className:`mt-4 space-y-2`,children:h.policy.definitions.map(e=>{let t=je(h,h.evaluatedAttempts.find(t=>t.definition_id===e.id));return(0,R.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-xl border border-border/60 p-3`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`p`,{className:`break-words text-sm font-medium text-foreground`,children:e.name}),(0,R.jsx)(`code`,{className:`mt-1 block break-all text-xs text-muted-foreground`,children:e.command})]}),(0,R.jsx)(`span`,{className:u(`shrink-0 rounded-full border px-2 py-1 text-xs`,Me[t]),children:c(`evidence.${t}`)})]},e.id)})})]}),y&&(0,R.jsx)(`p`,{role:`status`,className:`text-sm text-muted-foreground`,children:c(`loading`)}),!y&&!p&&(0,R.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-border p-6 text-center`,children:[(0,R.jsx)(`h2`,{className:`font-medium text-foreground`,children:c(`emptyTitle`)}),(0,R.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:c(`emptyDescription`)})]}),p&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`rounded-full border border-border px-2 py-1 text-xs text-muted-foreground`,children:c(`status.${p.batch.execution_status}`)}),(0,R.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:c(`summary`,{passed:p.batch.passed_count,failed:p.batch.failed_count,running:p.batch.running_count,queued:p.batch.queued_count})}),p.batch.stop_requested&&(0,R.jsx)(`span`,{className:`text-xs text-amber-200`,children:c(`stopRequested`)})]}),(0,R.jsxs)(E,{value:_??void 0,onValueChange:v,children:[(0,R.jsx)(re,{className:`mt-4 flex flex-wrap gap-2 border-0 bg-transparent p-0`,"aria-label":c(`attempts`),children:p.attempts.map(e=>(0,R.jsx)(ee,{value:e.execution_run_id,tabIndex:_===e.execution_run_id?0:-1,className:u(`h-auto items-start border px-3 py-2 text-left text-xs data-[state=active]:ring-2 data-[state=active]:ring-ring/60`,Ae(e)),children:(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`span`,{className:`block font-medium`,children:e.command_snapshot.name}),(0,R.jsx)(`span`,{className:`mt-0.5 block opacity-80`,children:c(`status.${e.execution_status}`)})]})},e.execution_run_id))}),p.attempts.map(e=>(0,R.jsx)(oe,{value:e.execution_run_id,className:`mt-5`,children:(0,R.jsxs)(`article`,{children:[(0,R.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:e.command_snapshot.name}),(0,R.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-sm sm:grid-cols-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:c(`command`)}),(0,R.jsx)(`dd`,{className:`mt-0.5 break-words font-mono text-xs text-foreground`,children:e.command_snapshot.command})]}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:c(`directory`)}),(0,R.jsx)(`dd`,{className:`mt-0.5 text-foreground`,children:e.command_snapshot.cwd??c(`targetRoot`)})]}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:c(`outcome`)}),(0,R.jsx)(`dd`,{className:`mt-0.5 text-foreground`,children:e.outcome?c(`outcomeValue.${e.outcome}`):c(`status.${e.execution_status}`)})]}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:c(`currencyLabel`)}),(0,R.jsx)(`dd`,{className:`mt-0.5 text-foreground`,children:e.currency?c(`currency.${e.currency}`):c(`currency.pending`)})]})]}),(0,R.jsx)(Ce,{attempt:e,diagnostics:w?.attempts.find(t=>t.attempt_run_id===e.execution_run_id)??null,repair:w?.repair??null,selectedDiagnosticIds:D,selectedRawOutputAttemptRunIds:ne,selectedAttemptRunIds:$e,selectedTicketId:k,pending:fe,activeRepair:M,onSelectedTicketChange:le,onToggleDiagnostic:(t,n)=>et(e.execution_run_id,t,n),onToggleRawOutput:t=>tt(e.execution_run_id,t),onStartRepair:()=>void Ze(),onStopRepair:()=>void Qe()}),(0,R.jsx)(`h3`,{className:`mt-5 text-sm font-semibold text-foreground`,children:c(`output`)}),e.output_retention_state===`expired`?(0,R.jsx)(`p`,{className:`mt-2 rounded-xl border border-border bg-background/30 p-4 text-sm text-muted-foreground`,children:c(`outputExpired`)}):(0,R.jsx)(`pre`,{className:`mt-2 max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-xl border border-border bg-[#090b12] p-4 font-mono text-xs text-slate-200`,children:te(e.retained_output)||c(`outputEmpty`)}),e.retained_start_offset>0&&(0,R.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:c(`outputTruncated`)})]})},e.execution_run_id))]})]})]})]})]})},H=(e,t)=>S(k(`/projects/${e}/test-sessions`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to open the test runner right now.`}),U=(e,t)=>S(k(`/tickets/${e}/test-sessions${t?`?project_id=${encodeURIComponent(t)}`:``}`),{method:`POST`,fallbackErrorMessage:`Unable to open the test runner right now.`}),W=(e,t={})=>S(k(`/test-sessions/${e}/discovery${t.commandId?`?command_id=${encodeURIComponent(t.commandId)}`:``}`),{signal:t.signal,fallbackErrorMessage:`Unable to discover tests right now.`}),G=(e,t)=>S(k(`/test-sessions/${e}/run`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to start the selected tests right now.`}),K=e=>S(k(`/test-sessions/${e}/stop`),{method:`POST`,fallbackErrorMessage:`Unable to stop the test run right now.`}),q=e=>O(k(`/test-sessions/${e}`),{method:`DELETE`,fallbackErrorMessage:`Unable to close the test runner right now.`}),J=256*1024,Y=24,X=(e,t)=>C.t(`common:testsDialog.${e}`,t),Ne=(e,t)=>{let n=`${e}${t}`;return n.length<=J?n:n.slice(-J)},Z=(e,t)=>e?e.run_id&&t.run_id&&e.run_id!==t.run_id?e.status===`running`||t.status!==`running`?e:t:e.status!==`idle`&&e.status!==`running`&&t.status===`running`?e:e.run_id===t.run_id&&e.output.length>t.output.length?{...t,output:e.output,output_truncated:e.output_truncated||t.output_truncated}:t:t,Pe=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=Y,Q=e=>{e.scrollTop=e.scrollHeight},Fe=(e,t=!1)=>{Q(e);let n=0,r=0;return n=window.requestAnimationFrame(()=>{Q(e),t&&(r=window.requestAnimationFrame(()=>{Q(e)}))}),()=>{window.cancelAnimationFrame(n),r!==0&&window.cancelAnimationFrame(r)}},Ie=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`,Le=e=>{if(e==null)return null;if(e<1e3)return`${e} ms`;let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m ${i}s`:r>0?`${r}m ${i}s`:`${(e/1e3).toFixed(e>=1e4?0:1)} s`},$=e=>{let t=e.split(`/`);return t[t.length-1]||e},Re=e=>e.toLowerCase().trim().split(/\s+/).filter(Boolean),ze=(e,t)=>e.length===0?!0:e.every(e=>t.some(t=>t.includes(e))),Be=(e,t)=>{let n=Re(t);return n.length===0?e:e.flatMap(e=>{let t=$(e.path);if(ze(n,[t.toLowerCase(),e.path.toLowerCase()]))return[e];let r=e.cases.filter(r=>ze(n,[t.toLowerCase(),e.path.toLowerCase(),r.name.toLowerCase()]));return r.length===0?[]:[{...e,cases:r}]})},Ve=e=>X(e===`passed`?`status.passed`:e===`failed`?`status.failed`:e===`running`?`status.running`:e===`error`?`status.error`:e===`stopped`?`status.stopped`:`status.idle`),He=e=>e?.selection?e.selection.kind===`all`?X(`selection.allTests`):e.selection.kind===`case`?e.selection.name:$(e.selection.path):X(`selection.noRunYet`),Ue=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`,We=e=>e===`failure`?`text-rose-200`:e===`success`?`text-emerald-200`:e===`warning`?`text-amber-200`:`text-slate-200`,Ge=(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,Ke=`min-w-24 justify-center shadow-none transition-none disabled:opacity-100`,qe=({line:e,tone:t})=>(0,R.jsx)(`div`,{"data-tone":t,className:u(`whitespace-pre-wrap break-words`,We(t)),children:e===``?` `:e}),Je=(0,F.memo)(({canRunGranular:e,filePath:t,isActive:n,name:r,onRunCase:i})=>(0,R.jsxs)(`button`,{type:`button`,"aria-label":X(`caseRow.runAriaLabel`,{name:r}),title:r,className:u(`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,R.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full bg-sky-300/80`}),(0,R.jsx)(`span`,{className:`truncate text-xs text-foreground`,children:r})]}));Je.displayName=`TestCaseRow`;var Ye=(0,F.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,canRunGranular:r,file:i,isExpanded:a,onRunCase:s,onRunFile:c,onToggleFile:l})=>{let d=e===`file`&&n===i.path,p=e===`case`&&n===i.path;return(0,R.jsx)(D,{open:a,onOpenChange:e=>{l(i.path,e)},children:(0,R.jsxs)(`div`,{className:`space-y-1`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(fe,{asChild:!0,children:(0,R.jsx)(j,{type:`button`,variant:`ghost`,size:`icon-xs`,"aria-label":X(a?`fileRow.collapseAriaLabel`:`fileRow.expandAriaLabel`,{path:i.path}),className:`mt-1 shrink-0 text-muted-foreground hover:text-foreground`,children:(0,R.jsx)(f,{className:u(`h-4 w-4 transition-transform`,a&&`rotate-180`)})})}),(0,R.jsx)(`button`,{type:`button`,"aria-label":X(`fileRow.runAriaLabel`,{path:i.path}),className:u(`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`,r?`cursor-pointer hover:border-sky-400/35 hover:bg-sky-500/10`:`cursor-not-allowed opacity-60`,(d||p)&&`border-sky-400/45 bg-sky-500/10`),disabled:!r,onClick:()=>{c(i.path)},children:(0,R.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,R.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,R.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-start justify-between gap-3`,children:[(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block truncate text-xs font-medium text-foreground`,children:$(i.path)}),(0,R.jsx)(`span`,{className:`mt-0.5 block truncate text-[11px] text-muted-foreground`,children:i.path})]}),(0,R.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted-foreground`,children:X(`fileRow.testCount`,{count:i.cases.length})})]})]})})]}),(0,R.jsx)(b,{children:(0,R.jsx)(`div`,{className:`ml-4 border-l border-border/60 pl-6`,children:i.cases.length===0?(0,R.jsx)(`p`,{className:`px-2.5 py-1.5 text-xs text-muted-foreground`,children:X(`fileRow.noNamedTests`)}):(0,R.jsx)(`div`,{className:`space-y-1`,children:i.cases.map(a=>{let o=e===`case`&&n===i.path&&t===a.name;return(0,R.jsx)(Je,{canRunGranular:r,filePath:i.path,isActive:o,name:a.name,onRunCase:s},a.id)})})})})]})})});Ye.displayName=`DiscoveryFileRow`;var Xe=(0,F.memo)(({activeSelectionKind:e,activeSelectionName:n,activeSelectionPath:r,availableCommands:a,canRunGranular:o,discovery:s,expandedFiles:c,fullSuiteOnlyNotice:l,isLoading:d,selectedCommandId:p,selectedCommandName:m,sessionError:_,sessionStatus:v,shouldShowCommandSelector:y,onRunCase:b,onRunFile:x,onSelectCommand:S,onToggleFile:C})=>{let[w,T]=(0,F.useState)(``),E=(0,F.useMemo)(()=>Be(s,w),[s,w]),D=(0,F.useMemo)(()=>E.reduce((e,t)=>e+t.cases.length,0),[E]),ee=Re(w).length>0;return(0,R.jsx)(`aside`,{className:`min-h-0 border-b border-border/70 px-4 py-4 lg:border-r lg:border-b-0`,children:(0,R.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[y&&(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(`p`,{className:`text-xs uppercase tracking-[0.22em] text-muted-foreground`,children:X(`scope.label`)}),(0,R.jsxs)(i,{children:[(0,R.jsx)(t,{asChild:!0,children:(0,R.jsxs)(j,{type:`button`,variant:`outline`,className:`w-full justify-between rounded-xl border-border/70 bg-background/60`,"aria-label":X(`scope.selectedCommandAriaLabel`),disabled:a.length===0||v===`running`,children:[(0,R.jsx)(`span`,{className:`truncate`,children:m??X(`scope.selectTestScope`)}),(0,R.jsx)(f,{className:`h-4 w-4 text-muted-foreground`})]})}),(0,R.jsx)(h,{align:`start`,className:`w-72`,children:a.map(e=>(0,R.jsx)(ne,{className:u(p===e.id&&`bg-accent text-accent-foreground`),onSelect:()=>{S(e.id)},children:(0,R.jsx)(`span`,{className:`truncate`,children:e.name})},e.id))})]})]}),l&&(0,R.jsx)(`div`,{className:`rounded-2xl border border-border/70 bg-background/30 px-4 py-3 text-sm text-muted-foreground`,children:l}),(s.length>0||w.length>0)&&(0,R.jsxs)(`div`,{className:`relative mt-1 shrink-0`,children:[(0,R.jsx)(pe,{type:`search`,value:w,onChange:e=>{T(e.target.value)},placeholder:X(`filter.placeholder`),"aria-label":X(`filter.ariaLabel`),className:`pr-10`}),w.length>0&&(0,R.jsx)(j,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":X(`filter.clearAriaLabel`),className:`absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>{T(``)},children:(0,R.jsx)(N,{className:`size-4`})})]}),!a.length&&(0,R.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-4 text-sm text-muted-foreground`,children:X(`discovery.noCommands`)}),_&&(0,R.jsx)(`div`,{className:`rounded-2xl border border-rose-500/30 bg-rose-500/10 px-4 py-3 text-sm text-rose-200`,children:_}),(0,R.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,R.jsxs)(`div`,{className:`shrink-0 flex items-start justify-between gap-3`,children:[(0,R.jsx)(`div`,{className:`min-w-0`,children:(0,R.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[X(`discovery.fileCount`,{count:E.length}),`, `,X(`discovery.caseCount`,{count:D})]})}),d&&(0,R.jsx)(g,{className:`h-4 w-4 animate-spin text-muted-foreground`})]}),(0,R.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto pr-1`,children:s.length===0&&!d?(0,R.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:X(`discovery.noFilesDetected`)}):E.length===0?(0,R.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:X(`discovery.noFilterMatches`)}):E.map(t=>(0,R.jsx)(Ye,{activeSelectionKind:e,activeSelectionName:n,activeSelectionPath:r,canRunGranular:o,file:t,isExpanded:ee||(c[t.path]??!1),onRunCase:b,onRunFile:x,onToggleFile:C},t.path))})]})]})})});Xe.displayName=`DiscoveryPane`;var Ze=(0,F.memo)(({durationMs:e,output:t,outputTruncated:n,selectionLabel:r,status:i,summaryCounts:a,viewportRef:o,onScroll:s})=>{let c=(0,F.useMemo)(()=>t?te(t).replace(/\r\n/g,`
2
- `).replace(/\r/g,`
3
- `).split(`
4
- `).map(e=>({line:e,tone:Ue(e)})):[],[t]);return(0,R.jsx)(`section`,{className:`min-h-0 px-4 py-4`,children:(0,R.jsxs)(`div`,{className:`flex h-full flex-col gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,R.jsx)(`span`,{className:`font-medium text-foreground`,children:r}),i&&(0,R.jsx)(P,{variant:`outline`,className:u(`px-3 py-1 text-xs uppercase tracking-[0.2em]`,Ie(i)),children:Ve(i)}),a&&(0,R.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-xs font-medium uppercase tracking-[0.18em]`,children:[(0,R.jsxs)(`span`,{className:`text-rose-200`,children:[a.failed.count,` `,a.failed.label]}),(0,R.jsxs)(`span`,{className:`text-emerald-200`,children:[a.passed.count,` `,a.passed.label]})]}),e!=null&&(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:Le(e)}),n&&(0,R.jsx)(P,{variant:`outline`,className:`border-amber-400/30 bg-amber-500/10 text-amber-200`,children:X(`output.trimmed`)})]}),(0,R.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden rounded-2xl border border-border/70 bg-[#0d1017]`,children:(0,R.jsx)(`div`,{ref:o,"aria-label":X(`output.ariaLabel`),className:`h-full overflow-auto px-4 py-4`,onScroll:s,children:(0,R.jsx)(`div`,{className:`font-mono text-xs leading-5`,children:c.length>0?c.map((e,t)=>(0,R.jsx)(qe,{line:e.line,tone:e.tone},`${t}:${e.line}`)):(0,R.jsx)(`div`,{className:`text-slate-200`,children:X(`output.empty`)})})})})]})})});Ze.displayName=`OutputPane`;var Qe=(0,F.forwardRef)(({testCommands:e,onStatusChange:t,onTargetLabelChange:i,onClose:a,...o},l)=>{let u=o.scope,f=o.projectId,h=o.scope===`ticket`?o.ticketId:null,g=o.scope===`project`?o.targetKind:null,b=o.scope===`project`?o.targetBundleId:null,[x,S]=(0,F.useState)(e),[C,w]=(0,F.useState)(null),[T,E]=(0,F.useState)([]),[D,ee]=(0,F.useState)(``),[te,O]=(0,F.useState)({}),[ne,re]=(0,F.useState)(!0),[k,ae]=(0,F.useState)(!1),[A,oe]=(0,F.useState)(!1),[se,ce]=(0,F.useState)(null),[le,M]=(0,F.useState)(!1),[fe,N]=(0,F.useState)(!1),P=(0,F.useRef)(null),pe=(0,F.useRef)(!1),me=(0,F.useRef)(null),he=(0,F.useRef)(!0),ge=(0,F.useRef)(null),_e=(0,F.useRef)(null),ve=C?.selection?.kind??null,ye=C?.selection?.kind===`all`?null:C?.selection?.path??null,be=C?.selection?.kind===`case`?C.selection.name:null,xe=C?.id??null,I=C?.status??null,L=(0,F.useMemo)(()=>x.find(e=>e.id===D)??null,[x,D]),Se=(0,F.useMemo)(()=>{if(C?.summary?.failed_count==null&&C?.summary?.passed_count==null&&C?.summary?.failed_file_count==null&&C?.summary?.passed_file_count==null)return null;let e=C?.summary?.failed_count==null&&C?.summary?.passed_count==null;return{failed:I===`failed`&&C?.summary?.failed_count==null&&C?.summary?.failed_file_count!=null||e?{count:C?.summary?.failed_file_count??0,label:X(`summaryCounts.filesFailed`)}:{count:C?.summary?.failed_count??0,label:X(`summaryCounts.failed`)},passed:e?{count:C?.summary?.passed_file_count??0,label:X(`summaryCounts.filesPassed`)}:{count:C?.summary?.passed_count??C?.summary?.passed_file_count??0,label:X(`summaryCounts.passed`)}}},[C?.summary?.failed_count,C?.summary?.passed_count,C?.summary?.failed_file_count,C?.summary?.passed_file_count,I]),Ce=L?.runner===`unknown`?X(`scope.fullSuiteOnlyNotice`):null,we=!!(L&&C?.status!==`running`&&!k&&!A),Te=we,Ee=we&&fe,De=x.length>1,{runs:Oe}=ie(f),z=C?.run_id?Oe.find(e=>e.id===C.run_id)??null:null;(0,F.useEffect)(()=>{D||x.length===0||ee(x[0]?.id??``)},[x,D]),(0,F.useEffect)(()=>{e.length>0&&S(t=>Ge(t,e)?t:e)},[e]),(0,F.useEffect)(()=>{if(x.length>0||!f)return;let e=new AbortController;return y(e.signal).then(e=>{let t=e.find(e=>e.id===f);t&&S(e=>{let n=de(t);return Ge(e,n)?e:n})}).catch(()=>{}),()=>{e.abort()}},[x.length,f]),(0,F.useEffect)(()=>{let e=e=>{!e||e.id!==P.current||w(t=>Z(t,e))},t=e=>{!e||e.session_id!==P.current||w(t=>!t||t.id!==e.session_id||e.run_id&&t.run_id&&e.run_id!==t.run_id?t:{...t,output:Ne(t.output,e.chunk),output_truncated:e.output_truncated})};return r.on(`test-session:updated`,e),r.on(`test-session:output`,t),()=>{r.off(`test-session:updated`,e),r.off(`test-session:output`,t)}},[]),(0,F.useEffect)(()=>{let e=me.current;if(!e){ge.current=C?.output??null,_e.current=C?.status??null;return}let t=ge.current!==(C?.output??null),n=_e.current!==`running`&&C?.status===`running`,r=_e.current===`running`&&C?.status!==`running`;if(n&&(he.current=!0),n||t&&C?.status===`running`&&he.current||r&&he.current){let t=Fe(e,r);return ge.current=C?.output??null,_e.current=C?.status??null,t}ge.current=C?.output??null,_e.current=C?.status??null},[C?.output,C?.status]),(0,F.useEffect)(()=>{let e=!1;return(async()=>{try{let t;if(u===`project`){if(!f)return;t=await H(f,{target_kind:g??`repo_root`,target_bundle_id:b??null})}else t=await U(h??``,f);if(e){q(t.id).catch(()=>{});return}P.current=t.id,w(t)}catch(t){e||ce(t instanceof ue?t.message:X(`messages.loadRunnerError`))}finally{!e&&P.current==null&&re(!1)}})(),()=>{e=!0}},[f,u,b,g,h]),(0,F.useEffect)(()=>{z&&w(e=>{if(!e||e.run_id!==z.id)return e;let t=z.status===`completed`?`passed`:z.status===`failed`?`failed`:z.status===`cancelled`||z.status===`interrupted`?`stopped`:`running`;return e.status===t&&e.error===(z.failure?.message??e.error)?e:{...e,status:t,error:z.failure?.message??e.error,started_at:z.started_at??e.started_at,completed_at:z.completed_at??e.completed_at}})},[z]),(0,F.useEffect)(()=>{if(!C?.id){N(!1);return}if(x.length>0&&!D){N(!1);return}let e=new AbortController,t=!1;return re(!0),N(!1),W(C.id,{commandId:D||null,signal:e.signal}).then(e=>{t||(E(e.files),N(e.supports_granular_selection))}).catch(n=>{t||e.signal.aborted||ce(n instanceof ue?n.message:X(`messages.discoverError`))}).finally(()=>{t||re(!1)}),()=>{t=!0,e.abort()}},[x.length,D,C?.id]),(0,F.useEffect)(()=>()=>{let e=P.current;!e||pe.current||(pe.current=!0,q(e).catch(()=>{}))},[]);let ke=(0,F.useCallback)(async e=>{if(!(!xe||I===`running`||!L||k||A)){ce(null),ae(!0);try{let t=await G(xe,{command_id:L.id,selection:e});w(e=>Z(e,t))}catch(e){ce(e instanceof ue?e.message:X(`messages.startError`))}finally{ae(!1)}}},[k,A,L,xe,I]),B=(0,F.useCallback)(async()=>{if(!(!xe||I!==`running`||A)){ce(null),oe(!0);try{let e=await K(xe);w(t=>Z(t,e))}catch(e){ce(e instanceof ue?e.message:X(`messages.stopError`))}finally{oe(!1)}}},[A,xe,I]),Ae=(0,F.useCallback)(()=>{let e=P.current;if(!e||pe.current){a();return}pe.current=!0,a(),q(e).catch(()=>{})},[a]),je=(0,F.useCallback)(()=>{if(I===`running`){M(!0);return}Ae()},[Ae,I]);(0,F.useImperativeHandle)(l,()=>({requestClose:je}),[je]),(0,F.useEffect)(()=>{t?.(I===`running`?`running`:I===`passed`?`finished`:I===`failed`||I===`error`?`error`:I===`stopped`?`interrupted`:`inactive`)},[t,I]),(0,F.useEffect)(()=>{C?.target_label&&i?.(C.target_label)},[i,C?.target_label]);let Me=(0,F.useCallback)(()=>{let e=me.current;e&&(he.current=Pe(e))},[]),V=(0,F.useCallback)(e=>{ee(e)},[]),J=(0,F.useCallback)((e,t)=>{O(n=>(n[e]??!1)===t?n:{...n,[e]:t})},[]),Y=(0,F.useCallback)(e=>{ke({kind:`file`,path:e})},[ke]),Q=(0,F.useCallback)((e,t)=>{ke({kind:`case`,path:e,name:t})},[ke]);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,"data-testid":`tests-panel-layout`,children:[(0,R.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-rows-[minmax(0,1fr)_minmax(0,1fr)] gap-0 lg:grid-cols-[22rem_minmax(0,1fr)] lg:grid-rows-1`,children:[(0,R.jsx)(Xe,{activeSelectionKind:ve,activeSelectionName:be,activeSelectionPath:ye,availableCommands:x,canRunGranular:Ee,discovery:T,expandedFiles:te,fullSuiteOnlyNotice:Ce,isLoading:ne,selectedCommandId:D,selectedCommandName:L?.name??null,sessionError:se,sessionStatus:I,shouldShowCommandSelector:De,onRunCase:Q,onRunFile:Y,onSelectCommand:V,onToggleFile:J}),(0,R.jsx)(Ze,{durationMs:C?.duration_ms??null,output:C?.output??``,outputTruncated:C?.output_truncated??!1,selectionLabel:He(C),status:I,summaryCounts:Se,viewportRef:me,onScroll:Me})]}),(0,R.jsx)(v,{className:`shrink-0 border-t border-border/70 px-6 py-4 sm:flex-row sm:items-center sm:justify-end`,children:(0,R.jsx)(`div`,{className:`flex items-center justify-end gap-2`,children:C?.status===`running`?(0,R.jsxs)(j,{type:`button`,variant:`destructive`,className:Ke,onClick:()=>{B()},disabled:A,children:[(0,R.jsx)(p,{className:`h-4 w-4`}),(0,R.jsx)(`span`,{children:X(`actions.stop`)})]}):(0,R.jsxs)(j,{type:`button`,variant:`success`,className:Ke,disabled:!Te,onClick:()=>{ke({kind:`all`})},children:[(0,R.jsx)(m,{className:`h-4 w-4`}),(0,R.jsx)(`span`,{children:X(`actions.run`)})]})})})]}),(0,R.jsx)(n,{open:le,onOpenChange:M,children:(0,R.jsxs)(c,{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,R.jsxs)(s,{children:[(0,R.jsx)(d,{className:`text-sm font-semibold uppercase tracking-widest text-muted-foreground`,children:X(`closeConfirmation.title`)}),(0,R.jsx)(_,{className:`text-sm text-foreground whitespace-pre-line`,children:X(`closeConfirmation.description`)})]}),(0,R.jsxs)(v,{className:`sm:flex-row sm:justify-end`,children:[(0,R.jsx)(j,{type:`button`,variant:`ghost`,onClick:()=>M(!1),children:X(`closeConfirmation.keepRunning`)}),(0,R.jsx)(j,{type:`button`,variant:`destructive`,onClick:()=>{M(!1),Ae()},children:X(`closeConfirmation.stopAndClose`)})]})]})})]})});Qe.displayName=`TestsPanel`;var $e=`archon.verification-tab`,et=()=>{try{let e=window.localStorage.getItem($e);return e===`checks`||e===`tests`?e:null}catch{return null}},tt=e=>{try{window.localStorage.setItem($e,e)}catch{}},nt=({targetLabel:e,definitions:t,requiredDefinitionIds:r=[],preReviewDefinitionIds:i=[],checksTarget:o,testsTarget:s,onClose:u,onOpenActivity:f,requestedInitialTab:p})=>{let{t:m}=A(`common`,{keyPrefix:`verificationDialog`}),h=w(t),g=o!==null&&(t.length>0||!!o.gateEvaluationId),v=s!==null&&h.length>0,[y,b]=(0,F.useState)(()=>{if(p===`checks`&&g||p===`tests`&&v)return p;let e=et();return e===`checks`&&g||e===`tests`&&v?e:g?`checks`:`tests`}),[x,S]=(0,F.useState)(`inactive`),[C,T]=(0,F.useState)(`inactive`),D=(0,F.useRef)(null),te=(0,F.useRef)(null);(0,F.useEffect)(()=>{(y===`checks`&&!g||y===`tests`&&!v)&&b(g?`checks`:`tests`)},[y,g,v]);let O=e=>{if(te.current=e??null,s){let e=D.current;if(e){e.requestClose();return}}(e??u)()},ne=()=>{let e=te.current??u;te.current=null,e()};return(0,R.jsx)(n,{open:!0,onOpenChange:e=>{e||O()},children:(0,R.jsxs)(c,{showCloseButton:!1,className:`flex h-[calc(100vh-1rem)] max-h-[58rem] w-full max-w-[calc(100%-1rem)] flex-col gap-0 overflow-hidden rounded-3xl p-0 sm:h-[calc(100vh-2rem)] sm:max-w-7xl`,onInteractOutside:e=>e.preventDefault(),onEscapeKeyDown:e=>e.stopPropagation(),children:[(0,R.jsx)(d,{className:`sr-only`,children:m(`title`)}),(0,R.jsx)(_,{className:`sr-only`,children:m(`description`)}),(0,R.jsxs)(`header`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-border/70 px-4 py-4 sm:px-6`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 gap-3`,children:[(0,R.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-2xl border border-border bg-background/60 text-sky-200`,children:(0,R.jsx)(l,{className:`size-5`})}),(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:m(`title`)}),(0,R.jsx)(`p`,{className:`truncate text-sm text-muted-foreground`,children:e})]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f&&(0,R.jsx)(j,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>O(f),children:m(`openActivity`)}),(0,R.jsx)(j,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":m(`close`),onClick:()=>O(),children:(0,R.jsx)(N,{className:`size-4`})})]})]}),(0,R.jsxs)(E,{value:y,onValueChange:e=>{e!==`checks`&&e!==`tests`||(b(e),tt(e))},className:`flex min-h-0 flex-1 flex-col`,children:[(0,R.jsxs)(`div`,{className:`shrink-0 border-b border-border/70 px-4 py-3 sm:px-6`,children:[(0,R.jsxs)(re,{"aria-label":m(`tabsAriaLabel`),children:[g&&(0,R.jsxs)(ee,{value:`checks`,className:`gap-2`,children:[(0,R.jsx)(l,{className:`size-4`}),(0,R.jsx)(`span`,{children:m(`tabs.checks.label`)}),(0,R.jsx)(`span`,{className:`inline-flex shrink-0`,role:`status`,"aria-label":m(`status.checks.${x}`),children:(0,R.jsx)(a,{state:x})})]}),v&&(0,R.jsxs)(ee,{value:`tests`,className:`gap-2`,children:[(0,R.jsx)(M,{className:`size-4`}),(0,R.jsx)(`span`,{children:m(`tabs.tests.label`)}),(0,R.jsx)(`span`,{className:`inline-flex shrink-0`,role:`status`,"aria-label":m(`status.tests.${C}`),children:(0,R.jsx)(a,{state:C})})]})]}),(0,R.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:m(`tabs.${y}.description`)})]}),g&&o&&(0,R.jsx)(oe,{value:`checks`,forceMount:!0,className:`mt-0 flex min-h-0 flex-1 flex-col overflow-hidden data-[state=inactive]:hidden`,children:(0,R.jsx)(V,{...o,definitions:t,requiredDefinitionIds:r,preReviewDefinitionIds:i,onStatusChange:S})}),s&&h.length>0&&(0,R.jsx)(oe,{value:`tests`,forceMount:!0,className:`mt-0 flex min-h-0 flex-1 flex-col overflow-hidden data-[state=inactive]:hidden`,children:(0,R.jsx)(Qe,{ref:D,...s,testCommands:h,onStatusChange:T,onClose:ne})})]})]})})};export{nt as VerificationDialog};
@@ -1 +0,0 @@
1
- import{at as e,ot as t}from"./chunk-CSCIHK7Q-BU4Ysr_2.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-BRjoYtUW.js";import"./chunk-CSCIHK7Q-BU4Ysr_2.js";import"./chunk-5ZQYHXKU-CDTwT753.js";import"./chunk-O5CBEL6O-BW6wHmzD.js";import"./chunk-FMBD7UC4-CEo2wZMx.js";import"./chunk-BSJP7CBP-DJ57XcV5.js";import"./chunk-L5ZTLDWV-BrNsmxtD.js";import"./chunk-ND2GUHAM-DWWdi42a.js";import"./chunk-55IACEB6-74CcJaub.js";import"./chunk-2J33WTMH-BfH4_PkQ.js";import"./chunk-NZK2D7GU-46-aRMvO.js";import"./chunk-3OPIFGDE-CkVGPLM4.js";import"./chunk-KSCS5N6A-B9lHLGg1.js";import"./chunk-LZXEDZCA-CVgZc1nv.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-CKEhBrr_.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-BRjoYtUW.js";import"./chunk-CSCIHK7Q-BU4Ysr_2.js";import"./chunk-5ZQYHXKU-CDTwT753.js";import"./chunk-O5CBEL6O-BW6wHmzD.js";import"./chunk-FMBD7UC4-CEo2wZMx.js";import"./chunk-BSJP7CBP-DJ57XcV5.js";import"./chunk-L5ZTLDWV-BrNsmxtD.js";import"./chunk-ND2GUHAM-DWWdi42a.js";import"./chunk-55IACEB6-74CcJaub.js";import"./chunk-2J33WTMH-BfH4_PkQ.js";import"./chunk-NZK2D7GU-46-aRMvO.js";import"./chunk-3OPIFGDE-CkVGPLM4.js";import"./chunk-KSCS5N6A-B9lHLGg1.js";import"./chunk-LZXEDZCA-CVgZc1nv.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-CKEhBrr_.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};