@worca/ui 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -233,41 +233,29 @@ ${d.join(`
233
233
  </div>
234
234
  </sl-dialog>
235
235
  `}function On(e){return e.toLowerCase().replace(/[^a-z0-9_-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"").slice(0,64)}function J_(e,t){let s=new Set(t),i=[];for(let r of e)if(!s.has(r))s.add(r),i.push(r);else{let o=2,n=`-${o}`,a=`${r.slice(0,64-n.length)}${n}`;for(;s.has(a);)o+=1,n=`-${o}`,a=`${r.slice(0,64-n.length)}${n}`;s.add(a),i.push(a)}return i}function we(e){let t=Math.floor(e/1e3),s=Math.floor(t/3600),i=Math.floor(t%3600/60),r=t%60;return s>0?`${s}h ${i}m ${r}s`:i>0?`${i}m ${r}s`:`${r}s`}function st(e,t){let s=new Date(e).getTime();return(t?new Date(t).getTime():Date.now())-s}function wt(e){if(!e)return"N/A";let t=new Date(e),s=i=>String(i).padStart(2,"0");return`${t.getFullYear()}.${s(t.getMonth()+1)}.${s(t.getDate())} ${s(t.getHours())}:${s(t.getMinutes())}`}var Tt=["preflight","plan","plan_review","coordinate","implement","test","review","pr","learn"],W2=["orchestrator",...Tt];function zn(e){return[...e].sort(([t],[s])=>{let i=Tt.indexOf(t),r=Tt.indexOf(s);return(i===-1?999:i)-(r===-1?999:r)})}function Ud(e){return[...e].sort((t,s)=>{let i=Tt.indexOf(t),r=Tt.indexOf(s);return(i===-1?999:i)-(r===-1?999:r)})}function Z_(e){return Object.entries(e).sort(([s],[i])=>{let r=Tt.indexOf(s),o=Tt.indexOf(i);return(r===-1?999:r)-(o===-1?999:o)})}var Q_={completed:"success",in_progress:"primary",error:"danger",interrupted:"warning",cancelled:"neutral",pending:"neutral"};function ev(e,t){let s=e.status_changed_at||(t==="completed"||t==="failed"?e.completed_at:null)||e.started_at;if(!s)return null;let i=st(s,null),r=we(i);return t==="running"?`Running for ${r}`:`${t.charAt(0).toUpperCase()+t.slice(1)} ${r} ago`}function tv(e){if(!e)return null;let t=null;for(let s of Object.values(e))s.completed_at&&(!t||s.completed_at>t)&&(t=s.completed_at);return t}function sv(e){let t=0;for(let s of Object.values(e.stages||{}))for(let i of s.iterations||[])t+=i.cost_usd||0;return t}function qd(e){return e===0?null:e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function es(e,{onClick:t,beadsCount:s,onPause:i,onResume:r,onStop:o,onCancel:n,onArchive:a,onUnarchive:c}={}){let l=e.work_request?.title||"Untitled",d=e.active,h=e.pipeline_status||(d?"running":e.stage==="error"?"failed":"completed"),g=ev(e,h),p=e.completed_at||(d?null:tv(e.stages)),f=e.started_at&&d?we(st(e.started_at,null)):e.started_at&&p?we(st(e.started_at,p)):"N/A",_=e.branch||e.work_request?.branch||"",w=e.stages?Z_(e.stages):[],S=sv(e),x=i&&ge("pause",h)?u`
236
- <div class="run-card-actions">
237
236
  <sl-button size="small" variant="warning" outline class="btn-quick-pause" @click=${H=>{H.stopPropagation(),i(e.id)}}>
238
237
  ${E(R(ct,12))} Pause
239
238
  </sl-button>
240
- </div>
241
239
  `:y,v=o&&ge("stop",h)?u`
242
- <div class="run-card-actions">
243
240
  <sl-button size="small" variant="danger" outline class="btn-quick-stop" @click=${H=>{H.stopPropagation(),o(e.id)}}>
244
241
  ${E(R(ds,12))} Stop
245
242
  </sl-button>
246
- </div>
247
243
  `:y,C=r&&ge("resume",h)?u`
248
- <div class="run-card-actions">
249
244
  <button class="btn-quick-resume" @click=${H=>{H.stopPropagation(),r(e.id)}}>
250
245
  ${E(R(Ls,12))} Resume
251
246
  </button>
252
- </div>
253
247
  `:y,$=n&&ge("cancel",h)?u`
254
- <div class="run-card-actions">
255
248
  <sl-button size="small" variant="danger" class="btn-quick-cancel" @click=${H=>{H.stopPropagation(),n(e.id)}}>
256
249
  ${E(R(Ps,12))} Cancel
257
250
  </sl-button>
258
- </div>
259
251
  `:y,M=a&&!e.archived&&ge("archive",h)?u`
260
- <div class="run-card-actions">
261
252
  <button class="btn-quick-archive" @click=${H=>{H.stopPropagation(),a(e.id)}}>
262
253
  ${E(R(co,12))} Archive
263
254
  </button>
264
- </div>
265
255
  `:y,j=c&&e.archived===!0&&ge("unarchive",h)?u`
266
- <div class="run-card-actions">
267
256
  <button class="btn-quick-archive" @click=${H=>{H.stopPropagation(),c(e.id)}}>
268
257
  ${E(R(Pi,12))} Unarchive
269
258
  </button>
270
- </div>
271
259
  `:y,F=e.pipeline_template?e.pipeline_template.startsWith("builtin:")?`worca:${e.pipeline_template.slice(8)}`:e.pipeline_template:null;return u`
272
260
  <div class="run-card ${gr(h)}" @click=${t?()=>t(e.id):null}>
273
261
  <div class="run-card-top">
@@ -292,12 +280,9 @@ ${d.join(`
292
280
  <sl-badge variant="primary" pill class="run-card-stage-badge">${s} bead${s!==1?"s":""}</sl-badge>
293
281
  </div>
294
282
  `:y}
295
- ${x}
296
- ${v}
297
- ${C}
298
- ${$}
299
- ${M}
300
- ${j}
283
+ <div class="run-card-actions">
284
+ ${x}${v}${C}${$}${M}${j}
285
+ </div>
301
286
  </div>
302
287
  `}function Nn(e){return e===0||e===1?"danger":e===2?"warning":"neutral"}function Nl(e,t=null){return t?.blocked_by&&t.blocked_by.length>0?"warning":e==="open"?"success":e==="in_progress"?"primary":"neutral"}function Gd(e){return e.status==="closed"?"closed":e.blocked_by&&e.blocked_by.length>0?"blocked":e.status}var Kd={open:{icon:Ts,color:"var(--status-completed)"},in_progress:{icon:Pe,color:"var(--status-in-progress)"},closed:{icon:Rs,color:"var(--status-completed)"},blocked:{icon:Al,color:"var(--status-blocked)"}};function iv(e,t){let s=t.get(e);if(!s)return R(Ts,10);let i=Gd(s),r=Kd[i]||Kd.open,o=i==="in_progress"?"icon-spin":"";return`<span style="color:${r.color};display:inline-flex">${R(r.icon,10,o)}</span>`}function rv(e){let t=new Set(e.map(r=>r.id)),s=new Map(e.map(r=>[r.id,0])),i=!0;for(;i;){i=!1;for(let r of e)for(let o of r.depends_on){if(!t.has(o))continue;let n=(s.get(o)??0)+1;n>s.get(r.id)&&(s.set(r.id,n),i=!0)}}return s}function Yd(e){if(!e||e.length===0)return{svg:"",nodes:[]};let t=140,s=40,i=60,r=24,o=16,n=new Map(e.map(x=>[x.id,x])),a=rv(e),c=Math.max(...a.values(),0),l=new Map;for(let x of e){let v=a.get(x.id)??0;l.has(v)||l.set(v,[]),l.get(v).push(x)}let d=Math.max(...[...l.values()].map(x=>x.length),1),h=Math.round(o*2+(c+1)*(t+i)),g=Math.round(o*2+d*(s+r)),p=new Map;for(let[x,v]of l)for(let C=0;C<v.length;C++)p.set(v[C].id,{x:Math.round(o+x*(t+i)),y:Math.round(o+C*(s+r))});let f="";for(let x of e){let v=p.get(x.id);if(v)for(let C of x.depends_on){let $=p.get(C);if(!$)continue;let M=$.x+t,j=$.y+s/2,F=v.x,H=v.y+s/2,ne=Math.round((M+F)/2),q=n.get(C),fe=q&&q.status==="closed";f+=`<path class="${fe?"beads-graph-edge beads-graph-edge--satisfied":"beads-graph-edge beads-graph-edge--blocking"}" d="M${M},${j} C${ne},${j} ${ne},${H} ${F},${H}" marker-end="${fe?"url(#beads-arrow-satisfied)":"url(#beads-arrow-blocking)"}"/>`}}let _="",w=[];for(let x of e){let v=p.get(x.id);if(!v)continue;let C=Gd(x),$=x.title||"",M=$.length>18?`${$.slice(0,18)}...`:$;_+=`<g class="beads-graph-node beads-graph-node--${C}" transform="translate(${v.x},${v.y})">
303
288
  <rect width="${t}" height="${s}" rx="6"/>