blade-code 0.10.91 → 0.10.92
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/blade.js +2 -2
- package/dist/{chunk-6wbhsgqd.js → chunk-0ayxntzc.js} +2 -2
- package/dist/{chunk-y7dtdwqx.js → chunk-0eqk29xr.js} +2 -2
- package/dist/{chunk-xrpmfq5d.js → chunk-1tjm9zdt.js} +1 -1
- package/dist/chunk-1ydbdbfj.js +1 -0
- package/dist/chunk-27y5dt0f.js +10 -0
- package/dist/chunk-2rpcwgr9.js +1 -0
- package/dist/chunk-30pq99z7.js +1 -0
- package/dist/{chunk-vxa67kca.js → chunk-339r521e.js} +3 -3
- package/dist/{chunk-j0rkfsdy.js → chunk-36dhm0fm.js} +2 -2
- package/dist/{chunk-47xjtzq5.js → chunk-3qtmrh3z.js} +1 -1
- package/dist/{chunk-tc1001nx.js → chunk-4cvmfne8.js} +1 -1
- package/dist/{chunk-r2nzt9jm.js → chunk-4jbpvete.js} +2 -2
- package/dist/chunk-54qgtz5s.js +1 -0
- package/dist/{chunk-7mj87nb9.js → chunk-602decf8.js} +3 -3
- package/dist/{chunk-ckqz2btx.js → chunk-74yge4ka.js} +1 -1
- package/dist/chunk-78agjkm5.js +1 -0
- package/dist/{chunk-45a1tsk1.js → chunk-7dqh8bqm.js} +1 -1
- package/dist/{chunk-xxk5d2v6.js → chunk-7k5v52ct.js} +1 -1
- package/dist/{chunk-yr16h4mj.js → chunk-7tda8v4p.js} +2 -2
- package/dist/{chunk-f7p7tzx2.js → chunk-8eh0vp98.js} +2 -2
- package/dist/{chunk-sa259vbs.js → chunk-8hry1mq6.js} +2 -2
- package/dist/{chunk-rj49h1x1.js → chunk-9318pj5k.js} +1 -1
- package/dist/{chunk-rm8w0qg7.js → chunk-am66822r.js} +1 -1
- package/dist/{chunk-j6tp0ny9.js → chunk-cadgtmrr.js} +2 -2
- package/dist/{chunk-qn8jacbk.js → chunk-cx7g79et.js} +1 -1
- package/dist/chunk-d45gd36e.js +1 -0
- package/dist/chunk-d83bfr0b.js +2 -0
- package/dist/{chunk-8mee32xq.js → chunk-dd99sgf8.js} +1 -1
- package/dist/{chunk-x4zy3sez.js → chunk-dj0jfyms.js} +288 -288
- package/dist/{chunk-7r2p609r.js → chunk-dq5ry3nq.js} +1 -1
- package/dist/{chunk-27h9k89q.js → chunk-dwttn5xg.js} +1 -1
- package/dist/{chunk-mh92e9gy.js → chunk-epmxrw4f.js} +1 -1
- package/dist/{chunk-e6gfpm6b.js → chunk-fthm9y4q.js} +1 -1
- package/dist/{chunk-xhhgpbzs.js → chunk-gbsxnvgg.js} +1 -1
- package/dist/chunk-gf2vdsx3.js +1 -0
- package/dist/{chunk-hkh2nsam.js → chunk-h4j0nve8.js} +2 -2
- package/dist/{chunk-hjkz6k6v.js → chunk-h6fcb6ky.js} +1 -1
- package/dist/{chunk-33g68zy1.js → chunk-hrfh7wck.js} +1 -1
- package/dist/chunk-jgd76jdj.js +1 -0
- package/dist/chunk-jqky08cw.js +1 -0
- package/dist/{chunk-c0ecz59a.js → chunk-k8h7k11c.js} +1 -1
- package/dist/{chunk-s8hdg5y9.js → chunk-kp40bxpa.js} +2 -2
- package/dist/{chunk-50zkdamf.js → chunk-myzmv0ns.js} +2 -2
- package/dist/{chunk-7a8j14gg.js → chunk-n4gtzx4x.js} +1 -1
- package/dist/{chunk-1mb2y0e0.js → chunk-na1cney5.js} +2 -2
- package/dist/{chunk-m5hnyxf3.js → chunk-nh45xp7r.js} +1 -1
- package/dist/{chunk-11ajd6hj.js → chunk-nje776xv.js} +2 -2
- package/dist/{chunk-k38mgpj8.js → chunk-p8hgymk2.js} +1 -1
- package/dist/{chunk-1g5s5vf3.js → chunk-qa4efys0.js} +1 -1
- package/dist/{chunk-ff38sxd0.js → chunk-qxm67agj.js} +2 -2
- package/dist/{chunk-cwtj154q.js → chunk-qy68f2g6.js} +1 -1
- package/dist/{chunk-q15sm6vj.js → chunk-rsh4rw9k.js} +1 -1
- package/dist/chunk-rtdvy14c.js +1 -0
- package/dist/{chunk-vyk5nxsz.js → chunk-rxbxvq67.js} +2 -2
- package/dist/{chunk-bvp5wpz8.js → chunk-rzja9zza.js} +2 -2
- package/dist/{chunk-ne5w9ds8.js → chunk-t48zm299.js} +1 -1
- package/dist/{chunk-61sg8p2c.js → chunk-t5hfc8xq.js} +1 -1
- package/dist/{chunk-anpph83s.js → chunk-va1exak5.js} +1 -1
- package/dist/chunk-vy4dz3yz.js +1 -0
- package/dist/{chunk-4vng4fc2.js → chunk-w4e6xp05.js} +2 -2
- package/dist/{chunk-rxjyc6ff.js → chunk-w63dfcx5.js} +2 -2
- package/dist/{chunk-x079eg84.js → chunk-wbfa6xce.js} +2 -2
- package/dist/chunk-wm02k4gq.js +1 -0
- package/dist/chunk-xdvk6frk.js +1 -0
- package/dist/chunk-xphk45bp.js +1 -0
- package/dist/{chunk-7avnhnjn.js → chunk-ya5p7mx7.js} +1 -1
- package/dist/{chunk-d83meq4k.js → chunk-yjh47zv6.js} +1 -1
- package/dist/{chunk-zg73wrze.js → chunk-ysephh7s.js} +1 -1
- package/dist/{chunk-pxah309m.js → chunk-z24ha5jk.js} +2 -2
- package/dist/{chunk-ebxt5bv1.js → chunk-z5rtzcm4.js} +2 -2
- package/dist/chunk-z5xtgfja.js +8 -0
- package/dist/{chunk-q8jfwyr4.js → chunk-z6xfknxe.js} +1 -1
- package/dist/{chunk-3aejg2jy.js → chunk-zj4kfyer.js} +1 -1
- package/dist/{chunk-dm1knbf8.js → chunk-ztp2ff01.js} +2 -2
- package/dist/web/assets/ChatView-D-UBHYgT.js +58 -0
- package/dist/web/assets/{CodeBlockHighlighter-BR4c98oZ.js → CodeBlockHighlighter-CjP3le5E.js} +2 -2
- package/dist/web/assets/FilePreview-DRJTAYmL.js +54 -0
- package/dist/web/assets/KanbanBoard-CRu-0zva.js +16 -0
- package/dist/web/assets/{MarkdownRenderer-BVPIxk31.js → MarkdownRenderer-fbB4bMCw.js} +12 -12
- package/dist/web/assets/{SettingsModal-CuUrUdWR.js → SettingsModal-RAG8JMXx.js} +22 -2
- package/dist/web/assets/TaskSwitcher-DC-7RPBv.js +26 -0
- package/dist/web/assets/TerminalPanel-CCB3heKF.js +6 -0
- package/dist/web/assets/arrow-left-Dwndq437.js +6 -0
- package/dist/web/assets/calendar-clock-CNd8rd6n.js +6 -0
- package/dist/web/assets/chevrons-up-down-DGxAunkR.js +11 -0
- package/dist/web/assets/clock-3-BEqhPeh5.js +6 -0
- package/dist/web/assets/external-link-ClLpF7at.js +11 -0
- package/dist/web/assets/folder-B5LF32bS.js +11 -0
- package/dist/web/assets/index-BgdiwWDg.js +271 -0
- package/dist/web/assets/index-C8M-7zAh.css +1 -0
- package/dist/web/assets/pause-B39o8olb.js +6 -0
- package/dist/web/assets/play-Bmh7JaqQ.js +6 -0
- package/dist/web/assets/teamService-4Cn4uKC9.js +1 -0
- package/dist/web/index.html +2 -3
- package/package.json +1 -1
- package/dist/chunk-12e2yj9p.js +0 -2
- package/dist/chunk-1gnq2qz3.js +0 -1
- package/dist/chunk-3xpgkrnw.js +0 -1
- package/dist/chunk-7zjzykx2.js +0 -8
- package/dist/chunk-85s1nyaz.js +0 -1
- package/dist/chunk-8zvjcxze.js +0 -1
- package/dist/chunk-a1hvqk3r.js +0 -1
- package/dist/chunk-aj647rtw.js +0 -1
- package/dist/chunk-hj41cbd6.js +0 -1
- package/dist/chunk-kbgsbq7k.js +0 -1
- package/dist/chunk-kq9xrrhg.js +0 -1
- package/dist/chunk-nvakshbb.js +0 -1
- package/dist/chunk-qsxt9ejm.js +0 -1
- package/dist/chunk-s1xrzd14.js +0 -1
- package/dist/chunk-scdfsyfc.js +0 -10
- package/dist/chunk-tja1sejx.js +0 -1
- package/dist/chunk-vs5bmzj8.js +0 -1
- package/dist/web/assets/ChatView-juDcmnHV.js +0 -18
- package/dist/web/assets/FilePreview-DKgh-Chb.js +0 -8
- package/dist/web/assets/KanbanBoard-CQU0UQP8.js +0 -1
- package/dist/web/assets/TaskSwitcher-DB7by2ch.js +0 -1
- package/dist/web/assets/TerminalPanel-BN9ftZUH.js +0 -1
- package/dist/web/assets/index-BdnOTMNi.css +0 -1
- package/dist/web/assets/index-ebnhtfFC.js +0 -11
- package/dist/web/assets/teamService-CFKFv0qS.js +0 -1
- package/dist/web/assets/vendor-icons-CX5BfgqQ.js +0 -431
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{j as e,r as p}from"./vendor-react-DG5dkZ_t.js";import{c as G,u as U,d as g,e as z,J as re,K as be,k as P,L as E,R as fe,M as ve,w as ge,N as je,O as Ne,Q as ye,v as we,A as Se,D as Pe,f as Te,g as Ce,h as De,i as Ie,U as se,j as Ae,V as ae,a as o,Y as _e,b as Q,Z as Ke,$ as Ee,a0 as Me,a1 as Fe,W as Re,z as Le,a2 as Oe}from"./index-BgdiwWDg.js";import{C as ce}from"./calendar-clock-CNd8rd6n.js";import{C as ze}from"./clock-3-BEqhPeh5.js";import{P as qe}from"./play-Bmh7JaqQ.js";import{P as Be}from"./pause-B39o8olb.js";import"./vendor-radix-DXRuAJHH.js";import"./session-events-Bgir_Gl_.js";/**
|
|
2
|
+
* @license lucide-react v0.300.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const Ve=G("FileDiff",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"M9 10h6",key:"9gxzsh"}],["path",{d:"M9 17h6",key:"r8uit2"}]]);/**
|
|
7
|
+
* @license lucide-react v0.300.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const Qe=G("MessageSquareWarning",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M12 7v2",key:"stiyo7"}],["path",{d:"M12 13h.01",key:"y0uutt"}]]);/**
|
|
12
|
+
* @license lucide-react v0.300.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const Ue=G("Tag",[["path",{d:"M12 2H2v10l9.29 9.29c.94.94 2.48.94 3.42 0l6.58-6.58c.94-.94.94-2.48 0-3.42L12 2Z",key:"14b2ls"}],["path",{d:"M7 7h.01",key:"7u93v4"}]]),Z=["waiting","active","blocked","review"],te={high:0,medium:1,low:2};function Ye(t){return t.taskIsolation!==void 0||t.taskPromptSummary!==void 0||t.taskRetryAvailable===!0}function ne(t){return t.taskSourceProjectPath||t.projectPath}function He(t){return t.pendingInteraction?"blocked":t.taskStatus==="queued"?"waiting":t.taskStatus==="running"?"active":t.taskStatus==="completed"?"review":"blocked"}function We(t,r){if(t.pendingInteraction!==r.pendingInteraction)return t.pendingInteraction?-1:1;const i=te[t.taskPriority??"medium"]-te[r.taskPriority??"medium"];if(i!==0)return i;const u=t.taskDueAt?Date.parse(t.taskDueAt):Number.POSITIVE_INFINITY,n=r.taskDueAt?Date.parse(r.taskDueAt):Number.POSITIVE_INFINITY;if(u!==n)return u-n;if(t.taskStatus==="queued"&&r.taskStatus==="queued"){const m=(t.taskQueuePosition??Number.POSITIVE_INFINITY)-(r.taskQueuePosition??Number.POSITIVE_INFINITY);if(m!==0)return m}return r.lastMessageTime.localeCompare(t.lastMessageTime)}function $e(t){const r={waiting:[],active:[],blocked:[],review:[]};for(const i of t)Ye(i)&&r[He(i)].push(i);for(const i of Z)r[i].sort(We);return r}function Ze(t){return`TASK-${t.replace(/^task-?/,"").slice(0,6).toUpperCase()}`}const Ge={high:{label:"kanban.priority.high",className:"border-red-200 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300"},medium:{label:"kanban.priority.medium",className:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/70 dark:bg-amber-950/35 dark:text-amber-300"},low:{label:"kanban.priority.low",className:"border-zinc-200 bg-zinc-50 text-zinc-600 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-400"}},Je={feature:"kanban.kind.feature",bug:"kanban.kind.bug",maintenance:"kanban.kind.maintenance",research:"kanban.kind.research"};function Xe(t){const r=new Date(t);return Number.isNaN(r.getTime())?"":new Intl.DateTimeFormat(ye()==="zh"?"zh-CN":"en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(r)}function K({label:t,onClick:r,disabled:i,tone:u="neutral",children:n}){return e.jsx("button",{type:"button","aria-label":t,title:t,disabled:i,onClick:r,className:P("flex h-7 w-7 shrink-0 items-center justify-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-1 disabled:cursor-wait disabled:opacity-45",u==="danger"?"text-red-500 hover:bg-red-500/10 focus-visible:ring-red-500":u==="accent"?"text-[hsl(var(--deck-accent))] hover:bg-[hsl(var(--deck-accent-soft))] focus-visible:ring-[hsl(var(--deck-accent))]":"text-[hsl(var(--deck-ink-faint))] hover:bg-[hsl(var(--deck-surface-2))] hover:text-[hsl(var(--deck-ink))] focus-visible:ring-[hsl(var(--deck-accent))]"),children:n})}function ea({session:t,unread:r,cancelling:i,retrying:u,updating:n,onOpen:m,onInspect:T,onEdit:C,onCancel:y,onRetry:c,onArchive:h}){const l=U(),w=g(t),f=z(w),b=re(t,l),v=Ge[t.taskPriority??"medium"],k=t.taskKind??"feature",x=be(t,l),D=t.taskSourceProjectPath||t.projectPath,I=D.split("/").filter(Boolean).at(-1)||D,M=t.taskStatus==="queued"||t.taskStatus==="running",N=!!t.taskRetryAvailable&&["failed","interrupted","cancelled"].includes(t.taskStatus),A=!!t.pendingInteraction,S=t.taskStatus==="completed";return e.jsxs("article",{"data-kanban-task":f,className:P("group rounded-md border bg-[hsl(var(--deck-surface))] px-3 py-3 shadow-[0_1px_2px_hsl(var(--deck-ink)/0.04)] transition-[border-color,box-shadow,transform]","border-[hsl(var(--deck-border))] hover:-translate-y-px hover:border-[hsl(var(--deck-border-strong))] hover:shadow-[0_8px_24px_-16px_hsl(var(--deck-ink)/0.35)]",r&&"border-[hsl(var(--deck-accent)/0.55)]"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:"font-mono text-[9.5px] uppercase text-[hsl(var(--deck-ink-faint))]",children:Ze(t.sessionId)}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[r&&e.jsx("span",{"aria-label":l("kanban.card.unread"),title:l("kanban.card.unread"),className:"h-1.5 w-1.5 rounded-full bg-[hsl(var(--deck-accent))] shadow-[0_0_6px_hsl(var(--deck-accent-glow)/0.8)]"}),e.jsx("span",{className:"truncate font-mono text-[9.5px] text-[hsl(var(--deck-ink-faint))]",children:I})]})]}),e.jsx("button",{type:"button",onClick:m,className:"mt-2 block w-full text-left text-[13px] font-medium leading-[1.45] text-[hsl(var(--deck-ink))] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))]",children:b}),x&&e.jsx("p",{title:x,className:P("mt-1.5 line-clamp-2 text-[10.5px] leading-[1.45]",A||t.taskStatus==="failed"?"text-red-600 dark:text-red-400":"text-[hsl(var(--deck-ink-faint))]"),children:x}),e.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[e.jsx("span",{className:P("rounded-sm border px-1.5 py-0.5 font-mono text-[9px] font-medium",v.className),children:l(v.label)}),e.jsx("span",{className:"rounded-sm border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] px-1.5 py-0.5 font-mono text-[9px] text-[hsl(var(--deck-ink-muted))]",children:l(Je[k])}),t.taskDueAt&&e.jsxs("span",{className:P("inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 font-mono text-[9px]",Date.parse(t.taskDueAt)<Date.now()&&!S?"border-red-200 bg-red-50 text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300":"border-[hsl(var(--deck-border))] text-[hsl(var(--deck-ink-faint))]"),children:[e.jsx(ce,{className:"h-2.5 w-2.5"}),Xe(t.taskDueAt)]})]}),t.taskStatus==="queued"&&t.taskQueuePosition&&e.jsx("div",{className:"mt-2 font-mono text-[9.5px] text-amber-700 dark:text-amber-400",children:l("kanban.card.queuePosition",{position:t.taskQueuePosition,depth:t.taskQueueDepth??t.taskQueuePosition})}),t.taskDiffStat&&e.jsx("div",{className:"mt-2 font-mono text-[9.5px] text-[hsl(var(--deck-ink-faint))]",children:l("kanban.card.diff",{files:t.taskDiffStat.changedFiles,additions:t.taskDiffStat.additions,deletions:t.taskDiffStat.deletions})}),e.jsxs("div",{className:"mt-3 flex items-center justify-end gap-0.5 border-t border-[hsl(var(--deck-hairline))] pt-2",children:[A&&e.jsx(K,{label:l("kanban.action.respond"),onClick:m,tone:"danger",children:e.jsx(Qe,{className:"h-3.5 w-3.5"})}),S&&e.jsx(K,{label:l("kanban.action.inspect"),onClick:T,tone:"accent",children:e.jsx(Ve,{className:"h-3.5 w-3.5"})}),N&&e.jsx(K,{label:l("kanban.action.retry"),onClick:c,disabled:u,tone:"accent",children:u?e.jsx(E,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(fe,{className:"h-3.5 w-3.5"})}),M&&e.jsx(K,{label:l("kanban.action.cancel"),onClick:y,disabled:i,tone:"danger",children:i?e.jsx(E,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(ve,{className:"h-3.5 w-3.5"})}),e.jsx(K,{label:l("kanban.action.edit"),onClick:C,disabled:n,children:n?e.jsx(E,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(ge,{className:"h-3.5 w-3.5"})}),S&&e.jsx(K,{label:l("kanban.action.archive"),onClick:h,children:e.jsx(je,{className:"h-3.5 w-3.5"})}),e.jsx(K,{label:l("kanban.action.open"),onClick:m,children:e.jsx(Ne,{className:"h-3.5 w-3.5"})})]})]})}const aa={waiting:{title:"kanban.column.waiting",description:"kanban.column.waitingDescription",icon:ze,accent:"bg-amber-400",iconStyle:"text-amber-700 dark:text-amber-400"},active:{title:"kanban.column.active",description:"kanban.column.activeDescription",icon:E,accent:"bg-blue-500",iconStyle:"text-blue-700 dark:text-blue-400"},blocked:{title:"kanban.column.blocked",description:"kanban.column.blockedDescription",icon:Se,accent:"bg-red-500",iconStyle:"text-red-700 dark:text-red-400"},review:{title:"kanban.column.review",description:"kanban.column.reviewDescription",icon:we,accent:"bg-[hsl(var(--deck-accent))]",iconStyle:"text-[hsl(var(--deck-accent))]"}};function ta({id:t,sessions:r,unreadTaskKeys:i,cancellingTaskKeys:u,retryingTaskKeys:n,updatingTaskKeys:m,taskKey:T,onOpen:C,onInspect:y,onEdit:c,onCancel:h,onRetry:l,onArchive:w}){const f=U(),b=aa[t],v=b.icon;return e.jsxs("section",{"data-kanban-column":t,"aria-labelledby":`kanban-column-${t}`,className:"flex min-h-[180px] min-w-0 flex-col border-t-2 border-[hsl(var(--deck-hairline))] pt-3 md:min-h-[360px]",children:[e.jsxs("header",{className:"mb-3 flex min-h-12 items-start gap-2 px-0.5",children:[e.jsx(v,{className:P("mt-0.5 h-3.5 w-3.5 shrink-0",b.iconStyle,t==="active"&&"animate-spin")}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{id:`kanban-column-${t}`,className:"font-mono text-[11px] font-semibold uppercase text-[hsl(var(--deck-ink))]",children:f(b.title)}),e.jsx("span",{className:"min-w-5 rounded-sm bg-[hsl(var(--deck-surface-2))] px-1.5 py-0.5 text-center font-mono text-[9px] text-[hsl(var(--deck-ink-faint))]",children:r.length})]}),e.jsx("p",{className:"mt-0.5 text-[10px] leading-4 text-[hsl(var(--deck-ink-faint))]",children:f(b.description)})]}),e.jsx("span",{className:P("mt-1 h-1.5 w-1.5 shrink-0 rounded-full",b.accent)})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-2.5",children:[r.map(k=>{const x=T(k);return e.jsx(ea,{session:k,unread:i.includes(x),cancelling:u.includes(x),retrying:n.includes(x),updating:m.includes(x),onOpen:()=>C(k),onInspect:()=>y(k),onEdit:()=>c(k),onCancel:()=>h(k),onRetry:()=>l(k),onArchive:()=>w(k)},x)}),r.length===0&&e.jsx("div",{className:"flex min-h-28 items-center justify-center rounded-md border border-dashed border-[hsl(var(--deck-border))] px-4 text-center font-mono text-[10px] leading-4 text-[hsl(var(--deck-ink-faint))]",children:f("kanban.column.empty")})]})]})}function na(t){if(!t)return"";const r=new Date(t);return Number.isNaN(r.getTime())?"":new Date(r.getTime()-r.getTimezoneOffset()*6e4).toISOString().slice(0,16)}function ra({open:t,onOpenChange:r,projects:i,defaultProjectPath:u,session:n,submitting:m,canCreate:T,onCreate:C,onUpdate:y}){const c=U(),h=!!n,[l,w]=p.useState(""),[f,b]=p.useState(""),[v,k]=p.useState(u??""),[x,D]=p.useState("medium"),[I,M]=p.useState("feature"),[N,A]=p.useState(""),[S,F]=p.useState(null);p.useEffect(()=>{var s;t&&(w((n==null?void 0:n.title)??""),b((n==null?void 0:n.taskPromptSummary)??""),k((n==null?void 0:n.taskSourceProjectPath)??(n==null?void 0:n.projectPath)??u??((s=i.find(j=>j.available))==null?void 0:s.path)??""),D((n==null?void 0:n.taskPriority)??"medium"),M((n==null?void 0:n.taskKind)??"feature"),A(na(n==null?void 0:n.taskDueAt)),F(null))},[u,t,i,n]);const q=async s=>{s.preventDefault();const j=l.trim(),B=f.trim();if(!(!h&&(!B||!v))){F(null);try{h?await y({...j?{title:j}:{},taskPriority:x,taskKind:I,taskDueAt:N?new Date(N).toISOString():null}):await C({...j?{title:j}:{},prompt:B,projectPath:v,taskPriority:x,taskKind:I,...N?{taskDueAt:new Date(N).toISOString()}:{}}),r(!1)}catch(R){F(R instanceof Error?R.message:c("kanban.dialog.submitFailed"))}}};return e.jsx(Pe,{open:t,onOpenChange:r,children:e.jsxs(Te,{className:"max-w-[560px] gap-0 overflow-hidden border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] p-0",children:[e.jsxs(Ce,{className:"border-b border-[hsl(var(--deck-hairline))] px-5 py-4",children:[e.jsx(De,{className:"font-mono text-[15px] text-[hsl(var(--deck-ink))]",children:c(h?"kanban.dialog.editTitle":"kanban.dialog.createTitle")}),e.jsx(Ie,{className:"text-[11.5px] text-[hsl(var(--deck-ink-faint))]",children:c(h?"kanban.dialog.editDescription":"kanban.dialog.createDescription")})]}),e.jsxs("form",{onSubmit:q,children:[e.jsxs("div",{className:"grid gap-4 px-5 py-5",children:[e.jsxs("label",{className:"grid gap-1.5",children:[e.jsx("span",{className:"font-mono text-[10px] uppercase text-[hsl(var(--deck-ink-muted))]",children:c("kanban.field.title")}),e.jsx("input",{value:l,onChange:s=>w(s.target.value),maxLength:200,className:"field",placeholder:c("kanban.field.titlePlaceholder")})]}),!h&&e.jsxs("label",{className:"grid gap-1.5",children:[e.jsx("span",{className:"font-mono text-[10px] uppercase text-[hsl(var(--deck-ink-muted))]",children:c("kanban.field.prompt")}),e.jsx("textarea",{required:!0,value:f,onChange:s=>b(s.target.value),maxLength:32e3,rows:6,className:"min-h-32 w-full resize-y rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-canvas))] px-3 py-2.5 text-[13px] leading-5 text-[hsl(var(--deck-ink))] outline-none placeholder:text-[hsl(var(--deck-ink-faint))] focus:border-[hsl(var(--deck-accent)/0.6)] focus:ring-1 focus:ring-[hsl(var(--deck-accent)/0.35)]",placeholder:c("kanban.field.promptPlaceholder")})]}),!h&&e.jsxs("label",{className:"grid gap-1.5",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5 font-mono text-[10px] uppercase text-[hsl(var(--deck-ink-muted))]",children:[e.jsx(se,{className:"h-3 w-3"}),c("kanban.field.project")]}),e.jsx("select",{required:!0,value:v,onChange:s=>k(s.target.value),className:"field",children:i.filter(s=>s.available).map(s=>e.jsx("option",{value:s.path,children:s.name},s.path))})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("label",{className:"grid gap-1.5",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5 font-mono text-[10px] uppercase text-[hsl(var(--deck-ink-muted))]",children:[e.jsx(Ue,{className:"h-3 w-3"}),c("kanban.field.kind")]}),e.jsxs("select",{value:I,onChange:s=>M(s.target.value),className:"field",children:[e.jsx("option",{value:"feature",children:c("kanban.kind.feature")}),e.jsx("option",{value:"bug",children:c("kanban.kind.bug")}),e.jsx("option",{value:"maintenance",children:c("kanban.kind.maintenance")}),e.jsx("option",{value:"research",children:c("kanban.kind.research")})]})]}),e.jsxs("label",{className:"grid gap-1.5",children:[e.jsx("span",{className:"font-mono text-[10px] uppercase text-[hsl(var(--deck-ink-muted))]",children:c("kanban.field.priority")}),e.jsxs("select",{value:x,onChange:s=>D(s.target.value),className:"field",children:[e.jsx("option",{value:"high",children:c("kanban.priority.high")}),e.jsx("option",{value:"medium",children:c("kanban.priority.medium")}),e.jsx("option",{value:"low",children:c("kanban.priority.low")})]})]}),e.jsxs("label",{className:"grid gap-1.5",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5 font-mono text-[10px] uppercase text-[hsl(var(--deck-ink-muted))]",children:[e.jsx(ce,{className:"h-3 w-3"}),c("kanban.field.dueAt")]}),e.jsx("input",{type:"datetime-local",value:N,onChange:s=>A(s.target.value),className:"field min-w-0"})]})]}),!h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface-2))] px-3 py-2 font-mono text-[10px] text-[hsl(var(--deck-ink-muted))]",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-[hsl(var(--deck-accent))]"}),c("kanban.dialog.localExecution")]}),S&&e.jsx("div",{role:"alert",className:"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-[11px] text-red-700 dark:border-red-900/70 dark:bg-red-950/35 dark:text-red-300",children:S})]}),e.jsxs(Ae,{className:"border-t border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-surface-2))]/60 px-5 py-3",children:[e.jsx(ae,{type:"button",variant:"ghost",onClick:()=>r(!1),disabled:m,children:c("kanban.dialog.cancel")}),e.jsxs(ae,{type:"submit",disabled:m||!h&&(!T||!f.trim()||!v),className:"gap-2",children:[m&&e.jsx(E,{className:"h-3.5 w-3.5 animate-spin"}),c(h?"kanban.dialog.save":"kanban.dialog.dispatch")]})]})]})]})})}function ha(){var ee;const t=U(),r=o(a=>a.sessions),i=o(a=>a.boundProjects),u=o(a=>a.selectedProjectPath),n=o(a=>a.taskWorkspaceInfo),m=o(a=>a.catalogLoadState),T=o(a=>a.taskEventConnectionState),C=o(a=>a.isDispatchingTask),y=o(a=>a.isUpdatingTaskAdmission),c=o(a=>a.cancellingTaskKeys),h=o(a=>a.retryingTaskKeys),l=o(a=>a.updatingTaskKeys),w=o(a=>a.unreadTaskKeys),f=o(a=>a.error),b=o(a=>a.selectProject),v=o(a=>a.selectSession),k=o(a=>a.dispatchTask),x=o(a=>a.updateTask),D=o(a=>a.cancelTask),I=o(a=>a.retryTask),M=o(a=>a.archiveSession),N=o(a=>a.setTaskAdmissionPaused),A=o(a=>a.reconnectTaskEvents),S=o(a=>a.clearError),F=_e(a=>a.currentMode),q=Q(a=>a.setMainView),s=Q(a=>a.boardProjectPath),j=Q(a=>a.setBoardProjectPath),B=Q(a=>a.openFilePreview),[R,ie]=p.useState(""),[le,Y]=p.useState(!1),[oe,H]=p.useState(null),[de,W]=p.useState(!1);p.useEffect(()=>{s&&!i.some(a=>a.path===s&&a.available)&&j(null)},[s,i,j]);const L=r.find(a=>z(g(a))===oe)??null,$=R.trim().toLowerCase(),J=p.useMemo(()=>r.filter(a=>s&&ne(a)!==s?!1:$?[a.sessionId,re(a,t),a.taskPromptSummary,ne(a),a.taskPriority,a.taskKind].filter(Boolean).join(" ").toLowerCase().includes($):!0),[s,$,r,t]),X=p.useMemo(()=>$e(J),[J]),ue=Z.reduce((a,d)=>a+X[d].length,0),_=n==null?void 0:n.taskAdmission,O=_?!_.paused:!0,V=i.filter(a=>a.available),me=s??u??((ee=V[0])==null?void 0:ee.path)??null,he=L?l.includes(z(g(L))):C,ke=async a=>{q("workspace"),await v(g(a))},xe=async a=>{q("workspace"),await v(g(a)),B({tab:"diff"})},pe=async a=>{b(a.projectPath),await k({...a,isolation:"local",permissionMode:F},{selectSession:!1})};return e.jsxs("main",{"data-kanban-board":!0,className:"flex h-full min-w-0 flex-col overflow-hidden bg-[hsl(var(--deck-canvas))] text-[hsl(var(--deck-ink))]",children:[e.jsxs("div",{className:"border-b border-[hsl(var(--deck-hairline))] bg-[hsl(var(--deck-canvas))] px-4 py-3 sm:px-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h1",{className:"font-mono text-[15px] font-semibold",children:t("kanban.title")}),e.jsx("span",{className:"rounded-sm border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] px-1.5 py-0.5 font-mono text-[9px] text-[hsl(var(--deck-ink-faint))]",children:t("kanban.taskCount",{count:ue})})]}),e.jsx("p",{className:"mt-0.5 text-[10.5px] text-[hsl(var(--deck-ink-faint))]",children:t("kanban.subtitle")})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[_&&e.jsx("div",{className:"hidden rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] px-2.5 py-1.5 lg:block",children:e.jsx(Ke,{inFlight:_.inFlight,queued:_.queued,maxConcurrent:_.maxConcurrent,compact:!0})}),e.jsxs("button",{type:"button",role:"switch","aria-checked":O,disabled:!_||y,onClick:()=>{N(O).catch(()=>{})},className:P("inline-flex h-8 items-center gap-2 rounded-md border px-2.5 font-mono text-[10.5px] transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[hsl(var(--deck-accent))] disabled:opacity-45",O?"border-[hsl(var(--deck-accent)/0.45)] bg-[hsl(var(--deck-accent-soft))] text-[hsl(var(--deck-accent))]":"border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] text-[hsl(var(--deck-ink-muted))]"),children:[y?e.jsx(E,{className:"h-3 w-3 animate-spin"}):O?e.jsx(qe,{className:"h-3 w-3 fill-current"}):e.jsx(Be,{className:"h-3 w-3"}),t(O?"kanban.autoClaim.running":"kanban.autoClaim.paused")]}),e.jsxs("button",{type:"button",onClick:()=>{if(V.length===0){W(!0);return}H(null),Y(!0)},className:"inline-flex h-8 items-center gap-1.5 rounded-md bg-[hsl(var(--deck-ink))] px-3 font-mono text-[10.5px] font-medium text-[hsl(var(--deck-canvas))] transition-opacity hover:opacity-85 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--deck-accent))]",children:[e.jsx(Ee,{className:"h-3.5 w-3.5"}),t("kanban.action.newTask")]})]})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[e.jsxs("label",{className:"relative min-w-[180px] flex-1 sm:max-w-[320px]",children:[e.jsx(Me,{className:"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-[hsl(var(--deck-ink-faint))]"}),e.jsx("input",{type:"search",value:R,onChange:a=>ie(a.target.value),"aria-label":t("kanban.searchAria"),placeholder:t("kanban.searchPlaceholder"),className:"h-8 w-full rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] pl-8 pr-3 font-mono text-[10.5px] text-[hsl(var(--deck-ink))] outline-none placeholder:text-[hsl(var(--deck-ink-faint))] focus:border-[hsl(var(--deck-accent)/0.55)] focus:ring-1 focus:ring-[hsl(var(--deck-accent)/0.25)]"})]}),e.jsxs("label",{className:"relative",children:[e.jsx(se,{className:"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-[hsl(var(--deck-accent))]"}),e.jsxs("select",{value:s??"__all__",onChange:a=>{const d=a.target.value;j(d==="__all__"?null:d),d!=="__all__"&&b(d)},"aria-label":t("kanban.projectFilterAria"),className:"h-8 min-w-[160px] appearance-none rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] pl-8 pr-7 font-mono text-[10.5px] text-[hsl(var(--deck-ink-muted))] outline-none focus:border-[hsl(var(--deck-accent)/0.55)]",children:[e.jsx("option",{value:"__all__",children:t("kanban.projectAll")}),V.map(a=>e.jsx("option",{value:a.path,children:a.name},a.path))]})]}),e.jsx("button",{type:"button",onClick:()=>W(!0),"aria-label":t("projects.bind.action"),title:t("projects.bind.action"),className:"flex h-8 w-8 items-center justify-center rounded-md border border-[hsl(var(--deck-border))] bg-[hsl(var(--deck-surface))] text-[hsl(var(--deck-ink-faint))] hover:text-[hsl(var(--deck-accent))]",children:e.jsx(Fe,{className:"h-3.5 w-3.5"})}),m==="loading"||m==="hydrating"?e.jsxs("span",{className:"inline-flex items-center gap-1.5 font-mono text-[9.5px] text-[hsl(var(--deck-ink-faint))]",children:[e.jsx(E,{className:"h-3 w-3 animate-spin"}),t("sidebar.catalog.syncing")]}):null]})]}),T==="offline"&&e.jsxs("div",{role:"alert",className:"flex items-center gap-2 border-b border-amber-300/60 bg-amber-50/80 px-4 py-2 text-[10.5px] text-amber-800 dark:border-amber-900/70 dark:bg-amber-950/30 dark:text-amber-300 sm:px-6",children:[e.jsx(Re,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"flex-1",children:t("kanban.feed.offline")}),e.jsxs("button",{type:"button",onClick:()=>void A().catch(()=>{}),className:"inline-flex h-7 items-center gap-1 rounded-md px-2 font-mono hover:bg-amber-100 dark:hover:bg-amber-900/40",children:[e.jsx(Le,{className:"h-3 w-3"}),t("taskHome.feed.retry")]})]}),f&&e.jsxs("div",{role:"alert",className:"flex items-center gap-3 border-b border-red-200 bg-red-50 px-4 py-2 text-[10.5px] text-red-700 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-300 sm:px-6",children:[e.jsx("span",{className:"flex-1",children:f}),e.jsx("button",{type:"button",onClick:S,className:"font-mono underline",children:t("taskHome.error.dismiss")})]}),e.jsx("div",{className:"flex-1 overflow-auto px-4 py-4 sm:px-6",children:e.jsx("div",{className:"grid min-w-0 grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4",children:Z.map(a=>e.jsx(ta,{id:a,sessions:X[a],unreadTaskKeys:w,cancellingTaskKeys:c,retryingTaskKeys:h,updatingTaskKeys:l,taskKey:d=>z(g(d)),onOpen:d=>{ke(d).catch(()=>{})},onInspect:d=>{xe(d).catch(()=>{})},onEdit:d=>{H(z(g(d))),Y(!0)},onCancel:d=>{D(g(d)).catch(()=>{})},onRetry:d=>{I(g(d)).catch(()=>{})},onArchive:d=>{M(g(d))}},a))})}),e.jsx(ra,{open:le,onOpenChange:a=>{Y(a),a||H(null)},projects:i,defaultProjectPath:me,session:L,submitting:he,canCreate:V.length>0,onCreate:pe,onUpdate:async a=>{L&&await x(g(L),a)}}),e.jsx(Oe,{open:de,onOpenChange:W})]})}export{ha as KanbanBoard};
|