@straiffi/archon 1.7.1 → 1.7.3
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/ActivityView-DTEenQas.js +1 -0
- package/dist/client/assets/GitHubActionsDialog-BKWHonUS.js +1 -0
- package/dist/client/assets/TestsDialog-cBaoffCs.js +4 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-CJgwCv5O.js → architectureDiagram-3BPJPVTR-BzzGotac.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM--xjes8FA.js → blockDiagram-GPEHLZMM-DIcqLHKg.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-DHnp82NG.js → c4Diagram-AAUBKEIU-Hc1Sqmhs.js} +1 -1
- package/dist/client/assets/channel-Cym17waa.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-DAOyJCKy.js → chunk-2J33WTMH-CWSwjsgk.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-C9YI_tk4.js → chunk-3OPIFGDE-BnX3DljN.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-BW9khkin.js → chunk-5ZQYHXKU-EyyJlI-d.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-DL4t5Hpi.js → chunk-727SXJPM-Ci6CfxWj.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-C4VMKa_O.js → chunk-AQP2D5EJ-RKZNsJTm.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-DHP7zrZK.js → chunk-CSCIHK7Q-DBf0Euoj.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-CqZWek3t.js → chunk-KSCS5N6A-BmLQI_2S.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-D3q55pCI.js → chunk-L5ZTLDWV-DKwVAb8G.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-UDY_Lo6v.js → chunk-LZXEDZCA-axotKkbz.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-ZCiOxkYV.js → chunk-ND2GUHAM-BBlJ4nXC.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-CuryoBtd.js → chunk-NZK2D7GU-BKJGoZZt.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-PnPsz2TB.js → chunk-O5CBEL6O-C-Ghigo1.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-BzOopX-U.js → chunk-WU5MYG2G-CCzVWYcd.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BcigvvIC.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-3AdSuE0N.js +1 -0
- package/dist/client/assets/{dagre-BM42HDAG-5LBwQ83I.js → dagre-BM42HDAG-rwIdPcjI.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-_4pckiGR.js → diagram-2AECGRRQ-DJWxOQsg.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-CqElv5rJ.js → diagram-5GNKFQAL-C-mQeFtd.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DKv4zS4F.js → diagram-KO2AKTUF-BAu6u4sR.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-iLmTH4UP.js → diagram-LMA3HP47-U6CbvBn0.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-DpFYIa0o.js → diagram-OG6HWLK6-DNTwFcs1.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DnfbvbKs.js → erDiagram-TEJ5UH35-DaHX6Xw5.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-C2MN70Qv.js → flowDiagram-I6XJVG4X-B9hKqL2l.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-yonpliOJ.js → ganttDiagram-6RSMTGT7-BQ1HPHVO.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CaKDWx7y.js → gitGraphDiagram-PVQCEYII-BBRcsmMK.js} +1 -1
- package/dist/client/assets/index-CEMaJCPS.js +273 -0
- package/dist/client/assets/index-lWftq65U.css +2 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-82-8njnx.js → infoDiagram-5YYISTIA-DUoNiSGC.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BMiyLWwK.js → ishikawaDiagram-YF4QCWOH-DJN1y2w8.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-C1qBnR37.js → journeyDiagram-JHISSGLW-BxLLMT70.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-zByEuCzn.js → kanban-definition-UN3LZRKU-BdCPistJ.js} +1 -1
- package/dist/client/assets/{line-EpLqyzw7.js → line-4mIgXsZd.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-o124REPN.js → mermaid-parser.core-Pu1QGWJ-.js} +1 -1
- package/dist/client/assets/{mermaid.core-DgiAn2-k.js → mermaid.core-DnH9DrgZ.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-UK6V0Bxq.js → mindmap-definition-RKZ34NQL-DqE4ba3C.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-B2s9oGFl.js → pieDiagram-4H26LBE5-Crjy9ejf.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-d5H7-zcc.js → quadrantDiagram-W4KKPZXB-BUSZ2VB7.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DlwN9Vcv.js → requirementDiagram-4Y6WPE33-CBhFKEoV.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-9dGyAxu5.js → sankeyDiagram-5OEKKPKP-CgdbY41v.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DKwRjEym.js → sequenceDiagram-3UESZ5HK-hkp_H7AE.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-D_6cuqsX.js → stateDiagram-AJRCARHV-C6x45RWp.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DVzPjRPN.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-ChqD4j8I.js → timeline-definition-PNZ67QCA-CjnZWttQ.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CSAZk0IW.js → vennDiagram-CIIHVFJN-DU5ZyYju.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BUE6IF4q.js → wardleyDiagram-YWT4CUSO-CaCEnCB0.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-MOkC53m_.js → xychartDiagram-2RQKCTM6-Ce3xa37U.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/db.js +471 -39
- package/dist/server/db.js.map +1 -1
- package/dist/server/index.js +1267 -213
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +281 -76
- package/dist/server/lib/agent.js.map +1 -1
- package/dist/server/lib/agentRuns.js +205 -38
- package/dist/server/lib/agentRuns.js.map +1 -1
- package/dist/server/lib/automationProgression.js +464 -0
- package/dist/server/lib/automationProgression.js.map +1 -0
- package/dist/server/lib/automationReconciliation.js +498 -0
- package/dist/server/lib/automationReconciliation.js.map +1 -0
- package/dist/server/lib/automationStageDetails.js +232 -0
- package/dist/server/lib/automationStageDetails.js.map +1 -0
- package/dist/server/lib/buildOpenQuestionOperations.js +223 -0
- package/dist/server/lib/buildOpenQuestionOperations.js.map +1 -0
- package/dist/server/lib/buildOpenQuestions.js +52 -0
- package/dist/server/lib/buildOpenQuestions.js.map +1 -1
- package/dist/server/lib/buildSequences.js +130 -46
- package/dist/server/lib/buildSequences.js.map +1 -1
- package/dist/server/lib/bundleReviewOperations.js +82 -9
- package/dist/server/lib/bundleReviewOperations.js.map +1 -1
- package/dist/server/lib/chatOperations.js +31 -0
- package/dist/server/lib/chatOperations.js.map +1 -1
- package/dist/server/lib/executionReconciliation.js +518 -0
- package/dist/server/lib/executionReconciliation.js.map +1 -0
- package/dist/server/lib/executionRunRetention.js +141 -0
- package/dist/server/lib/executionRunRetention.js.map +1 -0
- package/dist/server/lib/executionRuns.js +1264 -0
- package/dist/server/lib/executionRuns.js.map +1 -0
- package/dist/server/lib/git.js +385 -6
- package/dist/server/lib/git.js.map +1 -1
- package/dist/server/lib/integrations/github.js +43 -0
- package/dist/server/lib/integrations/github.js.map +1 -1
- package/dist/server/lib/integrations/githubActions.js +1 -0
- package/dist/server/lib/integrations/githubActions.js.map +1 -1
- package/dist/server/lib/integrations/githubActionsSessions.js +337 -114
- package/dist/server/lib/integrations/githubActionsSessions.js.map +1 -1
- package/dist/server/lib/projectMemorySelections.js +7 -3
- package/dist/server/lib/projectMemorySelections.js.map +1 -1
- package/dist/server/lib/shutdown.js +2 -2
- package/dist/server/lib/shutdown.js.map +1 -1
- package/dist/server/lib/specArtifact.js +3 -0
- package/dist/server/lib/specArtifact.js.map +1 -1
- package/dist/server/lib/specFormatting.js +1 -1
- package/dist/server/lib/specFormatting.js.map +1 -1
- package/dist/server/lib/specOperations.js +31 -0
- package/dist/server/lib/specOperations.js.map +1 -1
- package/dist/server/lib/specReviewContext.js +44 -14
- package/dist/server/lib/specReviewContext.js.map +1 -1
- package/dist/server/lib/specReviewDraft.js +3 -2
- package/dist/server/lib/specReviewDraft.js.map +1 -1
- package/dist/server/lib/specReviewOperations.js +44 -7
- package/dist/server/lib/specReviewOperations.js.map +1 -1
- package/dist/server/lib/specReviewValidation.js +217 -0
- package/dist/server/lib/specReviewValidation.js.map +1 -0
- package/dist/server/lib/specReviews.js +30 -2
- package/dist/server/lib/specReviews.js.map +1 -1
- package/dist/server/lib/specs.js +18 -1
- package/dist/server/lib/specs.js.map +1 -1
- package/dist/server/lib/stageSnapshots.js +197 -0
- package/dist/server/lib/stageSnapshots.js.map +1 -0
- package/dist/server/lib/testSessions.js +164 -19
- package/dist/server/lib/testSessions.js.map +1 -1
- package/dist/server/lib/ticketAutomation.js +80 -4
- package/dist/server/lib/ticketAutomation.js.map +1 -1
- package/dist/server/lib/ticketAutomationCommit.js +466 -91
- package/dist/server/lib/ticketAutomationCommit.js.map +1 -1
- package/dist/server/lib/ticketFollowUpOperations.js +214 -20
- package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
- package/dist/server/lib/ticketOpenQuestions.js +30 -14
- package/dist/server/lib/ticketOpenQuestions.js.map +1 -1
- package/dist/server/lib/ticketRunOperations.js +75 -7
- package/dist/server/lib/ticketRunOperations.js.map +1 -1
- package/dist/server/lib/ticketUndo.js +77 -168
- package/dist/server/lib/ticketUndo.js.map +1 -1
- package/dist/server/lib/ticketWorkflowOperations.js +132 -28
- package/dist/server/lib/ticketWorkflowOperations.js.map +1 -1
- package/dist/server/lib/tickets.js +46 -29
- package/dist/server/lib/tickets.js.map +1 -1
- package/dist/server/lib/transcriptRuns.js +3 -3
- package/dist/server/lib/transcriptRuns.js.map +1 -1
- package/dist/server/lib/turnExecutionErrors.js +12 -0
- package/dist/server/lib/turnExecutionErrors.js.map +1 -0
- package/dist/server/lib/types.js +57 -1
- package/dist/server/lib/types.js.map +1 -1
- package/dist/server/workers/build.js +596 -184
- package/dist/server/workers/build.js.map +1 -1
- package/dist/server/workers/chat.js +261 -130
- package/dist/server/workers/chat.js.map +1 -1
- package/dist/server/workers/followUp.js +720 -195
- package/dist/server/workers/followUp.js.map +1 -1
- package/dist/server/workers/plan.js +527 -188
- package/dist/server/workers/plan.js.map +1 -1
- package/dist/server/workers/planFollowUp.js +231 -69
- package/dist/server/workers/planFollowUp.js.map +1 -1
- package/dist/server/workers/review.js +796 -239
- package/dist/server/workers/review.js.map +1 -1
- package/dist/server/workers/specReview.js +211 -45
- package/dist/server/workers/specReview.js.map +1 -1
- package/dist/server/workers/specSession.js +425 -252
- package/dist/server/workers/specSession.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/GitHubActionsDialog-BrUq-zO1.js +0 -1
- package/dist/client/assets/TestsDialog-D9N4GD77.js +0 -4
- package/dist/client/assets/TicketChangesModal-bYHJSO6d.js +0 -1
- package/dist/client/assets/channel-B4kCvLCt.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-C-eRRNNj.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B3vxoc73.js +0 -1
- package/dist/client/assets/index-9q1GXkUw.js +0 -270
- package/dist/client/assets/index-BxTc5qQT.css +0 -2
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BkMKz90T.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./chunk-BNv3lrIs.js";import{$ as t,B as n,F as r,K as i,M as a,N as o,P as s,Q as c,R as l,Y as u,_ as d,i as f,n as p,o as m,p as h,q as g,r as _,t as v,z as y}from"./index-CEMaJCPS.js";var b=e(t(),1),x=[`test`,`github_actions`,`plan`,`planning_agent`,`build`,`review`,`chat_turn`,`spec_turn`,`spec_review`,`build_follow_up`,`plan_follow_up`,`automation_progression`,`automation_review_fix`,`automation_commit`,`automation_push`,`automation_pull_request`],S=i(),C=20,w=20,T=RegExp(`\x1B\\[[0-9;?]*[ -/]*[@-~]`,`g`),E=(e,t)=>e?new Intl.DateTimeFormat(t,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)):null,D=e=>e===`failed`||e===`interrupted`?`border-red-400/30 bg-red-500/10 text-red-200`:e===`completed`?`border-emerald-400/30 bg-emerald-500/10 text-emerald-200`:e===`running`||e===`waiting`||e===`queued`?`border-sky-400/30 bg-sky-500/10 text-sky-200`:`border-border bg-muted/40 text-muted-foreground`,O=({label:e,value:t})=>t==null||t===``?null:(0,S.jsxs)(`div`,{className:`grid grid-cols-[minmax(6rem,0.35fr)_minmax(0,1fr)] gap-3 border-b border-border/50 py-2 last:border-0`,children:[(0,S.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:e}),(0,S.jsx)(`dd`,{className:`min-w-0 break-words text-sm text-foreground`,children:t})]}),k=({events:e})=>{let{t,i18n:n}=c(`common`,{keyPrefix:`activityView`});return(0,S.jsx)(`ol`,{className:`space-y-2`,"aria-label":t(`details.evidenceAriaLabel`),children:e.slice(0,w).map(e=>(0,S.jsxs)(`li`,{className:`rounded-xl border border-border/60 bg-background/30 px-3 py-2`,children:[(0,S.jsx)(`span`,{className:`block text-xs font-medium text-foreground`,children:e.message||t(`events.fallback`)}),(0,S.jsx)(`span`,{className:`mt-1 block text-[11px] text-muted-foreground`,children:E(e.created_at,n.language)})]},e.id))})},ee=({detail:e,detailError:t,events:n,isLoading:r,isRetrying:i,onClose:a,onNavigateToTicket:o,onRetry:s,retryError:l,retrySourceAttempt:u,run:d})=>{let{t:f,i18n:p}=c(`common`,{keyPrefix:`activityView`}),h=e?.details,g=h?.kind===`test`&&h.retry_eligibility.eligible,_=h?.kind===`github_actions`&&h.available?h.html_url:null,v=d.source_reference?.kind===`ticket`&&d.source_reference.available?d.source_reference.id:null,b=null;return d.retry_of_run_id&&(b=u==null?f(`details.priorAttemptUnavailable`):f(`details.retryOfAttempt`,{count:u})),(0,S.jsxs)(`aside`,{"aria-label":f(`details.ariaLabel`),className:`min-w-0 p-4 lg:p-5`,children:[(0,S.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`text-xs uppercase tracking-[0.18em] text-muted-foreground`,children:f(`kind.${d.kind}`)}),(0,S.jsx)(`h2`,{className:`mt-1 text-lg font-semibold text-foreground`,children:f(`details.title`)})]}),(0,S.jsxs)(y,{type:`button`,variant:`ghost`,size:`xs`,className:`gap-1.5`,onClick:a,children:[(0,S.jsx)(m,{className:`h-3.5 w-3.5`}),(0,S.jsx)(`span`,{children:f(`actions.back`)})]})]}),(0,S.jsxs)(`dl`,{className:`mt-4`,children:[(0,S.jsx)(O,{label:f(`details.status`),value:f(`status.${d.status}`)}),(0,S.jsx)(O,{label:f(`details.attempt`),value:f(`details.attemptValue`,{count:d.attempt})}),(0,S.jsx)(O,{label:f(`details.lineage`),value:b}),(0,S.jsx)(O,{label:f(`details.source`),value:d.source_reference?.label??f(`details.sourceUnavailable`)}),(0,S.jsx)(O,{label:f(`details.created`),value:E(d.created_at,p.language)}),(0,S.jsx)(O,{label:f(`details.started`),value:E(d.started_at,p.language)}),(0,S.jsx)(O,{label:f(`details.completed`),value:E(d.completed_at,p.language)})]}),d.failure&&(0,S.jsxs)(`div`,{className:`mt-4 rounded-xl border border-red-400/25 bg-red-500/8 p-3`,children:[(0,S.jsx)(`p`,{className:`text-xs font-semibold text-red-200`,children:f(`details.failureReason`)}),(0,S.jsx)(`p`,{className:`mt-1 break-words text-sm text-red-100/90`,children:d.failure.message})]}),r&&(0,S.jsx)(`p`,{className:`mt-4 text-sm text-muted-foreground`,children:f(`details.loading`)}),t&&(0,S.jsx)(`p`,{className:`mt-4 text-sm text-red-300`,role:`alert`,children:t}),h?.available&&h.kind===`test`&&(0,S.jsxs)(`section`,{className:`mt-5`,children:[(0,S.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:f(`details.testEvidence`)}),(0,S.jsxs)(`dl`,{className:`mt-2`,children:[(0,S.jsx)(O,{label:f(`details.command`),value:h.command_name}),(0,S.jsx)(O,{label:f(`details.target`),value:h.target_label}),(0,S.jsx)(O,{label:f(`details.exitCode`),value:h.exit_code}),(0,S.jsx)(O,{label:f(`details.duration`),value:h.duration_ms==null?null:f(`details.durationValue`,{count:h.duration_ms})})]}),(0,S.jsx)(`h4`,{className:`mt-3 text-xs font-medium text-muted-foreground`,children:f(`details.output`)}),h.output_retention_state===`expired`?(0,S.jsx)(`p`,{className:`mt-2 rounded-xl border border-border/60 bg-background/30 p-3 text-xs text-muted-foreground`,children:f(`details.outputExpired`)}):(0,S.jsx)(`pre`,{className:`mt-2 max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-xl border border-border/60 bg-background/30 p-3 font-mono text-xs text-foreground`,children:h.output.replace(T,``)||f(`details.outputEmpty`)}),h.output_truncated&&(0,S.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:f(`details.outputTruncated`)})]}),h?.available&&h.kind===`github_actions`&&(0,S.jsxs)(`section`,{className:`mt-5`,children:[(0,S.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:f(`details.providerEvidence`)}),(0,S.jsxs)(`dl`,{className:`mt-2`,children:[(0,S.jsx)(O,{label:f(`details.workflow`),value:h.workflow_name}),(0,S.jsx)(O,{label:f(`details.branch`),value:h.head_branch??h.ref}),(0,S.jsx)(O,{label:f(`details.conclusion`),value:h.conclusion})]}),h.jobs.length>0&&(0,S.jsx)(`ul`,{className:`mt-3 space-y-2`,children:h.jobs.map(e=>(0,S.jsxs)(`li`,{className:`min-w-0 rounded-xl border border-border/60 bg-background/30 px-3 py-2 text-xs`,children:[(0,S.jsx)(`span`,{className:`break-words font-medium text-foreground`,children:e.name??f(`details.unnamedJob`)}),(0,S.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:e.conclusion??e.status})]},e.id))}),h.jobs_retention_state===`expired`&&(0,S.jsx)(`p`,{className:`mt-3 rounded-xl border border-border/60 bg-background/30 p-3 text-xs text-muted-foreground`,children:f(`details.jobsExpired`)})]}),h&&!h.available&&(0,S.jsx)(`p`,{className:`mt-4 rounded-xl border border-border/60 bg-background/30 p-3 text-xs text-muted-foreground`,children:f(`details.evidenceUnavailable`)}),(0,S.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[g&&(0,S.jsx)(y,{type:`button`,size:`sm`,disabled:i,onClick:()=>s(d),children:f(i?`actions.retrying`:`actions.retry`)}),v&&o&&(0,S.jsx)(y,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>o(v),children:f(`actions.openSource`)}),_&&(0,S.jsx)(y,{asChild:!0,variant:`outline`,size:`sm`,children:(0,S.jsx)(`a`,{href:_,target:`_blank`,rel:`noreferrer`,children:f(`actions.openProvider`)})})]}),d.source_reference&&!d.source_reference.available&&(0,S.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:f(`details.sourceNoLongerAvailable`)}),l&&(0,S.jsx)(`p`,{className:`mt-3 text-sm text-red-300`,role:`alert`,children:l}),(0,S.jsxs)(`section`,{className:`mt-6`,children:[(0,S.jsx)(`h3`,{className:`mb-3 text-sm font-semibold text-foreground`,children:f(`details.transitions`)}),n.length>0?(0,S.jsx)(k,{events:n}):(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:f(`details.noTransitions`)})]})]})},A=({projectId:e,onClose:t,onNavigateToTicket:i})=>{let{t:m}=c(`common`,{keyPrefix:`activityView`}),w=f(),{runs:T,events:E,isLoading:O,isLoadingMore:k,hasMoreRuns:A,error:j,loadMore:M,refresh:N}=v(e),[P,te]=(0,b.useState)(`all`),[F,I]=(0,b.useState)(`all`),[L,R]=(0,b.useState)(1),[z,B]=(0,b.useState)(null),[V,H]=(0,b.useState)(null),[U,W]=(0,b.useState)(null),[G,K]=(0,b.useState)(!1),[q,J]=(0,b.useState)(null),[ne,Y]=(0,b.useState)(null),[re,X]=(0,b.useState)(!1),[ie,ae]=(0,b.useState)(0),Z=(0,b.useMemo)(()=>T.filter(e=>(P===`all`||e.kind===P)&&(F===`all`||e.status===F)),[P,T,F]),Q=Z.slice(0,L*C),$=T.find(e=>e.id===z)??(V?.run.id===z?V.run:null),oe=E.filter(e=>e.execution_run_id===z),se=$?.retry_of_run_id?T.find(e=>e.id===$.retry_of_run_id)?.attempt??null:null;(0,b.useEffect)(()=>{R(1)},[P,e,F]),(0,b.useEffect)(()=>{B(null),H(null),W(null)},[e]),(0,b.useEffect)(()=>{!O&&z&&!T.some(e=>e.id===z)&&(B(null),H(null),W(null))},[O,T,z]),(0,b.useEffect)(()=>{let e=()=>X(!0),t=()=>X(!1);return w.on(`disconnect`,e),w.on(`connect`,t),()=>{w.off(`disconnect`,e),w.off(`connect`,t)}},[w]),(0,b.useEffect)(()=>{let e=e=>{if(!e||typeof e!=`object`)return;let t=e;(t.execution_run_id===z||t.run_id===z)&&ae(e=>e+1)};return w.on(`github-actions:updated`,e),w.on(`test-session:updated`,e),()=>{w.off(`github-actions:updated`,e),w.off(`test-session:updated`,e)}},[z,w]),(0,b.useEffect)(()=>{if(!e||!z)return;let t=new AbortController;return K(!0),W(null),p(e,z,t.signal).then(H).catch(e=>{u(e)||W(e instanceof g?e.message:m(`errors.details`))}).finally(()=>{t.signal.aborted||K(!1)}),()=>t.abort()},[ie,e,$?.updated_at,z,m]);let ce=async t=>{if(e){J(t.id),Y(null);try{let n=await _(e,t.id);n.run_id&&B(n.run_id),N()}catch(e){Y(e instanceof g?e.message:m(`errors.retry`))}finally{J(null)}}};return e?(0,S.jsx)(a,{open:!0,onOpenChange:e=>{e||t()},children:(0,S.jsxs)(s,{showCloseButton:!1,overlayClassName:`duration-0 data-open:animate-none data-closed:animate-none`,className:`flex h-[calc(100vh-1rem)] max-h-[58rem] w-full max-w-[calc(100%-1rem)] flex-col gap-0 overflow-hidden rounded-3xl border border-border bg-card p-0 shadow-2xl duration-0 data-open:animate-none data-closed:animate-none sm:h-[calc(100vh-2rem)] sm:max-w-6xl`,onInteractOutside:e=>e.preventDefault(),children:[(0,S.jsx)(l,{className:`sr-only`,children:m(`dialog.srTitle`)}),(0,S.jsx)(r,{className:`sr-only`,children:m(`dialog.srDescription`)}),(0,S.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,S.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,S.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-2xl border border-border/70 bg-background/60 text-rose-200`,children:(0,S.jsx)(d,{className:`h-5 w-5`})}),(0,S.jsxs)(`div`,{className:`min-w-0`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight text-foreground sm:text-2xl`,children:m(`title`)}),(0,S.jsx)(`p`,{className:`mt-0.5 hidden max-w-2xl text-sm text-muted-foreground sm:block`,children:m(`description`)})]})]}),(0,S.jsx)(o,{asChild:!0,children:(0,S.jsx)(y,{type:`button`,"aria-label":m(`dialog.closeAriaLabel`),variant:`ghost`,size:`icon-sm`,className:`shrink-0 text-muted-foreground hover:text-foreground`,children:(0,S.jsx)(h,{className:`h-4 w-4`})})})]}),(0,S.jsxs)(`div`,{className:n(`shrink-0 border-b border-border/70 px-4 py-3 sm:px-6`,$&&`hidden lg:block`),children:[(0,S.jsxs)(`form`,{"aria-label":m(`filters.ariaLabel`),className:`flex flex-col gap-3 sm:flex-row sm:flex-wrap`,children:[(0,S.jsxs)(`label`,{className:`flex min-w-0 flex-1 flex-col gap-1 text-xs text-muted-foreground sm:max-w-56`,children:[m(`filters.kind`),(0,S.jsxs)(`select`,{value:P,onChange:e=>te(e.target.value),className:`h-10 rounded-xl border border-border bg-card px-3 text-sm text-foreground outline-none focus:ring-2 focus:ring-ring/50`,children:[(0,S.jsx)(`option`,{value:`all`,children:m(`filters.allKinds`)}),x.map(e=>(0,S.jsx)(`option`,{value:e,children:m(`kind.${e}`)},e))]})]}),(0,S.jsxs)(`label`,{className:`flex min-w-0 flex-1 flex-col gap-1 text-xs text-muted-foreground sm:max-w-56`,children:[m(`filters.status`),(0,S.jsxs)(`select`,{value:F,onChange:e=>I(e.target.value),className:`h-10 rounded-xl border border-border bg-card px-3 text-sm text-foreground outline-none focus:ring-2 focus:ring-ring/50`,children:[(0,S.jsx)(`option`,{value:`all`,children:m(`filters.allStatuses`)}),[`running`,`waiting`,`queued`,`failed`,`interrupted`,`cancelled`,`completed`].map(e=>(0,S.jsx)(`option`,{value:e,children:m(`status.${e}`)},e))]})]})]}),re&&(0,S.jsx)(`p`,{role:`status`,className:`rounded-xl border border-amber-400/25 bg-amber-500/8 px-3 py-2 text-xs text-amber-200`,children:m(`states.reconnecting`)}),j&&T.length>0&&(0,S.jsxs)(`div`,{role:`alert`,className:`flex flex-col gap-2 rounded-xl border border-red-400/25 bg-red-500/8 px-3 py-2 text-xs text-red-200 sm:flex-row sm:items-center sm:justify-between`,children:[(0,S.jsx)(`span`,{children:j}),(0,S.jsx)(y,{type:`button`,variant:`ghost`,size:`xs`,onClick:N,children:m(`actions.tryAgain`)})]})]}),(0,S.jsxs)(`div`,{className:`grid min-h-0 flex-1 overflow-hidden lg:grid-cols-[minmax(0,1fr)_minmax(20rem,0.72fr)]`,children:[(0,S.jsxs)(`section`,{"aria-label":m(`timelineAriaLabel`),className:n(`min-h-0 min-w-0 overflow-y-auto px-4 py-5 sm:px-6`,$&&`hidden lg:block`),children:[O&&T.length===0&&(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground`,role:`status`,children:m(`states.loading`)}),j&&T.length===0&&(0,S.jsxs)(`div`,{className:`rounded-2xl border border-red-400/25 bg-red-500/8 p-4`,role:`alert`,children:[(0,S.jsx)(`p`,{className:`text-sm text-red-200`,children:j||m(`states.error`)}),(0,S.jsx)(y,{type:`button`,variant:`outline`,size:`sm`,className:`mt-3`,onClick:N,children:m(`actions.tryAgain`)})]}),!O&&!j&&Z.length===0&&!A&&(0,S.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-card/30 p-6 text-center`,children:[(0,S.jsx)(`h2`,{className:`text-base font-medium text-foreground`,children:m(`states.emptyTitle`)}),(0,S.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:m(`states.emptyDescription`)})]}),(0,S.jsx)(`ol`,{className:`space-y-3`,children:Q.map(e=>{let t=E.find(t=>t.execution_run_id===e.id);return(0,S.jsx)(`li`,{children:(0,S.jsx)(`article`,{className:n(`rounded-2xl border bg-card/55 p-4 transition-colors`,z===e.id?`border-primary/60`:`border-border/70 hover:border-border`),children:(0,S.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,S.jsxs)(`div`,{className:`min-w-0`,children:[(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsx)(`h2`,{className:`text-sm font-semibold text-foreground`,children:m(`runTitle`,{kind:m(`kind.${e.kind}`),status:m(`status.${e.status}`)})}),(0,S.jsx)(`span`,{className:n(`rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-[0.12em]`,D(e.status)),children:m(`status.${e.status}`)})]}),(0,S.jsxs)(`p`,{className:`mt-1 break-words text-xs text-muted-foreground`,children:[e.source_reference?.label??m(`details.sourceUnavailable`),` · `,m(`details.attemptValue`,{count:e.attempt})]}),t?.message&&(0,S.jsx)(`p`,{className:`mt-2 line-clamp-2 break-words text-sm text-muted-foreground`,children:t.message}),e.failure&&(0,S.jsx)(`p`,{className:`mt-2 line-clamp-2 break-words text-sm text-red-300`,children:e.failure.message})]}),(0,S.jsx)(y,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{B(e.id),Y(null)},children:m(`actions.viewDetails`)})]})})},e.id)})}),(Q.length<Z.length||A)&&(0,S.jsx)(y,{type:`button`,variant:`outline`,className:`mt-4 w-full`,disabled:k,onClick:()=>{Q.length>=Z.length&&M(),R(e=>e+1)},children:m(`actions.loadMore`)})]}),(0,S.jsx)(`div`,{className:n(`min-h-0 min-w-0 overflow-y-auto border-border/70 lg:border-l`,!$&&`hidden lg:block`),children:$?(0,S.jsx)(ee,{run:$,detail:V?.run.id===$.id?V:null,events:oe,isLoading:G,detailError:U,isRetrying:q===$.id,retryError:ne,retrySourceAttempt:se,onClose:()=>B(null),onRetry:e=>{ce(e)},onNavigateToTicket:i}):(0,S.jsx)(`aside`,{"aria-label":m(`details.ariaLabel`),className:`m-5 rounded-2xl border border-dashed border-border/70 bg-background/20 p-6 text-sm text-muted-foreground`,children:m(`details.selectPrompt`)})})]})]})}):null};export{A as ActivityView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./chunk-BNv3lrIs.js";import{$ as t,A as n,B as r,C as i,E as a,F as o,G as s,H as c,K as l,M as u,N as d,P as f,R as ee,T as p,U as te,W as ne,Y as re,d as m,f as h,g,h as _,j as v,m as y,p as b,q as x,s as S,v as ie,z as C}from"./index-CEMaJCPS.js";var w=e(t(),1),T=l(),E=`https://docs.github.com/en/actions`,D=5e3,O=(e,t)=>h.t(`common:githubActions.${e}`,t),k=e=>O(`status.${e}`),A=e=>e?O(`conclusion.${e}`):null,j=e=>e.status===`completed`?e.conclusion===`success`?`border-emerald-400/40 bg-emerald-500/10 text-emerald-200`:e.conclusion===`failure`||e.conclusion===`timed_out`?`border-rose-400/40 bg-rose-500/10 text-rose-200`:e.conclusion===`cancelled`?`border-amber-400/40 bg-amber-500/10 text-amber-200`:`border-border/70 bg-background/60 text-muted-foreground`:e.status===`in_progress`?`border-sky-400/40 bg-sky-500/10 text-sky-200`:e.status===`queued`?`border-violet-400/40 bg-violet-500/10 text-violet-200`:`border-border/70 bg-background/60 text-muted-foreground`,M=e=>e.status===`completed`?e.conclusion===`success`?`border-emerald-400/30 bg-emerald-500/10 text-emerald-200`:e.conclusion===`failure`?`border-rose-400/30 bg-rose-500/10 text-rose-200`:`border-border/70 bg-background/60 text-muted-foreground`:e.status===`in_progress`?`border-sky-400/30 bg-sky-500/10 text-sky-200`:`border-border/70 bg-background/60 text-muted-foreground`,N=e=>{let t=e.run_started_at??e.created_at,n=e.updated_at;if(!t||!n)return null;let r=Date.parse(t),i=Date.parse(n);if(!Number.isFinite(r)||!Number.isFinite(i)||i<r)return null;let a=i-r;if(a<1e3)return`${a} ms`;let o=Math.floor(a/1e3),s=Math.floor(o/3600),c=Math.floor(o%3600/60),l=o%60;return s>0?`${s}h ${c}m ${l}s`:c>0?`${c}m ${l}s`:`${(a/1e3).toFixed(a>=1e4?0:1)} s`},P=e=>e.status===`completed`?A(e.conclusion)??O(`status.completed`):k(e.status),F=e=>{let t={};for(let n of e){if(n.type===`boolean`){t[n.name]=n.default===!0;continue}typeof n.default==`string`&&n.default!==``&&(t[n.name]=n.default)}return t},I=({workflow:e,inputsState:t,isSelected:n,onSelect:i})=>{let o=e.state===`active`,s=t?.dispatchable??!0,c=o&&s&&!t?.isLoading,l=e.path.split(`/`).pop();return(0,T.jsxs)(`div`,{className:r(`flex flex-col gap-3 rounded-2xl border px-4 py-3 transition-colors`,n?`border-sky-400/45 bg-sky-500/10`:`border-border/60 bg-background/20 hover:bg-accent/20`),children:[(0,T.jsx)(`p`,{className:`line-clamp-2 break-words text-sm font-medium text-foreground`,children:e.name}),(0,T.jsx)(`p`,{className:`min-w-0 break-words text-[11px] text-muted-foreground`,children:l}),(0,T.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,T.jsx)(m,{variant:`outline`,className:r(`px-2 py-0.5 text-[10px] uppercase tracking-[0.18em]`,o?`border-emerald-400/30 bg-emerald-500/10 text-emerald-200`:`border-border/70 bg-background/60 text-muted-foreground`),children:O(o?`workflows.stateActive`:`workflows.stateDisabled`)}),(0,T.jsxs)(C,{type:`button`,variant:n?`secondary`:`outline`,size:`sm`,className:`h-8 gap-1.5 px-3 text-xs`,disabled:!c,"aria-label":O(`workflows.runAriaLabel`,{name:e.name}),title:!s&&t?O(`inputs.notDispatchable`):void 0,onClick:i,children:[t?.isLoading?(0,T.jsx)(a,{className:`h-3.5 w-3.5 animate-spin`}):(0,T.jsx)(p,{className:`h-3.5 w-3.5`}),(0,T.jsx)(`span`,{children:O(`actions.run`)})]})]})]})},L=({workflow:e,inputsState:t,refValue:r,onRefChange:i,values:o,onValueChange:s,isDispatching:c,onDispatch:l,onCancel:u})=>{let d=t.inputs.filter(e=>e.required&&!R(o[e.name],e)),f=t.dispatchable&&!t.isLoading&&!t.error&&r.trim()!==``&&d.length===0&&!c;return(0,T.jsxs)(`div`,{className:`space-y-4 rounded-2xl border border-border/70 bg-background/20 p-4`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`p`,{className:`text-xs uppercase tracking-[0.22em] text-muted-foreground`,children:O(`inputs.title`)}),(0,T.jsx)(`p`,{className:`mt-0.5 truncate text-sm font-medium text-foreground`,children:e.name})]}),(0,T.jsx)(C,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":O(`actions.cancel`),onClick:u,children:(0,T.jsx)(b,{className:`h-4 w-4`})})]}),(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsx)(n,{htmlFor:`github-actions-ref`,children:O(`inputs.refLabel`)}),(0,T.jsx)(v,{id:`github-actions-ref`,type:`text`,value:r,onChange:e=>{i(e.target.value)},placeholder:O(`inputs.refPlaceholder`),"aria-label":O(`inputs.refAriaLabel`)})]}),t.isLoading&&(0,T.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,T.jsx)(a,{className:`h-3.5 w-3.5 animate-spin`}),(0,T.jsx)(`span`,{children:O(`inputs.loading`)})]}),t.error&&(0,T.jsx)(`p`,{className:`text-xs text-rose-200`,children:t.error}),!t.dispatchable&&!t.isLoading&&!t.error&&(0,T.jsx)(`p`,{className:`text-xs text-amber-200`,children:O(`inputs.notDispatchable`)}),t.inputs.map(e=>(0,T.jsx)(z,{input:e,value:o[e.name],onChange:t=>{s(e.name,t)}},e.name)),d.length>0&&(0,T.jsx)(`p`,{className:`text-xs text-rose-200`,children:O(`inputs.requiredValidationError`)}),(0,T.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,T.jsx)(C,{type:`button`,variant:`ghost`,onClick:u,disabled:c,children:O(`actions.cancel`)}),(0,T.jsxs)(C,{type:`button`,variant:`success`,onClick:l,disabled:!f,children:[c?(0,T.jsx)(a,{className:`h-4 w-4 animate-spin`}):(0,T.jsx)(p,{className:`h-4 w-4`}),(0,T.jsx)(`span`,{children:O(`actions.dispatch`)})]})]})]})},R=(e,t)=>t.type===`boolean`?typeof e==`boolean`:typeof e==`string`&&e.trim()!==``,z=({input:e,value:t,onChange:r})=>{let i=`github-actions-input-${e.name}`;return(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsxs)(n,{htmlFor:i,className:`flex items-center gap-2`,children:[(0,T.jsx)(`span`,{children:e.name}),e.required&&(0,T.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.18em] text-rose-200/80`,children:O(`inputs.requiredLabel`)})]}),e.description&&(0,T.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:e.description}),B(e,i,t,r)]})},B=(e,t,n,r)=>{if(e.type===`boolean`){let i=typeof n==`boolean`?n:e.default===!0;return(0,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsx)(S,{id:t,checked:i,onCheckedChange:e=>{r(e)}}),(0,T.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:O(i?`inputs.booleanYes`:`inputs.booleanNo`)})]})}if(e.type===`choice`){let i=e.options??[],a=typeof n==`string`?n:typeof e.default==`string`?e.default:``;return(0,T.jsxs)(`select`,{id:t,className:`h-9 w-full rounded-lg border border-border/70 bg-background/60 px-3 text-sm text-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,value:a,onChange:e=>{r(e.target.value)},children:[a===``&&(0,T.jsx)(`option`,{value:``,children:O(`inputs.selectPlaceholder`)}),i.map(e=>(0,T.jsx)(`option`,{value:e,children:e},e))]})}return(0,T.jsx)(v,{id:t,type:`text`,value:typeof n==`string`?n:typeof e.default==`string`?e.default:``,onChange:e=>{r(e.target.value)}})},V=({job:e})=>e.steps.length===0?null:(0,T.jsx)(`div`,{className:`mt-2 ml-4 space-y-1 border-l border-border/60 pl-4`,children:e.steps.map(t=>(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(m,{variant:`outline`,className:r(`px-2 py-0 text-[10px] uppercase tracking-[0.16em]`,M(t)),children:t.status===`completed`?A(t.conclusion)??O(`status.completed`):k(t.status)}),(0,T.jsx)(`span`,{className:`truncate text-[11px] text-muted-foreground`,children:t.name})]},`${e.id}-${t.number}`))}),H=({run:e})=>{let t=N(e),n=P(e);return(0,T.jsxs)(`div`,{className:`rounded-2xl border border-border/60 bg-background/20 px-4 py-3`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`truncate text-sm font-medium text-foreground`,children:e.name??`#${e.id}`}),(0,T.jsx)(m,{variant:`outline`,className:r(`px-2 py-0.5 text-[10px] uppercase tracking-[0.18em]`,j(e)),children:n})]}),(0,T.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[t&&(0,T.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:t}),e.html_url&&(0,T.jsxs)(`a`,{href:e.html_url,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-[11px] text-sky-200 hover:text-sky-100`,children:[O(`actions.openOnGithub`),(0,T.jsx)(y,{className:`h-3 w-3`})]})]})]}),e.head_branch&&(0,T.jsx)(`p`,{className:`mt-1 text-[11px] text-muted-foreground`,children:e.head_branch}),e.jobs.map(e=>(0,T.jsxs)(`div`,{className:`mt-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(m,{variant:`outline`,className:r(`px-2 py-0 text-[10px] uppercase tracking-[0.16em]`,j(e)),children:e.status===`completed`?A(e.conclusion)??O(`status.completed`):k(e.status)}),(0,T.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.name})]}),(0,T.jsx)(V,{job:e})]},e.id))]})},ae=({tracked:e})=>{let t=e.state===`resolving`,n=e.failure?.message??O(`runs.trackingState.${e.state}`);return(0,T.jsxs)(`div`,{className:r(`flex items-start gap-2 rounded-2xl border px-4 py-3`,t?`border-border/60 bg-background/20`:`border-red-400/25 bg-red-500/8`),children:[t&&(0,T.jsx)(a,{className:`mt-0.5 h-3.5 w-3.5 animate-spin text-muted-foreground`}),(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`span`,{className:r(`block break-words text-xs`,t?`text-muted-foreground`:`text-red-200`),children:n}),(0,T.jsx)(`span`,{className:`mt-1 block text-[11px] text-muted-foreground`,children:e.ref??O(`runs.unknownRef`)})]})]})},U=(e,t)=>{let n=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=n.get(e.id);(!t||(e.updated_at??``)>=(t.updated_at??``))&&n.set(e.id,e)}return[...n.values()]},W=(e,t)=>{let n=new Map(e.map(e=>[e.execution_run_id,e]));for(let e of t){let t=n.get(e.execution_run_id),r=t&&![`queued`,`waiting`,`running`].includes(t.execution_status),i=[`queued`,`waiting`,`running`].includes(e.execution_status);(!r||!i)&&n.set(e.execution_run_id,e)}return[...n.values()]},oe=(e,t,n)=>{let r=t.filter(e=>e.run===null),i=new Set(r.map(e=>e.tracking_key));return W(e.filter(e=>i.has(e.tracking_key)||n.get(e.tracking_key)?.run===null),r.filter(e=>!n.has(e.tracking_key)))},se=e=>({ref:e??`main`}),G=({projectId:e,defaultBranch:t,onClose:n})=>{let[r,l]=(0,w.useState)([]),[p,m]=(0,w.useState)(!0),[h,v]=(0,w.useState)(null),[S,k]=(0,w.useState)([]),[A,j]=(0,w.useState)([]),[M,N]=(0,w.useState)({}),[P,R]=(0,w.useState)(null),[z,B]=(0,w.useState)(!1),[V]=(0,w.useState)(()=>se(t)),W=(0,w.useRef)({}),G=(0,w.useRef)({}),K=(0,w.useRef)(null),q=(0,w.useRef)(!1),J=(0,w.useRef)(0),Y=(0,w.useRef)(new Map),X=(0,w.useCallback)(async t=>{N(e=>{let n=e[t.id];return n?.isLoading?e:{...e,[t.id]:{inputs:n?.inputs??[],dispatchable:n?.dispatchable??!0,isLoading:!0,error:null}}});try{let n=await te(e,t.id,t.path);return N(e=>({...e,[t.id]:{inputs:n.inputs,dispatchable:n.dispatchable,isLoading:!1,error:null}})),n}catch(e){return N(n=>({...n,[t.id]:{inputs:[],dispatchable:!0,isLoading:!1,error:e instanceof x?e.message:O(`workflows.loadError`)}})),null}},[e]),Z=(0,w.useCallback)(async()=>{m(!0),v(null);try{let t=await s(e);l(t.workflows),Promise.allSettled(t.workflows.map(e=>X(e)))}catch(e){v(e instanceof x?e.message:O(`workflows.loadError`))}finally{m(!1)}},[X,e]),Q=(0,w.useCallback)(async t=>{if(q.current)return;q.current=!0;let n=J.current;try{let r=await ne(e,t);k(e=>U(e,r.runs)),j(e=>{let t=new Map([...Y.current.entries()].filter(([,e])=>e.revision>n).map(([e,t])=>[e,t.event]));return oe(e,r.tracked_runs??[],t)})}catch(e){re(e)||console.warn(`[github-actions] unable to load runs`,e)}finally{q.current=!1}},[e]);(0,w.useEffect)(()=>{Z()},[Z]),(0,w.useEffect)(()=>{let e=new AbortController,t=()=>{document.visibilityState===`visible`&&Q(e.signal)};t();let n=window.setInterval(t,D),r=g(t);return()=>{e.abort(),window.clearInterval(n),r()}},[Q]);let ce=(0,w.useCallback)(async e=>{if(P?.workflow.id===e.id)return;K.current=e.id,R({workflow:e,ref:V.ref,values:{}});let t=M[e.id];if(t&&!t.isLoading&&!t.error){R(n=>!n||n.workflow.id!==e.id?n:{...n,values:F(t.inputs)});return}let n=await X(e);n&&R(t=>!t||t.workflow.id!==e.id?t:{...t,values:F(n.inputs)})},[V.ref,M,X,P]),le=(0,w.useCallback)(async()=>{if(!P)return;let t=M[P.workflow.id];if(!t||!t.dispatchable)return;B(!0);let n={};for(let e of t.inputs){let t=P.values[e.name];e.type===`boolean`?n[e.name]=typeof t==`boolean`?t:e.default===!0:typeof t==`string`&&t!==``?n[e.name]=t:typeof e.default==`string`&&e.default!==``&&(n[e.name]=e.default)}try{await c(e,P.workflow.id,{ref:P.ref,workflowName:P.workflow.name,workflowUrl:P.workflow.url,inputs:n}),i.success(O(`messages.dispatched`)),R(null),Q()}catch(e){i.error(e instanceof x?e.message:O(`messages.dispatchError`))}finally{B(!1)}},[M,Q,e,P]);(0,w.useEffect)(()=>{let t=t=>{!t||t.project_id!==e||(J.current+=1,Y.current.set(t.tracking_key,{revision:J.current,event:t}),j(e=>{let n=e.filter(e=>e.tracking_key!==t.tracking_key);return t.run?n:[...n,t]}),t.run&&k(e=>U(e,[t.run])))};return _.on(`github-actions:updated`,t),()=>{_.off(`github-actions:updated`,t)}},[e]),(0,w.useEffect)(()=>{let e=P?.workflow.id;!e||K.current!==e||(W.current[e]?.scrollIntoView({block:`nearest`}),G.current[e]?.scrollIntoView({block:`nearest`}),K.current=null)},[P?.workflow.id]);let $=(0,w.useMemo)(()=>[...S].sort((e,t)=>{let n=e.updated_at?Date.parse(e.updated_at):0;return(t.updated_at?Date.parse(t.updated_at):0)-n}),[S]);return(0,T.jsx)(u,{open:!0,onOpenChange:e=>{e||n()},children:(0,T.jsxs)(f,{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-5xl`,onInteractOutside:e=>e.preventDefault(),children:[(0,T.jsx)(ee,{className:`sr-only`,children:O(`dialog.srTitle`)}),(0,T.jsx)(o,{className:`sr-only`,children:O(`dialog.srDescription`)}),(0,T.jsxs)(`div`,{className:`flex items-start justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-2xl border border-border/70 bg-background/60 text-violet-200`,children:(0,T.jsx)(ie,{className:`h-5 w-5`})}),(0,T.jsx)(`div`,{children:(0,T.jsx)(`h2`,{className:`text-2xl font-semibold text-foreground`,children:O(`dialog.title`)})})]}),(0,T.jsx)(d,{asChild:!0,children:(0,T.jsx)(C,{type:`button`,"aria-label":O(`dialog.closeAriaLabel`),variant:`ghost`,size:`icon-sm`,className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:(0,T.jsx)(b,{className:`h-4 w-4`})})})]}),(0,T.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-0 overflow-hidden lg:grid-cols-[22rem_minmax(0,1fr)]`,children:[(0,T.jsxs)(`aside`,{"aria-label":O(`workflows.ariaLabel`),className:`flex min-h-0 flex-col gap-3 overflow-y-auto border-b border-border/70 px-4 py-4 lg:border-r lg:border-b-0`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,T.jsx)(`p`,{className:`text-xs uppercase tracking-[0.22em] text-muted-foreground`,children:O(`workflows.title`)}),(0,T.jsx)(C,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 px-2 text-xs text-muted-foreground hover:text-foreground`,onClick:()=>{Z(),Q()},children:O(`actions.refresh`)})]}),p&&(0,T.jsxs)(`div`,{className:`flex items-center gap-2 px-2 text-xs text-muted-foreground`,children:[(0,T.jsx)(a,{className:`h-3.5 w-3.5 animate-spin`}),(0,T.jsx)(`span`,{children:O(`workflows.loading`)})]}),h&&(0,T.jsx)(`div`,{className:`rounded-2xl border border-rose-500/30 bg-rose-500/10 px-4 py-3 text-sm text-rose-200`,children:h}),!p&&r.length===0&&!h&&(0,T.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:[(0,T.jsx)(`p`,{children:O(`workflows.empty`)}),(0,T.jsx)(`p`,{className:`mt-1`,children:O(`workflows.emptyHint`)}),(0,T.jsxs)(`a`,{href:E,target:`_blank`,rel:`noreferrer`,className:`mt-2 inline-flex items-center gap-1 text-xs text-sky-200 hover:text-sky-100`,children:[O(`workflows.docsLink`),(0,T.jsx)(y,{className:`h-3 w-3`})]})]}),(0,T.jsx)(`div`,{className:`space-y-2`,children:r.map(e=>{let t=P?.workflow.id===e.id;return(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsx)(`div`,{ref:t=>{W.current[e.id]=t},children:(0,T.jsx)(I,{workflow:e,inputsState:M[e.id]??null,isSelected:t,onSelect:()=>{ce(e)}})}),t&&P&&(0,T.jsx)(`div`,{ref:t=>{G.current[e.id]=t},children:(0,T.jsx)(L,{workflow:e,inputsState:M[e.id]??{inputs:[],dispatchable:!0,isLoading:!1,error:null},refValue:P.ref,onRefChange:e=>{R(t=>t&&{...t,ref:e})},values:P.values,onValueChange:(e,t)=>{R(n=>n&&{...n,values:{...n.values,[e]:t}})},isDispatching:z,onDispatch:()=>{le()},onCancel:()=>{R(null)}})})]},e.id)})})]}),(0,T.jsxs)(`section`,{className:`flex min-h-0 flex-col gap-3 overflow-y-auto px-4 py-4`,children:[(0,T.jsx)(`p`,{className:`text-xs uppercase tracking-[0.22em] text-muted-foreground`,children:O(`runs.title`)}),A.map(e=>(0,T.jsx)(ae,{tracked:e},e.tracking_key)),$.map(e=>(0,T.jsx)(H,{run:e},e.id)),$.length===0&&A.length===0&&(0,T.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:O(`runs.empty`)})]})]})]})})};export{G as GitHubActionsDialog};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as e}from"./chunk-BNv3lrIs.js";import{$ as t,B as n,D as r,E as i,F as a,I as o,J as s,K as c,L as l,M as u,N as d,O as f,P as p,R as m,S as h,T as ee,V as te,X as g,Z as _,b as v,c as y,d as b,f as x,h as S,j as C,k as w,l as ne,p as re,q as T,t as ie,u as ae,w as oe,x as se,y as E,z as D}from"./index-CEMaJCPS.js";var O=e(t(),1),ce=(e,t)=>_(s(`/projects/${e}/test-sessions`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to open the test runner right now.`}),le=(e,t)=>_(s(`/tickets/${e}/test-sessions${t?`?project_id=${encodeURIComponent(t)}`:``}`),{method:`POST`,fallbackErrorMessage:`Unable to open the test runner right now.`}),ue=(e,t={})=>_(s(`/test-sessions/${e}/discovery${t.commandId?`?command_id=${encodeURIComponent(t.commandId)}`:``}`),{signal:t.signal,fallbackErrorMessage:`Unable to discover tests right now.`}),de=(e,t)=>_(s(`/test-sessions/${e}/run`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to start the selected tests right now.`}),fe=e=>_(s(`/test-sessions/${e}/stop`),{method:`POST`,fallbackErrorMessage:`Unable to stop the test run right now.`}),k=e=>g(s(`/test-sessions/${e}`),{method:`DELETE`,fallbackErrorMessage:`Unable to close the test runner right now.`}),A=c(),j=256*1024,M=24,N=RegExp(`\x1B\\[[0-9;?]*[ -/]*[@-~]`,`g`),P=(e,t)=>x.t(`common:testsDialog.${e}`,t),pe=(e,t)=>{let n=`${e}${t}`;return n.length<=j?n:n.slice(-j)},F=(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,I=e=>e.replace(N,``),me=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=M,L=e=>{e.scrollTop=e.scrollHeight},he=(e,t=!1)=>{L(e);let n=0,r=0;return n=window.requestAnimationFrame(()=>{L(e),t&&(r=window.requestAnimationFrame(()=>{L(e)}))}),()=>{window.cancelAnimationFrame(n),r!==0&&window.cancelAnimationFrame(r)}},ge=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[]}},R=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`,_e=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`},z=e=>{let t=e.split(`/`);return t[t.length-1]||e},B=e=>e.toLowerCase().trim().split(/\s+/).filter(Boolean),V=(e,t)=>e.length===0?!0:e.every(e=>t.some(t=>t.includes(e))),H=(e,t)=>{let n=B(t);return n.length===0?e:e.flatMap(e=>{let t=z(e.path);if(V(n,[t.toLowerCase(),e.path.toLowerCase()]))return[e];let r=e.cases.filter(r=>V(n,[t.toLowerCase(),e.path.toLowerCase(),r.name.toLowerCase()]));return r.length===0?[]:[{...e,cases:r}]})},U=e=>P(e===`passed`?`status.passed`:e===`failed`?`status.failed`:e===`running`?`status.running`:e===`error`?`status.error`:e===`stopped`?`status.stopped`:`status.idle`),ve=e=>e?.selection?e.selection.kind===`all`?P(`selection.allTests`):e.selection.kind===`case`?e.selection.name:z(e.selection.path):P(`selection.noRunYet`),W=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`,G=e=>e===`failure`?`text-rose-200`:e===`success`?`text-emerald-200`:e===`warning`?`text-amber-200`:`text-slate-200`,ye=(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,be=`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:n(`whitespace-pre-wrap break-words`,G(t)),children:e===``?` `:e}),q=(0,O.memo)(({canRunGranular:e,filePath:t,isActive:r,name:i,onRunCase:a})=>(0,A.jsxs)(`button`,{type:`button`,"aria-label":P(`caseRow.runAriaLabel`,{name:i}),title:i,className:n(`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`,r&&`bg-sky-500/10`),disabled:!e,onClick:()=>{a(t,i)},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:i})]}));q.displayName=`TestCaseRow`;var J=(0,O.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:i,canRunGranular:a,file:o,isExpanded:s,onRunCase:c,onRunFile:l,onToggleFile:u})=>{let d=e===`file`&&i===o.path,f=e===`case`&&i===o.path;return(0,A.jsx)(y,{open:s,onOpenChange:e=>{u(o.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)(ae,{asChild:!0,children:(0,A.jsx)(D,{type:`button`,variant:`ghost`,size:`icon-xs`,"aria-label":P(s?`fileRow.collapseAriaLabel`:`fileRow.expandAriaLabel`,{path:o.path}),className:`mt-1 shrink-0 text-muted-foreground hover:text-foreground`,children:(0,A.jsx)(w,{className:n(`h-4 w-4 transition-transform`,s&&`rotate-180`)})})}),(0,A.jsx)(`button`,{type:`button`,"aria-label":P(`fileRow.runAriaLabel`,{path:o.path}),className:n(`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`,a?`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:!a,onClick:()=>{l(o.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)(r,{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:z(o.path)}),(0,A.jsx)(`span`,{className:`mt-0.5 block truncate text-[11px] text-muted-foreground`,children:o.path})]}),(0,A.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted-foreground`,children:P(`fileRow.testCount`,{count:o.cases.length})})]})]})})]}),(0,A.jsx)(ne,{children:(0,A.jsx)(`div`,{className:`ml-4 border-l border-border/60 pl-6`,children:o.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:o.cases.map(n=>{let r=e===`case`&&i===o.path&&t===n.name;return(0,A.jsx)(q,{canRunGranular:a,filePath:o.path,isActive:r,name:n.name,onRunCase:c},n.id)})})})})]})})});J.displayName=`DiscoveryFileRow`;var xe=(0,O.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:r,availableCommands:a,canRunGranular:o,discovery:s,expandedFiles:c,fullSuiteOnlyNotice:l,isLoading:u,selectedCommandId:d,selectedCommandName:f,sessionError:p,sessionStatus:m,shouldShowCommandSelector:ee,onRunCase:te,onRunFile:g,onSelectCommand:_,onToggleFile:y})=>{let[b,x]=(0,O.useState)(``),S=(0,O.useMemo)(()=>H(s,b),[s,b]),ne=(0,O.useMemo)(()=>S.reduce((e,t)=>e+t.cases.length,0),[S]),T=B(b).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:[ee&&(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)(E,{children:[(0,A.jsx)(h,{asChild:!0,children:(0,A.jsxs)(D,{type:`button`,variant:`outline`,className:`w-full justify-between rounded-xl border-border/70 bg-background/60`,"aria-label":P(`scope.selectedCommandAriaLabel`),disabled:a.length===0||m===`running`,children:[(0,A.jsx)(`span`,{className:`truncate`,children:f??P(`scope.selectTestScope`)}),(0,A.jsx)(w,{className:`h-4 w-4 text-muted-foreground`})]})}),(0,A.jsx)(v,{align:`start`,className:`w-72`,children:a.map(e=>(0,A.jsx)(se,{className:n(d===e.id&&`bg-accent text-accent-foreground`),onSelect:()=>{_(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}),(s.length>0||b.length>0)&&(0,A.jsxs)(`div`,{className:`relative mt-1 shrink-0`,children:[(0,A.jsx)(C,{type:`search`,value:b,onChange:e=>{x(e.target.value)},placeholder:P(`filter.placeholder`),"aria-label":P(`filter.ariaLabel`),className:`pr-10`}),b.length>0&&(0,A.jsx)(D,{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:()=>{x(``)},children:(0,A.jsx)(re,{className:`size-4`})})]}),!a.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:S.length}),`, `,P(`discovery.caseCount`,{count:ne})]})}),u&&(0,A.jsx)(i,{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:s.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`)}):S.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`)}):S.map(n=>(0,A.jsx)(J,{activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:r,canRunGranular:o,file:n,isExpanded:T||(c[n.path]??!1),onRunCase:te,onRunFile:g,onToggleFile:y},n.path))})]})]})})});xe.displayName=`DiscoveryPane`;var Se=(0,O.memo)(({durationMs:e,output:t,outputTruncated:r,selectionLabel:i,status:a,summaryCounts:o,viewportRef:s,onScroll:c})=>{let l=(0,O.useMemo)(()=>t?I(t).replace(/\r\n/g,`
|
|
2
|
+
`).replace(/\r/g,`
|
|
3
|
+
`).split(`
|
|
4
|
+
`).map(e=>({line:e,tone:W(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:i}),a&&(0,A.jsx)(b,{variant:`outline`,className:n(`px-3 py-1 text-xs uppercase tracking-[0.2em]`,R(a)),children:U(a)}),o&&(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:[o.failed.count,` `,o.failed.label]}),(0,A.jsxs)(`span`,{className:`text-emerald-200`,children:[o.passed.count,` `,o.passed.label]})]}),e!=null&&(0,A.jsx)(`span`,{className:`text-muted-foreground`,children:_e(e)}),r&&(0,A.jsx)(b,{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:s,"aria-label":P(`output.ariaLabel`),className:`h-full overflow-auto px-4 py-4`,onScroll:c,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`)})})})})]})})});Se.displayName=`OutputPane`;var Ce=({testCommands:e,onClose:t,...n})=>{let r=n.scope,i=n.projectId,s=n.scope===`ticket`?n.ticketId:null,c=n.scope===`project`?n.targetKind:null,h=n.scope===`project`?n.targetBundleId:null,[g,_]=(0,O.useState)(e),[v,y]=(0,O.useState)(null),[b,x]=(0,O.useState)([]),[C,w]=(0,O.useState)(``),[ne,ae]=(0,O.useState)({}),[se,E]=(0,O.useState)(!0),[j,M]=(0,O.useState)(!1),[N,I]=(0,O.useState)(!1),[L,R]=(0,O.useState)(null),[_e,z]=(0,O.useState)(!1),[B,V]=(0,O.useState)(!1),H=(0,O.useRef)(null),U=(0,O.useRef)(!1),W=(0,O.useRef)(null),G=(0,O.useRef)(!0),K=(0,O.useRef)(null),q=(0,O.useRef)(null),J=v?.selection?.kind??null,Ce=v?.selection?.kind===`all`?null:v?.selection?.path??null,we=v?.selection?.kind===`case`?v.selection.name:null,Y=v?.id??null,X=v?.status??null,Z=(0,O.useMemo)(()=>g.find(e=>e.id===C)??null,[g,C]),Te=(0,O.useMemo)(()=>{if(v?.summary?.failed_count==null&&v?.summary?.passed_count==null&&v?.summary?.failed_file_count==null&&v?.summary?.passed_file_count==null)return null;let e=v?.summary?.failed_count==null&&v?.summary?.passed_count==null;return{failed:X===`failed`&&v?.summary?.failed_count==null&&v?.summary?.failed_file_count!=null||e?{count:v?.summary?.failed_file_count??0,label:P(`summaryCounts.filesFailed`)}:{count:v?.summary?.failed_count??0,label:P(`summaryCounts.failed`)},passed:e?{count:v?.summary?.passed_file_count??0,label:P(`summaryCounts.filesPassed`)}:{count:v?.summary?.passed_count??v?.summary?.passed_file_count??0,label:P(`summaryCounts.passed`)}}},[v?.summary?.failed_count,v?.summary?.passed_count,v?.summary?.failed_file_count,v?.summary?.passed_file_count,X]),Ee=Z?.runner===`unknown`?P(`scope.fullSuiteOnlyNotice`):null,De=!!(Z&&v?.status!==`running`&&!j&&!N),Oe=De,ke=De&&B,Ae=g.length>1,{runs:je}=ie(i),Q=v?.run_id?je.find(e=>e.id===v.run_id)??null:null;(0,O.useEffect)(()=>{C||g.length===0||w(g[0]?.id??``)},[g,C]),(0,O.useEffect)(()=>{e.length>0&&_(t=>ye(t,e)?t:e)},[e]),(0,O.useEffect)(()=>{if(g.length>0||!i)return;let e=new AbortController;return te(e.signal).then(e=>{let t=e.find(e=>e.id===i);t&&_(e=>{let n=ge(t.test_commands??null);return ye(e,n)?e:n})}).catch(()=>{}),()=>{e.abort()}},[g.length,i]),(0,O.useEffect)(()=>{let e=e=>{!e||e.id!==H.current||y(t=>F(t,e))},t=e=>{!e||e.session_id!==H.current||y(t=>!t||t.id!==e.session_id||e.run_id&&t.run_id&&e.run_id!==t.run_id?t:{...t,output:pe(t.output,e.chunk),output_truncated:e.output_truncated})};return S.on(`test-session:updated`,e),S.on(`test-session:output`,t),()=>{S.off(`test-session:updated`,e),S.off(`test-session:output`,t)}},[]),(0,O.useEffect)(()=>{let e=W.current;if(!e){K.current=v?.output??null,q.current=v?.status??null;return}let t=K.current!==(v?.output??null),n=q.current!==`running`&&v?.status===`running`,r=q.current===`running`&&v?.status!==`running`;if(n&&(G.current=!0),n||t&&v?.status===`running`&&G.current||r&&G.current){let t=he(e,r);return K.current=v?.output??null,q.current=v?.status??null,t}K.current=v?.output??null,q.current=v?.status??null},[v?.output,v?.status]),(0,O.useEffect)(()=>{let e=!1;return(async()=>{try{let t;if(r===`project`){if(!i)return;t=await ce(i,{target_kind:c??`repo_root`,target_bundle_id:h??null})}else t=await le(s??``,i);if(e){k(t.id).catch(()=>{});return}H.current=t.id,y(t)}catch(t){e||R(t instanceof T?t.message:P(`messages.loadRunnerError`))}finally{!e&&H.current==null&&E(!1)}})(),()=>{e=!0}},[i,r,h,c,s]),(0,O.useEffect)(()=>{Q&&y(e=>{if(!e||e.run_id!==Q.id)return e;let t=Q.status===`completed`?`passed`:Q.status===`failed`?`failed`:Q.status===`cancelled`||Q.status===`interrupted`?`stopped`:`running`;return e.status===t&&e.error===(Q.failure?.message??e.error)?e:{...e,status:t,error:Q.failure?.message??e.error,started_at:Q.started_at??e.started_at,completed_at:Q.completed_at??e.completed_at}})},[Q]),(0,O.useEffect)(()=>{if(!v?.id){V(!1);return}if(g.length>0&&!C){V(!1);return}let e=new AbortController,t=!1;return E(!0),V(!1),ue(v.id,{commandId:C||null,signal:e.signal}).then(e=>{t||(x(e.files),V(e.supports_granular_selection))}).catch(n=>{t||e.signal.aborted||R(n instanceof T?n.message:P(`messages.discoverError`))}).finally(()=>{t||E(!1)}),()=>{t=!0,e.abort()}},[g.length,C,v?.id]),(0,O.useEffect)(()=>()=>{let e=H.current;!e||U.current||(U.current=!0,k(e).catch(()=>{}))},[]);let $=(0,O.useCallback)(async e=>{if(!(!Y||X===`running`||!Z||j||N)){R(null),M(!0);try{let t=await de(Y,{command_id:Z.id,selection:e});y(e=>F(e,t))}catch(e){R(e instanceof T?e.message:P(`messages.startError`))}finally{M(!1)}}},[j,N,Z,Y,X]),Me=(0,O.useCallback)(async()=>{if(!(!Y||X!==`running`||N)){R(null),I(!0);try{let e=await fe(Y);y(t=>F(t,e))}catch(e){R(e instanceof T?e.message:P(`messages.stopError`))}finally{I(!1)}}},[N,Y,X]),Ne=(0,O.useCallback)(()=>{let e=H.current;if(!e||U.current){t();return}U.current=!0,t(),k(e).catch(()=>{})},[t]),Pe=(0,O.useCallback)(()=>{if(X===`running`){z(!0);return}Ne()},[Ne,X]),Fe=(0,O.useCallback)(()=>{let e=W.current;e&&(G.current=me(e))},[]),Ie=(0,O.useCallback)(e=>{w(e)},[]),Le=(0,O.useCallback)((e,t)=>{ae(n=>(n[e]??!1)===t?n:{...n,[e]:t})},[]),Re=(0,O.useCallback)(e=>{$({kind:`file`,path:e})},[$]),ze=(0,O.useCallback)((e,t)=>{$({kind:`case`,path:e,name:t})},[$]);return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(u,{open:!0,onOpenChange:e=>{e||Pe()},children:(0,A.jsxs)(p,{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)(m,{className:`sr-only`,children:P(`dialog.srTitle`)}),(0,A.jsx)(a,{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:v?.target_label??P(`dialog.preparingTarget`)}),Q&&(0,A.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:P(`dialog.durableAttempt`,{count:Q.attempt})})]})]})}),(0,A.jsx)(d,{asChild:!0,children:(0,A.jsx)(D,{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)(re,{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)(xe,{activeSelectionKind:J,activeSelectionName:we,activeSelectionPath:Ce,availableCommands:g,canRunGranular:ke,discovery:b,expandedFiles:ne,fullSuiteOnlyNotice:Ee,isLoading:se,selectedCommandId:C,selectedCommandName:Z?.name??null,sessionError:L,sessionStatus:X,shouldShowCommandSelector:Ae,onRunCase:ze,onRunFile:Re,onSelectCommand:Ie,onToggleFile:Le}),(0,A.jsx)(Se,{durationMs:v?.duration_ms??null,output:v?.output??``,outputTruncated:v?.output_truncated??!1,selectionLabel:ve(v),status:X,summaryCounts:Te,viewportRef:W,onScroll:Fe})]}),(0,A.jsx)(o,{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:v?.status===`running`?(0,A.jsxs)(D,{type:`button`,variant:`destructive`,className:be,onClick:()=>{Me()},disabled:N,children:[(0,A.jsx)(oe,{className:`h-4 w-4`}),(0,A.jsx)(`span`,{children:P(`actions.stop`)})]}):(0,A.jsxs)(D,{type:`button`,variant:`success`,className:be,disabled:!Oe,onClick:()=>{$({kind:`all`})},children:[(0,A.jsx)(ee,{className:`h-4 w-4`}),(0,A.jsx)(`span`,{children:P(`actions.run`)})]})})})]})}),(0,A.jsx)(u,{open:_e,onOpenChange:z,children:(0,A.jsxs)(p,{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)(l,{children:[(0,A.jsx)(m,{className:`text-sm font-semibold uppercase tracking-widest text-muted-foreground`,children:P(`closeConfirmation.title`)}),(0,A.jsx)(a,{className:`text-sm text-foreground whitespace-pre-line`,children:P(`closeConfirmation.description`)})]}),(0,A.jsxs)(o,{className:`sm:flex-row sm:justify-end`,children:[(0,A.jsx)(D,{type:`button`,variant:`ghost`,onClick:()=>z(!1),children:P(`closeConfirmation.keepRunning`)}),(0,A.jsx)(D,{type:`button`,variant:`destructive`,onClick:()=>{z(!1),Ne()},children:P(`closeConfirmation.stopAndClose`)})]})]})})]})};export{Ce as TestsDialog};
|