kadence 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -0
- package/README.md +15 -16
- package/dist/chunks/{board-5SQP5RX6.js → board-2HUYLTND.js} +1 -1
- package/dist/chunks/{chunk-MOXGQLKI.js → chunk-E7WLBKNZ.js} +100 -65
- package/dist/chunks/chunk-IP426V3B.js +16 -0
- package/dist/chunks/{ui-O7JSS6KE.js → ui-PATAOGVA.js} +2 -2
- package/dist/cli.js +136 -139
- package/package.json +1 -1
- package/dist/chunks/chunk-CR5YON2J.js +0 -10
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
var F=["backlog","todo","in_progress","blocked","in_review","done","cancelled"],x="done",S="cancelled",$="in_progress",Y="backlog",ot=["task","bug","story","epic"],at=["low","normal","high","urgent"];function lt(t){let e=m(t.data?.title),s=t.data?.body,u=t.data?.parents;return e===null||typeof s!="string"||s.trim().length===0||!Array.isArray(u)?null:{title:e,body:s,parents:u.filter(l=>typeof l=="string")}}function dt(t,e,s){let u=[];for(let[l,a]of t){let r=a.filter((c,h)=>a.findIndex(k=>k.id===c.id)===h).map(c=>({e:c,r:lt(c)})).filter(c=>c.r!==null);if(r.length===0)continue;let d=new Set(r.flatMap(c=>c.r.parents)),i=r.filter(c=>!d.has(c.e.id));i.length===0&&(i=[r[r.length-1]]);let f=i[i.length-1],y=r[0];u.push({id:l,label:"",title:f.r.title,body:f.r.body,tasks:(e.get(l)??[]).filter(c=>s.has(c)),revision:f.e.id,revisions:r.length,conflicts:i.slice(0,-1).map(c=>({revision:c.e.id,title:c.r.title,body:c.r.body,at:c.e.ts,by:c.e.actor,source:c.e.source})),createdAt:y.e.ts,createdBy:y.e.actor,updatedAt:f.e.ts,updatedBy:f.e.actor,source:f.e.source})}return u.sort((l,a)=>l.id<a.id?-1:1),u.forEach((l,a)=>{l.label=`DOC-${a+1}`}),u}function L(t,e){for(let s=t.length-1;s>=0;s--)if(t[s].id<e)return t[s].started;return $}function wt(t){let e=[...t].sort((n,o)=>n.id<o.id?-1:n.id>o.id?1:0),s=new Map,u=new Map,l=new Map,a=new Map,p=new Map,r=[],d=new Map,i=new Map,f=null,y=[],c={started:$,changes:[]},h=[],k=[];for(let n of e)n.type==="task.created"?z(s,n):n.type==="sprint.created"?G(u,n):n.type==="milestone.created"&&J(l,n);for(let n of e){if(n.type==="decision.recorded"){let o=n.data??{},g=A=>typeof o[A]=="string"&&o[A].length>0?o[A]:null,b=g("title"),v=g("why");b!==null&&v!==null&&p.set(n.id,{id:n.id,label:"",title:b,why:v,rejected:g("rejected"),task:g("task"),docs:Array.isArray(o.docs)?o.docs.filter(A=>typeof A=="string"):[],supersedes:g("supersedes"),supersededBy:null,at:n.ts,by:n.actor,source:n.source});continue}if(n.type==="note.recorded"){let o=m(n.data?.text);o!==null&&r.push({id:n.id,text:o,task:m(n.data?.task),at:n.ts,by:n.actor,source:n.source});continue}if(n.type==="doc.written"){let o=d.get(n.entity)??[];o.push(n),d.set(n.entity,o);continue}if(n.type==="doc.linked"){let o=m(n.data?.task);if(o!==null){let g=i.get(n.entity)??[];g.includes(o)||g.push(o),i.set(n.entity,g)}continue}if(n.type==="template.saved"){let o=typeof n.data?.name=="string"?n.data.name:null;o!==null&&a.set(o,{name:o,fields:n.data?.fields??{},author:n.actor});continue}if(n.type==="board.configured"){let o=n.data?.statuses;if(Array.isArray(o)){let v=o.filter(A=>typeof A=="string"&&A.length>0);v.length>0&&(f=v)}let g=n.data?.dod;Array.isArray(g)&&(y=g.filter(v=>typeof v=="string"&&v.length>0));let b=m(n.data?.started);b!==null&&(c.started=b,c.changes.push({id:n.id,started:b}));continue}if(n.type==="template.deleted"){let o=typeof n.data?.name=="string"?n.data.name:null;o!==null&&a.delete(o);continue}ut(n,s,u,l,h,k,c)}let w=k,T=[...s.values()].sort((n,o)=>n.id<o.id?-1:1);T.forEach((n,o)=>{n.label=`KAD-${o+1}`,ft(n),n.criteria.sort((g,b)=>g.id<b.id?-1:1),n.criteria.forEach((g,b)=>{g.n=b+1}),ct(n)});let M=new Set(T.map(n=>n.id));for(let n of T)n.parent!==null&&!M.has(n.parent)&&(n.parent=null),n.blockedBy=n.blockedBy.filter(o=>M.has(o));let B=[...p.values()].sort((n,o)=>n.id<o.id?-1:1);B.forEach((n,o)=>{n.label=`DEC-${o+1}`});for(let n of B){if(n.supersedes===null)continue;let o=p.get(n.supersedes);o!==void 0&&(o.supersededBy=n.id)}let C=[...l.values()].sort((n,o)=>n.id<o.id?-1:1);C.forEach((n,o)=>{n.label=`MS-${o+1}`});let R=new Map;for(let n of T){if(n.milestone===null||!l.has(n.milestone))continue;let o=R.get(n.milestone)??[];o.push(n.id),R.set(n.milestone,o)}for(let n of C){n.taskIds=R.get(n.id)??[];let o=n.taskIds.map(g=>s.get(g)).filter(g=>g!==void 0);n.totalTasks=o.length,n.doneTasks=o.filter(g=>g.status===x).length,n.totalPoints=o.reduce((g,b)=>g+(b.estimate??0),0),n.donePoints=o.filter(g=>g.status===x).reduce((g,b)=>g+(b.estimate??0),0)}for(let n of B)n.task!==null&&!M.has(n.task)&&(n.task=null);for(let n of r)n.task!==null&&!M.has(n.task)&&(n.task=null);let K=dt(d,i,M);return{tasks:T,decisions:B,documents:K,milestones:C,notes:r,sprints:[...u.values()].sort((n,o)=>n.id<o.id?-1:1),statuses:f??[...F],dod:y,started:c.started,startedChanges:[...c.changes],orphanStatuses:[...new Set(T.map(n=>n.status).filter(n=>!(f??F).includes(n)))].sort(),templates:[...a.values()].sort((n,o)=>n.name.localeCompare(o.name)),cycles:pt(T),pending:w,rejected:h}}function z(t,e){if(t.has(e.entity))return;let s=e.data??{};t.set(e.entity,{id:e.entity,label:"",title:typeof s.title=="string"?s.title:"(untitled)",description:m(s.description),type:Q(s.type),priority:V(s.priority),status:Y,labels:X(s.labels),assignee:m(s.assignee),reporter:e.actor,sprint:null,milestone:null,parent:m(s.parent),blockedBy:[],due:m(s.due),claimedBy:null,claimedAt:null,claimedEventId:null,contestedBy:[],criteria:[],comments:[],docs:[],estimate:typeof s.estimate=="number"?s.estimate:null,loggedHours:0,createdAt:e.ts,updatedAt:e.ts,history:[]})}function G(t,e){if(t.has(e.entity))return;let s=e.data??{};t.set(e.entity,{id:e.entity,name:typeof s.name=="string"?s.name:"(untitled)",description:m(s.description),startDate:m(s.startDate),endDate:m(s.endDate),status:"planned",closedBy:null,taskIds:[]})}function J(t,e){if(t.has(e.entity))return;let s=e.data??{};t.set(e.entity,{id:e.entity,label:"",name:typeof s.name=="string"?s.name:"(untitled)",due:m(s.due),status:"open",closedBy:null,taskIds:[],donePoints:0,totalPoints:0,doneTasks:0,totalTasks:0})}function ut(t,e,s,u,l,a,p){let r=t.data??{};if(t.type==="milestone.created")return J(u,t),!0;if(t.type==="milestone.task_added"){let i=m(r.task);if(i===null)return!0;let f=e.get(i);return f===void 0?(a.push(t),!1):(f.milestone=t.entity,!0)}if(t.type==="milestone.closed"){let i=u.get(t.entity);return i===void 0?(a.push(t),!1):(i.closedBy===null?(i.status="closed",i.closedBy=t.id):l.push(t),!0)}if(t.type==="task.created")return z(e,t),H(e.get(t.entity),t),!0;if(t.type==="sprint.created")return G(s,t),!0;if(t.type.startsWith("sprint.")){let i=s.get(t.entity);if(i===void 0)return a.push(t),!1;if(t.type==="sprint.started")return i.status==="planned"&&(i.status="active"),!0;if(t.type==="sprint.updated")return i.status==="closed"?(l.push(t),!0):(typeof r.name=="string"&&(i.name=r.name),r.description!==void 0&&(i.description=m(r.description)),r.startDate!==void 0&&(i.startDate=m(r.startDate)),r.endDate!==void 0&&(i.endDate=m(r.endDate)),!0);if(t.type==="sprint.closed")return i.closedBy===null?(i.status="closed",i.closedBy=t.id):l.push(t),!0;if(t.type==="sprint.cancelled")return i.status==="planned"?i.status="cancelled":l.push(t),!0;if(t.type==="sprint.task_added"){if(i.status==="closed")return l.push(t),!0;let f=typeof r.task=="string"?r.task:null;if(f===null)return!0;let y=e.get(f);return y===void 0?(a.push(t),!1):(y.sprint=i.id,i.taskIds.includes(f)||i.taskIds.push(f),H(y,t),!0)}return!0}let d=e.get(t.entity);if(d===void 0)return a.push(t),!1;if(t.type==="task.deleted")return e.delete(t.entity),!0;switch(t.type){case"task.moved":{let i=r.to;typeof i=="string"&&i.length>0&&(d.status=i);break}case"task.cancelled":d.status=S;break;case"task.reopened":d.status=L(p.changes,t.id);break;case"task.assigned":d.assignee=m(r.assignee);break;case"task.updated":typeof r.title=="string"&&(d.title=r.title),r.description!==void 0&&(d.description=m(r.description)),r.type!==void 0&&(d.type=Q(r.type)),r.priority!==void 0&&(d.priority=V(r.priority)),r.labels!==void 0&&(d.labels=X(r.labels)),r.due!==void 0&&(d.due=m(r.due)),typeof r.estimate=="number"&&(d.estimate=r.estimate);break;case"task.parent_set":d.parent=m(r.parent);break;case"task.blocked_by_added":{let i=m(r.blocker);i!==null&&!d.blockedBy.includes(i)&&d.blockedBy.push(i);break}case"task.blocked_by_removed":{let i=m(r.blocker);i!==null&&(d.blockedBy=d.blockedBy.filter(f=>f!==i));break}case"task.label_added":{let i=m(r.label);i!==null&&!d.labels.includes(i)&&d.labels.push(i);break}case"task.label_removed":{let i=m(r.label);i!==null&&(d.labels=d.labels.filter(f=>f!==i));break}case"task.criterion_added":{let i=m(r.text);i!==null&&d.criteria.push({id:t.id,n:0,text:i,checked:!1,checkedBy:null});break}case"task.criterion_checked":case"task.criterion_unchecked":break;case"task.doc_linked":{let i=m(r.path);i!==null&&!d.docs.includes(i)&&d.docs.push(i);break}case"task.time_logged":{let i=r.hours;typeof i=="number"&&Number.isFinite(i)&&(d.loggedHours=Math.max(0,d.loggedHours+i));break}case"task.commented":{let i=m(r.text);i!==null&&d.comments.push({id:t.id,author:t.actor,ts:t.ts,text:i,source:t.source});break}default:break}return H(d,t),!0}function ct(t){let e=new Map(t.criteria.map(s=>[s.id,s]));for(let s of t.criteria)s.checked=!1,s.checkedBy=null;for(let s of t.history){if(s.type!=="task.criterion_checked"&&s.type!=="task.criterion_unchecked")continue;let u=m(s.data.criterion),l=u===null?void 0:e.get(u);if(l===void 0)continue;let a=s.type==="task.criterion_checked";l.checked=a,l.checkedBy=a?s.actor:null}}function ft(t){let e=null,s=null,u=null,l=[],a=()=>{e=null,s=null,u=null,l=[]};for(let p of t.history)if(p.type==="task.claimed"){let r=m(p.data.by)??p.actor;e===null?(e=r,s=p.ts,u=p.id):r!==e&&!l.includes(r)&&l.push(r)}else if(p.type==="task.released"){let r=m(p.data.by)??p.actor;e===r?a():l=l.filter(d=>d!==r)}else(p.type==="task.cancelled"||p.type==="task.moved"&&p.data.to===x)&&a();t.claimedBy=e,t.claimedAt=s,t.claimedEventId=u,t.contestedBy=l}function H(t,e){t.history.push({id:e.id,type:e.type,actor:e.actor,ts:e.ts,source:e.source,data:e.data??{}}),e.ts>t.updatedAt&&(t.updatedAt=e.ts)}function m(t){return typeof t=="string"&&t.length>0?t:null}function Q(t){return ot.includes(t)?t:"task"}function V(t){return at.includes(t)?t:"normal"}function X(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.length>0):[]}function pt(t){let e=new Map(t.map(a=>[a.id,a])),s=[],u=new Set,l=(a,p)=>{let r=new Map,d=(i,f)=>{let y=r.get(i);if(y==="done")return;if(y==="visiting"){let h=f.indexOf(i),k=f.slice(h),w=`${a}:${[...k].sort().join(",")}`;u.has(w)||(u.add(w),s.push({kind:a,path:[...k,i]}));return}r.set(i,"visiting");let c=e.get(i);if(c!==void 0)for(let h of p(c))d(h,[...f,i]);r.set(i,"done")};for(let i of t)d(i.id,[])};return l("parent",a=>a.parent===null?[]:[a.parent]),l("blocking",a=>a.blockedBy),s}var D=864e5;function P(t){return new Date(t).toISOString().slice(0,10)}function E(t){return Date.parse(`${t}T00:00:00.000Z`)}function gt(t){let e=new Date(E(t)),s=(e.getUTCDay()+6)%7;return P(e.getTime()-s*D)}function et(t,e){let s=P(t.getTime());return{from:P(E(s)-(e-1)*D),to:s,days:e}}function tt(t,e){let s=t.slice(0,10);return s>=e.from&&s<=e.to}function N(t,e){if(t.length===0)return 0;let s=Math.max(1,Math.ceil(e*t.length));return t[s-1]}var I=t=>Math.round(t*10)/10;function q(t){if(t.length===0)return null;let e=[...t].sort((s,u)=>s-u);return{shown:{n:e.length,p50:I(N(e,.5)),p85:I(N(e,.85)),p95:I(N(e,.95))},rawP85:N(e,.85)}}function j(t,e){let s=t.indexOf(e);return s===-1?null:new Set(t.slice(0,s))}function Z(t,e,s=[],u=[]){let l=j(s,e),a=r=>r===x||r===S?!1:l===null?r===e:r===e||!l.has(r);return t.history.find(r=>r.type==="task.reopened"?a(L(u,r.id)):r.type==="task.moved"&&typeof r.data.to=="string"&&a(r.data.to))?.ts??null}function yt(t,e){if(e.status===x||e.status===S)return!1;let s=j(t.statuses,t.started);return s===null?e.status===t.started:s.has(e.status)?!1:Z(e,t.started,t.statuses,t.startedChanges)!==null}function _(t){if(t.status!==x)return null;for(let e=t.history.length-1;e>=0;e--){let s=t.history[e];if(s.type==="task.moved"&&s.data.to===x)return s.ts}return null}function ht(t){if(t.status!==S)return null;for(let e=t.history.length-1;e>=0;e--){let s=t.history[e];if(s.type==="task.cancelled"||s.type==="task.moved"&&s.data.to===S)return s.ts}return null}function O(t,e){return Math.max(0,(Date.parse(e)-Date.parse(t))/D)}function mt(t,e,s,u){let l=_(t)??ht(t),a=l===null?u:Date.parse(l),p=[],r=new Map;for(let h of t.history){let k=typeof h.data.blocker=="string"?h.data.blocker:null;if(k!==null){if(h.type==="task.blocked_by_added")r.has(k)||r.set(k,Date.parse(h.ts));else if(h.type==="task.blocked_by_removed"){let w=r.get(k);w!==void 0&&(p.push([w,Math.min(Date.parse(h.ts),a)]),r.delete(k))}}}for(let[h,k]of r){let w=Math.min(e.get(h)??u,a);p.push([k,Math.max(k,w)])}let d=E(s.from),i=E(s.to)+D,f=p.map(([h,k])=>[Math.max(h,d),Math.min(k,i)]).filter(([h,k])=>k>h).sort((h,k)=>h[0]-k[0]),y=0,c=null;for(let[h,k]of f)c===null||h>c[1]?(c!==null&&(y+=c[1]-c[0]),c=[h,k]):k>c[1]&&(c[1]=k);return c!==null&&(y+=c[1]-c[0]),y/D}function St(t,e=new Date,s=30){let u=et(e,s),l=e.getTime(),a=[],p=t.tasks.filter(n=>n.status!==S),r=p.filter(n=>{let o=_(n);return o!==null&&tt(o,u)}),d=[],i=[],f=[];for(let n of r){let o=_(n),g=Z(n,t.started,t.statuses,t.startedChanges);i.push(O(n.createdAt,o)),g!==null&&(d.push(O(g,o)),f.push(O(n.createdAt,g)))}let y=q(d),c=y?.shown??null,h=p.filter(n=>yt(t,n)),k=h.map(n=>{let o=O(Z(n,t.started,t.statuses,t.startedChanges),e.toISOString());return{label:n.label,title:n.title,status:n.status,ageDays:I(o),overP85:y!==null&&o>y.rawP85}}).sort((n,o)=>o.ageDays-n.ageDays),w=new Map,T=n=>{let o=gt(n),g=w.get(o);return g===void 0&&(g={week:o,finished:0,created:0},w.set(o,g)),g};for(let n=E(u.from);n<=E(u.to);n+=D)T(P(n));for(let n of r)T(_(n).slice(0,10)).finished+=1;for(let n of p)tt(n.createdAt,u)&&(T(n.createdAt.slice(0,10)).created+=1);let M=[...w.values()].sort((n,o)=>n.week<o.week?-1:1),B=new Map;for(let n of t.tasks){let o=_(n);o!==null&&B.set(n.id,Date.parse(o))}let C=0,R=0;for(let n of p){let o=mt(n,B,u,l);o>0&&(C+=1,R+=o)}t.tasks.length===0?a.push("No tasks yet."):(h.length===0&&r.length===0&&a.push(`Nothing has crossed "${t.started}" yet. If work starts in another column, say so: kadence board config --started <status>`),r.length===0?a.push(`Nothing finished between ${u.from} and ${u.to}; cycle time needs finished work.`):d.length===0&&a.push(`${r.length} item(s) finished without ever entering "${t.started}", so there is no cycle time to measure.`),t.statuses.includes(t.started)||a.push(`"${t.started}" is not one of the board's columns; set one with kadence board config --started.`));let K=c===null?null:`${c.n<10?`From ${c.n} finished items (a small sample): `:""}85% of finished items took ${c.p85} calendar days or less.`;return{window:u,started:t.started,unit:"calendar days",wip:h.length,finished:r.length,perWeek:M,cycleTime:c,leadTime:q(i)?.shown??null,responseTime:q(f)?.shown??null,sle:K,aging:k,blocked:{tasks:C,days:I(R)},notes:a}}function vt(t,e=new Date,s=30){let u=et(e,s),l=[...t.statuses];for(let d of t.tasks)l.includes(d.status)||l.push(d.status);let a=Y;!l.includes(a)&&t.tasks.length>0&&l.unshift(a);let p=t.tasks.map(d=>{let i=[];for(let f of d.history)f.type==="task.moved"&&typeof f.data.to=="string"?i.push({at:Date.parse(f.ts),status:f.data.to}):f.type==="task.cancelled"?i.push({at:Date.parse(f.ts),status:S}):f.type==="task.reopened"&&i.push({at:Date.parse(f.ts),status:L(t.startedChanges,f.id)});return{createdAt:Date.parse(d.createdAt),changes:i,next:0,status:a}}),r=[];for(let d=E(u.from);d<=E(u.to);d+=D){let i=d+D,f={};for(let y of l)f[y]=0;for(let y of p){for(;y.next<y.changes.length&&y.changes[y.next].at<i;)y.status=y.changes[y.next].status,y.next+=1;y.createdAt>=i||(f[y.status]=(f[y.status]??0)+1)}r.push({date:P(d),counts:f})}return{window:u,statuses:l,days:r}}var W={urgent:0,high:1,normal:2,low:3};function nt(t,e){return t!==null&&t.toLowerCase().includes(e)}function Mt(t,e,s=new Date){let u=s.toISOString().slice(0,10),l=e.search?.toLowerCase();return t.filter(a=>{if(l!==void 0&&l.length>0){let p=a.comments.some(r=>r.text.toLowerCase().includes(l));if(!nt(a.title,l)&&!nt(a.description,l)&&!p)return!1}if(e.status!==void 0&&a.status!==e.status||e.type!==void 0&&a.type!==e.type||e.priority!==void 0&&a.priority!==e.priority)return!1;if(e.assignee!==void 0){let p=e.assignee.toLowerCase(),r=(a.assignee??"").toLowerCase();if(p==="none"?r!=="":r!==p)return!1}if(e.label!==void 0){let p=e.label.toLowerCase();if(!a.labels.some(r=>r.toLowerCase()===p))return!1}return!(e.sprint!==void 0&&a.sprint!==e.sprint||e.overdue===!0&&(a.due===null||a.due>=u)||e.dueBefore!==void 0&&(a.due===null||a.due>=e.dueBefore))})}function Bt(t,e){let s=[...t];switch(e){case"priority":return s.sort((u,l)=>W[u.priority]-W[l.priority]);case"due":return s.sort((u,l)=>st(u.due,l.due,(a,p)=>a<p?-1:a>p?1:0));case"estimate":return s.sort((u,l)=>st(u.estimate,l.estimate,(a,p)=>p-a));default:return s.sort((u,l)=>u.id<l.id?-1:u.id>l.id?1:0)}}function st(t,e,s){return t===null&&e===null?0:t===null?1:e===null?-1:s(t,e)}function Ct(t){let e=[];return t.search!==void 0&&e.push(`search="${t.search}"`),t.status!==void 0&&e.push(`status=${t.status}`),t.type!==void 0&&e.push(`type=${t.type}`),t.priority!==void 0&&e.push(`priority=${t.priority}`),t.assignee!==void 0&&e.push(`assignee=${t.assignee}`),t.label!==void 0&&e.push(`label=${t.label}`),t.overdue===!0&&e.push("overdue"),t.dueBefore!==void 0&&e.push(`due before ${t.dueBefore}`),e.length===0?`No tasks yet.
|
|
3
|
-
Create the first one:
|
|
4
|
-
kadence task add "title"`:`No tasks match ${e.join(" and ")}.
|
|
5
|
-
Try fewer filters:
|
|
6
|
-
kadence task list`}function rt(t,e){return t===null||e===null?!1:t===e?!0:!e.includes("#")&&t.startsWith(`${e}#`)}function kt(t){let e=t.indexOf("#");return e===-1?t:t.slice(0,e)}function it(t){return j(t.statuses??F,t.started??$)}function U(t){return t.status===x||t.status===S}function Rt(t,e={}){let s=e.viewer??null,u=new Set(t.filter(U).map(r=>r.id)),l=e.assignee==="me"?s===null?null:kt(s):e.assignee??null,a=it(e);return t.filter(r=>{if(U(r)||a!==null&&!a.has(r.status)||r.blockedBy.some(d=>!u.has(d))||r.claimedBy!==null&&!rt(r.claimedBy,s)&&r.contestedBy.length===0)return!1;if(l!==null){if(l==="none")return r.assignee===null;if(r.assignee!==l)return!1}return!0}).sort((r,d)=>W[r.priority]-W[d.priority]||(r.id<d.id?-1:1))}function _t(t,e,s,u={}){if(t.length===0)return`No tasks yet.
|
|
7
|
-
Create the first one:
|
|
8
|
-
kadence task add "title"`;let l=t.filter(c=>!U(c));if(l.length===0)return"Nothing ready: every task is done or cancelled.";let a=new Set(t.filter(U).map(c=>c.id)),p=it(u),r=p===null?0:l.filter(c=>!p.has(c.status)).length,d=l.filter(c=>c.blockedBy.some(h=>!a.has(h))).length,i=l.filter(c=>c.claimedBy!==null&&!rt(c.claimedBy,e)&&c.contestedBy.length===0).length,f=[];return r>0&&f.push(`${r} already started`),d>0&&f.push(`${d} blocked`),i>0&&f.push(`${i} claimed by someone else`),s!==void 0&&f.push(`filtered to assignee=${s}`),`Nothing ready${f.length>0?` (${f.join(", ")})`:""}.
|
|
9
|
-
See the whole board:
|
|
10
|
-
kadence task list`}var bt=["created","priority","due","estimate"];function It(t){return bt.includes(t)}export{F as a,x as b,S as c,ot as d,at as e,wt as f,Z as g,yt as h,_ as i,St as j,vt as k,Mt as l,Bt as m,Ct as n,rt as o,U as p,Rt as q,_t as r,bt as s,It as t};
|